From 0c9ddb476a76594beeb7635894d8fee401cc2a79 Mon Sep 17 00:00:00 2001 From: Brian Beck Date: Thu, 5 Mar 2026 15:00:05 -0800 Subject: [PATCH] various fixes and performance improvements --- .gitignore | 2 + docs/404.html | 2 +- docs/404/index.html | 2 +- docs/__next.__PAGE__.txt | 6 +- docs/__next._full.txt | 6 +- docs/__next._head.txt | 2 +- docs/__next._index.txt | 2 +- docs/__next._tree.txt | 4 +- .../_buildManifest.js | 0 .../_clientMiddlewareManifest.json | 0 .../_ssgManifest.js | 0 docs/_next/static/chunks/19dee6e9ded353fa.js | 8 - docs/_next/static/chunks/1f24b5e35a3d7706.js | 566 ---------------- docs/_next/static/chunks/29cbf5720c3c6313.js | 38 ++ docs/_next/static/chunks/325897a61efa2ade.js | 8 - ...8e7ff5406aa8f.css => 3e57999e46d7efb4.css} | 1 + docs/_next/static/chunks/90c5f23d057a7dda.js | 174 +++++ docs/_next/static/chunks/91476c9d2f29d071.js | 211 ++++++ docs/_next/static/chunks/c0475cead0a67c33.js | 8 + docs/_next/static/chunks/d96f10e4606ed566.js | 609 ++++++++++++++++++ docs/_next/static/chunks/f299abcdb625bb54.js | 211 ------ docs/_next/static/chunks/f4c5b6b3116ac3bb.js | 211 ------ docs/_next/static/chunks/fe8d2153bfb8c263.js | 8 + docs/_not-found/__next._full.txt | 2 +- docs/_not-found/__next._head.txt | 2 +- docs/_not-found/__next._index.txt | 2 +- .../_not-found/__next._not-found.__PAGE__.txt | 2 +- docs/_not-found/__next._not-found.txt | 2 +- docs/_not-found/__next._tree.txt | 2 +- docs/_not-found/index.html | 2 +- docs/_not-found/index.txt | 2 +- docs/index.html | 2 +- docs/index.txt | 6 +- docs/shapes/__next._full.txt | 6 +- docs/shapes/__next._head.txt | 2 +- docs/shapes/__next._index.txt | 2 +- docs/shapes/__next._tree.txt | 4 +- docs/shapes/__next.shapes.__PAGE__.txt | 6 +- docs/shapes/__next.shapes.txt | 2 +- docs/shapes/index.html | 2 +- docs/shapes/index.txt | 6 +- src/components/AudioContext.tsx | 21 + src/components/AudioEmitter.tsx | 41 ++ src/components/ChatSoundPlayer.tsx | 42 +- src/components/DemoEntities.tsx | 48 +- src/components/DemoParticleEffects.tsx | 609 +++++++++++++++++- src/components/DemoPlaybackStreaming.tsx | 129 +++- src/components/DemoPlayerModel.tsx | 108 +++- src/components/DemoShapeModel.tsx | 364 ++++++++++- src/components/FlagMarker.module.css | 32 + src/components/FlagMarker.tsx | 67 ++ src/components/GenericShape.tsx | 31 +- src/components/InspectorControls.tsx | 72 ++- src/components/PlayerHUD.tsx | 44 -- src/demo/demoPlaybackUtils.ts | 20 + src/demo/streaming.ts | 492 ++++++++++++-- src/demo/types.ts | 8 + src/particles/ParticleSystem.ts | 37 +- src/particles/shaders.ts | 49 +- src/particles/types.ts | 2 + src/state/engineStore.ts | 43 ++ src/state/index.ts | 3 + 62 files changed, 3109 insertions(+), 1286 deletions(-) rename docs/_next/static/{Dy_yQyXNreDeI2LPQRYzt => 6xhnTWazjCi9htjLDl3f1}/_buildManifest.js (100%) rename docs/_next/static/{Dy_yQyXNreDeI2LPQRYzt => 6xhnTWazjCi9htjLDl3f1}/_clientMiddlewareManifest.json (100%) rename docs/_next/static/{Dy_yQyXNreDeI2LPQRYzt => 6xhnTWazjCi9htjLDl3f1}/_ssgManifest.js (100%) delete mode 100644 docs/_next/static/chunks/19dee6e9ded353fa.js delete mode 100644 docs/_next/static/chunks/1f24b5e35a3d7706.js create mode 100644 docs/_next/static/chunks/29cbf5720c3c6313.js delete mode 100644 docs/_next/static/chunks/325897a61efa2ade.js rename docs/_next/static/chunks/{b238e7ff5406aa8f.css => 3e57999e46d7efb4.css} (95%) create mode 100644 docs/_next/static/chunks/90c5f23d057a7dda.js create mode 100644 docs/_next/static/chunks/91476c9d2f29d071.js create mode 100644 docs/_next/static/chunks/c0475cead0a67c33.js create mode 100644 docs/_next/static/chunks/d96f10e4606ed566.js delete mode 100644 docs/_next/static/chunks/f299abcdb625bb54.js delete mode 100644 docs/_next/static/chunks/f4c5b6b3116ac3bb.js create mode 100644 docs/_next/static/chunks/fe8d2153bfb8c263.js create mode 100644 src/components/FlagMarker.module.css create mode 100644 src/components/FlagMarker.tsx diff --git a/.gitignore b/.gitignore index 832e50d6..f4e29066 100644 --- a/.gitignore +++ b/.gitignore @@ -137,3 +137,5 @@ dist # list of files. Once someone builds this, it's not really necessary for other # developers to have this folder. GameData + +docs/dev diff --git a/docs/404.html b/docs/404.html index 6f55ee4d..b69d086f 100644 --- a/docs/404.html +++ b/docs/404.html @@ -1 +1 @@ -404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file diff --git a/docs/404/index.html b/docs/404/index.html index 6f55ee4d..b69d086f 100644 --- a/docs/404/index.html +++ b/docs/404/index.html @@ -1 +1 @@ -404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file diff --git a/docs/__next.__PAGE__.txt b/docs/__next.__PAGE__.txt index b1d3c824..6621acc6 100644 --- a/docs/__next.__PAGE__.txt +++ b/docs/__next.__PAGE__.txt @@ -1,11 +1,11 @@ 1:"$Sreact.fragment" 2:I[47257,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] -3:I[31713,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/f4c5b6b3116ac3bb.js","/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","/t2-mapper/_next/static/chunks/19dee6e9ded353fa.js","/t2-mapper/_next/static/chunks/94212136ebe55507.js","/t2-mapper/_next/static/chunks/1f24b5e35a3d7706.js","/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js"],"default"] +3:I[31713,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/29cbf5720c3c6313.js","/t2-mapper/_next/static/chunks/90c5f23d057a7dda.js","/t2-mapper/_next/static/chunks/c0475cead0a67c33.js","/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","/t2-mapper/_next/static/chunks/d96f10e4606ed566.js","/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/94212136ebe55507.js"],"default"] 6:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] 7:"$Sreact.suspense" -:HL["/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","style"] +:HL["/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","style"] :HL["/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","style"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/f4c5b6b3116ac3bb.js","async":true}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","async":true}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/19dee6e9ded353fa.js","async":true}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/94212136ebe55507.js","async":true}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/1f24b5e35a3d7706.js","async":true}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","async":true}],["$","script","script-6",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/29cbf5720c3c6313.js","async":true}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/90c5f23d057a7dda.js","async":true}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/c0475cead0a67c33.js","async":true}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","async":true}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/d96f10e4606ed566.js","async":true}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","async":true}],["$","script","script-6",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true}],["$","script","script-7",{"src":"/t2-mapper/_next/static/chunks/94212136ebe55507.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/docs/__next._full.txt b/docs/__next._full.txt index b6f41c39..f349044e 100644 --- a/docs/__next._full.txt +++ b/docs/__next._full.txt @@ -3,16 +3,16 @@ 3:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 4:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 5:I[47257,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] -6:I[31713,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/f4c5b6b3116ac3bb.js","/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","/t2-mapper/_next/static/chunks/19dee6e9ded353fa.js","/t2-mapper/_next/static/chunks/94212136ebe55507.js","/t2-mapper/_next/static/chunks/1f24b5e35a3d7706.js","/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js"],"default"] +6:I[31713,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/29cbf5720c3c6313.js","/t2-mapper/_next/static/chunks/90c5f23d057a7dda.js","/t2-mapper/_next/static/chunks/c0475cead0a67c33.js","/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","/t2-mapper/_next/static/chunks/d96f10e4606ed566.js","/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/94212136ebe55507.js"],"default"] 9:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] a:"$Sreact.suspense" c:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] e:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] 10:I[68027,[],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -:HL["/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","style"] +:HL["/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","style"] :HL["/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","style"] -0:{"P":null,"b":"Dy_yQyXNreDeI2LPQRYzt","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/f4c5b6b3116ac3bb.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/19dee6e9ded353fa.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/94212136ebe55507.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/1f24b5e35a3d7706.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","async":true,"nonce":"$undefined"}],["$","script","script-6",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"6xhnTWazjCi9htjLDl3f1","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/29cbf5720c3c6313.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/90c5f23d057a7dda.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/c0475cead0a67c33.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/d96f10e4606ed566.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","async":true,"nonce":"$undefined"}],["$","script","script-6",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true,"nonce":"$undefined"}],["$","script","script-7",{"src":"/t2-mapper/_next/static/chunks/94212136ebe55507.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]] diff --git a/docs/__next._head.txt b/docs/__next._head.txt index d8bb0d98..171861f4 100644 --- a/docs/__next._head.txt +++ b/docs/__next._head.txt @@ -3,4 +3,4 @@ 3:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] 4:"$Sreact.suspense" 5:I[27201,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MapGenius – Explore maps for Tribes 2"}],["$","meta","1",{"name":"description","content":"Tribes 2 forever."}],["$","link","2",{"rel":"icon","href":"/t2-mapper/icon.png?icon.2911bba1.png","sizes":"108x128","type":"image/png"}],["$","$L5","3",{}]]}]}]}],null]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MapGenius – Explore maps for Tribes 2"}],["$","meta","1",{"name":"description","content":"Tribes 2 forever."}],["$","link","2",{"rel":"icon","href":"/t2-mapper/icon.png?icon.2911bba1.png","sizes":"108x128","type":"image/png"}],["$","$L5","3",{}]]}]}]}],null]}],"loading":null,"isPartial":false} diff --git a/docs/__next._index.txt b/docs/__next._index.txt index 96bc87a4..f8230d2e 100644 --- a/docs/__next._index.txt +++ b/docs/__next._index.txt @@ -3,4 +3,4 @@ 3:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 4:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/docs/__next._tree.txt b/docs/__next._tree.txt index 1177cb8d..27a59536 100644 --- a/docs/__next._tree.txt +++ b/docs/__next._tree.txt @@ -1,4 +1,4 @@ :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -:HL["/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","style"] +:HL["/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","style"] :HL["/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","style"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/docs/_next/static/Dy_yQyXNreDeI2LPQRYzt/_buildManifest.js b/docs/_next/static/6xhnTWazjCi9htjLDl3f1/_buildManifest.js similarity index 100% rename from docs/_next/static/Dy_yQyXNreDeI2LPQRYzt/_buildManifest.js rename to docs/_next/static/6xhnTWazjCi9htjLDl3f1/_buildManifest.js diff --git a/docs/_next/static/Dy_yQyXNreDeI2LPQRYzt/_clientMiddlewareManifest.json b/docs/_next/static/6xhnTWazjCi9htjLDl3f1/_clientMiddlewareManifest.json similarity index 100% rename from docs/_next/static/Dy_yQyXNreDeI2LPQRYzt/_clientMiddlewareManifest.json rename to docs/_next/static/6xhnTWazjCi9htjLDl3f1/_clientMiddlewareManifest.json diff --git a/docs/_next/static/Dy_yQyXNreDeI2LPQRYzt/_ssgManifest.js b/docs/_next/static/6xhnTWazjCi9htjLDl3f1/_ssgManifest.js similarity index 100% rename from docs/_next/static/Dy_yQyXNreDeI2LPQRYzt/_ssgManifest.js rename to docs/_next/static/6xhnTWazjCi9htjLDl3f1/_ssgManifest.js diff --git a/docs/_next/static/chunks/19dee6e9ded353fa.js b/docs/_next/static/chunks/19dee6e9ded353fa.js deleted file mode 100644 index b0ea7c34..00000000 --- a/docs/_next/static/chunks/19dee6e9ded353fa.js +++ /dev/null @@ -1,8 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,75056,e=>{"use strict";var t=e.i(40859),r=e.i(71645),n=e.i(8560),i=e.i(90072);e.s(["ACESFilmicToneMapping",()=>i.ACESFilmicToneMapping,"AddEquation",()=>i.AddEquation,"AddOperation",()=>i.AddOperation,"AdditiveAnimationBlendMode",()=>i.AdditiveAnimationBlendMode,"AdditiveBlending",()=>i.AdditiveBlending,"AgXToneMapping",()=>i.AgXToneMapping,"AlphaFormat",()=>i.AlphaFormat,"AlwaysCompare",()=>i.AlwaysCompare,"AlwaysDepth",()=>i.AlwaysDepth,"AlwaysStencilFunc",()=>i.AlwaysStencilFunc,"AmbientLight",()=>i.AmbientLight,"AnimationAction",()=>i.AnimationAction,"AnimationClip",()=>i.AnimationClip,"AnimationLoader",()=>i.AnimationLoader,"AnimationMixer",()=>i.AnimationMixer,"AnimationObjectGroup",()=>i.AnimationObjectGroup,"AnimationUtils",()=>i.AnimationUtils,"ArcCurve",()=>i.ArcCurve,"ArrayCamera",()=>i.ArrayCamera,"ArrowHelper",()=>i.ArrowHelper,"AttachedBindMode",()=>i.AttachedBindMode,"Audio",()=>i.Audio,"AudioAnalyser",()=>i.AudioAnalyser,"AudioContext",()=>i.AudioContext,"AudioListener",()=>i.AudioListener,"AudioLoader",()=>i.AudioLoader,"AxesHelper",()=>i.AxesHelper,"BackSide",()=>i.BackSide,"BasicDepthPacking",()=>i.BasicDepthPacking,"BasicShadowMap",()=>i.BasicShadowMap,"BatchedMesh",()=>i.BatchedMesh,"Bone",()=>i.Bone,"BooleanKeyframeTrack",()=>i.BooleanKeyframeTrack,"Box2",()=>i.Box2,"Box3",()=>i.Box3,"Box3Helper",()=>i.Box3Helper,"BoxGeometry",()=>i.BoxGeometry,"BoxHelper",()=>i.BoxHelper,"BufferAttribute",()=>i.BufferAttribute,"BufferGeometry",()=>i.BufferGeometry,"BufferGeometryLoader",()=>i.BufferGeometryLoader,"ByteType",()=>i.ByteType,"Cache",()=>i.Cache,"Camera",()=>i.Camera,"CameraHelper",()=>i.CameraHelper,"CanvasTexture",()=>i.CanvasTexture,"CapsuleGeometry",()=>i.CapsuleGeometry,"CatmullRomCurve3",()=>i.CatmullRomCurve3,"CineonToneMapping",()=>i.CineonToneMapping,"CircleGeometry",()=>i.CircleGeometry,"ClampToEdgeWrapping",()=>i.ClampToEdgeWrapping,"Clock",()=>i.Clock,"Color",()=>i.Color,"ColorKeyframeTrack",()=>i.ColorKeyframeTrack,"ColorManagement",()=>i.ColorManagement,"CompressedArrayTexture",()=>i.CompressedArrayTexture,"CompressedCubeTexture",()=>i.CompressedCubeTexture,"CompressedTexture",()=>i.CompressedTexture,"CompressedTextureLoader",()=>i.CompressedTextureLoader,"ConeGeometry",()=>i.ConeGeometry,"ConstantAlphaFactor",()=>i.ConstantAlphaFactor,"ConstantColorFactor",()=>i.ConstantColorFactor,"Controls",()=>i.Controls,"CubeCamera",()=>i.CubeCamera,"CubeDepthTexture",()=>i.CubeDepthTexture,"CubeReflectionMapping",()=>i.CubeReflectionMapping,"CubeRefractionMapping",()=>i.CubeRefractionMapping,"CubeTexture",()=>i.CubeTexture,"CubeTextureLoader",()=>i.CubeTextureLoader,"CubeUVReflectionMapping",()=>i.CubeUVReflectionMapping,"CubicBezierCurve",()=>i.CubicBezierCurve,"CubicBezierCurve3",()=>i.CubicBezierCurve3,"CubicInterpolant",()=>i.CubicInterpolant,"CullFaceBack",()=>i.CullFaceBack,"CullFaceFront",()=>i.CullFaceFront,"CullFaceFrontBack",()=>i.CullFaceFrontBack,"CullFaceNone",()=>i.CullFaceNone,"Curve",()=>i.Curve,"CurvePath",()=>i.CurvePath,"CustomBlending",()=>i.CustomBlending,"CustomToneMapping",()=>i.CustomToneMapping,"CylinderGeometry",()=>i.CylinderGeometry,"Cylindrical",()=>i.Cylindrical,"Data3DTexture",()=>i.Data3DTexture,"DataArrayTexture",()=>i.DataArrayTexture,"DataTexture",()=>i.DataTexture,"DataTextureLoader",()=>i.DataTextureLoader,"DataUtils",()=>i.DataUtils,"DecrementStencilOp",()=>i.DecrementStencilOp,"DecrementWrapStencilOp",()=>i.DecrementWrapStencilOp,"DefaultLoadingManager",()=>i.DefaultLoadingManager,"DepthFormat",()=>i.DepthFormat,"DepthStencilFormat",()=>i.DepthStencilFormat,"DepthTexture",()=>i.DepthTexture,"DetachedBindMode",()=>i.DetachedBindMode,"DirectionalLight",()=>i.DirectionalLight,"DirectionalLightHelper",()=>i.DirectionalLightHelper,"DiscreteInterpolant",()=>i.DiscreteInterpolant,"DodecahedronGeometry",()=>i.DodecahedronGeometry,"DoubleSide",()=>i.DoubleSide,"DstAlphaFactor",()=>i.DstAlphaFactor,"DstColorFactor",()=>i.DstColorFactor,"DynamicCopyUsage",()=>i.DynamicCopyUsage,"DynamicDrawUsage",()=>i.DynamicDrawUsage,"DynamicReadUsage",()=>i.DynamicReadUsage,"EdgesGeometry",()=>i.EdgesGeometry,"EllipseCurve",()=>i.EllipseCurve,"EqualCompare",()=>i.EqualCompare,"EqualDepth",()=>i.EqualDepth,"EqualStencilFunc",()=>i.EqualStencilFunc,"EquirectangularReflectionMapping",()=>i.EquirectangularReflectionMapping,"EquirectangularRefractionMapping",()=>i.EquirectangularRefractionMapping,"Euler",()=>i.Euler,"EventDispatcher",()=>i.EventDispatcher,"ExternalTexture",()=>i.ExternalTexture,"ExtrudeGeometry",()=>i.ExtrudeGeometry,"FileLoader",()=>i.FileLoader,"Float16BufferAttribute",()=>i.Float16BufferAttribute,"Float32BufferAttribute",()=>i.Float32BufferAttribute,"FloatType",()=>i.FloatType,"Fog",()=>i.Fog,"FogExp2",()=>i.FogExp2,"FramebufferTexture",()=>i.FramebufferTexture,"FrontSide",()=>i.FrontSide,"Frustum",()=>i.Frustum,"FrustumArray",()=>i.FrustumArray,"GLBufferAttribute",()=>i.GLBufferAttribute,"GLSL1",()=>i.GLSL1,"GLSL3",()=>i.GLSL3,"GreaterCompare",()=>i.GreaterCompare,"GreaterDepth",()=>i.GreaterDepth,"GreaterEqualCompare",()=>i.GreaterEqualCompare,"GreaterEqualDepth",()=>i.GreaterEqualDepth,"GreaterEqualStencilFunc",()=>i.GreaterEqualStencilFunc,"GreaterStencilFunc",()=>i.GreaterStencilFunc,"GridHelper",()=>i.GridHelper,"Group",()=>i.Group,"HalfFloatType",()=>i.HalfFloatType,"HemisphereLight",()=>i.HemisphereLight,"HemisphereLightHelper",()=>i.HemisphereLightHelper,"IcosahedronGeometry",()=>i.IcosahedronGeometry,"ImageBitmapLoader",()=>i.ImageBitmapLoader,"ImageLoader",()=>i.ImageLoader,"ImageUtils",()=>i.ImageUtils,"IncrementStencilOp",()=>i.IncrementStencilOp,"IncrementWrapStencilOp",()=>i.IncrementWrapStencilOp,"InstancedBufferAttribute",()=>i.InstancedBufferAttribute,"InstancedBufferGeometry",()=>i.InstancedBufferGeometry,"InstancedInterleavedBuffer",()=>i.InstancedInterleavedBuffer,"InstancedMesh",()=>i.InstancedMesh,"Int16BufferAttribute",()=>i.Int16BufferAttribute,"Int32BufferAttribute",()=>i.Int32BufferAttribute,"Int8BufferAttribute",()=>i.Int8BufferAttribute,"IntType",()=>i.IntType,"InterleavedBuffer",()=>i.InterleavedBuffer,"InterleavedBufferAttribute",()=>i.InterleavedBufferAttribute,"Interpolant",()=>i.Interpolant,"InterpolateDiscrete",()=>i.InterpolateDiscrete,"InterpolateLinear",()=>i.InterpolateLinear,"InterpolateSmooth",()=>i.InterpolateSmooth,"InterpolationSamplingMode",()=>i.InterpolationSamplingMode,"InterpolationSamplingType",()=>i.InterpolationSamplingType,"InvertStencilOp",()=>i.InvertStencilOp,"KeepStencilOp",()=>i.KeepStencilOp,"KeyframeTrack",()=>i.KeyframeTrack,"LOD",()=>i.LOD,"LatheGeometry",()=>i.LatheGeometry,"Layers",()=>i.Layers,"LessCompare",()=>i.LessCompare,"LessDepth",()=>i.LessDepth,"LessEqualCompare",()=>i.LessEqualCompare,"LessEqualDepth",()=>i.LessEqualDepth,"LessEqualStencilFunc",()=>i.LessEqualStencilFunc,"LessStencilFunc",()=>i.LessStencilFunc,"Light",()=>i.Light,"LightProbe",()=>i.LightProbe,"Line",()=>i.Line,"Line3",()=>i.Line3,"LineBasicMaterial",()=>i.LineBasicMaterial,"LineCurve",()=>i.LineCurve,"LineCurve3",()=>i.LineCurve3,"LineDashedMaterial",()=>i.LineDashedMaterial,"LineLoop",()=>i.LineLoop,"LineSegments",()=>i.LineSegments,"LinearFilter",()=>i.LinearFilter,"LinearInterpolant",()=>i.LinearInterpolant,"LinearMipMapLinearFilter",()=>i.LinearMipMapLinearFilter,"LinearMipMapNearestFilter",()=>i.LinearMipMapNearestFilter,"LinearMipmapLinearFilter",()=>i.LinearMipmapLinearFilter,"LinearMipmapNearestFilter",()=>i.LinearMipmapNearestFilter,"LinearSRGBColorSpace",()=>i.LinearSRGBColorSpace,"LinearToneMapping",()=>i.LinearToneMapping,"LinearTransfer",()=>i.LinearTransfer,"Loader",()=>i.Loader,"LoaderUtils",()=>i.LoaderUtils,"LoadingManager",()=>i.LoadingManager,"LoopOnce",()=>i.LoopOnce,"LoopPingPong",()=>i.LoopPingPong,"LoopRepeat",()=>i.LoopRepeat,"MOUSE",()=>i.MOUSE,"Material",()=>i.Material,"MaterialLoader",()=>i.MaterialLoader,"MathUtils",()=>i.MathUtils,"Matrix2",()=>i.Matrix2,"Matrix3",()=>i.Matrix3,"Matrix4",()=>i.Matrix4,"MaxEquation",()=>i.MaxEquation,"Mesh",()=>i.Mesh,"MeshBasicMaterial",()=>i.MeshBasicMaterial,"MeshDepthMaterial",()=>i.MeshDepthMaterial,"MeshDistanceMaterial",()=>i.MeshDistanceMaterial,"MeshLambertMaterial",()=>i.MeshLambertMaterial,"MeshMatcapMaterial",()=>i.MeshMatcapMaterial,"MeshNormalMaterial",()=>i.MeshNormalMaterial,"MeshPhongMaterial",()=>i.MeshPhongMaterial,"MeshPhysicalMaterial",()=>i.MeshPhysicalMaterial,"MeshStandardMaterial",()=>i.MeshStandardMaterial,"MeshToonMaterial",()=>i.MeshToonMaterial,"MinEquation",()=>i.MinEquation,"MirroredRepeatWrapping",()=>i.MirroredRepeatWrapping,"MixOperation",()=>i.MixOperation,"MultiplyBlending",()=>i.MultiplyBlending,"MultiplyOperation",()=>i.MultiplyOperation,"NearestFilter",()=>i.NearestFilter,"NearestMipMapLinearFilter",()=>i.NearestMipMapLinearFilter,"NearestMipMapNearestFilter",()=>i.NearestMipMapNearestFilter,"NearestMipmapLinearFilter",()=>i.NearestMipmapLinearFilter,"NearestMipmapNearestFilter",()=>i.NearestMipmapNearestFilter,"NeutralToneMapping",()=>i.NeutralToneMapping,"NeverCompare",()=>i.NeverCompare,"NeverDepth",()=>i.NeverDepth,"NeverStencilFunc",()=>i.NeverStencilFunc,"NoBlending",()=>i.NoBlending,"NoColorSpace",()=>i.NoColorSpace,"NoNormalPacking",()=>i.NoNormalPacking,"NoToneMapping",()=>i.NoToneMapping,"NormalAnimationBlendMode",()=>i.NormalAnimationBlendMode,"NormalBlending",()=>i.NormalBlending,"NormalGAPacking",()=>i.NormalGAPacking,"NormalRGPacking",()=>i.NormalRGPacking,"NotEqualCompare",()=>i.NotEqualCompare,"NotEqualDepth",()=>i.NotEqualDepth,"NotEqualStencilFunc",()=>i.NotEqualStencilFunc,"NumberKeyframeTrack",()=>i.NumberKeyframeTrack,"Object3D",()=>i.Object3D,"ObjectLoader",()=>i.ObjectLoader,"ObjectSpaceNormalMap",()=>i.ObjectSpaceNormalMap,"OctahedronGeometry",()=>i.OctahedronGeometry,"OneFactor",()=>i.OneFactor,"OneMinusConstantAlphaFactor",()=>i.OneMinusConstantAlphaFactor,"OneMinusConstantColorFactor",()=>i.OneMinusConstantColorFactor,"OneMinusDstAlphaFactor",()=>i.OneMinusDstAlphaFactor,"OneMinusDstColorFactor",()=>i.OneMinusDstColorFactor,"OneMinusSrcAlphaFactor",()=>i.OneMinusSrcAlphaFactor,"OneMinusSrcColorFactor",()=>i.OneMinusSrcColorFactor,"OrthographicCamera",()=>i.OrthographicCamera,"PCFShadowMap",()=>i.PCFShadowMap,"PCFSoftShadowMap",()=>i.PCFSoftShadowMap,"PMREMGenerator",()=>n.PMREMGenerator,"Path",()=>i.Path,"PerspectiveCamera",()=>i.PerspectiveCamera,"Plane",()=>i.Plane,"PlaneGeometry",()=>i.PlaneGeometry,"PlaneHelper",()=>i.PlaneHelper,"PointLight",()=>i.PointLight,"PointLightHelper",()=>i.PointLightHelper,"Points",()=>i.Points,"PointsMaterial",()=>i.PointsMaterial,"PolarGridHelper",()=>i.PolarGridHelper,"PolyhedronGeometry",()=>i.PolyhedronGeometry,"PositionalAudio",()=>i.PositionalAudio,"PropertyBinding",()=>i.PropertyBinding,"PropertyMixer",()=>i.PropertyMixer,"QuadraticBezierCurve",()=>i.QuadraticBezierCurve,"QuadraticBezierCurve3",()=>i.QuadraticBezierCurve3,"Quaternion",()=>i.Quaternion,"QuaternionKeyframeTrack",()=>i.QuaternionKeyframeTrack,"QuaternionLinearInterpolant",()=>i.QuaternionLinearInterpolant,"R11_EAC_Format",()=>i.R11_EAC_Format,"RED_GREEN_RGTC2_Format",()=>i.RED_GREEN_RGTC2_Format,"RED_RGTC1_Format",()=>i.RED_RGTC1_Format,"REVISION",()=>i.REVISION,"RG11_EAC_Format",()=>i.RG11_EAC_Format,"RGBADepthPacking",()=>i.RGBADepthPacking,"RGBAFormat",()=>i.RGBAFormat,"RGBAIntegerFormat",()=>i.RGBAIntegerFormat,"RGBA_ASTC_10x10_Format",()=>i.RGBA_ASTC_10x10_Format,"RGBA_ASTC_10x5_Format",()=>i.RGBA_ASTC_10x5_Format,"RGBA_ASTC_10x6_Format",()=>i.RGBA_ASTC_10x6_Format,"RGBA_ASTC_10x8_Format",()=>i.RGBA_ASTC_10x8_Format,"RGBA_ASTC_12x10_Format",()=>i.RGBA_ASTC_12x10_Format,"RGBA_ASTC_12x12_Format",()=>i.RGBA_ASTC_12x12_Format,"RGBA_ASTC_4x4_Format",()=>i.RGBA_ASTC_4x4_Format,"RGBA_ASTC_5x4_Format",()=>i.RGBA_ASTC_5x4_Format,"RGBA_ASTC_5x5_Format",()=>i.RGBA_ASTC_5x5_Format,"RGBA_ASTC_6x5_Format",()=>i.RGBA_ASTC_6x5_Format,"RGBA_ASTC_6x6_Format",()=>i.RGBA_ASTC_6x6_Format,"RGBA_ASTC_8x5_Format",()=>i.RGBA_ASTC_8x5_Format,"RGBA_ASTC_8x6_Format",()=>i.RGBA_ASTC_8x6_Format,"RGBA_ASTC_8x8_Format",()=>i.RGBA_ASTC_8x8_Format,"RGBA_BPTC_Format",()=>i.RGBA_BPTC_Format,"RGBA_ETC2_EAC_Format",()=>i.RGBA_ETC2_EAC_Format,"RGBA_PVRTC_2BPPV1_Format",()=>i.RGBA_PVRTC_2BPPV1_Format,"RGBA_PVRTC_4BPPV1_Format",()=>i.RGBA_PVRTC_4BPPV1_Format,"RGBA_S3TC_DXT1_Format",()=>i.RGBA_S3TC_DXT1_Format,"RGBA_S3TC_DXT3_Format",()=>i.RGBA_S3TC_DXT3_Format,"RGBA_S3TC_DXT5_Format",()=>i.RGBA_S3TC_DXT5_Format,"RGBDepthPacking",()=>i.RGBDepthPacking,"RGBFormat",()=>i.RGBFormat,"RGBIntegerFormat",()=>i.RGBIntegerFormat,"RGB_BPTC_SIGNED_Format",()=>i.RGB_BPTC_SIGNED_Format,"RGB_BPTC_UNSIGNED_Format",()=>i.RGB_BPTC_UNSIGNED_Format,"RGB_ETC1_Format",()=>i.RGB_ETC1_Format,"RGB_ETC2_Format",()=>i.RGB_ETC2_Format,"RGB_PVRTC_2BPPV1_Format",()=>i.RGB_PVRTC_2BPPV1_Format,"RGB_PVRTC_4BPPV1_Format",()=>i.RGB_PVRTC_4BPPV1_Format,"RGB_S3TC_DXT1_Format",()=>i.RGB_S3TC_DXT1_Format,"RGDepthPacking",()=>i.RGDepthPacking,"RGFormat",()=>i.RGFormat,"RGIntegerFormat",()=>i.RGIntegerFormat,"RawShaderMaterial",()=>i.RawShaderMaterial,"Ray",()=>i.Ray,"Raycaster",()=>i.Raycaster,"RectAreaLight",()=>i.RectAreaLight,"RedFormat",()=>i.RedFormat,"RedIntegerFormat",()=>i.RedIntegerFormat,"ReinhardToneMapping",()=>i.ReinhardToneMapping,"RenderTarget",()=>i.RenderTarget,"RenderTarget3D",()=>i.RenderTarget3D,"RepeatWrapping",()=>i.RepeatWrapping,"ReplaceStencilOp",()=>i.ReplaceStencilOp,"ReverseSubtractEquation",()=>i.ReverseSubtractEquation,"RingGeometry",()=>i.RingGeometry,"SIGNED_R11_EAC_Format",()=>i.SIGNED_R11_EAC_Format,"SIGNED_RED_GREEN_RGTC2_Format",()=>i.SIGNED_RED_GREEN_RGTC2_Format,"SIGNED_RED_RGTC1_Format",()=>i.SIGNED_RED_RGTC1_Format,"SIGNED_RG11_EAC_Format",()=>i.SIGNED_RG11_EAC_Format,"SRGBColorSpace",()=>i.SRGBColorSpace,"SRGBTransfer",()=>i.SRGBTransfer,"Scene",()=>i.Scene,"ShaderChunk",()=>n.ShaderChunk,"ShaderLib",()=>n.ShaderLib,"ShaderMaterial",()=>i.ShaderMaterial,"ShadowMaterial",()=>i.ShadowMaterial,"Shape",()=>i.Shape,"ShapeGeometry",()=>i.ShapeGeometry,"ShapePath",()=>i.ShapePath,"ShapeUtils",()=>i.ShapeUtils,"ShortType",()=>i.ShortType,"Skeleton",()=>i.Skeleton,"SkeletonHelper",()=>i.SkeletonHelper,"SkinnedMesh",()=>i.SkinnedMesh,"Source",()=>i.Source,"Sphere",()=>i.Sphere,"SphereGeometry",()=>i.SphereGeometry,"Spherical",()=>i.Spherical,"SphericalHarmonics3",()=>i.SphericalHarmonics3,"SplineCurve",()=>i.SplineCurve,"SpotLight",()=>i.SpotLight,"SpotLightHelper",()=>i.SpotLightHelper,"Sprite",()=>i.Sprite,"SpriteMaterial",()=>i.SpriteMaterial,"SrcAlphaFactor",()=>i.SrcAlphaFactor,"SrcAlphaSaturateFactor",()=>i.SrcAlphaSaturateFactor,"SrcColorFactor",()=>i.SrcColorFactor,"StaticCopyUsage",()=>i.StaticCopyUsage,"StaticDrawUsage",()=>i.StaticDrawUsage,"StaticReadUsage",()=>i.StaticReadUsage,"StereoCamera",()=>i.StereoCamera,"StreamCopyUsage",()=>i.StreamCopyUsage,"StreamDrawUsage",()=>i.StreamDrawUsage,"StreamReadUsage",()=>i.StreamReadUsage,"StringKeyframeTrack",()=>i.StringKeyframeTrack,"SubtractEquation",()=>i.SubtractEquation,"SubtractiveBlending",()=>i.SubtractiveBlending,"TOUCH",()=>i.TOUCH,"TangentSpaceNormalMap",()=>i.TangentSpaceNormalMap,"TetrahedronGeometry",()=>i.TetrahedronGeometry,"Texture",()=>i.Texture,"TextureLoader",()=>i.TextureLoader,"TextureUtils",()=>i.TextureUtils,"Timer",()=>i.Timer,"TimestampQuery",()=>i.TimestampQuery,"TorusGeometry",()=>i.TorusGeometry,"TorusKnotGeometry",()=>i.TorusKnotGeometry,"Triangle",()=>i.Triangle,"TriangleFanDrawMode",()=>i.TriangleFanDrawMode,"TriangleStripDrawMode",()=>i.TriangleStripDrawMode,"TrianglesDrawMode",()=>i.TrianglesDrawMode,"TubeGeometry",()=>i.TubeGeometry,"UVMapping",()=>i.UVMapping,"Uint16BufferAttribute",()=>i.Uint16BufferAttribute,"Uint32BufferAttribute",()=>i.Uint32BufferAttribute,"Uint8BufferAttribute",()=>i.Uint8BufferAttribute,"Uint8ClampedBufferAttribute",()=>i.Uint8ClampedBufferAttribute,"Uniform",()=>i.Uniform,"UniformsGroup",()=>i.UniformsGroup,"UniformsLib",()=>n.UniformsLib,"UniformsUtils",()=>i.UniformsUtils,"UnsignedByteType",()=>i.UnsignedByteType,"UnsignedInt101111Type",()=>i.UnsignedInt101111Type,"UnsignedInt248Type",()=>i.UnsignedInt248Type,"UnsignedInt5999Type",()=>i.UnsignedInt5999Type,"UnsignedIntType",()=>i.UnsignedIntType,"UnsignedShort4444Type",()=>i.UnsignedShort4444Type,"UnsignedShort5551Type",()=>i.UnsignedShort5551Type,"UnsignedShortType",()=>i.UnsignedShortType,"VSMShadowMap",()=>i.VSMShadowMap,"Vector2",()=>i.Vector2,"Vector3",()=>i.Vector3,"Vector4",()=>i.Vector4,"VectorKeyframeTrack",()=>i.VectorKeyframeTrack,"VideoFrameTexture",()=>i.VideoFrameTexture,"VideoTexture",()=>i.VideoTexture,"WebGL3DRenderTarget",()=>i.WebGL3DRenderTarget,"WebGLArrayRenderTarget",()=>i.WebGLArrayRenderTarget,"WebGLCoordinateSystem",()=>i.WebGLCoordinateSystem,"WebGLCubeRenderTarget",()=>i.WebGLCubeRenderTarget,"WebGLRenderTarget",()=>i.WebGLRenderTarget,"WebGLRenderer",()=>n.WebGLRenderer,"WebGLUtils",()=>n.WebGLUtils,"WebGPUCoordinateSystem",()=>i.WebGPUCoordinateSystem,"WebXRController",()=>i.WebXRController,"WireframeGeometry",()=>i.WireframeGeometry,"WrapAroundEnding",()=>i.WrapAroundEnding,"ZeroCurvatureEnding",()=>i.ZeroCurvatureEnding,"ZeroFactor",()=>i.ZeroFactor,"ZeroSlopeEnding",()=>i.ZeroSlopeEnding,"ZeroStencilOp",()=>i.ZeroStencilOp,"createCanvasElement",()=>i.createCanvasElement,"error",()=>i.error,"getConsoleFunction",()=>i.getConsoleFunction,"log",()=>i.log,"setConsoleFunction",()=>i.setConsoleFunction,"warn",()=>i.warn,"warnOnce",()=>i.warnOnce],32009);var o=e.i(32009);function a(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}let s=["x","y","top","bottom","left","right","width","height"];var l=e.i(46791),u=e.i(43476);function c({ref:e,children:n,fallback:i,resize:l,style:c,gl:d,events:f=t.f,eventSource:A,eventPrefix:h,shadows:m,linear:p,flat:B,legacy:C,orthographic:g,frameloop:v,dpr:y,performance:b,raycaster:E,camera:M,scene:F,onPointerMissed:S,onCreated:R,...I}){r.useMemo(()=>(0,t.e)(o),[]);let T=(0,t.u)(),[G,x]=function({debounce:e,scroll:t,polyfill:n,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){var o,l,u;let c=n||("u"(p.current=!0,()=>void(p.current=!1)));let[B,C,g]=(0,r.useMemo)(()=>{let e=()=>{let e,t;if(!A.current.element)return;let{left:r,top:n,width:o,height:a,bottom:l,right:u,x:c,y:d}=A.current.element.getBoundingClientRect(),h={left:r,top:n,width:o,height:a,bottom:l,right:u,x:c,y:d};A.current.element instanceof HTMLElement&&i&&(h.height=A.current.element.offsetHeight,h.width=A.current.element.offsetWidth),Object.freeze(h),p.current&&(e=A.current.lastBounds,t=h,!s.every(r=>e[r]===t[r]))&&f(A.current.lastBounds=h)};return[e,m?a(e,m):e,h?a(e,h):e]},[f,i,h,m]);function v(){A.current.scrollContainers&&(A.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),A.current.scrollContainers=null),A.current.resizeObserver&&(A.current.resizeObserver.disconnect(),A.current.resizeObserver=null),A.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",A.current.orientationHandler))}function y(){A.current.element&&(A.current.resizeObserver=new c(g),A.current.resizeObserver.observe(A.current.element),t&&A.current.scrollContainers&&A.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),A.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",A.current.orientationHandler))}return o=g,l=!!t,(0,r.useEffect)(()=>{if(l)return window.addEventListener("scroll",o,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",o,!0)},[o,l]),u=C,(0,r.useEffect)(()=>(window.addEventListener("resize",u),()=>void window.removeEventListener("resize",u)),[u]),(0,r.useEffect)(()=>{v(),y()},[t,g,C]),(0,r.useEffect)(()=>v,[]),[e=>{e&&e!==A.current.element&&(v(),A.current.element=e,A.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:i,overflowY:o}=window.getComputedStyle(t);return[n,i,o].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),y())},d,B]}({scroll:!0,debounce:{scroll:50,resize:0},...l}),D=r.useRef(null),w=r.useRef(null);r.useImperativeHandle(e,()=>D.current);let L=(0,t.a)(S),[_,O]=r.useState(!1),[H,P]=r.useState(!1);if(_)throw _;if(H)throw H;let J=r.useRef(null);(0,t.b)(()=>{let e=D.current;x.width>0&&x.height>0&&e&&(J.current||(J.current=(0,t.c)(e)),async function(){await J.current.configure({gl:d,scene:F,events:f,shadows:m,linear:p,flat:B,legacy:C,orthographic:g,frameloop:v,dpr:y,performance:b,raycaster:E,camera:M,size:x,onPointerMissed:(...e)=>null==L.current?void 0:L.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(A?(0,t.i)(A)?A.current:A:w.current),h&&e.setEvents({compute:(e,t)=>{let r=e[h+"X"],n=e[h+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==R||R(e)}}),J.current.render((0,u.jsx)(T,{children:(0,u.jsx)(t.E,{set:P,children:(0,u.jsx)(r.Suspense,{fallback:(0,u.jsx)(t.B,{set:O}),children:null!=n?n:null})})}))}())}),r.useEffect(()=>{let e=D.current;if(e)return()=>(0,t.d)(e)},[]);let U=A?"none":"auto";return(0,u.jsx)("div",{ref:w,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:U,...c},...I,children:(0,u.jsx)("div",{ref:G,style:{width:"100%",height:"100%"},children:(0,u.jsx)("canvas",{ref:D,style:{display:"block"},children:i})})})}function d(e){return(0,u.jsx)(l.FiberProvider,{children:(0,u.jsx)(c,{...e})})}e.i(89499),e.s(["Canvas",()=>d],75056)},32424,e=>{"use strict";var t=e.i(12979);function r(){return async e=>{let r;try{r=(0,t.getUrlForPath)(e)}catch(t){return console.warn(`Script not in manifest: ${e} (${t})`),null}try{let t=await fetch(r);if(!t.ok)return console.error(`Script fetch failed: ${e} (${t.status})`),null;return await t.text()}catch(t){return console.error(`Script fetch error: ${e}`),console.error(t),null}}}e.s(["createScriptLoader",()=>r])},91907,8597,78140,82816,25947,51475,71832,e=>{"use strict";let t;e.s(["ShapeRenderer",()=>tr,"applyShapeShaderModifications",()=>e3,"createMaterialFromFlags",()=>e6,"useStaticShape",()=>e4],91907);var r=e.i(43476),n=e.i(932),i=e.i(71645),o=i;let a=(0,o.createContext)(null),s={didCatch:!1,error:null};class l extends o.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=s}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(...e){let{error:t}=this.state;null!==t&&(this.props.onReset?.({args:e,reason:"imperative-api"}),this.setState(s))}componentDidCatch(e,t){this.props.onError?.(e,t)}componentDidUpdate(e,t){let{didCatch:r}=this.state,{resetKeys:n}=this.props;r&&null!==t.error&&function(e=[],t=[]){return e.length!==t.length||e.some((e,r)=>!Object.is(e,t[r]))}(e.resetKeys,n)&&(this.props.onReset?.({next:n,prev:e.resetKeys,reason:"keys"}),this.setState(s))}render(){let{children:e,fallbackRender:t,FallbackComponent:r,fallback:n}=this.props,{didCatch:i,error:s}=this.state,l=e;if(i){let e={error:s,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)l=t(e);else if(r)l=(0,o.createElement)(r,e);else if(void 0!==n)l=n;else throw s}return(0,o.createElement)(a.Provider,{value:{didCatch:i,error:s,resetErrorBoundary:this.resetErrorBoundary}},l)}}e.s(["ErrorBoundary",()=>l],8597);var u=e.i(31067),c=e.i(90072);function d(e,t){if(t===c.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==c.TriangleFanDrawMode&&t!==c.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;etypeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r=2.0 are supported."));return}let s=new ei(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});s.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===a[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}s.setExtensions(o),s.setPlugins(a),s.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}}function B(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let C={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class g{constructor(e){this.parser=e,this.name=C.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,o)}}class w{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let o=i.extensions[t],a=n.images[o.source],s=r.textureLoader;if(a.uri){let e=r.options.manager.getHandler(a.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,o.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class L{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let o=i.extensions[t],a=n.images[o.source],s=r.textureLoader;if(a.uri){let e=r.options.manager.getHandler(a.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,o.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class _{constructor(e){this.name=C.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,o=e.count,a=e.byteStride,s=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(o,a,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(o*a);return i.decodeGltfBuffer(new Uint8Array(t),o,a,s,e.mode,e.filter),t})})}}}class O{constructor(e){this.name=C.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],o={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new c.Matrix4,r=new c.Vector3,a=new c.Quaternion,s=new c.Vector3(1,1,1),l=new c.InstancedMesh(e.geometry,e.material,n);for(let e=0;e=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},z={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete};function $(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function ee(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function et(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;ntypeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"u"{let r=this.associations.get(e);for(let[n,o]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(o,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r=2&&o.setY(t,f[e*s+1]),s>=3&&o.setZ(t,f[e*s+2]),s>=4&&o.setW(t,f[e*s+3]),s>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return o})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],o=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(o=e)}return this.loadTextureImage(e,n,o)}loadTextureImage(e,t,r){let n=this,i=this.json,o=i.textures[e],a=i.images[t],s=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[s])return this.textureCache[s];let l=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=o.name||a.name||"",""===t.name&&"string"==typeof a.uri&&!1===a.uri.startsWith("data:image/")&&(t.name=a.uri);let r=(i.samplers||{})[o.sampler]||{};return t.magFilter=V[r.magFilter]||c.LinearFilter,t.minFilter=V[r.minFilter]||c.LinearMipmapLinearFilter,t.wrapS=q[r.wrapS]||c.RepeatWrapping,t.wrapT=q[r.wrapT]||c.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=l,l}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],o=self.URL||self.webkitURL,a=i.uri||"",s=!1;if(void 0!==i.bufferView)a=this.getDependency("bufferView",i.bufferView).then(function(e){s=!0;let t=new Blob([e],{type:i.mimeType});return a=o.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(a).then(function(e){return new Promise(function(r,i){let o=r;!0===t.isImageBitmapLoader&&(o=function(e){let t=new c.Texture(e);t.needsUpdate=!0,r(t)}),t.load(c.LoaderUtils.resolveURL(e,n.path),o,void 0,i)})}).then(function(e){var t;return!0===s&&o.revokeObjectURL(a),ee(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),e});return this.sourceCache[e]=l,l}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(o){if(!o)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((o=o.clone()).channel=r.texCoord),i.extensions[C.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[C.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(o);o=i.extensions[C.KHR_TEXTURE_TRANSFORM].extendTexture(o,e),i.associations.set(o,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?h:m),"colorSpace"in o?o.colorSpace=n:o.encoding=n===h?3001:3e3),e[t]=o,o})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new c.PointsMaterial,c.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new c.LineBasicMaterial,c.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||o){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,o=n.materials[e],a={},s=o.extensions||{},l=[];if(s[C.KHR_MATERIALS_UNLIT]){let e=i[C.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),l.push(e.extendParams(a,o,r))}else{let n=o.pbrMetallicRoughness||{};if(a.color=new c.Color(1,1,1),a.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;a.color.setRGB(e[0],e[1],e[2],m),a.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(r.assignTexture(a,"map",n.baseColorTexture,h)),a.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,a.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(r.assignTexture(a,"metalnessMap",n.metallicRoughnessTexture)),l.push(r.assignTexture(a,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)})))}!0===o.doubleSided&&(a.side=c.DoubleSide);let u=o.alphaMode||"OPAQUE";if("BLEND"===u?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,"MASK"===u&&(a.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&t!==c.MeshBasicMaterial&&(l.push(r.assignTexture(a,"normalMap",o.normalTexture)),a.normalScale=new c.Vector2(1,1),void 0!==o.normalTexture.scale)){let e=o.normalTexture.scale;a.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&t!==c.MeshBasicMaterial&&(l.push(r.assignTexture(a,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(a.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&t!==c.MeshBasicMaterial){let e=o.emissiveFactor;a.emissive=new c.Color().setRGB(e[0],e[1],e[2],m)}return void 0!==o.emissiveTexture&&t!==c.MeshBasicMaterial&&l.push(r.assignTexture(a,"emissiveMap",o.emissiveTexture,h)),Promise.all(l).then(function(){let n=new t(a);return o.name&&(n.name=o.name),ee(n,o),r.associations.set(n,{materials:e}),o.extensions&&$(i,n,o),n})}createUniqueName(e){let t=c.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let o=0,a=e.length;o0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r1?new c.Group:1===t.length?t[0]:new c.Object3D)!==t[0])for(let e=0,r=t.length;e{let t=new Map;for(let[e,r]of n.associations)(e instanceof c.Material||e instanceof c.Texture)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let o,a=[],s=e.name?e.name:e.uuid,l=[];switch(Z[i.path]===Z.weights?e.traverse(function(e){e.morphTargetInfluences&&l.push(e.name?e.name:e.uuid)}):l.push(s),Z[i.path]){case Z.weights:o=c.NumberKeyframeTrack;break;case Z.rotation:o=c.QuaternionKeyframeTrack;break;case Z.position:case Z.scale:o=c.VectorKeyframeTrack;break;default:o=1===r.itemSize?c.NumberKeyframeTrack:c.VectorKeyframeTrack}let u=void 0!==n.interpolation?z[n.interpolation]:c.InterpolateLinear,d=this._getArrayFromAccessor(r);for(let e=0,r=l.length;e{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(es.has(e)){let t=es.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(i,o).then(n=>(r=n,new Promise((n,o)=>{r._callbacks[i]={resolve:n,reject:o},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return a.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),es.set(e,{key:n,promise:a}),a}_createGeometry(e){let t=new ea.BufferGeometry;e.index&&t.setIndex(new ea.BufferAttribute(e.index.array,1));for(let r=0;r{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=eu.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,r=new t.Decoder,a=new t.DecoderBuffer;a.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){var i,o,a;let s,l,u,c,d,f,A=n.attributeIDs,h=n.attributeTypes,m=t.GetEncodedGeometryType(r);if(m===e.TRIANGULAR_MESH)d=new e.Mesh,f=t.DecodeBufferToMesh(r,d);else if(m===e.POINT_CLOUD)d=new e.PointCloud,f=t.DecodeBufferToPointCloud(r,d);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!f.ok()||0===d.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+f.error_msg());let p={index:null,attributes:[]};for(let r in A){let i,o,a=self[h[r]];if(n.useUniqueIDs)o=A[r],i=t.GetAttributeByUniqueId(d,o);else{if(-1===(o=t.GetAttributeId(d,e[A[r]])))continue;i=t.GetAttribute(d,o)}p.attributes.push(function(e,t,r,n,i,o){let a=o.num_components(),s=r.num_points()*a,l=s*i.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),c=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,o,u,l,c);let d=new i(e.HEAPF32.buffer,c,s).slice();return e._free(c),{name:n,array:d,itemSize:a}}(e,t,d,r,a,i))}return m===e.TRIANGULAR_MESH&&(i=e,o=t,a=d,s=3*a.num_faces(),l=4*s,u=i._malloc(l),o.GetTrianglesUInt32Array(a,l,u),c=new Uint32Array(i.HEAPF32.buffer,u,s).slice(),i._free(u),p.index={array:c,itemSize:1}),e.destroy(d),p}(t,r,a,o),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(a),t.destroy(r)}})}}}var ec=e.i(99143);let ed=function(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;i{let A={keys:l,deep:n,inject:s,castShadow:o,receiveShadow:a};if(Array.isArray(t=i.useMemo(()=>{if(!1===e&&!Array.isArray(t)){let e=!1;if(t.traverse(t=>{t.isSkinnedMesh&&(e=!0)}),e)return ed(t)}return t},[t,e])))return i.createElement("group",(0,u.default)({},d,{ref:f}),t.map(e=>i.createElement(ef,(0,u.default)({key:e.uuid,object:e},A))),r);let{children:h,...m}=function(e,{keys:t=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData","bindMode","bindMatrix","bindMatrixInverse","skeleton"],deep:r,inject:n,castShadow:o,receiveShadow:a}){let s={};for(let r of t)s[r]=e[r];return r&&(s.geometry&&"materialsOnly"!==r&&(s.geometry=s.geometry.clone()),s.material&&"geometriesOnly"!==r&&(s.material=s.material.clone())),n&&(s="function"==typeof n?{...s,children:n(e)}:i.isValidElement(n)?{...s,children:n}:{...s,...n}),e instanceof c.Mesh&&(o&&(s.castShadow=!0),a&&(s.receiveShadow=!0)),s}(t,A),p=t.type[0].toLowerCase()+t.type.slice(1);return i.createElement(p,(0,u.default)({},m,d,{ref:f}),t.children.map(e=>"Bone"===e.type?i.createElement("primitive",(0,u.default)({key:e.uuid,object:e},A)):i.createElement(ef,(0,u.default)({key:e.uuid,object:e},A,{isChild:!0}))),r,h)}),eA=null,eh="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function em(e=!0,r=!0,n){return i=>{n&&n(i),e&&(eA||(eA=new el),eA.setDecoderPath("string"==typeof e?e:eh),i.setDRACOLoader(eA)),r&&i.setMeshoptDecoder((()=>{let e;if(t)return t;let r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="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";WebAssembly.validate(r)&&(i="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");let o=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let r=0;for(let i=0;i{(e=t.instance).exports.__wasm_call_ctors()});function a(t,r,n,i,o,a){let s=e.exports.sbrk,l=n+3&-4,u=s(l*i),c=s(o.length),d=new Uint8Array(e.exports.memory.buffer);d.set(o,c);let f=t(u,n,i,c,o.length);if(0===f&&a&&a(u,l,i),r.set(d.subarray(u,u+n*i)),s(u-s(0)),0!==f)throw Error(`Malformed buffer data: ${f}`)}let s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return t={ready:o,supported:!0,decodeVertexBuffer(t,r,n,i,o){a(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[s[o]])},decodeIndexBuffer(t,r,n,i){a(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){a(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,o,u){a(e.exports[l[o]],t,r,n,i,e.exports[s[u]])}}})())}}let ep=(e,t,r,n)=>(0,ec.useLoader)(p,e,em(t,r,n));ep.preload=(e,t,r,n)=>ec.useLoader.preload(p,e,em(t,r,n)),ep.clear=e=>ec.useLoader.clear(p,e),ep.setDecoderPath=e=>{eh=e},e.s(["useGLTF",()=>ep],78140),e.i(47071);var eB=e.i(71753),eC=e.i(12979);function eg(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;ieg],82816);var ev=e.i(75567),ey=e.i(79123);let eb=/borg|xorg|porg|dorg|plant|tree|bush|fern|vine|grass|leaf|flower|frond|palm|foliage/i;function eE(e){return eb.test(e)}let eM=(0,i.createContext)(null);function eF(){let e=(0,i.useContext)(eM);if(!e)throw Error("useShapeInfo must be used within ShapeInfoProvider");return e}function eS(e){let t,i,o,a=(0,n.c)(10),{children:s,object:l,shapeName:u,type:c}=e;a[0]!==u?(t=eE(u),a[0]=u,a[1]=t):t=a[1];let d=t;a[2]!==d||a[3]!==l||a[4]!==u||a[5]!==c?(i={object:l,shapeName:u,type:c,isOrganic:d},a[2]=d,a[3]=l,a[4]=u,a[5]=c,a[6]=i):i=a[6];let f=i;return a[7]!==s||a[8]!==f?(o=(0,r.jsx)(eM.Provider,{value:f,children:s}),a[7]=s,a[8]=f,a[9]=o):o=a[9],o}e.s(["ShapeInfoProvider",()=>eS,"isOrganicShape",()=>eE,"useShapeInfo",()=>eF],25947),e.i(13876);var eR=e.i(58647),eI=e.i(89887);e.i(47167),e.i(69230),e.i(69637),e.i(54440);let eT=(0,i.createContext)(null);function eG({children:e}){let t=(0,i.useRef)(void 0),n=(0,i.useRef)(0),o=(0,i.useRef)(0);(0,eB.useFrame)((e,r)=>{for(n.current+=r;n.current>=.03125;)if(n.current-=.03125,o.current++,t.current)for(let e of t.current)e(o.current)});let a=(0,i.useCallback)(e=>(t.current??=new Set,t.current.add(e),()=>{t.current.delete(e)}),[]),s=(0,i.useCallback)(()=>o.current,[]),l=(0,i.useMemo)(()=>({subscribe:a,getTick:s}),[a,s]);return(0,r.jsx)(eT.Provider,{value:l,children:e})}function ex(e){let t=(0,i.useContext)(eT);if(!t)throw Error("useTick must be used within a TickProvider");let r=(0,i.useRef)(e);r.current=e,(0,i.useEffect)(()=>t.subscribe(e=>r.current(e)),[t])}e.s(["TICK_RATE",0,32,"TickProvider",()=>eG,"useTick",()=>ex],51475);let eD=1/30,ew=new Map;function eL(e,t){if(t===e.lastFrame)return;e.lastFrame=t;let r=t%e.columns,n=e.rows-1-Math.floor(t/e.columns);e.texture.offset.set(r/e.columns,n/e.rows)}function e_(e,t){let r=e.totalDurationSeconds;if(r<=0)return 0;let n=t;n>r&&(n-=r*Math.floor(n/r));for(let t=0;t(0,eC.iflTextureToUrl)(t.name,e)),B=(i=(n=(t=await Promise.all(p.map(ev.loadTextureAsync)))[0].image).width,o=n.height,s=Math.ceil(Math.sqrt(a=t.length)),l=Math.ceil(a/s),(u=document.createElement("canvas")).width=i*s,u.height=o*l,d=u.getContext("2d"),t.forEach((e,t)=>{let r=Math.floor(t/s);d.drawImage(e.image,t%s*i,r*o)}),(f=new c.CanvasTexture(u)).colorSpace=c.SRGBColorSpace,f.generateMipmaps=!1,f.minFilter=c.NearestFilter,f.magFilter=c.NearestFilter,f.wrapS=c.ClampToEdgeWrapping,f.wrapT=c.ClampToEdgeWrapping,f.repeat.set(1/s,1/l),{texture:f,columns:s,rows:l,frameCount:a,frameOffsetSeconds:[],totalDurationSeconds:0,lastFrame:-1});return A=0,(r=B).frameOffsetSeconds=m.map(e=>A+=e.frameCount*eD),r.totalDurationSeconds=A,ew.set(e,B),B}var eH=e.i(47021),eP=e.i(48066);e.s(["ANIM_TRANSITION_TIME",()=>eU,"DEFAULT_EYE_HEIGHT",()=>eJ,"STREAM_TICK_SEC",()=>eN,"_r90",()=>eX,"_r90inv",()=>eV,"buildStreamDemoEntity",()=>e8,"entityTypeColor",()=>e2,"getKeyframeAtTime",()=>ez,"getPosedNodeTransform",()=>e$,"processShapeScene",()=>e9,"replaceWithShapeMaterial",()=>e0,"setQuaternionFromDir",()=>eZ,"setupEffectTexture",()=>eW,"torqueHorizontalFovToThreeVerticalFov",()=>eq,"torqueVecToThree",()=>eY],71832);let eJ=2.1,eU=.25,eN=.032,ek=new c.Vector3,eK=new c.Vector3,ej=new c.Matrix4,eQ=new c.Vector3(0,1,0),eX=new c.Quaternion().setFromAxisAngle(new c.Vector3(0,1,0),Math.PI/2),eV=eX.clone().invert();function eq(e,t){return 180*(2*Math.atan(Math.tan(Math.max(.01,Math.min(179.99,e))*Math.PI/180/2)/(Number.isFinite(t)&&t>1e-6?t:4/3)))/Math.PI}function eW(e){e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.magFilter=c.LinearFilter,e.colorSpace=c.NoColorSpace,e.flipY=!1,e.needsUpdate=!0}function eY(e,t){return t.set(e[1],e[2],e[0])}function eZ(e,t){ek.crossVectors(e,eQ),1e-8>ek.lengthSq()&&ek.set(-1,0,0),ek.normalize(),eK.crossVectors(ek,e).normalize(),ej.set(ek.x,e.x,eK.x,0,ek.y,e.y,eK.y,0,ek.z,e.z,eK.z,0,0,0,0,1),t.setFromRotationMatrix(ej)}function ez(e,t){if(0===e.length)return null;if(t<=e[0].time)return e[0];if(t>=e[e.length-1].time)return e[e.length-1];let r=0,n=e.length-1;for(;n-r>1;){let i=r+n>>1;e[i].time<=t?r=i:n=i}return e[r]}function e$(e,t,r){let n=e.clone(!0),i=t.find(e=>"Root"===e.name);if(i){let e=new c.AnimationMixer(n);e.clipAction(i).play(),e.setTime(0)}n.updateMatrixWorld(!0);let o=null,a=null;return(n.traverse(e=>{o||e.name!==r||(o=new c.Vector3,a=new c.Quaternion,e.getWorldPosition(o),e.getWorldQuaternion(a))}),o&&a)?{position:o,quaternion:a}:null}function e0(e,t){let r=e.userData?.resource_path,n=new Set(e.userData?.flag_names??[]);if(!r){let t=new c.MeshLambertMaterial({color:e.color,side:2,reflectivity:0});return e3(t),{material:t}}if(n.has("IflMaterial")){let i=e6(e,null,n,!1,t),o=Array.isArray(i)?i[1]:i;return{material:o,initialize:(e,t)=>e1(o,r,e,t)}}let i=(0,eC.textureToUrl)(r),o=(0,ev.loadTexture)(i);(0,ev.setupTexture)(o);let a=e6(e,o,n,!1,t);return{material:Array.isArray(a)?a[1]:a}}async function e1(e,t,r,n){let i=`textures/${t}.ifl`,o=await eO(i);e.map=o.texture,e.needsUpdate=!0;let a=!1,s=r.onBeforeRender;return r.onBeforeRender=function(...e){s?.apply(this,e),a||eL(o,e_(o,n()))},()=>{a=!0,r.onBeforeRender=s??(()=>{})}}function e9(e){var t;let r,n=[],i=null;e.traverse(e=>{!i&&e.skeleton&&(i=e.skeleton)});let o=i?(t=i,r=new Set,t.bones.forEach((e,t)=>{e.name.match(/^Hulk/i)&&r.add(t)}),r):new Set;return e.traverse(e=>{if(!e.isMesh)return;if(e.name.match(/^Hulk/i)||e.material?.name==="Unassigned"){e.visible=!1;return}let t=!!e.userData?.vis_sequence;if((e.userData?.vis??1)<.01&&(e.visible=!1),e.geometry){let t=function(e,t){if(0===t.size||!e.attributes.skinIndex)return e;let r=e.attributes.skinIndex,n=e.attributes.skinWeight,i=e.index,o=Array(r.count).fill(!1);for(let e=0;e.01&&t.has(a)){o[e]=!0;break}}if(i){let t=[],r=i.array;for(let e=0;e1){let t=0,r=0,n=0;for(let o of e)t+=i[3*o],r+=i[3*o+1],n+=i[3*o+2];let o=Math.sqrt(t*t+r*r+n*n);for(let a of(o>0&&(t/=o,r/=o,n/=o),e))i[3*a]=t,i[3*a+1]=r,i[3*a+2]=n}r.needsUpdate=!0}(t=t.clone()),e.geometry=t}let r=t?1:e.userData?.vis??1;if(Array.isArray(e.material))e.material=e.material.map(t=>{let i=e0(t,r);return i.initialize&&n.push({mesh:e,initialize:i.initialize}),i.material});else if(e.material){let t=e0(e.material,r);t.initialize&&n.push({mesh:e,initialize:t.initialize}),e.material=t.material}}),n}function e8(e,t,r,n,i,o,a,s,l,u,c){return{id:e,type:t,dataBlock:r,visual:n,direction:i,weaponShape:o,playerName:a,className:s,ghostIndex:l,dataBlockId:u,shapeHint:c,keyframes:[{time:0,position:[0,0,0],rotation:[0,0,0,1]}]}}function e2(e){switch(e.toLowerCase()){case"player":return"#00ff88";case"vehicle":return"#ff8800";case"projectile":return"#ff0044";case"deployable":return"#ffcc00";default:return"#8888ff"}}function e3(e){e.onBeforeCompile=t=>{(0,eH.injectCustomFog)(t,eP.globalFogUniforms),e instanceof c.MeshLambertMaterial&&(t.uniforms.shapeDirectionalFactor={value:1},t.uniforms.shapeAmbientFactor={value:1.5},t.fragmentShader=t.fragmentShader.replace("#include ",`#include -uniform float shapeDirectionalFactor; -uniform float shapeAmbientFactor; -`),t.fragmentShader=t.fragmentShader.replace("#include ",`#include - // Apply shape-specific lighting multipliers - reflectedLight.directDiffuse *= shapeDirectionalFactor; - reflectedLight.indirectDiffuse *= shapeAmbientFactor; -`))}}function e6(e,t,r,n,i=1,o=!1){let a=r.has("Translucent"),s=r.has("Additive"),l=r.has("SelfIlluminating"),u=i<1||o;if(l||s){let e=s||a||u,r=new c.MeshBasicMaterial({map:t,side:2,transparent:e,depthWrite:!e,alphaTest:0,fog:!0,...u&&{opacity:i},...s&&{blending:c.AdditiveBlending}});return e3(r),r}if(n||a){let e={map:t,transparent:u,alphaTest:.5*!u,...u&&{opacity:i,depthWrite:!1},reflectivity:0},r=new c.MeshLambertMaterial({...e,side:1,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1}),n=new c.MeshLambertMaterial({...e,side:0});return e3(r),e3(n),[r,n]}let d=new c.MeshLambertMaterial({map:t,side:2,reflectivity:0,...u&&{transparent:!0,opacity:i,depthWrite:!1}});return e3(d),d}function e4(e){let t,r=(0,n.c)(2);return r[0]!==e?(t=(0,eC.shapeToUrl)(e),r[0]=e,r[1]=t):t=r[1],ep(t)}function e7(e){let t,i,o,a,s=(0,n.c)(9),{color:l,label:u}=e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("boxGeometry",{args:[10,10,10]}),s[0]=t):t=s[0],s[1]!==l?(i=(0,r.jsx)("meshStandardMaterial",{color:l,wireframe:!0}),s[1]=l,s[2]=i):i=s[2],s[3]!==l||s[4]!==u?(o=u?(0,r.jsx)(eI.FloatingLabel,{color:l,children:u}):null,s[3]=l,s[4]=u,s[5]=o):o=s[5],s[6]!==i||s[7]!==o?(a=(0,r.jsxs)("mesh",{children:[t,i,o]}),s[6]=i,s[7]=o,s[8]=a):a=s[8],a}function e5(e){let t,i=(0,n.c)(4),{color:o,label:a}=e,{debugMode:s}=(0,ey.useDebug)();return i[0]!==o||i[1]!==s||i[2]!==a?(t=s?(0,r.jsx)(e7,{color:o,label:a}):null,i[0]=o,i[1]=s,i[2]=a,i[3]=t):t=i[3],t}let te=new Set(["octahedron.dts"]);function tt(e){let t,i,o,a,s=(0,n.c)(6),{label:l}=e,{debugMode:u}=(0,ey.useDebug)();return u?(s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("icosahedronGeometry",{args:[1,1]}),i=(0,r.jsx)("meshBasicMaterial",{color:"cyan",wireframe:!0}),s[0]=t,s[1]=i):(t=s[0],i=s[1]),s[2]!==l?(o=l?(0,r.jsx)(eI.FloatingLabel,{color:"cyan",children:l}):null,s[2]=l,s[3]=o):o=s[3],s[4]!==o?(a=(0,r.jsxs)("mesh",{children:[t,i,o]}),s[4]=o,s[5]=a):a=s[5],a):null}function tr(e){let t,o,a,s,u,c=(0,n.c)(17),{loadingColor:d,demoThreads:f,children:A}=e,h=void 0===d?"yellow":d,{object:m,shapeName:p}=eF();if(!p){let e,t=`${m._id}: `;return c[0]!==t?(e=(0,r.jsx)(e5,{color:"orange",label:t}),c[0]=t,c[1]=e):e=c[1],e}if(te.has(p.toLowerCase())){let e,t=`${m._id}: ${p}`;return c[2]!==t?(e=(0,r.jsx)(tt,{label:t}),c[2]=t,c[3]=e):e=c[3],e}let B=`${m._id}: ${p}`;return c[4]!==B?(t=(0,r.jsx)(e5,{color:"red",label:B}),c[4]=B,c[5]=t):t=c[5],c[6]!==h?(o=(0,r.jsx)(e7,{color:h}),c[6]=h,c[7]=o):o=c[7],c[8]!==f?(a=(0,r.jsx)(ti,{demoThreads:f}),c[8]=f,c[9]=a):a=c[9],c[10]!==A||c[11]!==o||c[12]!==a?(s=(0,r.jsxs)(i.Suspense,{fallback:o,children:[a,A]}),c[10]=A,c[11]=o,c[12]=a,c[13]=s):s=c[13],c[14]!==t||c[15]!==s?(u=(0,r.jsx)(l,{fallback:t,children:s}),c[14]=t,c[15]=s,c[16]=u):u=c[16],u}let tn=(0,i.memo)(function({gltf:e,demoThreads:t}){let{object:n,shapeName:o}=eF(),{debugMode:a}=(0,ey.useDebug)(),{animationEnabled:s}=(0,ey.useSettings)(),l=(0,eR.useEngineSelector)(e=>e.runtime.runtime),{clonedScene:u,mixer:d,clipsByName:f,visNodesBySequence:A,iflMeshes:h}=(0,i.useMemo)(()=>{let t=eg(e.scene),r=[];for(let{mesh:e,hasVisSequence:n}of(t.traverse(e=>{if(!e.isMesh||!e.material)return;let t=Array.isArray(e.material)?e.material[0]:e.material;if(!t?.userData)return;let n=new Set(t.userData.flag_names??[]),i=t.userData.resource_path;if(n.has("IflMaterial")&&i){let t=e.userData,n=t?.ifl_sequence?String(t.ifl_sequence).toLowerCase():void 0,o=t?.ifl_duration?Number(t.ifl_duration):void 0,a=t?.ifl_sequence?!!t.ifl_cyclic:void 0,s=t?.ifl_tool_begin!=null?Number(t.ifl_tool_begin):void 0;r.push({mesh:e,iflPath:`textures/${i}.ifl`,hasVisSequence:!!t?.vis_sequence,iflSequence:n,iflDuration:o,iflCyclic:a,iflToolBegin:s})}}),e9(t),r))n||(e.visible=!0);let n=new Map;t.traverse(e=>{if(!e.isMesh)return;let t=e.userData;if(!t)return;let r=t.vis_keyframes,i=t.vis_duration,o=(t.vis_sequence??"").toLowerCase();if(!o||!Array.isArray(r)||r.length<=1||!i||i<=0)return;let a=n.get(o);a||(a=[],n.set(o,a)),a.push({mesh:e,keyframes:r,duration:i,cyclic:!!t.vis_cyclic})});let i=new Map;for(let t of e.animations)i.set(t.name.toLowerCase(),t);let o=i.size>0?new c.AnimationMixer(t):null;return{clonedScene:t,mixer:o,clipsByName:i,visNodesBySequence:n,iflMeshes:r}},[e]),m=(0,i.useRef)(new Map),p=(0,i.useRef)(new Map),B=(0,i.useRef)([]),C=(0,i.useRef)(0),g=(0,i.useRef)(s);g.current=s;let v=(0,i.useRef)(null),y=(0,i.useRef)(t);y.current=t;let b=(0,i.useRef)(null),E=(0,i.useRef)(null),M=(0,i.useRef)(void 0);(0,i.useEffect)(()=>{for(let e of(B.current=[],p.current.clear(),h))eO(e.iflPath).then(t=>{let r=Array.isArray(e.mesh.material)?e.mesh.material[0]:e.mesh.material;r&&(r.map=t.texture,r.needsUpdate=!0),B.current.push({atlas:t,sequenceName:e.iflSequence,sequenceDuration:e.iflDuration,cyclic:e.iflCyclic,toolBegin:e.iflToolBegin}),p.current.set(e.mesh,t)}).catch(()=>{})},[h]),(0,i.useEffect)(()=>{let e=m.current;function t(e){if(e.mesh.visible=!0,e.mesh.material?.isMeshStandardMaterial){let t=e0(e.mesh.material,e.mesh.userData?.vis??0);e.mesh.material=t.material}e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.transparent=!0,e.mesh.material.depthWrite=!1);let t=p.current.get(e.mesh);t&&e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.map=t.texture,e.mesh.material.needsUpdate=!0)}function r(r,n){let o=n.toLowerCase();i(r);let a=f.get(o),s=A.get(o),l={sequence:o,startTime:performance.now()/1e3};if(a&&d){let e=d.clipAction(a);"deploy"===o?(e.setLoop(c.LoopOnce,1),e.clampWhenFinished=!0):e.setLoop(c.LoopRepeat,1/0),e.reset().play(),l.action=e,!g.current&&"deploy"===o&&(e.time=a.duration,d.update(0),v.current&&queueMicrotask(()=>v.current?.(r)))}if(s){for(let e of s)t(e);l.visNodes=s}e.set(r,l)}function i(t){let r=e.get(t);if(r){if(r.action&&r.action.stop(),r.visNodes)for(let e of r.visNodes)e.mesh.visible=!1,e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.opacity=e.keyframes[0]);e.delete(t)}}if(b.current=r,E.current=i,null!=y.current)return()=>{for(let t of(b.current=null,E.current=null,[...e.keys()]))i(t)};let o=f.has("deploy"),a=!!(l&&o&&n.datablock);function s(e){if(!l)return;let t=n.datablock;if(!t)return;let r=l.getObjectByName(String(t));r&&l.$.call(r,"onEndSequence",n,e)}function u(){for(let r of["ambient","power"]){let n=A.get(r);if(n){let i=performance.now()/1e3;for(let e of n)t(e);let o=+("power"!==r);e.set(o,{sequence:r,visNodes:n,startTime:i})}let i=f.get(r);if(i&&d){let t=d.clipAction(i);t.setLoop(c.LoopRepeat,1/0),t.reset().play();let n=+("power"!==r),o=e.get(n);o?o.action=t:e.set(n,{sequence:r,action:t,startTime:performance.now()/1e3})}}}v.current=a?s:()=>u();let h=[],B=d?t=>{for(let[r,n]of e)if(n.action===t.action){a?s(r):u();break}}:null;return B&&d&&d.addEventListener("finished",B),l&&(h.push(l.$.onMethodCalled("ShapeBase","playThread",(e,t,i)=>{e._id===n._id&&r(Number(t),String(i))})),h.push(l.$.onMethodCalled("ShapeBase","stopThread",(e,t)=>{e._id===n._id&&i(Number(t))})),h.push(l.$.onMethodCalled("ShapeBase","pauseThread",(t,r)=>{if(t._id!==n._id)return;let i=e.get(Number(r));i?.action&&(i.action.paused=!0)}))),a?l.$.call(n,"deploy"):o?r(3,"deploy"):u(),()=>{for(let t of(B&&d&&d.removeEventListener("finished",B),h.forEach(e=>e()),v.current=null,b.current=null,E.current=null,[...e.keys()]))i(t)}},[d,f,A,n,l]);let F=(0,i.useMemo)(()=>{let t=e.scene.userData?.dts_sequence_names;if("string"==typeof t)try{return JSON.parse(t).map(e=>e.toLowerCase())}catch{}return e.animations.map(e=>e.name.toLowerCase())},[e]);return(0,eB.useFrame)((e,t)=>{let r=m.current,n=y.current,i=M.current;if(n!==i){let e=b.current,t=E.current;if(e&&t){M.current=n;let o=[];if(n)for(let e of n)o[e.index]=e;let a=[];if(i)for(let e of i)a[e.index]=e;let s=Math.max(o.length,a.length);for(let n=0;n0)for(let e of(C.current+=t,o)){if(!s){eL(e.atlas,0);continue}if(e.sequenceName&&e.sequenceDuration){let t=0;for(let[,n]of r)if(n.sequence===e.sequenceName){let r=performance.now()/1e3-n.startTime,i=e.sequenceDuration;t=(e.cyclic?r/i%1:Math.min(r/i,1))*i+(e.toolBegin??0);break}eL(e.atlas,e_(e.atlas,t))}else eL(e.atlas,e_(e.atlas,C.current))}}),(0,r.jsxs)("group",{rotation:[0,Math.PI/2,0],children:[(0,r.jsx)("primitive",{object:u}),a?(0,r.jsxs)(eI.FloatingLabel,{children:[n._id,": ",o]}):null]})});function ti(e){let t,i=(0,n.c)(3),{demoThreads:o}=e,{shapeName:a}=eF(),s=e4(a);return i[0]!==o||i[1]!==s?(t=(0,r.jsx)(tn,{gltf:s,demoThreads:o}),i[0]=o,i[1]=s,i[2]=t):t=i[2],t}},7368,e=>{"use strict";e.s(["ignoreScripts",0,["scripts/admin.cs","scripts/ai.cs","scripts/aiBotProfiles.cs","scripts/aiBountyGame.cs","scripts/aiChat.cs","scripts/aiCnH.cs","scripts/aiCTF.cs","scripts/aiDeathMatch.cs","scripts/aiDebug.cs","scripts/aiDefaultTasks.cs","scripts/aiDnD.cs","scripts/aiHumanTasks.cs","scripts/aiHunters.cs","scripts/aiInventory.cs","scripts/aiObjectiveBuilder.cs","scripts/aiObjectives.cs","scripts/aiRabbit.cs","scripts/aiSiege.cs","scripts/aiTDM.cs","scripts/aiTeamHunters.cs","scripts/deathMessages.cs","scripts/graphBuild.cs","scripts/navGraph.cs","scripts/serverTasks.cs","scripts/spdialog.cs"]])},17751,85413,e=>{"use strict";var t=e.i(19273),r=e.i(86491),n=e.i(40143),i=e.i(15823),o=class extends i.Subscribable{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,n,i){let o=n.queryKey,a=n.queryHash??(0,t.hashQueryKeyByOptions)(o,n),s=this.get(a);return s||(s=new r.Query({client:e,queryKey:o,queryHash:a,options:e.defaultQueryOptions(n),state:i,defaultOptions:e.getQueryDefaults(o)}),this.add(s)),s}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let r={exact:!0,...e};return this.getAll().find(e=>(0,t.matchQuery)(r,e))}findAll(e={}){let r=this.getAll();return Object.keys(e).length>0?r.filter(r=>(0,t.matchQuery)(e,r)):r}notify(e){n.notifyManager.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},a=e.i(88587),s=e.i(36553),l=class extends a.Removable{#t;#r;#n;#i;constructor(e){super(),this.#t=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#r=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#r.includes(e)||(this.#r.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#r=this.#r.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#r.length||("pending"===this.state.status?this.scheduleGc():this.#n.remove(this))}continue(){return this.#i?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#o({type:"continue"})},r={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#i=(0,s.createRetryer)({fn:()=>this.options.mutationFn?this.options.mutationFn(e,r):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#o({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#o({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let n="pending"===this.state.status,i=!this.#i.canStart();try{if(n)t();else{this.#o({type:"pending",variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,r);let t=await this.options.onMutate?.(e,r);t!==this.state.context&&this.#o({type:"pending",context:t,variables:e,isPaused:i})}let o=await this.#i.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,r),await this.options.onSuccess?.(o,e,this.state.context,r),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(o,null,e,this.state.context,r),this.#o({type:"success",data:o}),o}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,r)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,r)}catch(e){Promise.reject(e)}throw this.#o({type:"error",error:t}),t}finally{this.#n.runNext(this)}}#o(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),n.notifyManager.batch(()=>{this.#r.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:"updated",action:e})})}},u=i,c=class extends u.Subscribable{constructor(e={}){super(),this.config=e,this.#a=new Set,this.#s=new Map,this.#l=0}#a;#s;#l;build(e,t,r){let n=new l({client:e,mutationCache:this,mutationId:++this.#l,options:e.defaultMutationOptions(t),state:r});return this.add(n),n}add(e){this.#a.add(e);let t=d(e);if("string"==typeof t){let r=this.#s.get(t);r?r.push(e):this.#s.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#a.delete(e)){let t=d(e);if("string"==typeof t){let r=this.#s.get(t);if(r)if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&this.#s.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=d(e);if("string"!=typeof t)return!0;{let r=this.#s.get(t),n=r?.find(e=>"pending"===e.state.status);return!n||n===e}}runNext(e){let t=d(e);if("string"!=typeof t)return Promise.resolve();{let r=this.#s.get(t)?.find(t=>t!==e&&t.state.isPaused);return r?.continue()??Promise.resolve()}}clear(){n.notifyManager.batch(()=>{this.#a.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#a.clear(),this.#s.clear()})}getAll(){return Array.from(this.#a)}find(e){let r={exact:!0,...e};return this.getAll().find(e=>(0,t.matchMutation)(r,e))}findAll(e={}){return this.getAll().filter(r=>(0,t.matchMutation)(e,r))}notify(e){n.notifyManager.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return n.notifyManager.batch(()=>Promise.all(e.map(e=>e.continue().catch(t.noop))))}};function d(e){return e.options.scope?.id}var f=e.i(75555),A=e.i(14448);function h(e){return{onFetch:(r,n)=>{let i=r.options,o=r.fetchOptions?.meta?.fetchMore?.direction,a=r.state.data?.pages||[],s=r.state.data?.pageParams||[],l={pages:[],pageParams:[]},u=0,c=async()=>{let n=!1,c=(0,t.ensureQueryFn)(r.options,r.fetchOptions),d=async(e,i,o)=>{let a;if(n)return Promise.reject();if(null==i&&e.pages.length)return Promise.resolve(e);let s=(a={client:r.client,queryKey:r.queryKey,pageParam:i,direction:o?"backward":"forward",meta:r.options.meta},(0,t.addConsumeAwareSignal)(a,()=>r.signal,()=>n=!0),a),l=await c(s),{maxPages:u}=r.options,d=o?t.addToStart:t.addToEnd;return{pages:d(e.pages,l,u),pageParams:d(e.pageParams,i,u)}};if(o&&a.length){let e="backward"===o,t={pages:a,pageParams:s},r=(e?function(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}:m)(i,t);l=await d(t,r,e)}else{let t=e??a.length;do{let e=0===u?s[0]??i.initialPageParam:m(i,l);if(u>0&&null==e)break;l=await d(l,e),u++}while(ur.options.persister?.(c,{client:r.client,queryKey:r.queryKey,meta:r.options.meta,signal:r.signal},n):r.fetchFn=c}}}function m(e,{pages:t,pageParams:r}){let n=t.length-1;return t.length>0?e.getNextPageParam(t[n],t,r[n],r):void 0}var p=class{#u;#n;#c;#d;#f;#A;#h;#m;constructor(e={}){this.#u=e.queryCache||new o,this.#n=e.mutationCache||new c,this.#c=e.defaultOptions||{},this.#d=new Map,this.#f=new Map,this.#A=0}mount(){this.#A++,1===this.#A&&(this.#h=f.focusManager.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#u.onFocus())}),this.#m=A.onlineManager.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#u.onOnline())}))}unmount(){this.#A--,0===this.#A&&(this.#h?.(),this.#h=void 0,this.#m?.(),this.#m=void 0)}isFetching(e){return this.#u.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#n.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#u.get(t.queryHash)?.state.data}ensureQueryData(e){let r=this.defaultQueryOptions(e),n=this.#u.build(this,r),i=n.state.data;return void 0===i?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime((0,t.resolveStaleTime)(r.staleTime,n))&&this.prefetchQuery(r),Promise.resolve(i))}getQueriesData(e){return this.#u.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,r,n){let i=this.defaultQueryOptions({queryKey:e}),o=this.#u.get(i.queryHash),a=o?.state.data,s=(0,t.functionalUpdate)(r,a);if(void 0!==s)return this.#u.build(this,i).setData(s,{...n,manual:!0})}setQueriesData(e,t,r){return n.notifyManager.batch(()=>this.#u.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#u.get(t.queryHash)?.state}removeQueries(e){let t=this.#u;n.notifyManager.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=this.#u;return n.notifyManager.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,r={}){let i={revert:!0,...r};return Promise.all(n.notifyManager.batch(()=>this.#u.findAll(e).map(e=>e.cancel(i)))).then(t.noop).catch(t.noop)}invalidateQueries(e,t={}){return n.notifyManager.batch(()=>(this.#u.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType==="none")?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t))}refetchQueries(e,r={}){let i={...r,cancelRefetch:r.cancelRefetch??!0};return Promise.all(n.notifyManager.batch(()=>this.#u.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let r=e.fetch(void 0,i);return i.throwOnError||(r=r.catch(t.noop)),"paused"===e.state.fetchStatus?Promise.resolve():r}))).then(t.noop)}fetchQuery(e){let r=this.defaultQueryOptions(e);void 0===r.retry&&(r.retry=!1);let n=this.#u.build(this,r);return n.isStaleByTime((0,t.resolveStaleTime)(r.staleTime,n))?n.fetch(r):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(t.noop).catch(t.noop)}fetchInfiniteQuery(e){return e.behavior=h(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(t.noop).catch(t.noop)}ensureInfiniteQueryData(e){return e.behavior=h(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return A.onlineManager.isOnline()?this.#n.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#u}getMutationCache(){return this.#n}getDefaultOptions(){return this.#c}setDefaultOptions(e){this.#c=e}setQueryDefaults(e,r){this.#d.set((0,t.hashKey)(e),{queryKey:e,defaultOptions:r})}getQueryDefaults(e){let r=[...this.#d.values()],n={};return r.forEach(r=>{(0,t.partialMatchKey)(e,r.queryKey)&&Object.assign(n,r.defaultOptions)}),n}setMutationDefaults(e,r){this.#f.set((0,t.hashKey)(e),{mutationKey:e,defaultOptions:r})}getMutationDefaults(e){let r=[...this.#f.values()],n={};return r.forEach(r=>{(0,t.partialMatchKey)(e,r.mutationKey)&&Object.assign(n,r.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let r={...this.#c.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return r.queryHash||(r.queryHash=(0,t.hashQueryKeyByOptions)(r.queryKey,r)),void 0===r.refetchOnReconnect&&(r.refetchOnReconnect="always"!==r.networkMode),void 0===r.throwOnError&&(r.throwOnError=!!r.suspense),!r.networkMode&&r.persister&&(r.networkMode="offlineFirst"),r.queryFn===t.skipToken&&(r.enabled=!1),r}defaultMutationOptions(e){return e?._defaulted?e:{...this.#c.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#u.clear(),this.#n.clear()}};e.s(["QueryClient",()=>p],17751);var B=Object.defineProperty;class C{constructor(){((e,t,r)=>{let n;return(n="symbol"!=typeof t?t+"":t)in e?B(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r})(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,n=r.length;tC],85413)},38360,(e,t,r)=>{var n={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ả:"A",Ạ:"A",Ẩ:"A",Ẫ:"A",Ậ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ẻ:"E",Ẽ:"E",Ẹ:"E",Ể:"E",Ễ:"E",Ệ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ỉ:"I",Ị:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ỏ:"O",Ọ:"O",Ổ:"O",Ỗ:"O",Ộ:"O",Ờ:"O",Ở:"O",Ỡ:"O",Ớ:"O",Ợ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ủ:"U",Ụ:"U",Ử:"U",Ữ:"U",Ự:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ả:"a",ạ:"a",ẩ:"a",ẫ:"a",ậ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ẻ:"e",ẽ:"e",ẹ:"e",ể:"e",ễ:"e",ệ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ỉ:"i",ị:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ỏ:"o",ọ:"o",ổ:"o",ỗ:"o",ộ:"o",ờ:"o",ở:"o",ỡ:"o",ớ:"o",ợ:"o",ù:"u",ú:"u",û:"u",ü:"u",ủ:"u",ụ:"u",ử:"u",ữ:"u",ự:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},i=Object.keys(n).join("|"),o=RegExp(i,"g"),a=RegExp(i,"");function s(e){return n[e]}var l=function(e){return e.replace(o,s)};t.exports=l,t.exports.has=function(e){return!!e.match(a)},t.exports.remove=l},11889,56373,86447,1559,18364,78440,59129,25998,70238,e=>{"use strict";e.i(47167);var t,r="u">typeof window&&!!(null==(t=window.document)?void 0:t.createElement);function n(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function i(e){return e?"self"in e?e.self:n(e).defaultView||window:self}function o(e,t=!1){var r;let{activeElement:i}=n(e);if(!(null==i?void 0:i.nodeName))return null;if(s(i)&&(null==(r=i.contentDocument)?void 0:r.body))return o(i.contentDocument.body,t);if(t){let e=i.getAttribute("aria-activedescendant");if(e){let t=n(i).getElementById(e);if(t)return t}}return i}function a(e,t){return e===t||e.contains(t)}function s(e){return"IFRAME"===e.tagName}function l(e){let t=e.tagName.toLowerCase();return"button"===t||"input"===t&&!!e.type&&-1!==u.indexOf(e.type)}var u=["button","color","file","image","reset","submit"];function c(e){return"function"==typeof e.checkVisibility?e.checkVisibility():e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0}function d(e){try{let t=e instanceof HTMLInputElement&&null!==e.selectionStart,r="TEXTAREA"===e.tagName;return t||r||!1}catch(e){return!1}}function f(e){return e.isContentEditable||d(e)}function A(e){let t=0,r=0;if(d(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let i=n(e).getSelection();if((null==i?void 0:i.rangeCount)&&i.anchorNode&&a(e,i.anchorNode)&&i.focusNode&&a(e,i.focusNode)){let n=i.getRangeAt(0),o=n.cloneRange();o.selectNodeContents(e),o.setEnd(n.startContainer,n.startOffset),t=o.toString().length,o.setEnd(n.endContainer,n.endOffset),r=o.toString().length}}return{start:t,end:r}}function h(e,t){let r=null==e?void 0:e.getAttribute("role");return r&&-1!==["dialog","menu","listbox","tree","grid"].indexOf(r)?r:t}function m(e){if(!e)return null;let t=e=>"auto"===e||"scroll"===e;if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return m(e.parentElement)||document.scrollingElement||document.body}function p(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function B(e,t){return t&&e.item(t)||null}var C=Symbol("FOCUS_SILENTLY");function g(e,t,r){if(!t||t===r)return!1;let n=e.item(t.id);return!!n&&(!r||n.element!==r)}function v(){}function y(e,t){return"function"==typeof Object.hasOwn?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function b(...e){return(...t)=>{for(let r of e)"function"==typeof r&&r(...t)}}function E(e){return e}function M(e,t){if(!e){if("string"!=typeof t)throw Error("Invariant failed");throw Error(t)}}function F(e,...t){let r="function"==typeof e?e(...t):e;return null!=r&&!r}function S(e){return e.disabled||!0===e["aria-disabled"]||"true"===e["aria-disabled"]}function R(e){let t={};for(let r in e)void 0!==e[r]&&(t[r]=e[r]);return t}function I(...e){for(let t of e)if(void 0!==t)return t}var T=e.i(71645);function G(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function x(){return r&&!!navigator.maxTouchPoints}function D(){return!!r&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}function w(){return r&&D()&&/apple/i.test(navigator.vendor)}function L(e){return!!(e.currentTarget&&!a(e.currentTarget,e.target))}function _(e){return e.target===e.currentTarget}function O(e,t){let r=new FocusEvent("blur",t),n=e.dispatchEvent(r),i={...t,bubbles:!0};return e.dispatchEvent(new FocusEvent("focusout",i)),n}function H(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function P(e,t){let r=t||e.currentTarget,n=e.relatedTarget;return!n||!a(r,n)}function J(e,t,r,n){let i=(e=>{if(n){let t=setTimeout(e,n);return()=>clearTimeout(t)}let t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)})(()=>{e.removeEventListener(t,o,!0),r()}),o=()=>{i(),r()};return e.addEventListener(t,o,{once:!0,capture:!0}),i}function U(e,t,r,n=window){let i=[];try{for(let o of(n.document.addEventListener(e,t,r),Array.from(n.frames)))i.push(U(e,t,r,o))}catch(e){}return()=>{try{n.document.removeEventListener(e,t,r)}catch(e){}for(let e of i)e()}}var N={...T},k=N.useId;N.useDeferredValue;var K=N.useInsertionEffect,j=r?T.useLayoutEffect:T.useEffect;function Q(e){let t=(0,T.useRef)(()=>{throw Error("Cannot call an event handler while rendering.")});return K?K(()=>{t.current=e}):t.current=e,(0,T.useCallback)((...e)=>{var r;return null==(r=t.current)?void 0:r.call(t,...e)},[])}function X(...e){return(0,T.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)G(r,t)}},e)}function V(e){if(k){let t=k();return e||t}let[t,r]=(0,T.useState)(e);return j(()=>{if(e||t)return;let n=Math.random().toString(36).slice(2,8);r(`id-${n}`)},[e,t]),e||t}function q(e,t){let r=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,T.useEffect)(()=>()=>{r.current=!1},[])}function W(){return(0,T.useReducer)(()=>[],[])}function Y(e){return Q("function"==typeof e?e:()=>e)}function Z(e,t,r=[]){let n=(0,T.useCallback)(r=>(e.wrapElement&&(r=e.wrapElement(r)),t(r)),[...r,e.wrapElement]);return{...e,wrapElement:n}}function z(e=!1,t){let[r,n]=(0,T.useState)(null);return{portalRef:X(n,t),portalNode:r,domReady:!e||r}}var $=!1,ee=!1,et=0,er=0;function en(e){let t,r;t=e.movementX||e.screenX-et,r=e.movementY||e.screenY-er,et=e.screenX,er=e.screenY,(t||r||0)&&(ee=!0)}function ei(){ee=!1}var eo=e.i(43476);function ea(e){let t=T.forwardRef((t,r)=>e({...t,ref:r}));return t.displayName=e.displayName||e.name,t}function es(e,t){return T.memo(e,t)}function el(e,t){let r,{wrapElement:n,render:i,...o}=t,a=X(t.ref,i&&(0,T.isValidElement)(i)&&("ref"in i.props||"ref"in i)?({...i.props}).ref||i.ref:null);if(T.isValidElement(i)){let e={...i.props,ref:a};r=T.cloneElement(i,function(e,t){let r={...e};for(let n in t){if(!y(t,n))continue;if("className"===n){let n="className";r[n]=e[n]?`${e[n]} ${t[n]}`:t[n];continue}if("style"===n){let n="style";r[n]=e[n]?{...e[n],...t[n]}:t[n];continue}let i=t[n];if("function"==typeof i&&n.startsWith("on")){let t=e[n];if("function"==typeof t){r[n]=(...e)=>{i(...e),t(...e)};continue}}r[n]=i}return r}(o,e))}else r=i?i(o):(0,eo.jsx)(e,{...o});return n?n(r):r}function eu(e){let t=(t={})=>e(t);return t.displayName=e.name,t}function ec(e=[],t=[]){let r=T.createContext(void 0),n=T.createContext(void 0),i=()=>T.useContext(r),o=t=>e.reduceRight((e,r)=>(0,eo.jsx)(r,{...t,children:e}),(0,eo.jsx)(r.Provider,{...t}));return{context:r,scopedContext:n,useContext:i,useScopedContext:(e=!1)=>{let t=T.useContext(n),r=i();return e?t:t||r},useProviderContext:()=>{let e=T.useContext(n),t=i();if(!e||e!==t)return t},ContextProvider:o,ScopedContextProvider:e=>(0,eo.jsx)(o,{...e,children:t.reduceRight((t,r)=>(0,eo.jsx)(r,{...e,children:t}),(0,eo.jsx)(n.Provider,{...e}))})}}var ed=ec(),ef=ed.useContext;ed.useScopedContext,ed.useProviderContext;var eA=ec([ed.ContextProvider],[ed.ScopedContextProvider]),eh=eA.useContext;eA.useScopedContext;var em=eA.useProviderContext,ep=eA.ContextProvider,eB=eA.ScopedContextProvider,eC=(0,T.createContext)(void 0),eg=(0,T.createContext)(void 0),ev=(0,T.createContext)(!0),ey="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function eb(e){return!(!e.matches(ey)||!c(e)||e.closest("[inert]"))}function eE(e){if(!eb(e)||0>Number.parseInt(e.getAttribute("tabindex")||"0",10))return!1;if(!("form"in e)||!e.form||e.checked||"radio"!==e.type)return!0;let t=e.form.elements.namedItem(e.name);if(!t||!("length"in t))return!0;let r=o(e);return!r||r===e||!("form"in r)||r.form!==e.form||r.name!==e.name}function eM(e,t){let r=Array.from(e.querySelectorAll(ey));t&&r.unshift(e);let n=r.filter(eb);return n.forEach((e,t)=>{var r;if(!s(e))return;let i=null==(r=e.contentDocument)?void 0:r.body;i&&n.splice(t,1,...eM(i))}),n}function eF(e,t,r){let n=Array.from(e.querySelectorAll(ey)),i=n.filter(eE);return(t&&eE(e)&&i.unshift(e),i.forEach((e,t)=>{var n;if(!s(e))return;let o=null==(n=e.contentDocument)?void 0:n.body;if(!o)return;let a=eF(o,!1,r);i.splice(t,1,...a)}),!i.length&&r)?n:i}function eS(e,t){var r;let n,i,a,s;return r=document.body,n=o(r),a=(i=eM(r,!1)).indexOf(n),(s=i.slice(a+1)).find(eE)||(e?i.find(eE):null)||(t?s[0]:null)||null}function eR(e,t){var r;let n,i,a,s;return r=document.body,n=o(r),a=(i=eM(r,!1).reverse()).indexOf(n),(s=i.slice(a+1)).find(eE)||(e?i.find(eE):null)||(t?s[0]:null)||null}function eI(e){let t=o(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&r===e.id}function eT(e){let t=o(e);if(!t)return!1;if(a(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&"id"in e&&(r===e.id||!!e.querySelector(`#${CSS.escape(r)}`))}function eG(e){!eT(e)&&eb(e)&&e.focus()}var ex=w(),eD=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],ew=Symbol("safariFocusAncestor");function eL(e){return"input"===e.tagName.toLowerCase()&&!!e.type&&("radio"===e.type||"checkbox"===e.type)}function e_(e,t){return Q(r=>{null==e||e(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var eO=!1,eH=!0;function eP(e){let t=e.target;t&&"hasAttribute"in t&&!t.hasAttribute("data-focus-visible")&&(eH=!1)}function eJ(e){e.metaKey||e.ctrlKey||e.altKey||(eH=!0)}var eU=eu(function({focusable:e=!0,accessibleWhenDisabled:t,autoFocus:r,onFocusVisible:n,...i}){var o,a,s,u,c;let d=(0,T.useRef)(null);(0,T.useEffect)(()=>{!e||eO||(U("mousedown",eP,!0),U("keydown",eJ,!0),eO=!0)},[e]),ex&&(0,T.useEffect)(()=>{if(!e)return;let t=d.current;if(!t||!eL(t))return;let r="labels"in t?t.labels:null;if(!r)return;let n=()=>queueMicrotask(()=>t.focus());for(let e of r)e.addEventListener("mouseup",n);return()=>{for(let e of r)e.removeEventListener("mouseup",n)}},[e]);let f=e&&S(i),A=!!f&&!t,[h,m]=(0,T.useState)(!1);(0,T.useEffect)(()=>{e&&A&&h&&m(!1)},[e,A,h]),(0,T.useEffect)(()=>{if(!e||!h)return;let t=d.current;if(!t||"u"{eb(t)||m(!1)});return r.observe(t),()=>r.disconnect()},[e,h]);let p=e_(i.onKeyPressCapture,f),B=e_(i.onMouseDownCapture,f),C=e_(i.onClickCapture,f),g=i.onMouseDown,v=Q(t=>{if(null==g||g(t),t.defaultPrevented||!e)return;let r=t.currentTarget;if(!ex||L(t)||!l(r)&&!eL(r))return;let n=!1,i=()=>{n=!0};r.addEventListener("focusin",i,{capture:!0,once:!0});let o=function(e){for(;e&&!eb(e);)e=e.closest(ey);return e||null}(r.parentElement);o&&(o[ew]=!0),J(r,"mouseup",()=>{r.removeEventListener("focusin",i,!0),o&&(o[ew]=!1),n||eG(r)})}),y=(t,r)=>{if(r&&(t.currentTarget=r),!e)return;let i=t.currentTarget;i&&eI(i)&&(null==n||n(t),t.defaultPrevented||(i.dataset.focusVisible="true",m(!0)))},b=i.onKeyDownCapture,E=Q(t=>{if(null==b||b(t),t.defaultPrevented||!e||h||t.metaKey||t.altKey||t.ctrlKey||!_(t))return;let r=t.currentTarget;J(r,"focusout",()=>y(t,r))}),M=i.onFocusCapture,F=Q(t=>{if(null==M||M(t),t.defaultPrevented||!e)return;if(!_(t))return void m(!1);let r=t.currentTarget;eH||function(e){let{tagName:t,readOnly:r,type:n}=e;return"TEXTAREA"===t&&!r||"SELECT"===t&&!r||("INPUT"!==t||r?!!e.isContentEditable||"combobox"===e.getAttribute("role")&&!!e.dataset.name:eD.includes(n))}(t.target)?J(t.target,"focusout",()=>y(t,r)):m(!1)}),I=i.onBlur,G=Q(t=>{null==I||I(t),!e||P(t)&&(t.currentTarget.removeAttribute("data-focus-visible"),m(!1))}),x=(0,T.useContext)(ev),D=Q(t=>{e&&r&&t&&x&&queueMicrotask(()=>{eI(t)||eb(t)&&t.focus()})}),w=function(e,t){let r=e=>{if("string"==typeof e)return e},[n,i]=(0,T.useState)(()=>r(void 0));return j(()=>{let t=e&&"current"in e?e.current:e;i((null==t?void 0:t.tagName.toLowerCase())||r(void 0))},[e,void 0]),n}(d),O=e&&(!w||"button"===w||"summary"===w||"input"===w||"select"===w||"textarea"===w||"a"===w),H=e&&(!w||"button"===w||"input"===w||"select"===w||"textarea"===w),N=i.style,k=(0,T.useMemo)(()=>A?{pointerEvents:"none",...N}:N,[A,N]);return i={"data-focus-visible":e&&h||void 0,"data-autofocus":r||void 0,"aria-disabled":f||void 0,...i,ref:X(d,D,i.ref),style:k,tabIndex:(o=e,a=A,s=O,u=H,c=i.tabIndex,o?a?s&&!u?-1:void 0:s?c:c||0:c),disabled:!!H&&!!A||void 0,contentEditable:f?void 0:i.contentEditable,onKeyPressCapture:p,onClickCapture:C,onMouseDownCapture:B,onMouseDown:v,onKeyDownCapture:E,onFocusCapture:F,onBlur:G},R(i)});function eN(e){let t=[];for(let r of e)t.push(...r);return t}function ek(e){return e.slice().reverse()}function eK(e,t,r){return Q(n=>{var i;let o,a;if(null==t||t(n),n.defaultPrevented||n.isPropagationStopped()||!_(n)||"Shift"===n.key||"Control"===n.key||"Alt"===n.key||"Meta"===n.key||(!(o=n.target)||d(o))&&1===n.key.length&&!n.ctrlKey&&!n.metaKey)return;let s=e.getState(),l=null==(i=B(e,s.activeId))?void 0:i.element;if(!l)return;let{view:u,...c}=n;l!==(null==r?void 0:r.current)&&l.focus(),a=new KeyboardEvent(n.type,c),l.dispatchEvent(a)||n.preventDefault(),n.currentTarget.contains(l)&&n.stopPropagation()})}ea(function(e){return el("div",eU(e))});var ej=eu(function({store:e,composite:t=!0,focusOnMove:r=t,moveOnKeyPress:n=!0,...i}){let a=em();M(e=e||a,!1);let s=(0,T.useRef)(null),l=(0,T.useRef)(null),u=function(e){let[t,r]=(0,T.useState)(!1),n=(0,T.useCallback)(()=>r(!0),[]),i=e.useState(t=>B(e,t.activeId));return(0,T.useEffect)(()=>{let e=null==i?void 0:i.element;!t||e&&(r(!1),e.focus({preventScroll:!0}))},[i,t]),n}(e),c=e.useState("moves"),[,f]=function(e){let[t,r]=(0,T.useState)(null);return j(()=>{if(null==t||!e)return;let r=null;return e(e=>(r=e,t)),()=>{e(r)}},[t,e]),[t,r]}(t?e.setBaseElement:null);(0,T.useEffect)(()=>{var n;if(!e||!c||!t||!r)return;let{activeId:i}=e.getState(),o=null==(n=B(e,i))?void 0:n.element;o&&("scrollIntoView"in o?(o.focus({preventScroll:!0}),o.scrollIntoView({block:"nearest",inline:"nearest",...void 0})):o.focus())},[e,c,t,r]),j(()=>{if(!e||!c||!t)return;let{baseElement:r,activeId:n}=e.getState();if(null!==n||!r)return;let i=l.current;l.current=null,i&&O(i,{relatedTarget:r}),eI(r)||r.focus()},[e,c,t]);let A=e.useState("activeId"),h=e.useState("virtualFocus");j(()=>{var r;if(!e||!t||!h)return;let n=l.current;if(l.current=null,!n)return;let i=(null==(r=B(e,A))?void 0:r.element)||o(n);i!==n&&O(n,{relatedTarget:i})},[e,A,h,t]);let m=eK(e,i.onKeyDownCapture,l),p=eK(e,i.onKeyUpCapture,l),v=i.onFocusCapture,y=Q(t=>{var r;let n;if(null==v||v(t),t.defaultPrevented||!e)return;let{virtualFocus:i}=e.getState();if(!i)return;let o=t.relatedTarget,a=(n=(r=t.currentTarget)[C],delete r[C],n);_(t)&&a&&(t.stopPropagation(),l.current=o)}),b=i.onFocus,E=Q(r=>{if(null==b||b(r),r.defaultPrevented||!t||!e)return;let{relatedTarget:n}=r,{virtualFocus:i}=e.getState();i?_(r)&&!g(e,n)&&queueMicrotask(u):_(r)&&e.setActiveId(null)}),F=i.onBlurCapture,S=Q(t=>{var r;if(null==F||F(t),t.defaultPrevented||!e)return;let{virtualFocus:n,activeId:i}=e.getState();if(!n)return;let o=null==(r=B(e,i))?void 0:r.element,a=t.relatedTarget,s=g(e,a),u=l.current;l.current=null,_(t)&&s?(a===o?u&&u!==a&&O(u,t):o?O(o,t):u&&O(u,t),t.stopPropagation()):!g(e,t.target)&&o&&O(o,t)}),R=i.onKeyDown,I=Y(n),G=Q(t=>{var r;if(null==R||R(t),t.nativeEvent.isComposing||t.defaultPrevented||!e||!_(t))return;let{orientation:n,renderedItems:i,activeId:o}=e.getState(),a=B(e,o);if(null==(r=null==a?void 0:a.element)?void 0:r.isConnected)return;let s="horizontal"!==n,l="vertical"!==n,u=i.some(e=>!!e.rowId);if(("ArrowLeft"===t.key||"ArrowRight"===t.key||"Home"===t.key||"End"===t.key)&&d(t.currentTarget))return;let c={ArrowUp:(u||s)&&(()=>{if(u){let e=eN(ek(function(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}(i))).find(e=>!e.disabled);return null==e?void 0:e.id}return null==e?void 0:e.last()}),ArrowRight:(u||l)&&e.first,ArrowDown:(u||s)&&e.first,ArrowLeft:(u||l)&&e.last,Home:e.first,End:e.last,PageUp:e.first,PageDown:e.last}[t.key];if(c){let r=c();if(void 0!==r){if(!I(t))return;t.preventDefault(),e.move(r)}}});return i=Z(i,t=>(0,eo.jsx)(ep,{value:e,children:t}),[e]),i={"aria-activedescendant":e.useState(r=>{var n;if(e&&t&&r.virtualFocus)return null==(n=B(e,r.activeId))?void 0:n.id}),...i,ref:X(s,f,i.ref),onKeyDownCapture:m,onKeyUpCapture:p,onFocusCapture:y,onFocus:E,onBlurCapture:S,onKeyDown:G},i=eU({focusable:e.useState(e=>t&&(e.virtualFocus||null===e.activeId)),...i})});ea(function(e){return el("div",ej(e))});var eQ=ec();eQ.useContext,eQ.useScopedContext;var eX=eQ.useProviderContext,eV=ec([eQ.ContextProvider],[eQ.ScopedContextProvider]);eV.useContext,eV.useScopedContext;var eq=eV.useProviderContext,eW=eV.ContextProvider,eY=eV.ScopedContextProvider,eZ=(0,T.createContext)(void 0),ez=(0,T.createContext)(void 0),e$=ec([eW],[eY]);e$.useContext,e$.useScopedContext;var e0=e$.useProviderContext,e1=e$.ContextProvider,e9=e$.ScopedContextProvider,e8=eu(function({store:e,...t}){let r=e0();return e=e||r,t={...t,ref:X(null==e?void 0:e.setAnchorElement,t.ref)}});ea(function(e){return el("div",e8(e))});var e2=(0,T.createContext)(void 0),e3=ec([e1,ep],[e9,eB]),e6=e3.useContext,e4=e3.useScopedContext,e7=e3.useProviderContext,e5=e3.ContextProvider,te=e3.ScopedContextProvider,tt=(0,T.createContext)(void 0),tr=(0,T.createContext)(!1);function tn(e,t){let r=e.__unstableInternals;return M(r,"Invalid store"),r[t]}function ti(e,...t){let r=e,n=r,i=Symbol(),o=v,a=new Set,s=new Set,l=new Set,u=new Set,c=new Set,d=new WeakMap,f=new WeakMap,A=(e,t,r=u)=>(r.add(t),f.set(t,e),()=>{var e;null==(e=d.get(t))||e(),d.delete(t),f.delete(t),r.delete(t)}),h=(e,o,a=!1)=>{var l,A;if(!y(r,e))return;let h=(A=r[e],"function"==typeof o?o("function"==typeof A?A():A):o);if(h===r[e])return;if(!a)for(let r of t)null==(l=null==r?void 0:r.setState)||l.call(r,e,h);let m=r;r={...r,[e]:h};let p=Symbol();i=p,s.add(e);let B=(t,n,i)=>{var o;let a=f.get(t);(!a||a.some(t=>i?i.has(t):t===e))&&(null==(o=d.get(t))||o(),d.set(t,t(r,n)))};for(let e of u)B(e,m);queueMicrotask(()=>{if(i!==p)return;let e=r;for(let e of c)B(e,n,s);n=e,s.clear()})},m={getState:()=>r,setState:h,__unstableInternals:{setup:e=>(l.add(e),()=>l.delete(e)),init:()=>{let e=a.size,n=Symbol();a.add(n);let i=()=>{a.delete(n),a.size||o()};if(e)return i;let s=Object.keys(r).map(e=>b(...t.map(t=>{var r;let n=null==(r=null==t?void 0:t.getState)?void 0:r.call(t);if(n&&y(n,e))return tl(t,[e],t=>{h(e,t[e],!0)})}))),u=[];for(let e of l)u.push(e());return o=b(...s,...u,...t.map(ta)),i},subscribe:(e,t)=>A(e,t),sync:(e,t)=>(d.set(t,t(r,r)),A(e,t)),batch:(e,t)=>(d.set(t,t(r,n)),A(e,t,c)),pick:e=>ti(function(e,t){let r={};for(let n of t)y(e,n)&&(r[n]=e[n]);return r}(r,e),m),omit:e=>ti(function(e,t){let r={...e};for(let e of t)y(r,e)&&delete r[e];return r}(r,e),m)}};return m}function to(e,...t){if(e)return tn(e,"setup")(...t)}function ta(e,...t){if(e)return tn(e,"init")(...t)}function ts(e,...t){if(e)return tn(e,"subscribe")(...t)}function tl(e,...t){if(e)return tn(e,"sync")(...t)}function tu(e,...t){if(e)return tn(e,"batch")(...t)}function tc(e,...t){if(e)return tn(e,"omit")(...t)}function td(...e){var t;let r={};for(let n of e){let e=null==(t=null==n?void 0:n.getState)?void 0:t.call(n);e&&Object.assign(r,e)}let n=ti(r,...e);return Object.assign({},...e,n)}function tf(e,t){}function tA(e,t,r){if(!r)return!1;let n=e.find(e=>!e.disabled&&e.value);return(null==n?void 0:n.value)===t}function th(e,t){return!!t&&null!=e&&(e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,""),t.length>e.length&&0===t.toLowerCase().indexOf(e.toLowerCase()))}var tm=eu(function({store:e,focusable:t=!0,autoSelect:r=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:o=0,showOnChange:a,showOnMouseDown:s,showOnClick:l=s,showOnKeyDown:u,showOnKeyPress:c=u,blurActiveItemOnClick:d,setValueOnClick:f=!0,moveOnKeyPress:B=!0,autoComplete:C="list",...g}){var y;let b,E=e7();M(e=e||E,!1);let S=(0,T.useRef)(null),[R,I]=W(),G=(0,T.useRef)(!1),x=(0,T.useRef)(!1),D=e.useState(e=>e.virtualFocus&&r),w="inline"===C||"both"===C,[L,_]=(0,T.useState)(w);y=[w],b=(0,T.useRef)(!1),j(()=>{if(b.current)return(()=>{w&&_(!0)})();b.current=!0},y),j(()=>()=>{b.current=!1},[]);let O=e.useState("value"),H=(0,T.useRef)(void 0);(0,T.useEffect)(()=>tl(e,["selectedValue","activeId"],(e,t)=>{H.current=t.selectedValue}),[]);let U=e.useState(e=>{var t;if(w&&L){if(e.activeValue&&Array.isArray(e.selectedValue)&&(e.selectedValue.includes(e.activeValue)||(null==(t=H.current)?void 0:t.includes(e.activeValue))))return;return e.activeValue}}),N=e.useState("renderedItems"),k=e.useState("open"),K=e.useState("contentElement"),Z=(0,T.useMemo)(()=>{if(!w||!L)return O;if(tA(N,U,D)){if(th(O,U)){let e=(null==U?void 0:U.slice(O.length))||"";return O+e}return O}return U||O},[w,L,N,U,D,O]);(0,T.useEffect)(()=>{let e=S.current;if(!e)return;let t=()=>_(!0);return e.addEventListener("combobox-item-move",t),()=>{e.removeEventListener("combobox-item-move",t)}},[]),(0,T.useEffect)(()=>{if(!w||!L||!U||!tA(N,U,D)||!th(O,U))return;let e=v;return queueMicrotask(()=>{let t=S.current;if(!t)return;let{start:r,end:n}=A(t),i=O.length,o=U.length;p(t,i,o),e=()=>{if(!eI(t))return;let{start:e,end:a}=A(t);e!==i||a===o&&p(t,r,n)}}),()=>e()},[R,w,L,U,N,D,O]);let z=(0,T.useRef)(null),$=Q(n),ee=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(!k||!K)return;let t=m(K);if(!t)return;z.current=t;let r=()=>{G.current=!1},n=()=>{if(!e||!G.current)return;let{activeId:t}=e.getState();null===t||t!==ee.current&&(G.current=!1)},i={passive:!0,capture:!0};return t.addEventListener("wheel",r,i),t.addEventListener("touchmove",r,i),t.addEventListener("scroll",n,i),()=>{t.removeEventListener("wheel",r,!0),t.removeEventListener("touchmove",r,!0),t.removeEventListener("scroll",n,!0)}},[k,K,e]),j(()=>{!O||x.current||(G.current=!0)},[O]),j(()=>{"always"!==D&&k||(G.current=k)},[D,k]);let et=e.useState("resetValueOnSelect");q(()=>{var t,r;let n=G.current;if(!e||!k||!n&&!et)return;let{baseElement:i,contentElement:o,activeId:a}=e.getState();if(!i||eI(i)){if(null==o?void 0:o.hasAttribute("data-placing")){let e=new MutationObserver(I);return e.observe(o,{attributeFilter:["data-placing"]}),()=>e.disconnect()}if(D&&n){let r,n=$(N),i=void 0!==n?n:null!=(t=null==(r=N.find(e=>{var t;return!e.disabled&&(null==(t=e.element)?void 0:t.getAttribute("role"))!=="tab"}))?void 0:r.id)?t:e.first();ee.current=i,e.move(null!=i?i:null)}else{let t=null==(r=e.item(a||e.first()))?void 0:r.element;t&&"scrollIntoView"in t&&t.scrollIntoView({block:"nearest",inline:"nearest"})}}},[e,k,R,O,D,et,$,N]),(0,T.useEffect)(()=>{if(!w)return;let t=S.current;if(!t)return;let r=[t,K].filter(e=>!!e),n=t=>{r.every(e=>P(t,e))&&(null==e||e.setValue(Z))};for(let e of r)e.addEventListener("focusout",n);return()=>{for(let e of r)e.removeEventListener("focusout",n)}},[w,K,e,Z]);let er=e=>e.currentTarget.value.length>=o,en=g.onChange,ei=Y(null!=a?a:er),eo=Y(null!=i?i:!e.tag),ea=Q(t=>{if(null==en||en(t),t.defaultPrevented||!e)return;let r=t.currentTarget,{value:n,selectionStart:i,selectionEnd:o}=r,a=t.nativeEvent;if(G.current=!0,"input"===a.type&&(a.isComposing&&(G.current=!1,x.current=!0),w)){let e="insertText"===a.inputType||"insertCompositionText"===a.inputType,t=i===n.length;_(e&&t)}if(eo(t)){let t=n===e.getState().value;e.setValue(n),queueMicrotask(()=>{p(r,i,o)}),w&&D&&t&&I()}ei(t)&&e.show(),D&&G.current||e.setActiveId(null)}),es=g.onCompositionEnd,el=Q(e=>{G.current=!0,x.current=!1,null==es||es(e),e.defaultPrevented||D&&I()}),eu=g.onMouseDown,ec=Y(null!=d?d:()=>!!(null==e?void 0:e.getState().includesBaseElement)),ed=Y(f),ef=Y(null!=l?l:er),eA=Q(t=>{null==eu||eu(t),t.defaultPrevented||t.button||t.ctrlKey||e&&(ec(t)&&e.setActiveId(null),ed(t)&&e.setValue(Z),ef(t)&&J(t.currentTarget,"mouseup",e.show))}),eh=g.onKeyDown,em=Y(null!=c?c:er),ep=Q(t=>{if(null==eh||eh(t),t.repeat||(G.current=!1),t.defaultPrevented||t.ctrlKey||t.altKey||t.shiftKey||t.metaKey||!e)return;let{open:r}=e.getState();!r&&("ArrowUp"===t.key||"ArrowDown"===t.key)&&em(t)&&(t.preventDefault(),e.show())}),eB=g.onBlur,eC=Q(e=>{if(G.current=!1,null==eB||eB(e),e.defaultPrevented)return}),eg=V(g.id),ev=e.useState(e=>null===e.activeId);return g={id:eg,role:"combobox","aria-autocomplete":"inline"===C||"list"===C||"both"===C||"none"===C?C:void 0,"aria-haspopup":h(K,"listbox"),"aria-expanded":k,"aria-controls":null==K?void 0:K.id,"data-active-item":ev||void 0,value:Z,...g,ref:X(S,g.ref),onChange:ea,onCompositionEnd:el,onMouseDown:eA,onKeyDown:ep,onBlur:eC},g=ej({store:e,focusable:t,...g,moveOnKeyPress:e=>!F(B,e)&&(w&&_(!0),!0)}),{autoComplete:"off",...g=e8({store:e,...g})}}),tp=ea(function(e){return el("input",tm(e))});function tB(e){let t=e.relatedTarget;return(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE?t:null}e.s(["Combobox",()=>tp],11889);var tC=Symbol("composite-hover"),tg=eu(function({store:e,focusOnHover:t=!0,blurOnHoverEnd:r=!!t,...n}){let i=eh();M(e=e||i,!1);let o=((0,T.useEffect)(()=>{$||(U("mousemove",en,!0),U("mousedown",ei,!0),U("mouseup",ei,!0),U("keydown",ei,!0),U("scroll",ei,!0),$=!0)},[]),Q(()=>ee)),s=n.onMouseMove,l=Y(t),u=Q(t=>{if((null==s||s(t),!t.defaultPrevented&&o())&&l(t)){if(!eT(t.currentTarget)){let t=null==e?void 0:e.getState().baseElement;t&&!eI(t)&&t.focus()}null==e||e.setActiveId(t.currentTarget.id)}}),c=n.onMouseLeave,d=Y(r),f=Q(t=>{var r;let n;null==c||c(t),!t.defaultPrevented&&o()&&((n=tB(t))&&a(t.currentTarget,n)||function(e){let t=tB(e);if(!t)return!1;do{if(y(t,tC)&&t[tC])return!0;t=t.parentElement}while(t)return!1}(t)||!l(t)||d(t)&&(null==e||e.setActiveId(null),null==(r=null==e?void 0:e.getState().baseElement)||r.focus()))}),A=(0,T.useCallback)(e=>{e&&(e[tC]=!0)},[]);return R(n={...n,ref:X(A,n.ref),onMouseMove:u,onMouseLeave:f})});es(ea(function(e){return el("div",tg(e))}));var tv=eu(function({store:e,shouldRegisterItem:t=!0,getItem:r=E,element:n,...i}){let o=ef();e=e||o;let a=V(i.id),s=(0,T.useRef)(n);return(0,T.useEffect)(()=>{let n=s.current;if(!a||!n||!t)return;let i=r({id:a,element:n});return null==e?void 0:e.renderItem(i)},[a,t,r,e]),R(i={...i,ref:X(s,i.ref)})});function ty(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return"Enter"===e.key?l(t)||"SUMMARY"===t.tagName||"A"===t.tagName:" "===e.key&&(l(t)||"SUMMARY"===t.tagName||"INPUT"===t.tagName||"SELECT"===t.tagName)}ea(function(e){return el("div",tv(e))});var tb=Symbol("command"),tE=eu(function({clickOnEnter:e=!0,clickOnSpace:t=!0,...n}){let i,o,a=(0,T.useRef)(null),[s,u]=(0,T.useState)(!1);(0,T.useEffect)(()=>{a.current&&u(l(a.current))},[]);let[c,f]=(0,T.useState)(!1),A=(0,T.useRef)(!1),h=S(n),[m,p]=(i=n.onLoadedMetadataCapture,o=(0,T.useMemo)(()=>Object.assign(()=>{},{...i,[tb]:!0}),[i,tb,!0]),[null==i?void 0:i[tb],{onLoadedMetadataCapture:o}]),B=n.onKeyDown,C=Q(n=>{null==B||B(n);let i=n.currentTarget;if(n.defaultPrevented||m||h||!_(n)||d(i)||i.isContentEditable)return;let o=e&&"Enter"===n.key,a=t&&" "===n.key,s="Enter"===n.key&&!e,l=" "===n.key&&!t;if(s||l)return void n.preventDefault();if(o||a){let e=ty(n);if(o){if(!e){n.preventDefault();let{view:e,...t}=n,o=()=>H(i,t);r&&/firefox\//i.test(navigator.userAgent)?J(i,"keyup",o):queueMicrotask(o)}}else a&&(A.current=!0,e||(n.preventDefault(),f(!0)))}}),g=n.onKeyUp,v=Q(e=>{if(null==g||g(e),e.defaultPrevented||m||h||e.metaKey)return;let r=t&&" "===e.key;if(A.current&&r&&(A.current=!1,!ty(e))){e.preventDefault(),f(!1);let t=e.currentTarget,{view:r,...n}=e;queueMicrotask(()=>H(t,n))}});return eU(n={"data-active":c||void 0,type:s?"button":void 0,...p,...n,ref:X(a,n.ref),onKeyDown:C,onKeyUp:v})});ea(function(e){return el("button",tE(e))});var{useSyncExternalStore:tM}=e.i(2239).default,tF=()=>()=>{};function tS(e,t=E){let r=T.useCallback(t=>e?ts(e,null,t):tF(),[e]),n=()=>{let r="string"==typeof t?t:null,n="function"==typeof t?t:null,i=null==e?void 0:e.getState();return n?n(i):i&&r&&y(i,r)?i[r]:void 0};return tM(r,n,n)}function tR(e,t){let r=T.useRef({}),n=T.useCallback(t=>e?ts(e,null,t):tF(),[e]),i=()=>{let n=null==e?void 0:e.getState(),i=!1,o=r.current;for(let e in t){let r=t[e];if("function"==typeof r){let t=r(n);t!==o[e]&&(o[e]=t,i=!0)}if("string"==typeof r){if(!n||!y(n,r))continue;let t=n[r];t!==o[e]&&(o[e]=t,i=!0)}}return i&&(r.current={...o}),r.current};return tM(n,i,i)}function tI(e,t,r,n){var i;let o,a=y(t,r)?t[r]:void 0,s=(i={value:a,setValue:n?t[n]:void 0},o=(0,T.useRef)(i),j(()=>{o.current=i}),o);j(()=>tl(e,[r],(e,t)=>{let{value:n,setValue:i}=s.current;i&&e[r]!==t[r]&&e[r]!==n&&i(e[r])}),[e,r]),j(()=>{if(void 0!==a)return e.setState(r,a),tu(e,[r],()=>{void 0!==a&&e.setState(r,a)})})}function tT(e,t){let[r,n]=T.useState(()=>e(t));j(()=>ta(r),[r]);let i=T.useCallback(e=>tS(r,e),[r]);return[T.useMemo(()=>({...r,useState:i}),[r,i]),Q(()=>{n(r=>e({...t,...r.getState()}))})]}function tG(e,t,r,n=!1){var i;let o,a;if(!t||!r)return;let{renderedItems:s}=t.getState(),l=m(e);if(!l)return;let u=function(e,t=!1){let r=e.clientHeight,{top:n}=e.getBoundingClientRect(),i=1.5*Math.max(.875*r,r-40),o=t?r-i+n:i+n;return"HTML"===e.tagName?o+e.scrollTop:o}(l,n);for(let e=0;e=0){void 0!==a&&at||(e&&(null==B?void 0:B.baseElement)&&B.baseElement===e.baseElement?B.id:void 0),baseElement:e=>(null==e?void 0:e.baseElement)||void 0,isActiveItem:e=>!!e&&e.activeId===m,ariaSetSize:e=>null!=s?s:e&&(null==B?void 0:B.ariaSetSize)&&B.baseElement===e.baseElement?B.ariaSetSize:void 0,ariaPosInSet(e){if(null!=u)return u;if(!e||!(null==B?void 0:B.ariaPosInSet)||B.baseElement!==e.baseElement)return;let t=e.renderedItems.filter(e=>e.rowId===y);return B.ariaPosInSet+t.findIndex(e=>e.id===m)},isTabbable(t){if(!(null==t?void 0:t.renderedItems.length))return!0;if(t.virtualFocus)return!1;if(o)return!0;if(null===t.activeId)return!1;let r=null==e?void 0:e.item(t.activeId);return null!=r&&!!r.disabled||null==r||!r.element||t.activeId===m}}),G=(0,T.useCallback)(e=>{var t;let r={...e,id:m||e.id,rowId:y,disabled:!!v,children:null==(t=e.element)?void 0:t.textContent};return a?a(r):r},[m,y,v,a]),x=c.onFocus,D=(0,T.useRef)(!1),O=Q(t=>{var r,i;if(null==x||x(t),t.defaultPrevented||L(t)||!m||!e||(r=e,!_(t)&&g(r,t.target)))return;let{virtualFocus:o,baseElement:a}=e.getState();e.setActiveId(m),f(t.currentTarget)&&function(e,t=!1){if(d(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=n(e).getSelection();null==r||r.selectAllChildren(e),t&&(null==r||r.collapseToEnd())}}(t.currentTarget),!o||!_(t)||!f(i=t.currentTarget)&&("INPUT"!==i.tagName||l(i))&&(null==a?void 0:a.isConnected)&&((w()&&t.currentTarget.hasAttribute("data-autofocus")&&t.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),D.current=!0,t.relatedTarget===a||g(e,t.relatedTarget))?(a[C]=!0,a.focus({preventScroll:!0})):a.focus())}),H=c.onBlurCapture,P=Q(t=>{if(null==H||H(t),t.defaultPrevented)return;let r=null==e?void 0:e.getState();(null==r?void 0:r.virtualFocus)&&D.current&&(D.current=!1,t.preventDefault(),t.stopPropagation())}),J=c.onKeyDown,U=Y(r),N=Y(i),k=Q(t=>{if(null==J||J(t),t.defaultPrevented||!_(t)||!e)return;let{currentTarget:r}=t,i=e.getState(),o=e.item(m),a=!!(null==o?void 0:o.rowId),s="horizontal"!==i.orientation,l="vertical"!==i.orientation,u=()=>!(!a&&!l&&i.baseElement&&d(i.baseElement)),c={ArrowUp:(a||s)&&e.up,ArrowRight:(a||l)&&e.next,ArrowDown:(a||s)&&e.down,ArrowLeft:(a||l)&&e.previous,Home:()=>{if(u())return!a||t.ctrlKey?null==e?void 0:e.first():null==e?void 0:e.previous(-1)},End:()=>{if(u())return!a||t.ctrlKey?null==e?void 0:e.last():null==e?void 0:e.next(-1)},PageUp:()=>tG(r,e,null==e?void 0:e.up,!0),PageDown:()=>tG(r,e,null==e?void 0:e.down)}[t.key];if(c){if(f(r)){let e=A(r),i=l&&"ArrowLeft"===t.key,o=l&&"ArrowRight"===t.key,a=s&&"ArrowUp"===t.key,u=s&&"ArrowDown"===t.key;if(o||u){let{length:t}=function(e){if(d(e))return e.value;if(e.isContentEditable){let t=n(e).createRange();return t.selectNodeContents(e),t.toString()}return""}(r);if(e.end!==t)return}else if((i||a)&&0!==e.start)return}let i=c();if(U(t)||void 0!==i){if(!N(t))return;t.preventDefault(),e.move(i)}}}),K=(0,T.useMemo)(()=>({id:m,baseElement:b}),[m,b]);return c={id:m,"data-active-item":E||void 0,...c=Z(c,e=>(0,eo.jsx)(eC.Provider,{value:K,children:e}),[K]),ref:X(p,c.ref),tabIndex:I?c.tabIndex:-1,onFocus:O,onBlurCapture:P,onKeyDown:k},c=tE(c),R({...c=tv({store:e,...c,getItem:G,shouldRegisterItem:!!m&&c.shouldRegisterItem}),"aria-setsize":M,"aria-posinset":F})});es(ea(function(e){return el("button",tx(e))}));var tD=eu(function({store:e,value:t,hideOnClick:r,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:o,focusOnHover:a=!1,moveOnKeyPress:s=!0,getItem:l,...u}){var c,f;let A=e4();M(e=e||A,!1);let{resetValueOnSelectState:h,multiSelectable:m,selected:p}=tR(e,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable:e=>Array.isArray(e.selectedValue),selected:e=>(function(e,t){if(null!=t)return null!=e&&(Array.isArray(e)?e.includes(t):e===t)})(e.selectedValue,t)}),B=(0,T.useCallback)(e=>{let r={...e,value:t};return l?l(r):r},[t,l]);n=null!=n?n:!m,r=null!=r?r:null!=t&&!m;let C=u.onClick,g=Y(n),v=Y(i),y=Y(null!=(c=null!=o?o:h)?c:m),b=Y(r),E=Q(r=>{null==C||C(r),r.defaultPrevented||function(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return!!e.altKey&&("a"===r||"button"===r&&"submit"===t.type||"input"===r&&"submit"===t.type)}(r)||!function(e){let t=e.currentTarget;if(!t)return!1;let r=D();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let n=t.tagName.toLowerCase();return"a"===n||"button"===n&&"submit"===t.type||"input"===n&&"submit"===t.type}(r)&&(null!=t&&(v(r)&&(y(r)&&(null==e||e.resetValue()),null==e||e.setSelectedValue(e=>Array.isArray(e)?e.includes(t)?e.filter(e=>e!==t):[...e,t]:t)),g(r)&&(null==e||e.setValue(t))),b(r)&&(null==e||e.hide()))}),F=u.onKeyDown,S=Q(t=>{if(null==F||F(t),t.defaultPrevented)return;let r=null==e?void 0:e.getState().baseElement;!r||eI(r)||(1===t.key.length||"Backspace"===t.key||"Delete"===t.key)&&(queueMicrotask(()=>r.focus()),d(r)&&(null==e||e.setValue(r.value)))});m&&null!=p&&(u={"aria-selected":p,...u}),u=Z(u,e=>(0,eo.jsx)(tt.Provider,{value:t,children:(0,eo.jsx)(tr.Provider,{value:null!=p&&p,children:e})}),[t,p]),u={role:null!=(f=({menu:"menuitem",listbox:"option",tree:"treeitem"})[(0,T.useContext)(e2)])?f:"option",children:t,...u,onClick:E,onKeyDown:S};let R=Y(s);return u=tx({store:e,...u,getItem:B,moveOnKeyPress:t=>{if(!R(t))return!1;let r=new Event("combobox-item-move"),n=null==e?void 0:e.getState().baseElement;return null==n||n.dispatchEvent(r),!0}}),u=tg({store:e,focusOnHover:a,...u})}),tw=es(ea(function(e){return el("div",tD(e))}));e.s(["ComboboxItem",()=>tw],56373);var tL=e.i(74080);function t_(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function tO(...e){return e.join(", ").split(", ").reduce((e,t)=>{let r=t.endsWith("ms")?1:1e3,n=Number.parseFloat(t||"0s")*r;return n>e?n:e},0)}function tH(e,t,r){return!r&&!1!==t&&(!e||!!t)}var tP=eu(function({store:e,alwaysVisible:t,...r}){let n=eX();M(e=e||n,!1);let i=(0,T.useRef)(null),o=V(r.id),[a,s]=(0,T.useState)(null),l=e.useState("open"),u=e.useState("mounted"),c=e.useState("animated"),d=e.useState("contentElement"),f=tS(e.disclosure,"contentElement");j(()=>{i.current&&(null==e||e.setContentElement(i.current))},[e]),j(()=>{let t;return null==e||e.setState("animated",e=>(t=e,!0)),()=>{void 0!==t&&(null==e||e.setState("animated",t))}},[e]),j(()=>{if(c){var e;let t;return(null==d?void 0:d.isConnected)?(e=()=>{s(l?"enter":u?"leave":null)},t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)}),()=>cancelAnimationFrame(t)):void s(null)}},[c,d,l,u]),j(()=>{if(!e||!c||!a||!d)return;let t=()=>null==e?void 0:e.setState("animating",!1),r=()=>(0,tL.flushSync)(t);if("leave"===a&&l||"enter"===a&&!l)return;if("number"==typeof c)return t_(c,r);let{transitionDuration:n,animationDuration:i,transitionDelay:o,animationDelay:s}=getComputedStyle(d),{transitionDuration:u="0",animationDuration:A="0",transitionDelay:h="0",animationDelay:m="0"}=f?getComputedStyle(f):{},p=tO(o,s,h,m)+tO(n,i,u,A);if(!p){"enter"===a&&e.setState("animated",!1),t();return}return t_(Math.max(p-1e3/60,0),r)},[e,c,d,f,l,a]);let A=tH(u,(r=Z(r,t=>(0,eo.jsx)(eY,{value:e,children:t}),[e])).hidden,t),h=r.style,m=(0,T.useMemo)(()=>A?{...h,display:"none"}:h,[A,h]);return R(r={id:o,"data-open":l||void 0,"data-enter":"enter"===a||void 0,"data-leave":"leave"===a||void 0,hidden:A,...r,ref:X(o?e.setContentElement:null,i,r.ref),style:m})}),tJ=ea(function(e){return el("div",tP(e))});ea(function({unmountOnHide:e,...t}){let r=eX();return!1===tS(t.store||r,t=>!e||(null==t?void 0:t.mounted))?null:(0,eo.jsx)(tJ,{...t})});var tU=eu(function({store:e,alwaysVisible:t,...r}){let n=e4(!0),i=e6(),o=!!(e=e||i)&&e===n;M(e,!1);let a=(0,T.useRef)(null),s=V(r.id),l=e.useState("mounted"),u=tH(l,r.hidden,t),c=u?{...r.style,display:"none"}:r.style,d=e.useState(e=>Array.isArray(e.selectedValue)),f=function(e,t,r){let n=function(e){let[t]=(0,T.useState)(e);return t}(r),[i,o]=(0,T.useState)(n);return(0,T.useEffect)(()=>{let r=e&&"current"in e?e.current:e;if(!r)return;let i=()=>{let e=r.getAttribute(t);o(null==e?n:e)},a=new MutationObserver(i);return a.observe(r,{attributeFilter:[t]}),i(),()=>a.disconnect()},[e,t,n]),i}(a,"role",r.role),A="listbox"===f||"tree"===f||"grid"===f,[h,m]=(0,T.useState)(!1),p=e.useState("contentElement");j(()=>{if(!l)return;let e=a.current;if(!e||p!==e)return;let t=()=>{m(!!e.querySelector("[role='listbox']"))},r=new MutationObserver(t);return r.observe(e,{subtree:!0,childList:!0,attributeFilter:["role"]}),t(),()=>r.disconnect()},[l,p]),h||(r={role:"listbox","aria-multiselectable":A&&d||void 0,...r}),r=Z(r,t=>(0,eo.jsx)(te,{value:e,children:(0,eo.jsx)(e2.Provider,{value:f,children:t})}),[e,f]);let B=!s||n&&o?null:e.setContentElement;return R(r={id:s,hidden:u,...r,ref:X(B,a,r.ref),style:c})}),tN=ea(function(e){return el("div",tU(e))});e.s(["ComboboxList",()=>tN,"useComboboxList",()=>tU],86447);var tk=(0,T.createContext)(null),tK=eu(function(e){return{...e,style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px",...e.style}}});ea(function(e){return el("span",tK(e))});var tj=eu(function(e){return tK(e={"data-focus-trap":"",tabIndex:0,"aria-hidden":!0,...e,style:{position:"fixed",top:0,left:0,...e.style}})}),tQ=ea(function(e){return el("span",tj(e))});function tX(e){queueMicrotask(()=>{null==e||e.focus()})}var tV=eu(function({preserveTabOrder:e,preserveTabOrderAnchor:t,portalElement:r,portalRef:i,portal:o=!0,...a}){let s=(0,T.useRef)(null),l=X(s,a.ref),u=(0,T.useContext)(tk),[c,d]=(0,T.useState)(null),[f,A]=(0,T.useState)(null),h=(0,T.useRef)(null),m=(0,T.useRef)(null),p=(0,T.useRef)(null),B=(0,T.useRef)(null);return j(()=>{let e=s.current;if(!e||!o)return void d(null);let t=r?"function"==typeof r?r(e):r:n(e).createElement("div");if(!t)return void d(null);let a=t.isConnected;if(a||(u||n(e).body).appendChild(t),t.id||(t.id=e.id?`portal/${e.id}`:function(e="id"){return`${e?`${e}-`:""}${Math.random().toString(36).slice(2,8)}`}()),d(t),G(i,t),!a)return()=>{t.remove(),G(i,null)}},[o,r,u,i]),j(()=>{if(!o||!e||!t)return;let r=n(t).createElement("span");return r.style.position="fixed",t.insertAdjacentElement("afterend",r),A(r),()=>{r.remove(),A(null)}},[o,e,t]),(0,T.useEffect)(()=>{if(!c||!e)return;let t=0,r=e=>{if(!P(e))return;let r="focusin"===e.type;if(cancelAnimationFrame(t),r){let e=c.querySelectorAll("[data-tabindex]"),t=e=>{let t=e.getAttribute("data-tabindex");e.removeAttribute("data-tabindex"),t?e.setAttribute("tabindex",t):e.removeAttribute("tabindex")};for(let r of(c.hasAttribute("data-tabindex")&&t(c),e))t(r);return}t=requestAnimationFrame(()=>{for(let e of eF(c,!0))!function(e){var t;let r=null!=(t=e.getAttribute("tabindex"))?t:"";e.setAttribute("data-tabindex",r),e.setAttribute("tabindex","-1")}(e)})};return c.addEventListener("focusin",r,!0),c.addEventListener("focusout",r,!0),()=>{cancelAnimationFrame(t),c.removeEventListener("focusin",r,!0),c.removeEventListener("focusout",r,!0)}},[c,e]),a={...a=Z(a,t=>{if(t=(0,eo.jsx)(tk.Provider,{value:c||u,children:t}),!o)return t;if(!c)return(0,eo.jsx)("span",{ref:l,id:a.id,style:{position:"fixed"},hidden:!0});t=(0,eo.jsxs)(eo.Fragment,{children:[e&&c&&(0,eo.jsx)(tQ,{ref:m,"data-focus-trap":a.id,className:"__focus-trap-inner-before",onFocus:e=>{P(e,c)?tX(eS()):tX(h.current)}}),t,e&&c&&(0,eo.jsx)(tQ,{ref:p,"data-focus-trap":a.id,className:"__focus-trap-inner-after",onFocus:e=>{P(e,c)?tX(eR()):tX(B.current)}})]}),c&&(t=(0,tL.createPortal)(t,c));let r=(0,eo.jsxs)(eo.Fragment,{children:[e&&c&&(0,eo.jsx)(tQ,{ref:h,"data-focus-trap":a.id,className:"__focus-trap-outer-before",onFocus:e=>{e.relatedTarget!==B.current&&P(e,c)?tX(m.current):tX(eR())}}),e&&(0,eo.jsx)("span",{"aria-owns":null==c?void 0:c.id,style:{position:"fixed"}}),e&&c&&(0,eo.jsx)(tQ,{ref:B,"data-focus-trap":a.id,className:"__focus-trap-outer-after",onFocus:e=>{if(P(e,c))tX(p.current);else{let e=eS();if(e===m.current)return void requestAnimationFrame(()=>{var e;return null==(e=eS())?void 0:e.focus()});tX(e)}}})]});return f&&e&&(r=(0,tL.createPortal)(r,f)),(0,eo.jsxs)(eo.Fragment,{children:[r,t]})},[c,u,o,a.id,e,f]),ref:l}});ea(function(e){return el("div",tV(e))});var tq=(0,T.createContext)(0);function tW({level:e,children:t}){let r=(0,T.useContext)(tq),n=Math.max(Math.min(e||r+1,6),1);return(0,eo.jsx)(tq.Provider,{value:n,children:t})}var tY=eu(function({autoFocusOnShow:e=!0,...t}){return Z(t,t=>(0,eo.jsx)(ev.Provider,{value:e,children:t}),[e])});ea(function(e){return el("div",tY(e))});var tZ=new WeakMap;function tz(e,t,r){tZ.has(e)||tZ.set(e,new Map);let n=tZ.get(e),i=n.get(t);if(!i)return n.set(t,r()),()=>{var e;null==(e=n.get(t))||e(),n.delete(t)};let o=r(),a=()=>{o(),i(),n.delete(t)};return n.set(t,a),()=>{n.get(t)===a&&(o(),n.set(t,i))}}function t$(e,t,r){return tz(e,t,()=>{let n=e.getAttribute(t);return e.setAttribute(t,r),()=>{null==n?e.removeAttribute(t):e.setAttribute(t,n)}})}function t0(e,t,r){return tz(e,t,()=>{let n=t in e,i=e[t];return e[t]=r,()=>{n?e[t]=i:delete e[t]}})}function t1(e,t){return e?tz(e,"style",()=>{let r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}):()=>{}}var t9=["SCRIPT","STYLE"];function t8(e){return`__ariakit-dialog-snapshot-${e}`}function t2(e,t,r,i){for(let o of t){if(!(null==o?void 0:o.isConnected))continue;let s=t.some(e=>!!e&&e!==o&&e.contains(o)),l=n(o),u=o;for(;o.parentElement&&o!==l.body;){if(null==i||i(o.parentElement,u),!s)for(let i of o.parentElement.children)(function(e,t,r){return!t9.includes(t.tagName)&&!!function(e,t){let r=n(t),i=t8(e);if(!r.body[i])return!0;for(;;){if(t===r.body)return!1;if(t[i])return!0;if(!t.parentElement)return!1;t=t.parentElement}}(e,t)&&!r.some(e=>e&&a(t,e))})(e,i,t)&&r(i,u);o=o.parentElement}}}function t3(e,...t){if(!e)return!1;let r=e.getAttribute("data-backdrop");return null!=r&&(""===r||"true"===r||!t.length||t.some(e=>r===e))}function t6(e="",t=!1){return`__ariakit-dialog-${t?"ancestor":"outside"}${e?`-${e}`:""}`}function t4(e,t=""){return b(t0(e,t6("",!0),!0),t0(e,t6(t,!0),!0))}function t7(e,t){if(e[t6(t,!0)])return!0;let r=t6(t);for(;;){if(e[r])return!0;if(!e.parentElement)return!1;e=e.parentElement}}function t5(e,t){let r=[],n=t.map(e=>null==e?void 0:e.id);return t2(e,t,t=>{t3(t,...n)||r.unshift(function(e,t=""){return b(t0(e,t6(),!0),t0(e,t6(t),!0))}(t,e))},(t,n)=>{n.hasAttribute("data-dialog")&&n.id!==e||r.unshift(t4(t,e))}),()=>{for(let e of r)e()}}function re({store:e,type:t,listener:r,capture:i,domReady:o}){let s=Q(r),l=tS(e,"open"),u=(0,T.useRef)(!1);j(()=>{if(!l||!o)return;let{contentElement:t}=e.getState();if(!t)return;let r=()=>{u.current=!0};return t.addEventListener("focusin",r,!0),()=>t.removeEventListener("focusin",r,!0)},[e,l,o]),(0,T.useEffect)(()=>{if(l)return U(t,t=>{let{contentElement:r,disclosureElement:i}=e.getState(),o=t.target;!r||!o||!(!("HTML"===o.tagName||a(n(o).body,o))||a(r,o)||function(e,t){if(!e)return!1;if(a(e,t))return!0;let r=t.getAttribute("aria-activedescendant");if(r){let t=n(e).getElementById(r);if(t)return a(e,t)}return!1}(i,o)||o.hasAttribute("data-focus-trap")||function(e,t){if(!("clientY"in e))return!1;let r=t.getBoundingClientRect();return 0!==r.width&&0!==r.height&&r.top<=e.clientY&&e.clientY<=r.top+r.height&&r.left<=e.clientX&&e.clientX<=r.left+r.width}(t,r))&&(!u.current||t7(o,r.id))&&(o&&o[ew]||s(t))},i)},[l,i])}function rt(e,t){return"function"==typeof e?e(t):!!e}var rr=(0,T.createContext)({});function rn(){return"inert"in HTMLElement.prototype}function ri(e,t){if(!("style"in e))return v;if(rn())return t0(e,"inert",!0);let r=eF(e,!0).map(e=>{if(null==t?void 0:t.some(t=>t&&a(t,e)))return v;let r=tz(e,"focus",()=>(e.focus=v,()=>{delete e.focus}));return b(t$(e,"tabindex","-1"),r)});return b(...r,t$(e,"aria-hidden","true"),t1(e,{pointerEvents:"none",userSelect:"none",cursor:"default"}))}function ro(e={}){let t=td(e.store,tc(e.disclosure,["contentElement","disclosureElement"]));tf(e,t);let r=null==t?void 0:t.getState(),n=I(e.open,null==r?void 0:r.open,e.defaultOpen,!1),i=I(e.animated,null==r?void 0:r.animated,!1),o=ti({open:n,animated:i,animating:!!i&&n,mounted:n,contentElement:I(null==r?void 0:r.contentElement,null),disclosureElement:I(null==r?void 0:r.disclosureElement,null)},t);return to(o,()=>tl(o,["animated","animating"],e=>{e.animated||o.setState("animating",!1)})),to(o,()=>ts(o,["open"],()=>{o.getState().animated&&o.setState("animating",!0)})),to(o,()=>tl(o,["open","animating"],e=>{o.setState("mounted",e.open||e.animating)})),{...o,disclosure:e.disclosure,setOpen:e=>o.setState("open",e),show:()=>o.setState("open",!0),hide:()=>o.setState("open",!1),toggle:()=>o.setState("open",e=>!e),stopAnimation:()=>o.setState("animating",!1),setContentElement:e=>o.setState("contentElement",e),setDisclosureElement:e=>o.setState("disclosureElement",e)}}function ra(e,t,r){return q(t,[r.store,r.disclosure]),tI(e,r,"open","setOpen"),tI(e,r,"mounted","setMounted"),tI(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}eu(function(e){return e});var rs=ea(function(e){return el("div",e)});function rl({store:e,backdrop:t,alwaysVisible:r,hidden:n}){let i=(0,T.useRef)(null),o=function(e={}){let[t,r]=tT(ro,e);return ra(t,r,e)}({disclosure:e}),a=tS(e,"contentElement");(0,T.useEffect)(()=>{let e=i.current;!e||a&&(e.style.zIndex=getComputedStyle(a).zIndex)},[a]),j(()=>{let e=null==a?void 0:a.id;if(!e)return;let t=i.current;if(t)return t4(t,e)},[a]);let s=tP({ref:i,store:o,role:"presentation","data-backdrop":(null==a?void 0:a.id)||"",alwaysVisible:r,hidden:null!=n?n:void 0,style:{position:"fixed",top:0,right:0,bottom:0,left:0}});if(!t)return null;if((0,T.isValidElement)(t))return(0,eo.jsx)(rs,{...s,render:t});let l="boolean"!=typeof t?t:"div";return(0,eo.jsx)(rs,{...s,render:(0,eo.jsx)(l,{})})}function ru(e={}){return ro(e)}Object.assign(rs,["a","button","details","dialog","div","form","h1","h2","h3","h4","h5","h6","header","img","input","label","li","nav","ol","p","section","select","span","summary","textarea","ul","svg"].reduce((e,t)=>(e[t]=ea(function(e){return el(t,e)}),e),{}));var rc=w();function rd(e,t=!1){if(!e)return null;let r="current"in e?e.current:e;return r?t?eb(r)?r:null:r:null}var rf=eu(function({store:e,open:t,onClose:s,focusable:u=!0,modal:d=!0,portal:f=!!d,backdrop:A=!!d,hideOnEscape:h=!0,hideOnInteractOutside:m=!0,getPersistentElements:p,preventBodyScroll:B=!!d,autoFocusOnShow:C=!0,autoFocusOnHide:g=!0,initialFocus:v,finalFocus:y,unmountOnHide:E,unstable_treeSnapshotKey:M,...F}){var S;let R,I,G,w=eq(),L=(0,T.useRef)(null),_=function(e={}){let[t,r]=tT(ru,e);return ra(t,r,e)}({store:e||w,open:t,setOpen(e){if(e)return;let t=L.current;if(!t)return;let r=new Event("close",{bubbles:!1,cancelable:!0});s&&t.addEventListener("close",s,{once:!0}),t.dispatchEvent(r),r.defaultPrevented&&_.setOpen(!0)}}),{portalRef:O,domReady:H}=z(f,F.portalRef),P=F.preserveTabOrder,N=tS(_,e=>P&&!d&&e.mounted),k=V(F.id),K=tS(_,"open"),q=tS(_,"mounted"),$=tS(_,"contentElement"),ee=tH(q,F.hidden,F.alwaysVisible);R=function({attribute:e,contentId:t,contentElement:r,enabled:i}){let[o,a]=W(),s=(0,T.useCallback)(()=>{if(!i||!r)return!1;let{body:o}=n(r),a=o.getAttribute(e);return!a||a===t},[o,i,r,e,t]);return(0,T.useEffect)(()=>{if(!i||!t||!r)return;let{body:o}=n(r);if(s())return o.setAttribute(e,t),()=>o.removeAttribute(e);let l=new MutationObserver(()=>(0,tL.flushSync)(a));return l.observe(o,{attributeFilter:[e]}),()=>l.disconnect()},[o,i,t,r,s,e]),s}({attribute:"data-dialog-prevent-body-scroll",contentElement:$,contentId:k,enabled:B&&!ee}),(0,T.useEffect)(()=>{var e,t;if(!R()||!$)return;let o=n($),a=i($),{documentElement:s,body:l}=o,u=s.style.getPropertyValue("--scrollbar-width"),c=u?Number.parseInt(u,10):a.innerWidth-s.clientWidth,d=Math.round(s.getBoundingClientRect().left)+s.scrollLeft?"paddingLeft":"paddingRight",f=D()&&!(r&&navigator.platform.startsWith("Mac")&&!x());return b((e="--scrollbar-width",t=`${c}px`,s?tz(s,e,()=>{let r=s.style.getPropertyValue(e);return s.style.setProperty(e,t),()=>{r?s.style.setProperty(e,r):s.style.removeProperty(e)}}):()=>{}),f?(()=>{var e,t;let{scrollX:r,scrollY:n,visualViewport:i}=a,o=null!=(e=null==i?void 0:i.offsetLeft)?e:0,s=null!=(t=null==i?void 0:i.offsetTop)?t:0,u=t1(l,{position:"fixed",overflow:"hidden",top:`${-(n-Math.floor(s))}px`,left:`${-(r-Math.floor(o))}px`,right:"0",[d]:`${c}px`});return()=>{u(),a.scrollTo({left:r,top:n,behavior:"instant"})}})():t1(l,{overflow:"hidden",[d]:`${c}px`}))},[R,$]),S=tS(_,"open"),I=(0,T.useRef)(null),(0,T.useEffect)(()=>{if(!S){I.current=null;return}return U("mousedown",e=>{I.current=e.target},!0)},[S]),re({...G={store:_,domReady:H,capture:!0},type:"click",listener:e=>{let{contentElement:t}=_.getState(),r=I.current;r&&c(r)&&t7(r,null==t?void 0:t.id)&&rt(m,e)&&_.hide()}}),re({...G,type:"focusin",listener:e=>{let{contentElement:t}=_.getState();!t||e.target===n(t)||rt(m,e)&&_.hide()}}),re({...G,type:"contextmenu",listener:e=>{rt(m,e)&&_.hide()}});let{wrapElement:et,nestedDialogs:er}=function(e){let t=(0,T.useContext)(rr),[r,n]=(0,T.useState)([]),i=(0,T.useCallback)(e=>{var r;return n(t=>[...t,e]),b(null==(r=t.add)?void 0:r.call(t,e),()=>{n(t=>t.filter(t=>t!==e))})},[t]);j(()=>tl(e,["open","contentElement"],r=>{var n;if(r.open&&r.contentElement)return null==(n=t.add)?void 0:n.call(t,e)}),[e,t]);let o=(0,T.useMemo)(()=>({store:e,add:i}),[e,i]);return{wrapElement:(0,T.useCallback)(e=>(0,eo.jsx)(rr.Provider,{value:o,children:e}),[o]),nestedDialogs:r}}(_);F=Z(F,et,[et]),j(()=>{if(!K)return;let e=L.current,t=o(e,!0);!t||"BODY"===t.tagName||e&&a(e,t)||_.setDisclosureElement(t)},[_,K]),rc&&(0,T.useEffect)(()=>{if(!q)return;let{disclosureElement:e}=_.getState();if(!e||!l(e))return;let t=()=>{let t=!1,r=()=>{t=!0};e.addEventListener("focusin",r,{capture:!0,once:!0}),J(e,"mouseup",()=>{e.removeEventListener("focusin",r,!0),t||eG(e)})};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}},[_,q]),(0,T.useEffect)(()=>{if(!q||!H)return;let e=L.current;if(!e)return;let t=i(e),r=t.visualViewport||t,n=()=>{var r,n;let i=null!=(n=null==(r=t.visualViewport)?void 0:r.height)?n:t.innerHeight;e.style.setProperty("--dialog-viewport-height",`${i}px`)};return n(),r.addEventListener("resize",n),()=>{r.removeEventListener("resize",n)}},[q,H]),(0,T.useEffect)(()=>{if(!d||!q||!H)return;let e=L.current;if(e&&!e.querySelector("[data-dialog-dismiss]")){var t;let r;return t=_.hide,(r=n(e).createElement("button")).type="button",r.tabIndex=-1,r.textContent="Dismiss popup",Object.assign(r.style,{border:"0px",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute",whiteSpace:"nowrap",width:"1px"}),r.addEventListener("click",t),e.prepend(r),()=>{r.removeEventListener("click",t),r.remove()}}},[_,d,q,H]),j(()=>{if(!rn()||K||!q||!H)return;let e=L.current;if(e)return ri(e)},[K,q,H]);let en=K&&H;j(()=>{if(k&&en)return function(e,t){let{body:r}=n(t[0]),i=[];return t2(e,t,t=>{i.push(t0(t,t8(e),!0))}),b(t0(r,t8(e),!0),()=>{for(let e of i)e()})}(k,[L.current])},[k,en,M]);let ei=Q(p);j(()=>{if(!k||!en)return;let{disclosureElement:e}=_.getState(),t=[L.current,...ei()||[],...er.map(e=>e.getState().contentElement)];if(d){let e,r;return b(t5(k,t),(e=[],r=t.map(e=>null==e?void 0:e.id),t2(k,t,n=>{t3(n,...r)||!function(e,...t){if(!e)return!1;let r=e.getAttribute("data-focus-trap");return null!=r&&(!t.length||""!==r&&t.some(e=>r===e))}(n,...r)&&e.unshift(ri(n,t))},r=>{!r.hasAttribute("role")||t.some(e=>e&&a(e,r))||e.unshift(t$(r,"role","none"))}),()=>{for(let t of e)t()}))}return t5(k,[e,...t])},[k,_,en,ei,er,d,M]);let ea=!!C,es=Y(C),[el,eu]=(0,T.useState)(!1);(0,T.useEffect)(()=>{if(!K||!ea||!H||!(null==$?void 0:$.isConnected))return;let e=rd(v,!0)||$.querySelector("[data-autofocus=true],[autofocus]")||function(e,t,r){let[n]=eF(e,t,r);return n||null}($,!0,f&&N)||$,t=eb(e);es(t?e:null)&&(eu(!0),queueMicrotask(()=>{e.focus(),!rc||t&&e.scrollIntoView({block:"nearest",inline:"nearest"})}))},[K,ea,H,$,v,f,N,es]);let ec=!!g,ed=Y(g),[ef,eA]=(0,T.useState)(!1);(0,T.useEffect)(()=>{if(K)return eA(!0),()=>eA(!1)},[K]);let eh=(0,T.useCallback)((e,t=!0)=>{let r,{disclosureElement:i}=_.getState();if(!(!(r=o())||e&&a(e,r))&&eb(r))return;let s=rd(y)||i;if(null==s?void 0:s.id){let e=n(s),t=`[aria-activedescendant="${s.id}"]`,r=e.querySelector(t);r&&(s=r)}if(s&&!eb(s)){let e=s.closest("[data-dialog]");if(null==e?void 0:e.id){let t=n(e),r=`[aria-controls~="${e.id}"]`,i=t.querySelector(r);i&&(s=i)}}let l=s&&eb(s);!l&&t?requestAnimationFrame(()=>eh(e,!1)):!ed(l?s:null)||l&&(null==s||s.focus({preventScroll:!0}))},[_,y,ed]),em=(0,T.useRef)(!1);j(()=>{if(K||!ef||!ec)return;let e=L.current;em.current=!0,eh(e)},[K,ef,H,ec,eh]),(0,T.useEffect)(()=>{if(!ef||!ec)return;let e=L.current;return()=>{if(em.current){em.current=!1;return}eh(e)}},[ef,ec,eh]);let ep=Y(h);(0,T.useEffect)(()=>{if(H&&q)return U("keydown",e=>{if("Escape"!==e.key||e.defaultPrevented)return;let t=L.current;if(!t||t7(t))return;let r=e.target;if(!r)return;let{disclosureElement:n}=_.getState();!("BODY"===r.tagName||a(t,r)||!n||a(n,r))||ep(e)&&_.hide()},!0)},[_,H,q,ep]);let eB=(F=Z(F,e=>(0,eo.jsx)(tW,{level:d?1:void 0,children:e}),[d])).hidden,eC=F.alwaysVisible;F=Z(F,e=>A?(0,eo.jsxs)(eo.Fragment,{children:[(0,eo.jsx)(rl,{store:_,backdrop:A,hidden:eB,alwaysVisible:eC}),e]}):e,[_,A,eB,eC]);let[eg,ev]=(0,T.useState)(),[ey,eE]=(0,T.useState)();return F=tY({...F={id:k,"data-dialog":"",role:"dialog",tabIndex:u?-1:void 0,"aria-labelledby":eg,"aria-describedby":ey,...F=Z(F,e=>(0,eo.jsx)(eY,{value:_,children:(0,eo.jsx)(eZ.Provider,{value:ev,children:(0,eo.jsx)(ez.Provider,{value:eE,children:e})})}),[_]),ref:X(L,F.ref)},autoFocusOnShow:el}),F=tV({portal:f,...F=eU({...F=tP({store:_,...F}),focusable:u}),portalRef:O,preserveTabOrder:N})});function rA(e,t=eq){return ea(function(r){let n=t();return tS(r.store||n,e=>!r.unmountOnHide||(null==e?void 0:e.mounted)||!!r.open)?(0,eo.jsx)(e,{...r}):null})}rA(ea(function(e){return el("div",rf(e))}),eq);let rh=Math.min,rm=Math.max,rp=Math.round,rB=Math.floor,rC=e=>({x:e,y:e}),rg={left:"right",right:"left",bottom:"top",top:"bottom"},rv={start:"end",end:"start"};function ry(e,t){return"function"==typeof e?e(t):e}function rb(e){return e.split("-")[0]}function rE(e){return e.split("-")[1]}function rM(e){return"x"===e?"y":"x"}function rF(e){return"y"===e?"height":"width"}let rS=new Set(["top","bottom"]);function rR(e){return rS.has(rb(e))?"y":"x"}function rI(e){return e.replace(/start|end/g,e=>rv[e])}let rT=["left","right"],rG=["right","left"],rx=["top","bottom"],rD=["bottom","top"];function rw(e){return e.replace(/left|right|bottom|top/g,e=>rg[e])}function rL(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function r_(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function rO(e,t,r){let n,{reference:i,floating:o}=e,a=rR(t),s=rM(rR(t)),l=rF(s),u=rb(t),c="y"===a,d=i.x+i.width/2-o.width/2,f=i.y+i.height/2-o.height/2,A=i[l]/2-o[l]/2;switch(u){case"top":n={x:d,y:i.y-o.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:f};break;case"left":n={x:i.x-o.width,y:f};break;default:n={x:i.x,y:i.y}}switch(rE(t)){case"start":n[s]-=A*(r&&c?-1:1);break;case"end":n[s]+=A*(r&&c?-1:1)}return n}async function rH(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:o,rects:a,elements:s,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:f=!1,padding:A=0}=ry(t,e),h=rL(A),m=s[f?"floating"===d?"reference":"floating":d],p=r_(await o.getClippingRect({element:null==(r=await (null==o.isElement?void 0:o.isElement(m)))||r?m:m.contextElement||await (null==o.getDocumentElement?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:c,strategy:l})),B="floating"===d?{x:n,y:i,width:a.floating.width,height:a.floating.height}:a.reference,C=await (null==o.getOffsetParent?void 0:o.getOffsetParent(s.floating)),g=await (null==o.isElement?void 0:o.isElement(C))&&await (null==o.getScale?void 0:o.getScale(C))||{x:1,y:1},v=r_(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:B,offsetParent:C,strategy:l}):B);return{top:(p.top-v.top+h.top)/g.y,bottom:(v.bottom-p.bottom+h.bottom)/g.y,left:(p.left-v.left+h.left)/g.x,right:(v.right-p.right+h.right)/g.x}}let rP=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:o=[],platform:a}=r,s=o.filter(Boolean),l=await (null==a.isRTL?void 0:a.isRTL(t)),u=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:d}=rO(u,n,l),f=n,A={},h=0;for(let r=0;rtypeof window}function rk(e){return rQ(e)?(e.nodeName||"").toLowerCase():"#document"}function rK(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function rj(e){var t;return null==(t=(rQ(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function rQ(e){return!!rN()&&(e instanceof Node||e instanceof rK(e).Node)}function rX(e){return!!rN()&&(e instanceof Element||e instanceof rK(e).Element)}function rV(e){return!!rN()&&(e instanceof HTMLElement||e instanceof rK(e).HTMLElement)}function rq(e){return!(!rN()||"u"{try{return e.matches(t)}catch(e){return!1}})}let r0=["transform","translate","scale","rotate","perspective"],r1=["transform","translate","scale","rotate","perspective","filter"],r9=["paint","layout","strict","content"];function r8(e){let t=r2(),r=rX(e)?r4(e):e;return r0.some(e=>!!r[e]&&"none"!==r[e])||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||r1.some(e=>(r.willChange||"").includes(e))||r9.some(e=>(r.contain||"").includes(e))}function r2(){return!("u"rX(e)&&"body"!==rk(e)),i=null,o="fixed"===r4(e).position,a=o?r5(e):e;for(;rX(a)&&!r6(a);){let t=r4(a),r=r8(a);r||"fixed"!==t.position||(i=null),(o?!r&&!i:!r&&"static"===t.position&&!!i&&nc.has(i.position)||rY(a)&&!r&&function e(t,r){let n=r5(t);return!(n===r||!rX(n)||r6(n))&&("fixed"===r4(n).position||e(n,r))}(e,a))?n=n.filter(e=>e!==a):i=t,a=r5(a)}return t.set(e,n),n}(t,this._c):[].concat(r),n],a=o[0],s=o.reduce((e,r)=>{let n=nd(t,r,i);return e.top=rm(n.top,e.top),e.right=rh(n.right,e.right),e.bottom=rh(n.bottom,e.bottom),e.left=rm(n.left,e.left),e},nd(t,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:nh,getElementRects:nm,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=nr(e);return{width:t,height:r}},getScale:ni,isElement:rX,isRTL:function(e){return"rtl"===r4(e).direction}};function nB(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function nC(e=0,t=0,r=0,n=0){if("function"==typeof DOMRect)return new DOMRect(e,t,r,n);let i={x:e,y:t,width:r,height:n,top:t,right:e+r,bottom:t+n,left:e};return{...i,toJSON:()=>i}}function ng(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}function nv(e){let t=window.devicePixelRatio||1;return Math.round(e*t)/t}var ny=eu(function({store:e,modal:t=!1,portal:r=!!t,preserveTabOrder:n=!0,autoFocusOnShow:i=!0,wrapperProps:o,fixed:a=!1,flip:s=!0,shift:l=0,slide:u=!0,overlap:c=!1,sameWidth:d=!1,fitViewport:f=!1,gutter:A,arrowPadding:h=4,overflowPadding:m=8,getAnchorRect:p,updatePosition:B,...C}){let g=e0();M(e=e||g,!1);let v=e.useState("arrowElement"),y=e.useState("anchorElement"),b=e.useState("disclosureElement"),E=e.useState("popoverElement"),F=e.useState("contentElement"),S=e.useState("placement"),R=e.useState("mounted"),I=e.useState("rendered"),G=(0,T.useRef)(null),[x,D]=(0,T.useState)(!1),{portalRef:w,domReady:L}=z(r,C.portalRef),_=Q(p),O=Q(B),H=!!B;j(()=>{if(!(null==E?void 0:E.isConnected))return;E.style.setProperty("--popover-overflow-padding",`${m}px`);let t={contextElement:y||void 0,getBoundingClientRect:()=>{let e=null==_?void 0:_(y);return e||!y?function(e){if(!e)return nC();let{x:t,y:r,width:n,height:i}=e;return nC(t,r,n,i)}(e):y.getBoundingClientRect()}},r=async()=>{var r,n,i,o,p;let B,C,g;if(!R)return;v||(G.current=G.current||document.createElement("div"));let y=v||G.current,b=[(r={gutter:A,shift:l},void 0===(n=({placement:e})=>{var t;let n=((null==y?void 0:y.clientHeight)||0)/2,i="number"==typeof r.gutter?r.gutter+n:null!=(t=r.gutter)?t:n;return{crossAxis:e.split("-")[1]?void 0:r.shift,mainAxis:i,alignmentAxis:r.shift}})&&(n=0),{name:"offset",options:n,async fn(e){var t,r;let{x:i,y:o,placement:a,middlewareData:s}=e,l=await rU(e,n);return a===(null==(t=s.offset)?void 0:t.placement)&&null!=(r=s.arrow)&&r.alignmentOffset?{}:{x:i+l.x,y:o+l.y,data:{...l,placement:a}}}}),function(e){var t;if(!1===e.flip)return;let r="string"==typeof e.flip?e.flip.split(" "):void 0;return M(!r||r.every(ng),!1),{name:"flip",options:t={padding:e.overflowPadding,fallbackPlacements:r},async fn(e){var r,n,i,o,a,s,l,u;let c,d,f,{placement:A,middlewareData:h,rects:m,initialPlacement:p,platform:B,elements:C}=e,{mainAxis:g=!0,crossAxis:v=!0,fallbackPlacements:y,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:E="none",flipAlignment:M=!0,...F}=ry(t,e);if(null!=(r=h.arrow)&&r.alignmentOffset)return{};let S=rb(A),R=rR(p),I=rb(p)===p,T=await (null==B.isRTL?void 0:B.isRTL(C.floating)),G=y||(I||!M?[rw(p)]:(c=rw(p),[rI(p),c,rI(c)])),x="none"!==E;!y&&x&&G.push(...(d=rE(p),f=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?rG:rT;return t?rT:rG;case"left":case"right":return t?rx:rD;default:return[]}}(rb(p),"start"===E,T),d&&(f=f.map(e=>e+"-"+d),M&&(f=f.concat(f.map(rI)))),f));let D=[p,...G],w=await B.detectOverflow(e,F),L=[],_=(null==(n=h.flip)?void 0:n.overflows)||[];if(g&&L.push(w[S]),v){let e,t,r,n,i=(s=A,l=m,void 0===(u=T)&&(u=!1),e=rE(s),r=rF(t=rM(rR(s))),n="x"===t?e===(u?"end":"start")?"right":"left":"start"===e?"bottom":"top",l.reference[r]>l.floating[r]&&(n=rw(n)),[n,rw(n)]);L.push(w[i[0]],w[i[1]])}if(_=[..._,{placement:A,overflows:L}],!L.every(e=>e<=0)){let e=((null==(i=h.flip)?void 0:i.index)||0)+1,t=D[e];if(t&&("alignment"!==v||R===rR(t)||_.every(e=>rR(e.placement)!==R||e.overflows[0]>0)))return{data:{index:e,overflows:_},reset:{placement:t}};let r=null==(o=_.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:o.placement;if(!r)switch(b){case"bestFit":{let e=null==(a=_.filter(e=>{if(x){let t=rR(e.placement);return t===R||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:a[0];e&&(r=e);break}case"initialPlacement":r=p}if(A!==r)return{reset:{placement:r}}}return{}}}}({flip:s,overflowPadding:m}),function(e){if(e.slide||e.overlap){var t,r;return{name:"shift",options:r={mainAxis:e.slide,crossAxis:e.overlap,padding:e.overflowPadding,limiter:(void 0===t&&(t={}),{options:t,fn(e){let{x:r,y:n,placement:i,rects:o,middlewareData:a}=e,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=ry(t,e),c={x:r,y:n},d=rR(i),f=rM(d),A=c[f],h=c[d],m=ry(s,e),p="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){let e="y"===f?"height":"width",t=o.reference[f]-o.floating[e]+p.mainAxis,r=o.reference[f]+o.reference[e]-p.mainAxis;Ar&&(A=r)}if(u){var B,C;let e="y"===f?"width":"height",t=rJ.has(rb(i)),r=o.reference[d]-o.floating[e]+(t&&(null==(B=a.offset)?void 0:B[d])||0)+(t?0:p.crossAxis),n=o.reference[d]+o.reference[e]+(t?0:(null==(C=a.offset)?void 0:C[d])||0)-(t?p.crossAxis:0);hn&&(h=n)}return{[f]:A,[d]:h}}})},async fn(e){let{x:t,y:n,placement:i,platform:o}=e,{mainAxis:a=!0,crossAxis:s=!1,limiter:l={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...u}=ry(r,e),c={x:t,y:n},d=await o.detectOverflow(e,u),f=rR(rb(i)),A=rM(f),h=c[A],m=c[f];if(a){let e="y"===A?"top":"left",t="y"===A?"bottom":"right",r=h+d[e],n=h-d[t];h=rm(r,rh(h,n))}if(s){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",r=m+d[e],n=m-d[t];m=rm(r,rh(m,n))}let p=l.fn({...e,[A]:h,[f]:m});return{...p,data:{x:p.x-t,y:p.y-n,enabled:{[A]:a,[f]:s}}}}}}}({slide:u,shift:l,overlap:c,overflowPadding:m}),function(e,t){if(e){let r;return{name:"arrow",options:r={element:e,padding:t.arrowPadding},async fn(e){let{x:t,y:n,placement:i,rects:o,platform:a,elements:s,middlewareData:l}=e,{element:u,padding:c=0}=ry(r,e)||{};if(null==u)return{};let d=rL(c),f={x:t,y:n},A=rM(rR(i)),h=rF(A),m=await a.getDimensions(u),p="y"===A,B=p?"clientHeight":"clientWidth",C=o.reference[h]+o.reference[A]-f[A]-o.floating[h],g=f[A]-o.reference[A],v=await (null==a.getOffsetParent?void 0:a.getOffsetParent(u)),y=v?v[B]:0;y&&await (null==a.isElement?void 0:a.isElement(v))||(y=s.floating[B]||o.floating[h]);let b=y/2-m[h]/2-1,E=rh(d[p?"top":"left"],b),M=rh(d[p?"bottom":"right"],b),F=y-m[h]-M,S=y/2-m[h]/2+(C/2-g/2),R=rm(E,rh(S,F)),I=!l.arrow&&null!=rE(i)&&S!==R&&o.reference[h]/2-(S{},...d}=ry(o,e),f=await l.detectOverflow(e,d),A=rb(a),h=rE(a),m="y"===rR(a),{width:p,height:B}=s.floating;"top"===A||"bottom"===A?(n=A,i=h===(await (null==l.isRTL?void 0:l.isRTL(u.floating))?"start":"end")?"left":"right"):(i=A,n="end"===h?"top":"bottom");let C=B-f.top-f.bottom,g=p-f.left-f.right,v=rh(B-f[n],C),y=rh(p-f[i],g),b=!e.middlewareData.shift,E=v,M=y;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(M=g),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(E=C),b&&!h){let e=rm(f.left,0),t=rm(f.right,0),r=rm(f.top,0),n=rm(f.bottom,0);m?M=p-2*(0!==e||0!==t?e+t:rm(f.left,f.right)):E=B-2*(0!==r||0!==n?r+n:rm(f.top,f.bottom))}await c({...e,availableWidth:M,availableHeight:E});let F=await l.getDimensions(u.floating);return p!==F.width||B!==F.height?{reset:{rects:!0}}:{}}}],F=await (p={placement:S,strategy:a?"fixed":"absolute",middleware:b},B=new Map,g={...(C={platform:np,...p}).platform,_c:B},rP(t,E,{...C,platform:g}));null==e||e.setState("currentPlacement",F.placement),D(!0);let I=nv(F.x),T=nv(F.y);if(Object.assign(E.style,{top:"0",left:"0",transform:`translate3d(${I}px,${T}px,0)`}),y&&F.middlewareData.arrow){let{x:e,y:t}=F.middlewareData.arrow,r=F.placement.split("-")[0],n=y.clientWidth/2,i=y.clientHeight/2,o=null!=e?e+n:-n,a=null!=t?t+i:-i;E.style.setProperty("--popover-transform-origin",{top:`${o}px calc(100% + ${i}px)`,bottom:`${o}px ${-i}px`,left:`calc(100% + ${n}px) ${a}px`,right:`${-n}px ${a}px`}[r]),Object.assign(y.style,{left:null!=e?`${e}px`:"",top:null!=t?`${t}px`:"",[r]:"100%"})}},n=function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:s="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:u=!1}=n,c=nn(e),d=o||a?[...c?ne(c):[],...ne(t)]:[];d.forEach(e=>{o&&e.addEventListener("scroll",r,{passive:!0}),a&&e.addEventListener("resize",r)});let f=c&&l?function(e,t){let r,n=null,i=rj(e);function o(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),o();let u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:A}=u;if(s||t(),!f||!A)return;let h={rootMargin:-rB(d)+"px "+-rB(i.clientWidth-(c+f))+"px "+-rB(i.clientHeight-(d+A))+"px "+-rB(c)+"px",threshold:rm(0,rh(1,l))||1},m=!0;function p(t){let n=t[0].intersectionRatio;if(n!==l){if(!m)return a();n?a(!1,n):r=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==n||nB(u,e.getBoundingClientRect())||a(),m=!1}try{n=new IntersectionObserver(p,{...h,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(p,h)}n.observe(e)}(!0),o}(c,r):null,A=-1,h=null;s&&(h=new ResizeObserver(e=>{let[n]=e;n&&n.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(A),A=requestAnimationFrame(()=>{var e;null==(e=h)||e.observe(t)})),r()}),c&&!u&&h.observe(c),h.observe(t));let m=u?ns(e):null;return u&&function t(){let n=ns(e);m&&!nB(m,n)&&r(),m=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{o&&e.removeEventListener("scroll",r),a&&e.removeEventListener("resize",r)}),null==f||f(),null==(e=h)||e.disconnect(),h=null,u&&cancelAnimationFrame(i)}}(t,E,async()=>{H?(await O({updatePosition:r}),D(!0)):await r()},{elementResize:"function"==typeof ResizeObserver});return()=>{D(!1),n()}},[e,I,E,v,y,E,S,R,L,a,s,l,u,c,d,f,A,h,m,_,H,O]),j(()=>{if(!R||!L||!(null==E?void 0:E.isConnected)||!(null==F?void 0:F.isConnected))return;let e=()=>{E.style.zIndex=getComputedStyle(F).zIndex};e();let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)},[R,L,E,F]);let P=a?"fixed":"absolute";return C=Z(C,t=>(0,eo.jsx)("div",{...o,style:{position:P,top:0,left:0,width:"max-content",...null==o?void 0:o.style},ref:null==e?void 0:e.setPopoverElement,children:t}),[e,P,o]),C={"data-placing":!x||void 0,...C=Z(C,t=>(0,eo.jsx)(e9,{value:e,children:t}),[e]),style:{position:"relative",...C.style}},C=rf({store:e,modal:t,portal:r,preserveTabOrder:n,preserveTabOrderAnchor:b||y,autoFocusOnShow:x&&i,...C,portalRef:w})});rA(ea(function(e){return el("div",ny(e))}),e0);var nb=eu(function({store:e,modal:t,tabIndex:r,alwaysVisible:i,autoFocusOnHide:o=!0,hideOnInteractOutside:a=!0,...s}){let l=e7();M(e=e||l,!1);let u=e.useState("baseElement"),c=(0,T.useRef)(!1),d=tS(e.tag,e=>null==e?void 0:e.renderedItems.length);return s=tU({store:e,alwaysVisible:i,...s}),s=ny({store:e,modal:t,alwaysVisible:i,backdrop:!1,autoFocusOnShow:!1,finalFocus:u,preserveTabOrderAnchor:null,unstable_treeSnapshotKey:d,...s,getPersistentElements(){var r;let i=(null==(r=s.getPersistentElements)?void 0:r.call(s))||[];if(!t||!e)return i;let{contentElement:o,baseElement:a}=e.getState();if(!a)return i;let l=n(a),u=[];if((null==o?void 0:o.id)&&u.push(`[aria-controls~="${o.id}"]`),(null==a?void 0:a.id)&&u.push(`[aria-controls~="${a.id}"]`),!u.length)return[...i,a];let c=u.join(",");return[...i,...l.querySelectorAll(c)]},autoFocusOnHide:e=>!F(o,e)&&(!c.current||(c.current=!1,!1)),hideOnInteractOutside(t){var r,n;let i=null==e?void 0:e.getState(),o=null==(r=null==i?void 0:i.contentElement)?void 0:r.id,s=null==(n=null==i?void 0:i.baseElement)?void 0:n.id;if(function(e,...t){if(!e)return!1;if("id"in e){let r=t.filter(Boolean).map(e=>`[aria-controls~="${e}"]`).join(", ");return!!r&&e.matches(r)}return!1}(t.target,o,s))return!1;let l="function"==typeof a?a(t):a;return l&&(c.current="click"===t.type),l}})}),nE=rA(ea(function(e){return el("div",nb(e))}),e7);e.s(["ComboboxPopover",()=>nE],1559),(0,T.createContext)(null),(0,T.createContext)(null);var nM=ec([ep],[eB]),nF=nM.useContext;nM.useScopedContext,nM.useProviderContext,nM.ContextProvider,nM.ScopedContextProvider;var nS={id:null};function nR(e,t){return e.find(e=>t?!e.disabled&&e.id!==t:!e.disabled)}function nI(e,t){return e.filter(e=>e.rowId===t)}function nT(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}function nG(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}var nx=w()&&x();function nD({tag:e,...t}={}){let r=td(t.store,function(e,...t){if(e)return tn(e,"pick")(...t)}(e,["value","rtl"]));tf(t,r);let i=null==e?void 0:e.getState(),o=null==r?void 0:r.getState(),a=I(t.activeId,null==o?void 0:o.activeId,t.defaultActiveId,null),s=function(e={}){var t;let r=null==(t=e.store)?void 0:t.getState(),i=function(e={}){var t,r;tf(e,e.store);let i=null==(t=e.store)?void 0:t.getState(),o=I(e.items,null==i?void 0:i.items,e.defaultItems,[]),a=new Map(o.map(e=>[e.id,e])),s={items:o,renderedItems:I(null==i?void 0:i.renderedItems,[])},l=null==(r=e.store)?void 0:r.__unstablePrivateStore,u=ti({items:o,renderedItems:s.renderedItems},l),c=ti(s,e.store),d=e=>{var t;let r,n,i=(t=e=>e.element,r=e.map((e,t)=>[t,e]),n=!1,(r.sort(([e,r],[i,o])=>{var a;let s=t(r),l=t(o);return s!==l&&s&&l?(a=s,l.compareDocumentPosition(a)&Node.DOCUMENT_POSITION_PRECEDING)?(e>i&&(n=!0),-1):(et):e);u.setState("renderedItems",i),c.setState("renderedItems",i)};to(c,()=>ta(u)),to(u,()=>tu(u,["items"],e=>{c.setState("items",e.items)})),to(u,()=>tu(u,["renderedItems"],e=>{let t=!0,r=requestAnimationFrame(()=>{let{renderedItems:t}=c.getState();e.renderedItems!==t&&d(e.renderedItems)});if("function"!=typeof IntersectionObserver)return()=>cancelAnimationFrame(r);let i=new IntersectionObserver(()=>{if(t){t=!1;return}cancelAnimationFrame(r),r=requestAnimationFrame(()=>d(e.renderedItems))},{root:function(e){var t;let r=e.find(e=>!!e.element),i=[...e].reverse().find(e=>!!e.element),o=null==(t=null==r?void 0:r.element)?void 0:t.parentElement;for(;o&&(null==i?void 0:i.element);){let e=o;if(i&&e.contains(i.element))return o;o=o.parentElement}return n(o).body}(e.renderedItems)});for(let t of e.renderedItems)t.element&&i.observe(t.element);return()=>{cancelAnimationFrame(r),i.disconnect()}}));let f=(e,t,r=!1)=>{let n;return t(t=>{let r=t.findIndex(({id:t})=>t===e.id),i=t.slice();if(-1!==r){let o={...n=t[r],...e};i[r]=o,a.set(e.id,o)}else i.push(e),a.set(e.id,e);return i}),()=>{t(t=>{if(!n)return r&&a.delete(e.id),t.filter(({id:t})=>t!==e.id);let i=t.findIndex(({id:t})=>t===e.id);if(-1===i)return t;let o=t.slice();return o[i]=n,a.set(e.id,n),o})}},A=e=>f(e,e=>u.setState("items",e),!0);return{...c,registerItem:A,renderItem:e=>b(A(e),f(e,e=>u.setState("renderedItems",e))),item:e=>{if(!e)return null;let t=a.get(e);if(!t){let{items:r}=u.getState();(t=r.find(t=>t.id===e))&&a.set(e,t)}return t||null},__unstablePrivateStore:u}}(e),o=I(e.activeId,null==r?void 0:r.activeId,e.defaultActiveId),a=ti({...i.getState(),id:I(e.id,null==r?void 0:r.id,`id-${Math.random().toString(36).slice(2,8)}`),activeId:o,baseElement:I(null==r?void 0:r.baseElement,null),includesBaseElement:I(e.includesBaseElement,null==r?void 0:r.includesBaseElement,null===o),moves:I(null==r?void 0:r.moves,0),orientation:I(e.orientation,null==r?void 0:r.orientation,"both"),rtl:I(e.rtl,null==r?void 0:r.rtl,!1),virtualFocus:I(e.virtualFocus,null==r?void 0:r.virtualFocus,!1),focusLoop:I(e.focusLoop,null==r?void 0:r.focusLoop,!1),focusWrap:I(e.focusWrap,null==r?void 0:r.focusWrap,!1),focusShift:I(e.focusShift,null==r?void 0:r.focusShift,!1)},i,e.store);to(a,()=>tl(a,["renderedItems","activeId"],e=>{a.setState("activeId",t=>{var r;return void 0!==t?t:null==(r=nR(e.renderedItems))?void 0:r.id})}));let s=(e="next",t={})=>{var r,n;let i=a.getState(),{skip:o=0,activeId:s=i.activeId,focusShift:l=i.focusShift,focusLoop:u=i.focusLoop,focusWrap:c=i.focusWrap,includesBaseElement:d=i.includesBaseElement,renderedItems:f=i.renderedItems,rtl:A=i.rtl}=t,h="up"===e||"down"===e,m="next"===e||"down"===e,p=h?eN(function(e,t,r){let n=nG(e);for(let i of e)for(let e=0;ee.id===s);if(!B)return null==(n=nR(p))?void 0:n.id;let C=p.some(e=>e.rowId),g=p.indexOf(B),v=p.slice(g+1),y=nI(v,B.rowId);if(o){let e=y.filter(e=>s?!e.disabled&&e.id!==s:!e.disabled),t=e.slice(o)[0]||e[e.length-1];return null==t?void 0:t.id}let b=u&&(h?"horizontal"!==u:"vertical"!==u),E=C&&c&&(h?"horizontal"!==c:"vertical"!==c),M=m?(!C||h)&&b&&d:!!h&&d;if(b){let e=nR(function(e,t,r=!1){let n=e.findIndex(e=>e.id===t);return[...e.slice(n+1),...r?[nS]:[],...e.slice(0,n)]}(E&&!M?p:nI(p,B.rowId),s,M),s);return null==e?void 0:e.id}if(E){let e=nR(M?y:v,s);return M?(null==e?void 0:e.id)||null:null==e?void 0:e.id}let F=nR(y,s);return!F&&M?null:null==F?void 0:F.id};return{...i,...a,setBaseElement:e=>a.setState("baseElement",e),setActiveId:e=>a.setState("activeId",e),move:e=>{void 0!==e&&(a.setState("activeId",e),a.setState("moves",e=>e+1))},first:()=>{var e;return null==(e=nR(a.getState().renderedItems))?void 0:e.id},last:()=>{var e;return null==(e=nR(ek(a.getState().renderedItems)))?void 0:e.id},next:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("next",e)),previous:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("previous",e)),down:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("down",e)),up:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("up",e))}}({...t,activeId:a,includesBaseElement:I(t.includesBaseElement,null==o?void 0:o.includesBaseElement,!0),orientation:I(t.orientation,null==o?void 0:o.orientation,"vertical"),focusLoop:I(t.focusLoop,null==o?void 0:o.focusLoop,!0),focusWrap:I(t.focusWrap,null==o?void 0:o.focusWrap,!0),virtualFocus:I(t.virtualFocus,null==o?void 0:o.virtualFocus,!0)}),l=function({popover:e,...t}={}){let r=td(t.store,tc(e,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));tf(t,r);let n=null==r?void 0:r.getState(),i=ru({...t,store:r}),o=I(t.placement,null==n?void 0:n.placement,"bottom"),a=ti({...i.getState(),placement:o,currentPlacement:o,anchorElement:I(null==n?void 0:n.anchorElement,null),popoverElement:I(null==n?void 0:n.popoverElement,null),arrowElement:I(null==n?void 0:n.arrowElement,null),rendered:Symbol("rendered")},i,r);return{...i,...a,setAnchorElement:e=>a.setState("anchorElement",e),setPopoverElement:e=>a.setState("popoverElement",e),setArrowElement:e=>a.setState("arrowElement",e),render:()=>a.setState("rendered",Symbol("rendered"))}}({...t,placement:I(t.placement,null==o?void 0:o.placement,"bottom-start")}),u=I(t.value,null==o?void 0:o.value,t.defaultValue,""),c=I(t.selectedValue,null==o?void 0:o.selectedValue,null==i?void 0:i.values,t.defaultSelectedValue,""),d=Array.isArray(c),f={...s.getState(),...l.getState(),value:u,selectedValue:c,resetValueOnSelect:I(t.resetValueOnSelect,null==o?void 0:o.resetValueOnSelect,d),resetValueOnHide:I(t.resetValueOnHide,null==o?void 0:o.resetValueOnHide,d&&!e),activeValue:null==o?void 0:o.activeValue},A=ti(f,s,l,r);return nx&&to(A,()=>tl(A,["virtualFocus"],()=>{A.setState("virtualFocus",!1)})),to(A,()=>{if(e)return b(tl(A,["selectedValue"],t=>{Array.isArray(t.selectedValue)&&e.setValues(t.selectedValue)}),tl(e,["values"],e=>{A.setState("selectedValue",e.values)}))}),to(A,()=>tl(A,["resetValueOnHide","mounted"],e=>{!e.resetValueOnHide||e.mounted||A.setState("value",u)})),to(A,()=>tl(A,["open"],e=>{e.open||(A.setState("activeId",a),A.setState("moves",0))})),to(A,()=>tl(A,["moves","activeId"],(e,t)=>{e.moves===t.moves&&A.setState("activeValue",void 0)})),to(A,()=>tu(A,["moves","renderedItems"],(e,t)=>{if(e.moves===t.moves)return;let{activeId:r}=A.getState(),n=s.item(r);A.setState("activeValue",null==n?void 0:n.value)})),{...l,...s,...A,tag:e,setValue:e=>A.setState("value",e),resetValue:()=>A.setState("value",f.value),setSelectedValue:e=>A.setState("selectedValue",e)}}function nw(e={}){var t,r,n,i,o,a,s,l;let u;t=e,u=nF();let[c,d]=tT(nD,e={id:V((r=t={...t,tag:void 0!==t.tag?t.tag:u}).id),...r});return q(d,[(n=e).tag]),tI(c,n,"value","setValue"),tI(c,n,"selectedValue","setSelectedValue"),tI(c,n,"resetValueOnHide"),tI(c,n,"resetValueOnSelect"),Object.assign((a=c,q(s=d,[(l=n).popover]),tI(a,l,"placement"),i=ra(a,s,l),o=i,q(d,[n.store]),tI(o,n,"items","setItems"),tI(i=o,n,"activeId","setActiveId"),tI(i,n,"includesBaseElement"),tI(i,n,"virtualFocus"),tI(i,n,"orientation"),tI(i,n,"rtl"),tI(i,n,"focusLoop"),tI(i,n,"focusWrap"),tI(i,n,"focusShift"),i),{tag:n.tag})}function nL(e={}){let t=nw(e);return(0,eo.jsx)(e5,{value:t,children:e.children})}e.s(["useComboboxStore",()=>nw],18364),e.s(["ComboboxProvider",()=>nL],78440);var n_=(0,T.createContext)(void 0),nO=eu(function(e){let[t,r]=(0,T.useState)();return R(e={role:"group","aria-labelledby":t,...e=Z(e,e=>(0,eo.jsx)(n_.Provider,{value:r,children:e}),[])})});ea(function(e){return el("div",nO(e))});var nH=eu(function({store:e,...t}){return nO(t)});ea(function(e){return el("div",nH(e))});var nP=eu(function({store:e,...t}){let r=e4();return M(e=e||r,!1),"grid"===h(e.useState("contentElement"))&&(t={role:"rowgroup",...t}),t=nH({store:e,...t})}),nJ=ea(function(e){return el("div",nP(e))});e.s(["ComboboxGroup",()=>nJ],59129);var nU=eu(function(e){let t=(0,T.useContext)(n_),r=V(e.id);return j(()=>(null==t||t(r),()=>null==t?void 0:t(void 0)),[t,r]),R(e={id:r,"aria-hidden":!0,...e})});ea(function(e){return el("div",nU(e))});var nN=eu(function({store:e,...t}){return nU(t)});ea(function(e){return el("div",nN(e))});var nk=eu(function(e){return nN(e)}),nK=ea(function(e){return el("div",nk(e))});e.s(["ComboboxGroupLabel",()=>nK],25998);var nj=e.i(38360);let nQ={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0},nX=(e,t)=>String(e.rankedValue).localeCompare(String(t.rankedValue));function nV(e,t,r={}){let{keys:n,threshold:i=nQ.MATCHES,baseSort:o=nX,sorter:a=e=>e.sort((e,t)=>(function(e,t,r){let{rank:n,keyIndex:i}=e,{rank:o,keyIndex:a}=t;return n!==o?n>o?-1:1:i===a?r(e,t):i{let s=nq(i,u,c),l=t,{minRanking:d,maxRanking:f,threshold:A}=o;return s=nQ.MATCHES?s=d:s>f&&(s=f),s>e&&(e=s,r=a,n=A,l=i),{rankedValue:l,rank:e,keyIndex:r,keyThreshold:n}},{rankedValue:s,rank:nQ.NO_MATCH,keyIndex:-1,keyThreshold:c.threshold}):{rankedValue:s,rank:nq(s,u,c),keyIndex:-1,keyThreshold:c.threshold}),{rank:f,keyThreshold:A=i}=d;return f>=A&&e.push({...d,item:o,index:a}),e},[])).map(({item:e})=>e)}function nq(e,t,r){if(e=nW(e,r),(t=nW(t,r)).length>e.length)return nQ.NO_MATCH;if(e===t)return nQ.CASE_SENSITIVE_EQUAL;let n=function*(e,t){let r=-1;for(;(r=e.indexOf(t,r+1))>-1;)yield r;return -1}(e=e.toLowerCase(),t=t.toLowerCase()),i=n.next(),o=i.value;if(e.length===t.length&&0===o)return nQ.EQUAL;if(0===o)return nQ.STARTS_WITH;let a=i;for(;!a.done;){if(a.value>0&&" "===e[a.value-1])return nQ.WORD_STARTS_WITH;a=n.next()}return o>0?nQ.CONTAINS:1===t.length?nQ.NO_MATCH:(function(e){let t="",r=" ";for(let n=0;n-1))return nQ.NO_MATCH;return r=o-s,n=i/t.length,nQ.MATCHES+1/r*n}(e,t)}function nW(e,{keepDiacritics:t}){return e=`${e}`,t||(e=(0,nj.default)(e)),e}nV.rankings=nQ;let nY={maxRanking:1/0,minRanking:-1/0};e.s(["matchSorter",()=>nV],70238)},29402,(e,t,r)=>{var n,i,o,a,s="__lodash_hash_undefined__",l=1/0,u="[object Arguments]",c="[object Array]",d="[object Boolean]",f="[object Date]",A="[object Error]",h="[object Function]",m="[object Map]",p="[object Number]",B="[object Object]",C="[object Promise]",g="[object RegExp]",v="[object Set]",y="[object String]",b="[object Symbol]",E="[object WeakMap]",M="[object ArrayBuffer]",F="[object DataView]",S=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,R=/^\w*$/,I=/^\./,T=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,G=/\\(\\)?/g,x=/^\[object .+?Constructor\]$/,D=/^(?:0|[1-9]\d*)$/,w={};w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w[u]=w[c]=w[M]=w[d]=w[F]=w[f]=w[A]=w[h]=w[m]=w[p]=w[B]=w[g]=w[v]=w[y]=w[E]=!1;var L=e.g&&e.g.Object===Object&&e.g,_="object"==typeof self&&self&&self.Object===Object&&self,O=L||_||Function("return this")(),H=r&&!r.nodeType&&r,P=H&&t&&!t.nodeType&&t,J=P&&P.exports===H&&L.process,U=function(){try{return J&&J.binding("util")}catch(e){}}(),N=U&&U.isTypedArray;function k(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r-1},eb.prototype.set=function(e,t){var r=this.__data__,n=eS(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},eE.prototype.clear=function(){this.__data__={hash:new ey,map:new(el||eb),string:new ey}},eE.prototype.delete=function(e){return eL(this,e).delete(e)},eE.prototype.get=function(e){return eL(this,e).get(e)},eE.prototype.has=function(e){return eL(this,e).has(e)},eE.prototype.set=function(e,t){return eL(this,e).set(e,t),this},eM.prototype.add=eM.prototype.push=function(e){return this.__data__.set(e,s),this},eM.prototype.has=function(e){return this.__data__.has(e)},eF.prototype.clear=function(){this.__data__=new eb},eF.prototype.delete=function(e){return this.__data__.delete(e)},eF.prototype.get=function(e){return this.__data__.get(e)},eF.prototype.has=function(e){return this.__data__.has(e)},eF.prototype.set=function(e,t){var r=this.__data__;if(r instanceof eb){var n=r.__data__;if(!el||n.length<199)return n.push([e,t]),this;r=this.__data__=new eE(n)}return r.set(e,t),this};var eR=(n=function(e,t){return e&&eI(e,t,e0)},function(e,t){if(null==e)return e;if(!eV(e))return n(e,t);for(var r=e.length,i=-1,o=Object(e);++is))return!1;var u=o.get(e);if(u&&o.get(t))return u==t;var c=-1,d=!0,f=1&i?new eM:void 0;for(o.set(e,t),o.set(t,e);++c-1&&e%1==0&&e-1&&e%1==0&&e<=0x1fffffffffffff}function eY(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function eZ(e){return!!e&&"object"==typeof e}function ez(e){return"symbol"==typeof e||eZ(e)&&ee.call(e)==b}var e$=N?K(N):function(e){return eZ(e)&&eW(e.length)&&!!w[ee.call(e)]};function e0(e){return eV(e)?function(e,t){var r=eX(e)||eQ(e)?function(e,t){for(var r=-1,n=Array(e);++rt||o&&a&&l&&!s&&!u||n&&a&&l||!r&&l||!i)return 1;if(!n&&!o&&!u&&e=s)return l;return l*("desc"==r[n]?-1:1)}}return e.index-t.index}(e,t,r)});l--;)s[l]=s[l].value;return s}(e,t,r))}},97442,e=>{e.v({Group:"MissionSelect-module__N_AIjG__Group",GroupLabel:"MissionSelect-module__N_AIjG__GroupLabel",Input:"MissionSelect-module__N_AIjG__Input",InputWrapper:"MissionSelect-module__N_AIjG__InputWrapper",Item:"MissionSelect-module__N_AIjG__Item",ItemHeader:"MissionSelect-module__N_AIjG__ItemHeader",ItemMissionName:"MissionSelect-module__N_AIjG__ItemMissionName",ItemName:"MissionSelect-module__N_AIjG__ItemName",ItemType:"MissionSelect-module__N_AIjG__ItemType",ItemTypes:"MissionSelect-module__N_AIjG__ItemTypes",List:"MissionSelect-module__N_AIjG__List",NoResults:"MissionSelect-module__N_AIjG__NoResults",Popover:"MissionSelect-module__N_AIjG__Popover",SelectedName:"MissionSelect-module__N_AIjG__SelectedName",SelectedValue:"MissionSelect-module__N_AIjG__SelectedValue",Shortcut:"MissionSelect-module__N_AIjG__Shortcut"})},81405,(e,t,r)=>{var n;e.e,(n=function(){function e(e){return i.appendChild(e.dom),e}function t(e){for(var t=0;ta+1e3&&(l.update(1e3*s/(e-a),100),a=e,s=0,c)){var t=performance.memory;c.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){o=this.end()},domElement:i,setMode:t}}).Panel=function(e,t,r){var n=1/0,i=0,o=Math.round,a=o(window.devicePixelRatio||1),s=80*a,l=48*a,u=3*a,c=2*a,d=3*a,f=15*a,A=74*a,h=30*a,m=document.createElement("canvas");m.width=s,m.height=l,m.style.cssText="width:80px;height:48px";var p=m.getContext("2d");return p.font="bold "+9*a+"px Helvetica,Arial,sans-serif",p.textBaseline="top",p.fillStyle=r,p.fillRect(0,0,s,l),p.fillStyle=t,p.fillText(e,u,c),p.fillRect(d,f,A,h),p.fillStyle=r,p.globalAlpha=.9,p.fillRect(d,f,A,h),{dom:m,update:function(l,B){n=Math.min(n,l),i=Math.max(i,l),p.fillStyle=r,p.globalAlpha=1,p.fillRect(0,0,s,f),p.fillStyle=t,p.fillText(o(l)+" "+e+" ("+o(n)+"-"+o(i)+")",u,c),p.drawImage(m,d+a,f,A-a,h,d,f,A-a,h),p.fillRect(d+A-a,f,a,h),p.fillStyle=r,p.globalAlpha=.9,p.fillRect(d+A-a,f,a,o((1-l/B)*h))}}},t.exports=n},55141,e=>{e.v({AxisLabel:"DebugElements-module__Cmeo9W__AxisLabel",StatsPanel:"DebugElements-module__Cmeo9W__StatsPanel"})},86855,e=>{"use strict";var t=e.i(43476),r=e.i(932),n=e.i(71645),i=e.i(40859),i=i,o=i,a=e.i(81405);function s(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}function l({showPanel:e=0,className:t,parent:r}){let l=function(e,t=[],r){let[i,o]=n.useState();return n.useLayoutEffect(()=>{let t=e();return o(t),s(void 0,t),()=>s(void 0,null)},t),i}(()=>new a.default,[]);return n.useEffect(()=>{if(l){let n=r&&r.current||document.body;l.showPanel(e),null==n||n.appendChild(l.dom);let a=(null!=t?t:"").split(" ").filter(e=>e);a.length&&l.dom.classList.add(...a);let s=(0,i.j)(()=>l.begin()),u=(0,o.k)(()=>l.end());return()=>{a.length&&l.dom.classList.remove(...a),null==n||n.removeChild(l.dom),s(),u()}}},[r,l,t,e]),null}var u=e.i(60099),c=e.i(79123),d=e.i(55141);function f(){let e,i,o=(0,r.c)(3),{debugMode:a}=(0,c.useDebug)(),s=(0,n.useRef)(null);return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=()=>{let e=s.current;e&&e.setColors("rgb(153, 255, 0)","rgb(0, 153, 255)","rgb(255, 153, 0)")},o[0]=e):e=o[0],(0,n.useEffect)(e),o[1]!==a?(i=a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l,{className:d.default.StatsPanel}),(0,t.jsx)("axesHelper",{ref:s,args:[70],renderOrder:999,children:(0,t.jsx)("lineBasicMaterial",{depthTest:!1,depthWrite:!1,fog:!1,vertexColors:!0})}),(0,t.jsx)(u.Html,{position:[80,0,0],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"y",children:"Y"})}),(0,t.jsx)(u.Html,{position:[0,80,0],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"z",children:"Z"})}),(0,t.jsx)(u.Html,{position:[0,0,80],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"x",children:"X"})})]}):null,o[1]=a,o[2]=i):i=o[2],i}e.s(["DebugElements",()=>f],86855)},38847,e=>{"use strict";var t=e.i(80902),r=e.i(22289),n=e.i(71645);function i(e,t,n){try{return e(t)}catch(e){return(0,r.l)("[nuqs] Error while parsing value `%s`: %O"+(n?" (for key `%s`)":""),t,e,n),null}}function o(e){function t(t){if(void 0===t)return null;let r="";if(Array.isArray(t)){if(void 0===t[0])return null;r=t[0]}return"string"==typeof t&&(r=t),i(e.parse,r)}return{type:"single",eq:(e,t)=>e===t,...e,parseServerSide:t,withDefault(e){return{...this,defaultValue:e,parseServerSide:r=>t(r)??e}},withOptions(e){return{...this,...e}}}}o({parse:e=>e,serialize:String}),o({parse:e=>{let t=parseInt(e);return t==t?t:null},serialize:e=>""+Math.round(e)}),o({parse:e=>{let t=parseInt(e);return t==t?t-1:null},serialize:e=>""+Math.round(e+1)}),o({parse:e=>{let t=parseInt(e,16);return t==t?t:null},serialize:e=>{let t=Math.round(e).toString(16);return(1&t.length?"0":"")+t}}),o({parse:e=>{let t=parseFloat(e);return t==t?t:null},serialize:String});let a=o({parse:e=>"true"===e.toLowerCase(),serialize:String});function s(e,t){return e.valueOf()===t.valueOf()}o({parse:e=>{let t=parseInt(e);return t==t?new Date(t):null},serialize:e=>""+e.valueOf(),eq:s}),o({parse:e=>{let t=new Date(e);return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString(),eq:s}),o({parse:e=>{let t=new Date(e.slice(0,10));return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString().slice(0,10),eq:s});let l=(0,t.r)(),u={};function c(e,r,n,o,a,s){let l=!1,u=Object.entries(e).reduce((e,[u,c])=>{var d;let f=r?.[u]??u,A=o[f],h="multi"===c.type?[]:null,m=void 0===A?("multi"===c.type?n?.getAll(f):n?.get(f))??h:A;return a&&s&&((d=a[f]??h)===m||null!==d&&null!==m&&"string"!=typeof d&&"string"!=typeof m&&d.length===m.length&&d.every((e,t)=>e===m[t]))?e[u]=s[u]??null:(l=!0,e[u]=((0,t.i)(m)?null:i(c.parse,m,f))??null,a&&(a[f]=m)),e},{});if(!l){let t=Object.keys(e),r=Object.keys(s??{});l=t.length!==r.length||t.some(e=>!r.includes(e))}return{state:u,hasChanged:l}}function d(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,e[r]??t[r]??null]))}function f(e,i={}){let{parse:o,type:a,serialize:s,eq:A,defaultValue:h,...m}=i,[{[e]:p},B]=function(e,i={}){let o=(0,n.useId)(),a=(0,r.i)(),s=(0,r.a)(),{history:f="replace",scroll:A=a?.scroll??!1,shallow:h=a?.shallow??!0,throttleMs:m=t.s.timeMs,limitUrlUpdates:p=a?.limitUrlUpdates,clearOnDefault:B=a?.clearOnDefault??!0,startTransition:C,urlKeys:g=u}=i,v=Object.keys(e).join(","),y=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(e=>[e,g[e]??e])),[v,JSON.stringify(g)]),b=(0,r.r)(Object.values(y)),E=b.searchParams,M=(0,n.useRef)({}),F=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(t=>[t,e[t].defaultValue??null])),[Object.values(e).map(({defaultValue:e})=>e).join(",")]),S=t.t.useQueuedQueries(Object.values(y)),[R,I]=(0,n.useState)(()=>c(e,g,E??new URLSearchParams,S).state),T=(0,n.useRef)(R);if((0,r.c)("[nuq+ %s `%s`] render - state: %O, iSP: %s",o,v,R,E),Object.keys(M.current).join("&")!==Object.values(y).join("&")){let{state:t,hasChanged:n}=c(e,g,E,S,M.current,T.current);n&&((0,r.c)("[nuq+ %s `%s`] State changed: %O",o,v,{state:t,initialSearchParams:E,queuedQueries:S,queryRef:M.current,stateRef:T.current}),T.current=t,I(t)),M.current=Object.fromEntries(Object.entries(y).map(([t,r])=>[r,e[t]?.type==="multi"?E?.getAll(r):E?.get(r)??null]))}(0,n.useEffect)(()=>{let{state:t,hasChanged:n}=c(e,g,E,S,M.current,T.current);n&&((0,r.c)("[nuq+ %s `%s`] State changed: %O",o,v,{state:t,initialSearchParams:E,queuedQueries:S,queryRef:M.current,stateRef:T.current}),T.current=t,I(t))},[Object.values(y).map(e=>`${e}=${E?.getAll(e)}`).join("&"),JSON.stringify(S)]),(0,n.useEffect)(()=>{let t=Object.keys(e).reduce((t,n)=>(t[n]=({state:t,query:i})=>{I(a=>{let{defaultValue:s}=e[n],l=y[n],u=t??s??null;return Object.is(a[n]??s??null,u)?((0,r.c)("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). no change, skipping, resolved: %O",o,v,l,t,s,T.current),a):(T.current={...T.current,[n]:u},M.current[l]=i,(0,r.c)("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). updateInternalState, resolved: %O",o,v,l,t,s,T.current),T.current)})},t),{});for(let n of Object.keys(e)){let e=y[n];(0,r.c)("[nuq+ %s `%s`] Subscribing to sync for `%s`",o,e,v),l.on(e,t[n])}return()=>{for(let n of Object.keys(e)){let e=y[n];(0,r.c)("[nuq+ %s `%s`] Unsubscribing to sync for `%s`",o,e,v),l.off(e,t[n])}}},[v,y]);let G=(0,n.useCallback)((n,i={})=>{let a,u=Object.fromEntries(Object.keys(e).map(e=>[e,null])),c="function"==typeof n?n(d(T.current,F))??u:n??u;(0,r.c)("[nuq+ %s `%s`] setState: %O",o,v,c);let g=0,E=!1,M=[];for(let[n,o]of Object.entries(c)){let u=e[n],c=y[n];if(!u||void 0===o)continue;(i.clearOnDefault??u.clearOnDefault??B)&&null!==o&&void 0!==u.defaultValue&&(u.eq??((e,t)=>e===t))(o,u.defaultValue)&&(o=null);let d=null===o?null:(u.serialize??String)(o);l.emit(c,{state:o,query:d});let v={key:c,query:d,options:{history:i.history??u.history??f,shallow:i.shallow??u.shallow??h,scroll:i.scroll??u.scroll??A,startTransition:i.startTransition??u.startTransition??C}};if(i?.limitUrlUpdates?.method==="debounce"||p?.method==="debounce"||u.limitUrlUpdates?.method==="debounce"){!0===v.options.shallow&&console.warn((0,r.s)(422));let e=i?.limitUrlUpdates?.timeMs??p?.timeMs??u.limitUrlUpdates?.timeMs??t.s.timeMs,n=t.t.push(v,e,b,s);gt(e),E?t.n.flush(b,s):t.n.getPendingPromise(b));return a??S},[v,f,h,A,m,p?.method,p?.timeMs,C,y,b.updateUrl,b.getSearchParamsSnapshot,b.rateLimitFactor,s,F]);return[(0,n.useMemo)(()=>d(R,F),[R,F]),G]}({[e]:{parse:o??(e=>e),type:a,serialize:s,eq:A,defaultValue:h}},m);return[p,(0,n.useCallback)((t,r={})=>B(r=>({[e]:"function"==typeof t?t(r[e]):t}),r),[e,B])]}e.s(["createParser",()=>o,"parseAsBoolean",()=>a,"useQueryState",()=>f],38847)}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/1f24b5e35a3d7706.js b/docs/_next/static/chunks/1f24b5e35a3d7706.js deleted file mode 100644 index c034135a..00000000 --- a/docs/_next/static/chunks/1f24b5e35a3d7706.js +++ /dev/null @@ -1,566 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,13070,e=>{e.v({Arrow:"KeyboardOverlay-module__HsRBsa__Arrow",Column:"KeyboardOverlay-module__HsRBsa__Column",Key:"KeyboardOverlay-module__HsRBsa__Key",Root:"KeyboardOverlay-module__HsRBsa__Root",Row:"KeyboardOverlay-module__HsRBsa__Row",Spacer:"KeyboardOverlay-module__HsRBsa__Spacer"})},78295,e=>{e.v({Joystick:"TouchControls-module__AkxfgW__Joystick",Left:"TouchControls-module__AkxfgW__Left TouchControls-module__AkxfgW__Joystick",Right:"TouchControls-module__AkxfgW__Right TouchControls-module__AkxfgW__Joystick"})},65883,e=>{e.v({ButtonLabel:"InspectorControls-module__gNRB6W__ButtonLabel",CheckboxField:"InspectorControls-module__gNRB6W__CheckboxField",Controls:"InspectorControls-module__gNRB6W__Controls",Dropdown:"InspectorControls-module__gNRB6W__Dropdown",Field:"InspectorControls-module__gNRB6W__Field",Group:"InspectorControls-module__gNRB6W__Group",IconButton:"InspectorControls-module__gNRB6W__IconButton",LabelledButton:"InspectorControls-module__gNRB6W__LabelledButton",MapInfoButton:"InspectorControls-module__gNRB6W__MapInfoButton InspectorControls-module__gNRB6W__IconButton InspectorControls-module__gNRB6W__LabelledButton",MissionSelectWrapper:"InspectorControls-module__gNRB6W__MissionSelectWrapper",Toggle:"InspectorControls-module__gNRB6W__Toggle InspectorControls-module__gNRB6W__IconButton"})},36679,e=>{e.v({ButtonLabel:"CopyCoordinatesButton-module__BxovtG__ButtonLabel "+e.i(65883).ButtonLabel,ClipboardCheck:"CopyCoordinatesButton-module__BxovtG__ClipboardCheck",MapPin:"CopyCoordinatesButton-module__BxovtG__MapPin",Root:"CopyCoordinatesButton-module__BxovtG__Root "+e.i(65883).IconButton+" "+e.i(65883).LabelledButton,showClipboardCheck:"CopyCoordinatesButton-module__BxovtG__showClipboardCheck"})},76775,(e,t,a)=>{function r(e,t,a,r){return Math.round(e/a)+" "+r+(t>=1.5*a?"s":"")}t.exports=function(e,t){t=t||{};var a,n,i,o,s=typeof e;if("string"===s&&e.length>0){var l=e;if(!((l=String(l)).length>100)){var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(l);if(c){var d=parseFloat(c[1]);switch((c[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*d;case"weeks":case"week":case"w":return 6048e5*d;case"days":case"day":case"d":return 864e5*d;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*d;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*d;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*d;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return d;default:break}}}return}if("number"===s&&isFinite(e)){return t.long?(n=Math.abs(a=e))>=864e5?r(a,n,864e5,"day"):n>=36e5?r(a,n,36e5,"hour"):n>=6e4?r(a,n,6e4,"minute"):n>=1e3?r(a,n,1e3,"second"):a+" ms":(o=Math.abs(i=e))>=864e5?Math.round(i/864e5)+"d":o>=36e5?Math.round(i/36e5)+"h":o>=6e4?Math.round(i/6e4)+"m":o>=1e3?Math.round(i/1e3)+"s":i+"ms"}throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},7003,(e,t,a)=>{t.exports=function(t){function a(e){let t,n,i,o=null;function s(...e){if(!s.enabled)return;let r=Number(new Date);s.diff=r-(t||r),s.prev=t,s.curr=r,t=r,e[0]=a.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let n=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,r)=>{if("%%"===t)return"%";n++;let i=a.formatters[r];if("function"==typeof i){let a=e[n];t=i.call(s,a),e.splice(n,1),n--}return t}),a.formatArgs.call(s,e),(s.log||a.log).apply(s,e)}return s.namespace=e,s.useColors=a.useColors(),s.color=a.selectColor(e),s.extend=r,s.destroy=a.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(n!==a.namespaces&&(n=a.namespaces,i=a.enabled(e)),i),set:e=>{o=e}}),"function"==typeof a.init&&a.init(s),s}function r(e,t){let r=a(this.namespace+(void 0===t?":":t)+e);return r.log=this.log,r}function n(e,t){let a=0,r=0,n=-1,i=0;for(;a"-"+e)].join(",");return a.enable(""),e},a.enable=function(e){for(let t of(a.save(e),a.namespaces=e,a.names=[],a.skips=[],("string"==typeof e?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean)))"-"===t[0]?a.skips.push(t.slice(1)):a.names.push(t)},a.enabled=function(e){for(let t of a.skips)if(n(e,t))return!1;for(let t of a.names)if(n(e,t))return!0;return!1},a.humanize=e.r(76775),a.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(t).forEach(e=>{a[e]=t[e]}),a.names=[],a.skips=[],a.formatters={},a.selectColor=function(e){let t=0;for(let a=0;a{let r;var n=e.i(47167);a.formatArgs=function(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let a="color: "+this.color;e.splice(1,0,a,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(r++,"%c"===e&&(n=r))}),e.splice(n,0,a)},a.save=function(e){try{e?a.storage.setItem("debug",e):a.storage.removeItem("debug")}catch(e){}},a.load=function(){let e;try{e=a.storage.getItem("debug")||a.storage.getItem("DEBUG")}catch(e){}return!e&&void 0!==n.default&&"env"in n.default&&(e=n.default.env.DEBUG),e},a.useColors=function(){let e;return"u">typeof window&&!!window.process&&("renderer"===window.process.type||!!window.process.__nwjs)||!("u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("u">typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"u">typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"u">typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},a.storage=function(){try{return localStorage}catch(e){}}(),r=!1,a.destroy=()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))},a.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],a.log=console.debug||console.log||(()=>{}),t.exports=e.r(7003)(a);let{formatters:i}=t.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},28903,e=>{e.v({ButtonLabel:"LoadDemoButton-module__kGZaoW__ButtonLabel "+e.i(65883).ButtonLabel,DemoIcon:"LoadDemoButton-module__kGZaoW__DemoIcon",Root:"LoadDemoButton-module__kGZaoW__Root "+e.i(65883).IconButton+" "+e.i(65883).LabelledButton})},29418,e=>{e.v({Bottom:"PlayerNameplate-module__zYDm0a__Bottom PlayerNameplate-module__zYDm0a__Root",HealthBar:"PlayerNameplate-module__zYDm0a__HealthBar",HealthFill:"PlayerNameplate-module__zYDm0a__HealthFill",IffArrow:"PlayerNameplate-module__zYDm0a__IffArrow",Name:"PlayerNameplate-module__zYDm0a__Name",Root:"PlayerNameplate-module__zYDm0a__Root",Top:"PlayerNameplate-module__zYDm0a__Top PlayerNameplate-module__zYDm0a__Root"})},21629,e=>{e.v({PlayPause:"DemoControls-module__PjV4fq__PlayPause",Root:"DemoControls-module__PjV4fq__Root",Seek:"DemoControls-module__PjV4fq__Seek",Speed:"DemoControls-module__PjV4fq__Speed",Time:"DemoControls-module__PjV4fq__Time"})},75840,e=>{e.v({BarFillEnergy:"PlayerHUD-module__-E1Scq__BarFillEnergy",BarFillHealth:"PlayerHUD-module__-E1Scq__BarFillHealth",BarTrack:"PlayerHUD-module__-E1Scq__BarTrack",Bars:"PlayerHUD-module__-E1Scq__Bars",ChatColor0:"PlayerHUD-module__-E1Scq__ChatColor0",ChatColor1:"PlayerHUD-module__-E1Scq__ChatColor1",ChatColor2:"PlayerHUD-module__-E1Scq__ChatColor2",ChatColor3:"PlayerHUD-module__-E1Scq__ChatColor3",ChatColor4:"PlayerHUD-module__-E1Scq__ChatColor4",ChatColor5:"PlayerHUD-module__-E1Scq__ChatColor5",ChatColor6:"PlayerHUD-module__-E1Scq__ChatColor6",ChatColor7:"PlayerHUD-module__-E1Scq__ChatColor7",ChatColor8:"PlayerHUD-module__-E1Scq__ChatColor8",ChatColor9:"PlayerHUD-module__-E1Scq__ChatColor9",ChatMessage:"PlayerHUD-module__-E1Scq__ChatMessage",ChatWindow:"PlayerHUD-module__-E1Scq__ChatWindow",Compass:"PlayerHUD-module__-E1Scq__Compass",CompassNSEW:"PlayerHUD-module__-E1Scq__CompassNSEW",CompassRing:"PlayerHUD-module__-E1Scq__CompassRing",PackInvCount:"PlayerHUD-module__-E1Scq__PackInvCount",PackInvIcon:"PlayerHUD-module__-E1Scq__PackInvIcon",PackInvInfinity:"PlayerHUD-module__-E1Scq__PackInvInfinity",PackInvItem:"PlayerHUD-module__-E1Scq__PackInvItem",PackInvItemActive:"PlayerHUD-module__-E1Scq__PackInvItemActive",PackInvItemDim:"PlayerHUD-module__-E1Scq__PackInvItemDim",PackInventoryHUD:"PlayerHUD-module__-E1Scq__PackInventoryHUD",PlayerHUD:"PlayerHUD-module__-E1Scq__PlayerHUD",Reticle:"PlayerHUD-module__-E1Scq__Reticle",ReticleDot:"PlayerHUD-module__-E1Scq__ReticleDot",ReticleImage:"PlayerHUD-module__-E1Scq__ReticleImage",TeamCount:"PlayerHUD-module__-E1Scq__TeamCount",TeamNameEnemy:"PlayerHUD-module__-E1Scq__TeamNameEnemy",TeamNameFriendly:"PlayerHUD-module__-E1Scq__TeamNameFriendly",TeamRow:"PlayerHUD-module__-E1Scq__TeamRow",TeamScore:"PlayerHUD-module__-E1Scq__TeamScore",TeamScores:"PlayerHUD-module__-E1Scq__TeamScores",TopRight:"PlayerHUD-module__-E1Scq__TopRight",WeaponHUD:"PlayerHUD-module__-E1Scq__WeaponHUD",WeaponSeparator:"PlayerHUD-module__-E1Scq__WeaponSeparator"})},3011,e=>{e.v({CanvasContainer:"page-module__E0kJGG__CanvasContainer",LoadingIndicator:"page-module__E0kJGG__LoadingIndicator",Progress:"page-module__E0kJGG__Progress",ProgressBar:"page-module__E0kJGG__ProgressBar",ProgressText:"page-module__E0kJGG__ProgressText",Spinner:"page-module__E0kJGG__Spinner",loadingComplete:"page-module__E0kJGG__loadingComplete",spin:"page-module__E0kJGG__spin"})},31713,e=>{"use strict";var t,a=e.i(43476),r=e.i(932),n=e.i(71645),i=e.i(75056),o=e.i(90072),s=e.i(66027),l=e.i(54970),c=e.i(12979),d=e.i(32424),u=e.i(71753),h=e.i(15080),m=e.i(62395),f=e.i(75567),g=e.i(47071);let p={value:!0},y=` -vec3 terrainLinearToSRGB(vec3 linear) { - vec3 higher = pow(linear, vec3(1.0/2.4)) * 1.055 - 0.055; - vec3 lower = linear * 12.92; - return mix(lower, higher, step(vec3(0.0031308), linear)); -} - -vec3 terrainSRGBToLinear(vec3 srgb) { - vec3 higher = pow((srgb + 0.055) / 1.055, vec3(2.4)); - vec3 lower = srgb / 12.92; - return mix(lower, higher, step(vec3(0.04045), srgb)); -} - -// Debug grid overlay using screen-space derivatives for sharp, anti-aliased lines -// Returns 1.0 on grid lines, 0.0 elsewhere -float terrainDebugGrid(vec2 uv, float gridSize, float lineWidth) { - vec2 scaledUV = uv * gridSize; - vec2 grid = abs(fract(scaledUV - 0.5) - 0.5) / fwidth(scaledUV); - float line = min(grid.x, grid.y); - return 1.0 - min(line / lineWidth, 1.0); -} -`;var v=e.i(79123),F=e.i(47021),b=e.i(48066);let S={0:32,1:32,2:32,3:32,4:32,5:32};function x({displacementMap:e,visibilityMask:t,textureNames:r,alphaTextures:i,detailTextureName:s,lightmap:l}){let{debugMode:d}=(0,v.useDebug)(),u=(0,g.useTexture)(r.map(e=>(0,c.terrainTextureToUrl)(e)),e=>{e.forEach(e=>(0,f.setupTexture)(e))}),h=s?(0,c.textureToUrl)(s):null,m=(0,g.useTexture)(h??c.FALLBACK_TEXTURE_URL,e=>{(0,f.setupTexture)(e)}),x=(0,n.useCallback)(e=>{!function({shader:e,baseTextures:t,alphaTextures:a,visibilityMask:r,tiling:n,detailTexture:i=null,lightmap:o=null}){e.uniforms.sunLightPointsDown=p;let s=t.length;if(t.forEach((t,a)=>{e.uniforms[`albedo${a}`]={value:t}}),a.forEach((t,a)=>{e.uniforms[`mask${a}`]={value:t}}),r&&(e.uniforms.visibilityMask={value:r}),t.forEach((t,a)=>{e.uniforms[`tiling${a}`]={value:n[a]??32}}),o&&(e.uniforms.terrainLightmap={value:o}),i&&(e.uniforms.detailTexture={value:i},e.uniforms.detailTiling={value:64},e.uniforms.detailFadeDistance={value:150},e.vertexShader=e.vertexShader.replace("#include ",`#include -varying vec3 vTerrainWorldPos;`),e.vertexShader=e.vertexShader.replace("#include ",`#include -vTerrainWorldPos = (modelMatrix * vec4(transformed, 1.0)).xyz;`)),e.fragmentShader=` -uniform sampler2D albedo0; -uniform sampler2D albedo1; -uniform sampler2D albedo2; -uniform sampler2D albedo3; -uniform sampler2D albedo4; -uniform sampler2D albedo5; -uniform sampler2D mask0; -uniform sampler2D mask1; -uniform sampler2D mask2; -uniform sampler2D mask3; -uniform sampler2D mask4; -uniform sampler2D mask5; -uniform float tiling0; -uniform float tiling1; -uniform float tiling2; -uniform float tiling3; -uniform float tiling4; -uniform float tiling5; -${r?"uniform sampler2D visibilityMask;":""} -${o?"uniform sampler2D terrainLightmap;":""} -uniform bool sunLightPointsDown; -${i?`uniform sampler2D detailTexture; -uniform float detailTiling; -uniform float detailFadeDistance; -varying vec3 vTerrainWorldPos;`:""} - -${y} - -// Global variable to store shadow factor from RE_Direct for use in output calculation -float terrainShadowFactor = 1.0; -`+e.fragmentShader,r){let t="#include ";e.fragmentShader=e.fragmentShader.replace(t,`${t} - // Early discard for invisible areas (before fog/lighting) - float visibility = texture2D(visibilityMask, vMapUv).r; - if (visibility < 0.5) { - discard; - } - `)}e.fragmentShader=e.fragmentShader.replace("#include ",` - // Sample base albedo layers (sRGB textures auto-decoded to linear by Three.js) - vec2 baseUv = vMapUv; - vec3 c0 = texture2D(albedo0, baseUv * vec2(tiling0)).rgb; - ${s>1?"vec3 c1 = texture2D(albedo1, baseUv * vec2(tiling1)).rgb;":""} - ${s>2?"vec3 c2 = texture2D(albedo2, baseUv * vec2(tiling2)).rgb;":""} - ${s>3?"vec3 c3 = texture2D(albedo3, baseUv * vec2(tiling3)).rgb;":""} - ${s>4?"vec3 c4 = texture2D(albedo4, baseUv * vec2(tiling4)).rgb;":""} - ${s>5?"vec3 c5 = texture2D(albedo5, baseUv * vec2(tiling5)).rgb;":""} - - // Sample alpha masks for all layers (use R channel) - // Add +0.5 texel offset: Torque samples alpha at grid corners (integer indices), - // but GPU linear filtering samples at texel centers. This offset aligns them. - vec2 alphaUv = baseUv + vec2(0.5 / 256.0); - float a0 = texture2D(mask0, alphaUv).r; - ${s>1?"float a1 = texture2D(mask1, alphaUv).r;":""} - ${s>2?"float a2 = texture2D(mask2, alphaUv).r;":""} - ${s>3?"float a3 = texture2D(mask3, alphaUv).r;":""} - ${s>4?"float a4 = texture2D(mask4, alphaUv).r;":""} - ${s>5?"float a5 = texture2D(mask5, alphaUv).r;":""} - - // Torque-style additive weighted blending (blender.cc): - // result = tex0 * alpha0 + tex1 * alpha1 + tex2 * alpha2 + ... - // Each layer's alpha map defines its contribution weight. - vec3 blended = c0 * a0; - ${s>1?"blended += c1 * a1;":""} - ${s>2?"blended += c2 * a2;":""} - ${s>3?"blended += c3 * a3;":""} - ${s>4?"blended += c4 * a4;":""} - ${s>5?"blended += c5 * a5;":""} - - // Assign to diffuseColor before lighting - vec3 textureColor = blended; - - ${i?`// Detail texture blending (Torque-style multiplicative blend) - // Sample detail texture at high frequency tiling - vec3 detailColor = texture2D(detailTexture, baseUv * detailTiling).rgb; - - // Calculate distance-based fade factor using world positions - // Torque: distFactor = (zeroDetailDistance - distance) / zeroDetailDistance - float distToCamera = distance(vTerrainWorldPos, cameraPosition); - float detailFade = clamp(1.0 - distToCamera / detailFadeDistance, 0.0, 1.0); - - // Torque blending: dst * lerp(1.0, detailTexel, fadeFactor) - // Detail textures are authored with bright values (~0.8 mean), not 0.5 gray - // Direct multiplication adds subtle darkening for surface detail - textureColor *= mix(vec3(1.0), detailColor, detailFade);`:""} - - // Store blended texture in diffuseColor (still in linear space here) - // We'll convert to sRGB in the output calculation - diffuseColor.rgb = textureColor; -`),o&&(e.fragmentShader=e.fragmentShader.replace("#include ",`#include - -// Override RE_Direct to extract shadow factor for Torque-style gamma-space lighting -#undef RE_Direct -void RE_Direct_TerrainShadow( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { - // Torque lighting (terrLighting.cc): if light points up, terrain gets only ambient - // This prevents shadow acne from light hitting terrain backfaces - if (!sunLightPointsDown) { - terrainShadowFactor = 0.0; - return; - } - // directLight.color = sunColor * shadowFactor (shadow already applied by Three.js) - // Extract shadow factor by comparing to original sun color - #if ( NUM_DIR_LIGHTS > 0 ) - vec3 originalSunColor = directionalLights[0].color; - float sunMax = max(max(originalSunColor.r, originalSunColor.g), originalSunColor.b); - float shadowedMax = max(max(directLight.color.r, directLight.color.g), directLight.color.b); - terrainShadowFactor = clamp(shadowedMax / max(sunMax, 0.001), 0.0, 1.0); - #endif - // Don't add to reflectedLight - we'll compute lighting in gamma space at output -} -#define RE_Direct RE_Direct_TerrainShadow - -`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include -// Clear indirect diffuse - we'll compute ambient in gamma space -#if defined( RE_IndirectDiffuse ) - irradiance = vec3(0.0); -#endif -`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include - // Clear Three.js lighting - we compute everything in gamma space - reflectedLight.directDiffuse = vec3(0.0); - reflectedLight.indirectDiffuse = vec3(0.0); -`)),e.fragmentShader=e.fragmentShader.replace("#include ",`// Torque-style terrain lighting: output = clamp(lighting \xd7 texture, 0, 1) in sRGB space -{ - // Get texture in sRGB space (undo Three.js linear decode) - vec3 textureSRGB = terrainLinearToSRGB(diffuseColor.rgb); - - ${o?` - // Sample terrain lightmap for smooth NdotL - vec2 lightmapUv = vMapUv + vec2(0.5 / 512.0); - float lightmapNdotL = texture2D(terrainLightmap, lightmapUv).r; - - // Get sun and ambient colors from Three.js lights (these ARE sRGB values from mission file) - // Three.js interprets them as linear, but the numerical values are preserved - #if ( NUM_DIR_LIGHTS > 0 ) - vec3 sunColorSRGB = directionalLights[0].color; - #else - vec3 sunColorSRGB = vec3(0.7); - #endif - vec3 ambientColorSRGB = ambientLightColor; - - // Torque formula (terrLighting.cc:471-483): - // lighting = ambient + NdotL * shadowFactor * sunColor - // Clamp lighting to [0,1] before multiplying by texture - vec3 lightingSRGB = clamp(ambientColorSRGB + lightmapNdotL * terrainShadowFactor * sunColorSRGB, 0.0, 1.0); - `:` - // No lightmap - use simple ambient lighting - vec3 lightingSRGB = ambientLightColor; - `} - - // Torque formula: output = clamp(lighting \xd7 texture, 0, 1) in sRGB/gamma space - vec3 resultSRGB = clamp(lightingSRGB * textureSRGB, 0.0, 1.0); - - // Convert back to linear for Three.js output pipeline - outgoingLight = terrainSRGBToLinear(resultSRGB) + totalEmissiveRadiance; -} -#include `),e.fragmentShader=e.fragmentShader.replace("#include ",`#if DEBUG_MODE - // Debug mode: overlay green grid matching terrain grid squares (256x256) - float gridIntensity = terrainDebugGrid(vMapUv, 256.0, 1.5); - vec3 gridColor = vec3(0.0, 0.8, 0.4); // Green - gl_FragColor.rgb = mix(gl_FragColor.rgb, gridColor, gridIntensity * 0.1); -#endif - -#include `)}({shader:e,baseTextures:u,alphaTextures:i,visibilityMask:t,tiling:S,detailTexture:h?m:null,lightmap:l}),(0,F.injectCustomFog)(e,b.globalFogUniforms)},[u,i,t,m,h,l]),k=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=k.current;e&&(e.defines??={},e.defines.DEBUG_MODE=+!!d,e.needsUpdate=!0)},[d]);let w=`${h?"detail":"nodetail"}-${l?"lightmap":"nolightmap"}`;return(0,a.jsx)("meshLambertMaterial",{ref:k,map:e,depthWrite:!0,side:o.FrontSide,defines:{DEBUG_MODE:+!!d},onBeforeCompile:x},w)}function k(e){let t,i,o=(0,r.c)(8),{displacementMap:s,visibilityMask:l,textureNames:c,alphaTextures:d,detailTextureName:u,lightmap:h}=e;return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)("meshLambertMaterial",{color:"rgb(0, 109, 56)",wireframe:!0}),o[0]=t):t=o[0],o[1]!==d||o[2]!==u||o[3]!==s||o[4]!==h||o[5]!==c||o[6]!==l?(i=(0,a.jsx)(n.Suspense,{fallback:t,children:(0,a.jsx)(x,{displacementMap:s,visibilityMask:l,textureNames:c,alphaTextures:d,detailTextureName:u,lightmap:h})}),o[1]=d,o[2]=u,o[3]=s,o[4]=h,o[5]=c,o[6]=l,o[7]=i):i=o[7],i}let w=(0,n.memo)(function(e){let t,n,i,o=(0,r.c)(15),{tileX:s,tileZ:l,blockSize:c,basePosition:d,textureNames:u,geometry:h,displacementMap:m,visibilityMask:f,alphaTextures:g,detailTextureName:p,lightmap:y,visible:v}=e,F=void 0===v||v,b=c/2,S=d.x+s*c+b,x=d.z+l*c+b;o[0]!==S||o[1]!==x?(t=[S,0,x],o[0]=S,o[1]=x,o[2]=t):t=o[2];let w=t;return o[3]!==g||o[4]!==p||o[5]!==m||o[6]!==y||o[7]!==u||o[8]!==f?(n=(0,a.jsx)(k,{displacementMap:m,visibilityMask:f,textureNames:u,alphaTextures:g,detailTextureName:p,lightmap:y}),o[3]=g,o[4]=p,o[5]=m,o[6]=y,o[7]=u,o[8]=f,o[9]=n):n=o[9],o[10]!==h||o[11]!==w||o[12]!==n||o[13]!==F?(i=(0,a.jsx)("mesh",{position:w,geometry:h,castShadow:!0,receiveShadow:!0,visible:F,children:n}),o[10]=h,o[11]=w,o[12]=n,o[13]=F,o[14]=i):i=o[14],i});e.i(13876);var I=e.i(58647);function C(e){return(0,I.useRuntimeObjectByName)(e)}let P=null;function _(e){let t=new Uint8Array(65536);for(let a of(t.fill(255),e)){let e=255&a,r=a>>8&255,n=a>>16,i=256*r;for(let a=0;a0?n:(t[0]!==a?(e=(0,m.getFloat)(a,"visibleDistance")??600,t[0]=a,t[1]=e):e=t[1],e)}(),X=(0,h.useThree)(M),Z=-(128*W);V[6]!==Z?(d={x:Z,z:Z},V[6]=Z,V[7]=d):d=V[7];let J=d;if(V[8]!==q){let e=(0,m.getProperty)(q,"emptySquares");f=e?e.split(" ").map(T):[],V[8]=q,V[9]=f}else f=V[9];let Q=f,{data:ee}=((O=(0,r.c)(2))[0]!==H?(z={queryKey:["terrain",H],queryFn:()=>(0,c.loadTerrain)(H)},O[0]=H,O[1]=z):z=O[1],(0,s.useQuery)(z));e:{let e;if(!ee){g=null;break e}let t=256*W;V[10]!==t||V[11]!==W||V[12]!==ee.heightMap?(!function(e,t,a){let r=e.attributes.position,n=e.attributes.uv,i=e.attributes.normal,o=r.array,s=n.array,l=i.array,c=r.count,d=(e,a)=>(e=Math.max(0,Math.min(255,e)),t[256*(a=Math.max(0,Math.min(255,a)))+e]/65535*2048),u=(e,a)=>{let r=Math.floor(e=Math.max(0,Math.min(255,e))),n=Math.floor(a=Math.max(0,Math.min(255,a))),i=Math.min(r+1,255),o=Math.min(n+1,255),s=e-r,l=a-n;return(t[256*n+r]/65535*2048*(1-s)+t[256*n+i]/65535*2048*s)*(1-l)+(t[256*o+r]/65535*2048*(1-s)+t[256*o+i]/65535*2048*s)*l};for(let e=0;e0?(f/=y,g/=y,p/=y):(f=0,g=1,p=0),l[3*e]=f,l[3*e+1]=g,l[3*e+2]=p}r.needsUpdate=!0,i.needsUpdate=!0}(e=function(e,t){let a=new o.BufferGeometry,r=new Float32Array(198147),n=new Float32Array(198147),i=new Float32Array(132098),s=new Uint32Array(393216),l=0,c=e/256;for(let t=0;t<=256;t++)for(let a=0;a<=256;a++){let o=257*t+a;r[3*o]=a*c-e/2,r[3*o+1]=e/2-t*c,r[3*o+2]=0,n[3*o]=0,n[3*o+1]=0,n[3*o+2]=1,i[2*o]=a/256,i[2*o+1]=1-t/256}for(let e=0;e<256;e++)for(let t=0;t<256;t++){let a=257*e+t,r=a+1,n=(e+1)*257+t,i=n+1;((t^e)&1)==0?(s[l++]=a,s[l++]=n,s[l++]=i,s[l++]=a,s[l++]=i,s[l++]=r):(s[l++]=a,s[l++]=n,s[l++]=r,s[l++]=r,s[l++]=n,s[l++]=i)}return a.setIndex(new o.BufferAttribute(s,1)),a.setAttribute("position",new o.Float32BufferAttribute(r,3)),a.setAttribute("normal",new o.Float32BufferAttribute(n,3)),a.setAttribute("uv",new o.Float32BufferAttribute(i,2)),a.rotateX(-Math.PI/2),a.rotateY(-Math.PI/2),a}(t,0),ee.heightMap,W),V[10]=t,V[11]=W,V[12]=ee.heightMap,V[13]=e):e=V[13],g=e}let et=g;V[14]!==W||V[15]!==ee?(p=()=>{if(ee){var e;return e=ee.heightMap,P=(t,a)=>{let r=Math.max(0,Math.min(255,a/W+128)),n=Math.max(0,Math.min(255,t/W+128)),i=Math.floor(r),o=Math.floor(n),s=Math.min(i+1,255),l=Math.min(o+1,255),c=r-i,d=n-o;return((e[256*o+i]*(1-c)+e[256*o+s]*c)*(1-d)+(e[256*l+i]*(1-c)+e[256*l+s]*c)*d)/65535*2048},E}},y=[ee,W],V[14]=W,V[15]=ee,V[16]=p,V[17]=y):(p=V[16],y=V[17]),(0,n.useEffect)(p,y);let ea=C("Sun");t:{let e,t;if(!ea){let e;V[18]===Symbol.for("react.memo_cache_sentinel")?(e=new o.Vector3(.57735,-.57735,.57735),V[18]=e):e=V[18],v=e;break t}V[19]!==ea?(e=((0,m.getProperty)(ea,"direction")??"0.57735 0.57735 -0.57735").split(" ").map(B),V[19]=ea,V[20]=e):e=V[20];let[a,r,n]=e,i=Math.sqrt(a*a+n*n+r*r),s=a/i,l=n/i,c=r/i;V[21]!==s||V[22]!==l||V[23]!==c?(t=new o.Vector3(s,l,c),V[21]=s,V[22]=l,V[23]=c,V[24]=t):t=V[24],v=t}let er=v;a:{let e;if(!ee){F=null;break a}V[25]!==W||V[26]!==er||V[27]!==ee.heightMap?(e=function(e,t,a){let r=(t,a)=>{let r=Math.max(0,Math.min(255,t)),n=Math.max(0,Math.min(255,a)),i=Math.floor(r),o=Math.floor(n),s=Math.min(i+1,255),l=Math.min(o+1,255),c=r-i,d=n-o;return((e[256*o+i]/65535*(1-c)+e[256*o+s]/65535*c)*(1-d)+(e[256*l+i]/65535*(1-c)+e[256*l+s]/65535*c)*d)*2048},n=new o.Vector3(-t.x,-t.y,-t.z).normalize(),i=new Uint8Array(262144);for(let e=0;e<512;e++)for(let t=0;t<512;t++){let o=t/2+.25,s=e/2+.25,l=r(o,s),c=r(o-.5,s),d=r(o+.5,s),u=r(o,s-.5),h=-((r(o,s+.5)-u)/1),m=-((d-c)/1),f=Math.sqrt(h*h+a*a+m*m),g=Math.max(0,h/f*n.x+a/f*n.y+m/f*n.z),p=1;g>0&&(p=function(e,t,a,r,n,i){let o=r.z/n,s=r.x/n,l=r.y,c=Math.sqrt(o*o+s*s);if(c<1e-4)return 1;let d=.5/c,u=o*d,h=s*d,m=l*d,f=e,g=t,p=a+.1;for(let e=0;e<768&&(f+=u,g+=h,p+=m,!(f<0)&&!(f>=256)&&!(g<0)&&!(g>=256)&&!(p>2048));e++)if(pArray(ed).fill(null),V[38]=ed,V[39]=D):D=V[39];let[eh,em]=(0,n.useState)(D);V[40]===Symbol.for("react.memo_cache_sentinel")?(N={xStart:0,xEnd:0,zStart:0,zEnd:0},V[40]=N):N=V[40];let ef=(0,n.useRef)(N);return(V[41]!==J.x||V[42]!==J.z||V[43]!==Y||V[44]!==X.position.x||V[45]!==X.position.z||V[46]!==ed||V[47]!==K?(A=()=>{let e=X.position.x-J.x,t=X.position.z-J.z,a=Math.floor((e-K)/Y),r=Math.ceil((e+K)/Y),n=Math.floor((t-K)/Y),i=Math.ceil((t+K)/Y),o=ef.current;if(a===o.xStart&&r===o.xEnd&&n===o.zStart&&i===o.zEnd)return;o.xStart=a,o.xEnd=r,o.zStart=n,o.zEnd=i;let s=[];for(let e=a;e{let t=eh[e];return(0,a.jsx)(w,{tileX:t?.tileX??0,tileZ:t?.tileZ??0,blockSize:Y,basePosition:J,textureNames:ee.textureNames,geometry:et,displacementMap:ei,visibilityMask:es,alphaTextures:el,detailTextureName:$,lightmap:en,visible:null!==t},e)}),V[59]=J,V[60]=Y,V[61]=$,V[62]=eu,V[63]=el,V[64]=ei,V[65]=et,V[66]=ee.textureNames,V[67]=en,V[68]=eh,V[69]=U):U=V[69],V[70]!==G||V[71]!==U?(L=(0,a.jsxs)(a.Fragment,{children:[G,U]}),V[70]=G,V[71]=U,V[72]=L):L=V[72],L):null});function M(e){return e.camera}function T(e){return parseInt(e,10)}function E(){P=null}function B(e){return parseFloat(e)}function j(e){return(0,f.setupMask)(e)}function R(e,t){return t}let N=(0,n.createContext)(null);function A(){return(0,n.useContext)(N)}function G(e){return(0,a.jsx)(eM,{objectId:e},e)}var U=e.i(8597),L=e.i(78140),z=e.i(89887);let O=` -vec3 interiorLinearToSRGB(vec3 linear) { - vec3 higher = pow(linear, vec3(1.0/2.4)) * 1.055 - 0.055; - vec3 lower = linear * 12.92; - return mix(lower, higher, step(vec3(0.0031308), linear)); -} - -vec3 interiorSRGBToLinear(vec3 srgb) { - vec3 higher = pow((srgb + 0.055) / 1.055, vec3(2.4)); - vec3 lower = srgb / 12.92; - return mix(lower, higher, step(vec3(0.04045), srgb)); -} - -// Debug grid overlay function using screen-space derivatives for sharp, anti-aliased lines -// Returns 1.0 on grid lines, 0.0 elsewhere -float debugGrid(vec2 uv, float gridSize, float lineWidth) { - vec2 scaledUV = uv * gridSize; - vec2 grid = abs(fract(scaledUV - 0.5) - 0.5) / fwidth(scaledUV); - float line = min(grid.x, grid.y); - return 1.0 - min(line / lineWidth, 1.0); -} -`;function V({materialName:e,material:t,lightMap:r}){let i=(0,v.useDebug)(),s=i?.debugMode??!1,l=(0,c.textureToUrl)(e),d=(0,g.useTexture)(l,e=>(0,f.setupTexture)(e)),u=new Set(t?.userData?.flag_names??[]).has("SelfIlluminating"),h=new Set(t?.userData?.surface_flag_names??[]).has("SurfaceOutsideVisible"),m=(0,n.useCallback)(e=>{let t;(0,F.injectCustomFog)(e,b.globalFogUniforms),t=h??!1,e.uniforms.useSceneLighting={value:t},e.uniforms.interiorDebugColor={value:t?new o.Vector3(0,.4,1):new o.Vector3(1,.2,0)},e.fragmentShader=e.fragmentShader.replace("#include ",`#include -${O} -uniform bool useSceneLighting; -uniform vec3 interiorDebugColor; -`),e.fragmentShader=e.fragmentShader.replace("#include ",`// Lightmap handled in custom output calculation -#ifdef USE_LIGHTMAP - vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); -#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",`// Torque-style lighting: output = clamp(lighting \xd7 texture, 0, 1) in sRGB space -// Get texture in sRGB space (undo Three.js linear decode) -vec3 textureSRGB = interiorLinearToSRGB(diffuseColor.rgb); - -// Compute lighting in sRGB space -vec3 lightingSRGB = vec3(0.0); - -if (useSceneLighting) { - // Three.js computed: reflectedLight = lighting \xd7 texture_linear / PI - // Extract pure lighting: lighting = reflectedLight \xd7 PI / texture_linear - vec3 totalLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; - vec3 safeTexLinear = max(diffuseColor.rgb, vec3(0.001)); - vec3 extractedLighting = totalLight * PI / safeTexLinear; - // NOTE: extractedLighting is ALREADY sRGB values because mission sun/ambient colors - // are sRGB values (Torque used them directly in gamma space). Three.js treats them - // as linear but the numerical values are the same. DO NOT convert to sRGB here! - // IMPORTANT: Torque clamps scene lighting to [0,1] BEFORE adding to lightmap - // (sceneLighting.cc line 1785: tmp.clamp()) - lightingSRGB = clamp(extractedLighting, 0.0, 1.0); -} - -// Add lightmap contribution (for BOTH outside and inside surfaces) -// In Torque, scene lighting is ADDED to lightmaps for outside surfaces at mission load -// (stored in .ml files). Inside surfaces only have base lightmap. Both need lightmap here. -#ifdef USE_LIGHTMAP - // Lightmap is stored as linear in Three.js (decoded from sRGB texture), convert back - lightingSRGB += interiorLinearToSRGB(lightMapTexel.rgb); -#endif -// Torque clamps the sum to [0,1] per channel (sceneLighting.cc lines 1817-1827) -lightingSRGB = clamp(lightingSRGB, 0.0, 1.0); - -// Torque formula: output = clamp(lighting \xd7 texture, 0, 1) in sRGB/gamma space -vec3 resultSRGB = clamp(lightingSRGB * textureSRGB, 0.0, 1.0); - -// Convert back to linear for Three.js output pipeline -vec3 resultLinear = interiorSRGBToLinear(resultSRGB); - -// Reassign outgoingLight before opaque_fragment consumes it -outgoingLight = resultLinear + totalEmissiveRadiance; - -#include `),e.fragmentShader=e.fragmentShader.replace("#include ",`// Debug mode: overlay colored grid on top of normal rendering -// Blue grid = SurfaceOutsideVisible (receives scene ambient light) -// Red grid = inside surface (no scene ambient light) -#if DEBUG_MODE && defined(USE_MAP) - // gridSize=4 creates 4x4 grid per UV tile, lineWidth=1.5 is ~1.5 pixels wide - float gridIntensity = debugGrid(vMapUv, 4.0, 1.5); - gl_FragColor.rgb = mix(gl_FragColor.rgb, interiorDebugColor, gridIntensity * 0.1); -#endif - -#include `)},[h]),p=(0,n.useRef)(null),y=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=p.current??y.current;e&&(e.defines??={},e.defines.DEBUG_MODE=+!!s,e.needsUpdate=!0)},[s]);let S={DEBUG_MODE:+!!s},x=`${h}`;return u?(0,a.jsx)("meshBasicMaterial",{ref:p,map:d,toneMapped:!1,defines:S,onBeforeCompile:m},x):(0,a.jsx)("meshLambertMaterial",{ref:y,map:d,lightMap:r,toneMapped:!1,defines:S,onBeforeCompile:m},x)}function q(e){if(!e)return null;let t=e.emissiveMap;return t&&(t.colorSpace=o.SRGBColorSpace),t??null}function H(e){let t,i,o,s=(0,r.c)(13),{node:l}=e;e:{let e,a;if(!l.material){let e;s[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],s[0]=e):e=s[0],t=e;break e}if(Array.isArray(l.material)){let e;s[1]!==l.material?(e=l.material.map(W),s[1]=l.material,s[2]=e):e=s[2],t=e;break e}s[3]!==l.material?(e=q(l.material),s[3]=l.material,s[4]=e):e=s[4],s[5]!==e?(a=[e],s[5]=e,s[6]=a):a=s[6],t=a}let c=t;return s[7]!==c||s[8]!==l.material?(i=l.material?(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)("meshStandardMaterial",{color:"yellow",wireframe:!0}),children:Array.isArray(l.material)?l.material.map((e,t)=>(0,a.jsx)(V,{materialName:e.userData.resource_path,material:e,lightMap:c[t]},t)):(0,a.jsx)(V,{materialName:l.material.userData.resource_path,material:l.material,lightMap:c[0]})}):null,s[7]=c,s[8]=l.material,s[9]=i):i=s[9],s[10]!==l.geometry||s[11]!==i?(o=(0,a.jsx)("mesh",{geometry:l.geometry,castShadow:!0,receiveShadow:!0,children:i}),s[10]=l.geometry,s[11]=i,s[12]=o):o=s[12],o}function W(e){return q(e)}let $=(0,n.memo)(function(e){let t,n,i,o,s,l,d,u=(0,r.c)(10),{object:h,interiorFile:m}=e,{nodes:f}=((l=(0,r.c)(2))[0]!==m?(s=(0,c.interiorToUrl)(m),l[0]=m,l[1]=s):s=l[1],d=s,(0,L.useGLTF)(d)),g=(0,v.useDebug)(),p=g?.debugMode??!1;return u[0]===Symbol.for("react.memo_cache_sentinel")?(t=[0,-Math.PI/2,0],u[0]=t):t=u[0],u[1]!==f?(n=Object.entries(f).filter(Z).map(J),u[1]=f,u[2]=n):n=u[2],u[3]!==p||u[4]!==m||u[5]!==h?(i=p?(0,a.jsxs)(z.FloatingLabel,{children:[h._id,": ",m]}):null,u[3]=p,u[4]=m,u[5]=h,u[6]=i):i=u[6],u[7]!==n||u[8]!==i?(o=(0,a.jsxs)("group",{rotation:t,children:[n,i]}),u[7]=n,u[8]=i,u[9]=o):o=u[9],o});function Y(e){let t,n,i,o,s=(0,r.c)(9),{color:l,label:c}=e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)("boxGeometry",{args:[10,10,10]}),s[0]=t):t=s[0],s[1]!==l?(n=(0,a.jsx)("meshStandardMaterial",{color:l,wireframe:!0}),s[1]=l,s[2]=n):n=s[2],s[3]!==l||s[4]!==c?(i=c?(0,a.jsx)(z.FloatingLabel,{color:l,children:c}):null,s[3]=l,s[4]=c,s[5]=i):i=s[5],s[6]!==n||s[7]!==i?(o=(0,a.jsxs)("mesh",{children:[t,n,i]}),s[6]=n,s[7]=i,s[8]=o):o=s[8],o}function K(e){let t,n=(0,r.c)(3),{label:i}=e,o=(0,v.useDebug)(),s=o?.debugMode??!1;return n[0]!==s||n[1]!==i?(t=s?(0,a.jsx)(Y,{color:"red",label:i}):null,n[0]=s,n[1]=i,n[2]=t):t=n[2],t}let X=(0,n.memo)(function(e){let t,i,o,s,l,c,d,u,h,f=(0,r.c)(22),{object:g}=e;f[0]!==g?(t=(0,m.getProperty)(g,"interiorFile"),f[0]=g,f[1]=t):t=f[1];let p=t;f[2]!==g?(i=(0,m.getPosition)(g),f[2]=g,f[3]=i):i=f[3];let y=i;f[4]!==g?(o=(0,m.getScale)(g),f[4]=g,f[5]=o):o=f[5];let v=o;f[6]!==g?(s=(0,m.getRotation)(g),f[6]=g,f[7]=s):s=f[7];let F=s,b=`${g._id}: ${p}`;return f[8]!==b?(l=(0,a.jsx)(K,{label:b}),f[8]=b,f[9]=l):l=f[9],f[10]===Symbol.for("react.memo_cache_sentinel")?(c=(0,a.jsx)(Y,{color:"orange"}),f[10]=c):c=f[10],f[11]!==p||f[12]!==g?(d=(0,a.jsx)(n.Suspense,{fallback:c,children:(0,a.jsx)($,{object:g,interiorFile:p})}),f[11]=p,f[12]=g,f[13]=d):d=f[13],f[14]!==l||f[15]!==d?(u=(0,a.jsx)(U.ErrorBoundary,{fallback:l,children:d}),f[14]=l,f[15]=d,f[16]=u):u=f[16],f[17]!==y||f[18]!==F||f[19]!==v||f[20]!==u?(h=(0,a.jsx)("group",{position:y,quaternion:F,scale:v,children:u}),f[17]=y,f[18]=F,f[19]=v,f[20]=u,f[21]=h):h=f[21],h});function Z(e){let[,t]=e;return t.isMesh}function J(e){let[t,r]=e;return(0,a.jsx)(H,{node:r},t)}var Q=e.i(99143);function ee(e,{path:t}){let[a]=(0,Q.useLoader)(o.CubeTextureLoader,[e],e=>e.setPath(t));return a}ee.preload=(e,{path:t})=>Q.useLoader.preload(o.CubeTextureLoader,[e],e=>e.setPath(t));let et=()=>{};function ea(e){return e.wrapS=o.RepeatWrapping,e.wrapT=o.RepeatWrapping,e.minFilter=o.LinearFilter,e.magFilter=o.LinearFilter,e.colorSpace=o.NoColorSpace,e.needsUpdate=!0,e}let er=` - attribute float alpha; - - uniform vec2 uvOffset; - - varying vec2 vUv; - varying float vAlpha; - - void main() { - // Apply UV offset for scrolling - vUv = uv + uvOffset; - vAlpha = alpha; - - vec4 pos = projectionMatrix * modelViewMatrix * vec4(position, 1.0); - // Set depth to far plane so clouds are always visible and behind other geometry - gl_Position = pos.xyww; - } -`,en=` - uniform sampler2D cloudTexture; - uniform float debugMode; - uniform int layerIndex; - - varying vec2 vUv; - varying float vAlpha; - - // Debug grid using screen-space derivatives for sharp, anti-aliased lines - float debugGrid(vec2 uv, float gridSize, float lineWidth) { - vec2 scaledUV = uv * gridSize; - vec2 grid = abs(fract(scaledUV - 0.5) - 0.5) / fwidth(scaledUV); - float line = min(grid.x, grid.y); - return 1.0 - min(line / lineWidth, 1.0); - } - - void main() { - vec4 texColor = texture2D(cloudTexture, vUv); - - // Tribes 2 uses GL_MODULATE: final = texture \xd7 vertex color - // Vertex color is white with varying alpha, so: - // Final RGB = Texture RGB \xd7 1.0 = Texture RGB - // Final Alpha = Texture Alpha \xd7 Vertex Alpha - float finalAlpha = texColor.a * vAlpha; - vec3 color = texColor.rgb; - - // Debug mode: overlay R/G/B grid for layers 0/1/2 - if (debugMode > 0.5) { - float gridIntensity = debugGrid(vUv, 4.0, 1.5); - vec3 gridColor; - if (layerIndex == 0) { - gridColor = vec3(1.0, 0.0, 0.0); // Red - } else if (layerIndex == 1) { - gridColor = vec3(0.0, 1.0, 0.0); // Green - } else { - gridColor = vec3(0.0, 0.0, 1.0); // Blue - } - color = mix(color, gridColor, gridIntensity * 0.5); - } - - // Output clouds with texture color and combined alpha - gl_FragColor = vec4(color, finalAlpha); - } -`;function ei({textureUrl:e,radius:t,heightPercent:r,speed:i,windDirection:s,layerIndex:l}){let{debugMode:c}=(0,v.useDebug)(),{animationEnabled:d}=(0,v.useSettings)(),h=(0,n.useRef)(null),m=(0,g.useTexture)(e,ea),f=(0,n.useMemo)(()=>{let e=r-.05;return function(e,t,a,r){var n;let i,s,l,c,d,u,h,m,f,g,p,y,v,F,b,S,x,k=new o.BufferGeometry,w=new Float32Array(75),I=new Float32Array(50),C=[.05,.05,.05,.05,.05,.05,a,a,a,.05,.05,a,t,a,.05,.05,a,a,a,.05,.05,.05,.05,.05,.05],P=2*e/4;for(let t=0;t<5;t++)for(let a=0;a<5;a++){let r=5*t+a,n=-e+a*P,i=e-t*P,o=e*C[r];w[3*r]=n,w[3*r+1]=o,w[3*r+2]=i,I[2*r]=a,I[2*r+1]=t}n=w,i=e=>({x:n[3*e],y:n[3*e+1],z:n[3*e+2]}),s=(e,t,a,r)=>{n[3*e]=t,n[3*e+1]=a,n[3*e+2]=r},l=i(1),c=i(3),d=i(5),u=i(6),h=i(8),m=i(9),f=i(15),g=i(16),p=i(18),y=i(19),v=i(21),F=i(23),b=d.x+(l.x-d.x)*.5,S=d.y+(l.y-d.y)*.5,x=d.z+(l.z-d.z)*.5,s(0,u.x+(b-u.x)*2,u.y+(S-u.y)*2,u.z+(x-u.z)*2),b=m.x+(c.x-m.x)*.5,S=m.y+(c.y-m.y)*.5,x=m.z+(c.z-m.z)*.5,s(4,h.x+(b-h.x)*2,h.y+(S-h.y)*2,h.z+(x-h.z)*2),b=v.x+(f.x-v.x)*.5,S=v.y+(f.y-v.y)*.5,x=v.z+(f.z-v.z)*.5,s(20,g.x+(b-g.x)*2,g.y+(S-g.y)*2,g.z+(x-g.z)*2),b=F.x+(y.x-F.x)*.5,S=F.y+(y.y-F.y)*.5,x=F.z+(y.z-F.z)*.5,s(24,p.x+(b-p.x)*2,p.y+(S-p.y)*2,p.z+(x-p.z)*2);let _=function(e,t){let a=new Float32Array(25);for(let r=0;r<25;r++){let n=e[3*r],i=e[3*r+2],o=1.3-Math.sqrt(n*n+i*i)/t;o<.4?o=0:o>.8&&(o=1),a[r]=o}return a}(w,e),D=[];for(let e=0;e<4;e++)for(let t=0;t<4;t++){let a=5*e+t,r=a+1,n=a+5,i=n+1;D.push(a,n,i),D.push(a,i,r)}return k.setIndex(D),k.setAttribute("position",new o.Float32BufferAttribute(w,3)),k.setAttribute("uv",new o.Float32BufferAttribute(I,2)),k.setAttribute("alpha",new o.Float32BufferAttribute(_,1)),k.computeBoundingSphere(),k}(t,r,e,0)},[t,r]);(0,n.useEffect)(()=>()=>{f.dispose()},[f]);let p=(0,n.useMemo)(()=>new o.ShaderMaterial({uniforms:{cloudTexture:{value:m},uvOffset:{value:new o.Vector2(0,0)},debugMode:{value:+!!c},layerIndex:{value:l}},vertexShader:er,fragmentShader:en,transparent:!0,depthWrite:!1,side:o.DoubleSide}),[m,c,l]);return(0,n.useEffect)(()=>()=>{p.dispose()},[p]),(0,u.useFrame)(d?(e,t)=>{let a=1e3*t/32;h.current??=new o.Vector2(0,0),h.current.x+=s.x*i*a,h.current.y+=s.y*i*a,h.current.x-=Math.floor(h.current.x),h.current.y-=Math.floor(h.current.y),p.uniforms.uvOffset.value.copy(h.current)}:et),(0,a.jsx)("mesh",{geometry:f,frustumCulled:!1,renderOrder:10,children:(0,a.jsx)("primitive",{object:p,attach:"material"})})}function eo(e){var t;let i,l,d,h,f,g,p,y,v,F,b,S,x,k,w,I,C,P,_,D=(0,r.c)(37),{object:M}=e;D[0]!==M?(i=(0,m.getProperty)(M,"materialList"),D[0]=M,D[1]=i):i=D[1];let{data:T}=(t=i,(P=(0,r.c)(7))[0]!==t?(w=["detailMapList",t],I=()=>(0,c.loadDetailMapList)(t),P[0]=t,P[1]=w,P[2]=I):(w=P[1],I=P[2]),_=!!t,P[3]!==w||P[4]!==I||P[5]!==_?(C={queryKey:w,queryFn:I,enabled:_},P[3]=w,P[4]=I,P[5]=_,P[6]=C):C=P[6],(0,s.useQuery)(C));D[2]!==M?(l=(0,m.getFloat)(M,"visibleDistance")??500,D[2]=M,D[3]=l):l=D[3];let E=.95*l;D[4]!==M?(d=(0,m.getFloat)(M,"cloudSpeed1")??1e-4,D[4]=M,D[5]=d):d=D[5],D[6]!==M?(h=(0,m.getFloat)(M,"cloudSpeed2")??2e-4,D[6]=M,D[7]=h):h=D[7],D[8]!==M?(f=(0,m.getFloat)(M,"cloudSpeed3")??3e-4,D[8]=M,D[9]=f):f=D[9],D[10]!==d||D[11]!==h||D[12]!==f?(g=[d,h,f],D[10]=d,D[11]=h,D[12]=f,D[13]=g):g=D[13];let B=g;D[14]!==M?(p=(0,m.getFloat)(M,"cloudHeightPer1")??.35,D[14]=M,D[15]=p):p=D[15],D[16]!==M?(y=(0,m.getFloat)(M,"cloudHeightPer2")??.25,D[16]=M,D[17]=y):y=D[17],D[18]!==M?(v=(0,m.getFloat)(M,"cloudHeightPer3")??.2,D[18]=M,D[19]=v):v=D[19],D[20]!==p||D[21]!==y||D[22]!==v?(F=[p,y,v],D[20]=p,D[21]=y,D[22]=v,D[23]=F):F=D[23];let j=F;if(D[24]!==M){e:{let e,t=(0,m.getProperty)(M,"windVelocity");if(t){let[e,a]=t.split(" ").map(es);if(0!==e||0!==a){b=new o.Vector2(a,-e).normalize();break e}}D[26]===Symbol.for("react.memo_cache_sentinel")?(e=new o.Vector2(1,0),D[26]=e):e=D[26],b=e}D[24]=M,D[25]=b}else b=D[25];let R=b;t:{let e;if(!T){let e;D[27]===Symbol.for("react.memo_cache_sentinel")?(e=[],D[27]=e):e=D[27],S=e;break t}if(D[28]!==j||D[29]!==B||D[30]!==T){e=[];for(let t=0;t<3;t++){let a=T[7+t];a&&e.push({texture:a,height:j[t],speed:B[t]})}D[28]=j,D[29]=B,D[30]=T,D[31]=e}else e=D[31];S=e}let N=S,A=(0,n.useRef)(null);return(D[32]===Symbol.for("react.memo_cache_sentinel")?(x=e=>{let{camera:t}=e;A.current&&A.current.position.copy(t.position)},D[32]=x):x=D[32],(0,u.useFrame)(x),N&&0!==N.length)?(D[33]!==N||D[34]!==E||D[35]!==R?(k=(0,a.jsx)("group",{ref:A,children:N.map((e,t)=>{let r=(0,c.textureToUrl)(e.texture);return(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(ei,{textureUrl:r,radius:E,heightPercent:e.height,speed:e.speed,windDirection:R,layerIndex:t})},t)})}),D[33]=N,D[34]=E,D[35]=R,D[36]=k):k=D[36],k):null}function es(e){return parseFloat(e)}let el=!1;function ec(e){if(!e)return;let[t,a,r]=e.split(" ").map(e=>parseFloat(e));return[new o.Color().setRGB(t,a,r),new o.Color().setRGB(t,a,r).convertSRGBToLinear()]}function ed({skyBoxFiles:e,fogColor:t,fogState:r}){let{camera:i}=(0,h.useThree)(),s=ee(e,{path:""}),l=!!t,c=(0,n.useMemo)(()=>i.projectionMatrixInverse,[i]),d=(0,n.useMemo)(()=>r?(0,b.packFogVolumeData)(r.fogVolumes):new Float32Array(12),[r]),u=(0,n.useRef)({skybox:{value:s},fogColor:{value:t??new o.Color(0,0,0)},enableFog:{value:l},inverseProjectionMatrix:{value:c},cameraMatrixWorld:{value:i.matrixWorld},cameraHeight:b.globalFogUniforms.cameraHeight,fogVolumeData:{value:d},horizonFogHeight:{value:.18}}),m=(0,n.useMemo)(()=>{if(!r)return .18;let e=.95*r.visibleDistance/Math.sqrt(3);return 60/Math.sqrt(e*e+3600)},[r]);return(0,n.useEffect)(()=>{u.current.skybox.value=s,u.current.fogColor.value=t??new o.Color(0,0,0),u.current.enableFog.value=l,u.current.fogVolumeData.value=d,u.current.horizonFogHeight.value=m},[s,t,l,d,m]),(0,a.jsxs)("mesh",{renderOrder:-1e3,frustumCulled:!1,children:[(0,a.jsxs)("bufferGeometry",{children:[(0,a.jsx)("bufferAttribute",{attach:"attributes-position",array:new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),count:3,itemSize:3}),(0,a.jsx)("bufferAttribute",{attach:"attributes-uv",array:new Float32Array([0,0,2,0,0,2]),count:3,itemSize:2})]}),(0,a.jsx)("shaderMaterial",{uniforms:u.current,vertexShader:` - varying vec2 vUv; - - void main() { - vUv = uv; - gl_Position = vec4(position.xy, 0.9999, 1.0); - } - `,fragmentShader:` - uniform samplerCube skybox; - uniform vec3 fogColor; - uniform bool enableFog; - uniform mat4 inverseProjectionMatrix; - uniform mat4 cameraMatrixWorld; - uniform float cameraHeight; - uniform float fogVolumeData[12]; - uniform float horizonFogHeight; - - varying vec2 vUv; - - // Convert linear to sRGB for display - // shaderMaterial does NOT get automatic linear->sRGB output conversion - // Use proper sRGB transfer function (not simplified gamma 2.2) to match Three.js - vec3 linearToSRGB(vec3 linear) { - vec3 low = linear * 12.92; - vec3 high = 1.055 * pow(linear, vec3(1.0 / 2.4)) - 0.055; - return mix(low, high, step(vec3(0.0031308), linear)); - } - - void main() { - vec2 ndc = vUv * 2.0 - 1.0; - vec4 viewPos = inverseProjectionMatrix * vec4(ndc, 1.0, 1.0); - viewPos.xyz /= viewPos.w; - vec3 direction = normalize((cameraMatrixWorld * vec4(viewPos.xyz, 0.0)).xyz); - direction = vec3(direction.z, direction.y, -direction.x); - // Sample skybox - Three.js CubeTexture with SRGBColorSpace auto-converts to linear - vec4 skyColor = textureCube(skybox, direction); - vec3 finalColor; - - if (enableFog) { - vec3 effectiveFogColor = fogColor; - - // Calculate how much fog volume the ray passes through - // For skybox at "infinite" distance, the relevant height is how much - // of the volume is above/below camera depending on view direction - float volumeFogInfluence = 0.0; - - for (int i = 0; i < 3; i++) { - int offset = i * 4; - float volVisDist = fogVolumeData[offset + 0]; - float volMinH = fogVolumeData[offset + 1]; - float volMaxH = fogVolumeData[offset + 2]; - float volPct = fogVolumeData[offset + 3]; - - if (volVisDist <= 0.0) continue; - - // Check if camera is inside this volume - if (cameraHeight >= volMinH && cameraHeight <= volMaxH) { - // Camera is inside the fog volume - // Looking horizontally or up at shallow angles means ray travels - // through more fog before exiting the volume - float heightAboveCamera = volMaxH - cameraHeight; - float heightBelowCamera = cameraHeight - volMinH; - float volumeHeight = volMaxH - volMinH; - - // For horizontal rays (direction.y ≈ 0), maximum fog influence - // For rays going up steeply, less fog (exits volume quickly) - // For rays going down, more fog (travels through volume below) - float rayInfluence; - if (direction.y >= 0.0) { - // Looking up: influence based on how steep we're looking - // Shallow angles = long path through fog = high influence - rayInfluence = 1.0 - smoothstep(0.0, 0.3, direction.y); - } else { - // Looking down: always high fog (into the volume) - rayInfluence = 1.0; - } - - // Scale by percentage and volume depth factor - volumeFogInfluence += rayInfluence * volPct; - } - } - - // Base fog factor from view direction (for haze at horizon) - // In Torque, the fog "bans" (bands) are rendered as geometry from - // height 0 (HORIZON) to height 60 (OFFSET_HEIGHT) on the skybox. - // The skybox corner is at mSkyBoxPt.x = mRadius / sqrt(3). - // - // horizonFogHeight is the direction.y value where the fog band ends: - // horizonFogHeight = 60 / sqrt(skyBoxPt.x^2 + 60^2) - // - // For Firestorm (visDist=600): mRadius=570, skyBoxPt.x=329, horizonFogHeight≈0.18 - // - // Torque renders the fog bands as geometry with linear vertex alpha - // interpolation. We use a squared curve (t^2) to create a gentler - // falloff at the top of the gradient, matching Tribes 2's appearance. - float baseFogFactor; - if (direction.y <= 0.0) { - // Looking at or below horizon: full fog - baseFogFactor = 1.0; - } else if (direction.y >= horizonFogHeight) { - // Above fog band: no fog - baseFogFactor = 0.0; - } else { - // Within fog band: squared curve for gentler falloff at top - float t = direction.y / horizonFogHeight; - baseFogFactor = (1.0 - t) * (1.0 - t); - } - - // Combine base fog with volume fog influence - // When inside a volume, increase fog intensity - float finalFogFactor = min(1.0, baseFogFactor + volumeFogInfluence * 0.5); - - finalColor = mix(skyColor.rgb, effectiveFogColor, finalFogFactor); - } else { - finalColor = skyColor.rgb; - } - // Convert linear result to sRGB for display - gl_FragColor = vec4(linearToSRGB(finalColor), 1.0); - } - `,depthWrite:!1,depthTest:!1})]})}function eu(e){let t,n,i,o,l=(0,r.c)(6),{materialList:d,fogColor:u,fogState:h}=e,{data:m}=((o=(0,r.c)(2))[0]!==d?(i={queryKey:["detailMapList",d],queryFn:()=>(0,c.loadDetailMapList)(d)},o[0]=d,o[1]=i):i=o[1],(0,s.useQuery)(i));l[0]!==m?(t=m?[(0,c.textureToUrl)(m[1]),(0,c.textureToUrl)(m[3]),(0,c.textureToUrl)(m[4]),(0,c.textureToUrl)(m[5]),(0,c.textureToUrl)(m[0]),(0,c.textureToUrl)(m[2])]:null,l[0]=m,l[1]=t):t=l[1];let f=t;return f?(l[2]!==u||l[3]!==h||l[4]!==f?(n=(0,a.jsx)(ed,{skyBoxFiles:f,fogColor:u,fogState:h}),l[2]=u,l[3]=h,l[4]=f,l[5]=n):n=l[5],n):null}function eh({skyColor:e,fogColor:t,fogState:r}){let{camera:i}=(0,h.useThree)(),s=!!t,l=(0,n.useMemo)(()=>i.projectionMatrixInverse,[i]),c=(0,n.useMemo)(()=>r?(0,b.packFogVolumeData)(r.fogVolumes):new Float32Array(12),[r]),d=(0,n.useMemo)(()=>{if(!r)return .18;let e=.95*r.visibleDistance/Math.sqrt(3);return 60/Math.sqrt(e*e+3600)},[r]),u=(0,n.useRef)({skyColor:{value:e},fogColor:{value:t??new o.Color(0,0,0)},enableFog:{value:s},inverseProjectionMatrix:{value:l},cameraMatrixWorld:{value:i.matrixWorld},cameraHeight:b.globalFogUniforms.cameraHeight,fogVolumeData:{value:c},horizonFogHeight:{value:d}});return(0,n.useEffect)(()=>{u.current.skyColor.value=e,u.current.fogColor.value=t??new o.Color(0,0,0),u.current.enableFog.value=s,u.current.fogVolumeData.value=c,u.current.horizonFogHeight.value=d},[e,t,s,c,d]),(0,a.jsxs)("mesh",{renderOrder:-1e3,frustumCulled:!1,children:[(0,a.jsxs)("bufferGeometry",{children:[(0,a.jsx)("bufferAttribute",{attach:"attributes-position",array:new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),count:3,itemSize:3}),(0,a.jsx)("bufferAttribute",{attach:"attributes-uv",array:new Float32Array([0,0,2,0,0,2]),count:3,itemSize:2})]}),(0,a.jsx)("shaderMaterial",{uniforms:u.current,vertexShader:` - varying vec2 vUv; - - void main() { - vUv = uv; - gl_Position = vec4(position.xy, 0.9999, 1.0); - } - `,fragmentShader:` - uniform vec3 skyColor; - uniform vec3 fogColor; - uniform bool enableFog; - uniform mat4 inverseProjectionMatrix; - uniform mat4 cameraMatrixWorld; - uniform float cameraHeight; - uniform float fogVolumeData[12]; - uniform float horizonFogHeight; - - varying vec2 vUv; - - // Convert linear to sRGB for display - vec3 linearToSRGB(vec3 linear) { - vec3 low = linear * 12.92; - vec3 high = 1.055 * pow(linear, vec3(1.0 / 2.4)) - 0.055; - return mix(low, high, step(vec3(0.0031308), linear)); - } - - void main() { - vec2 ndc = vUv * 2.0 - 1.0; - vec4 viewPos = inverseProjectionMatrix * vec4(ndc, 1.0, 1.0); - viewPos.xyz /= viewPos.w; - vec3 direction = normalize((cameraMatrixWorld * vec4(viewPos.xyz, 0.0)).xyz); - direction = vec3(direction.z, direction.y, -direction.x); - - vec3 finalColor; - - if (enableFog) { - // Calculate volume fog influence (same logic as SkyBoxTexture) - float volumeFogInfluence = 0.0; - - for (int i = 0; i < 3; i++) { - int offset = i * 4; - float volVisDist = fogVolumeData[offset + 0]; - float volMinH = fogVolumeData[offset + 1]; - float volMaxH = fogVolumeData[offset + 2]; - float volPct = fogVolumeData[offset + 3]; - - if (volVisDist <= 0.0) continue; - - if (cameraHeight >= volMinH && cameraHeight <= volMaxH) { - float rayInfluence; - if (direction.y >= 0.0) { - rayInfluence = 1.0 - smoothstep(0.0, 0.3, direction.y); - } else { - rayInfluence = 1.0; - } - volumeFogInfluence += rayInfluence * volPct; - } - } - - // Base fog factor from view direction - float baseFogFactor; - if (direction.y <= 0.0) { - baseFogFactor = 1.0; - } else if (direction.y >= horizonFogHeight) { - baseFogFactor = 0.0; - } else { - float t = direction.y / horizonFogHeight; - baseFogFactor = (1.0 - t) * (1.0 - t); - } - - // Combine base fog with volume fog influence - float finalFogFactor = min(1.0, baseFogFactor + volumeFogInfluence * 0.5); - - finalColor = mix(skyColor, fogColor, finalFogFactor); - } else { - finalColor = skyColor; - } - - gl_FragColor = vec4(linearToSRGB(finalColor), 1.0); - } - `,depthWrite:!1,depthTest:!1})]})}function em(e,t){let{fogDistance:a,visibleDistance:r}=e;return[a,r]}function ef({fogState:e,enabled:t}){let{scene:a,camera:r}=(0,h.useThree)(),i=(0,n.useRef)(null),s=(0,n.useMemo)(()=>(0,b.packFogVolumeData)(e.fogVolumes),[e.fogVolumes]);return(0,n.useEffect)(()=>{el||((0,F.installCustomFogShader)(),el=!0)},[]),(0,n.useEffect)(()=>{(0,b.resetGlobalFogUniforms)();let[t,n]=em(e,r.position.y),l=new o.Fog(e.fogColor,t,n);return a.fog=l,i.current=l,(0,b.updateGlobalFogUniforms)(r.position.y,s),()=>{a.fog=null,i.current=null,(0,b.resetGlobalFogUniforms)()}},[a,r,e,s]),(0,n.useEffect)(()=>{let a=i.current;if(a)if(t){let[t,n]=em(e,r.position.y);a.near=t,a.far=n}else a.near=1e10,a.far=1e10},[t,e,r.position.y]),(0,u.useFrame)(()=>{let a=i.current;if(!a)return;let n=r.position.y;if((0,b.updateGlobalFogUniforms)(n,s,t),t){let[t,r]=em(e,n);a.near=t,a.far=r,a.color.copy(e.fogColor)}}),null}function eg(e){return parseFloat(e)}function ep(e){return parseFloat(e)}function ey(e){return parseFloat(e)}var ev=e.i(91907),eF=e.i(25947),eb=e.i(6112);let eS={1:"Storm",2:"Inferno"},ex=(0,n.createContext)(null);function ek(){let e=(0,n.useContext)(ex);if(!e)throw Error("useCameras must be used within CamerasProvider");return e}function ew({children:e}){let{camera:t}=(0,h.useThree)(),[r,i]=(0,n.useState)(-1),[s,l]=(0,n.useState)({}),[c,d]=(0,n.useState)(()=>({initialized:!1,position:null,quarternion:null})),u=(0,n.useCallback)(e=>{l(t=>({...t,[e.id]:e}))},[]),m=(0,n.useCallback)(e=>{l(t=>{let{[e.id]:a,...r}=t;return r})},[]),f=Object.keys(s).length,g=(0,n.useCallback)(e=>{if(e>=0&&e{g(f?(r+1)%f:-1)},[f,r,g]);(0,n.useEffect)(()=>{let e=()=>{let e=window.location.hash;if(e.startsWith("#c")){let[t,a]=e.slice(2).split("~"),r=t.split(",").map(e=>parseFloat(e)),n=a.split(",").map(e=>parseFloat(e));d({initialized:!0,position:new o.Vector3(...r),quarternion:new o.Quaternion(...n)})}else d({initialized:!0,position:null,quarternion:null})};return window.addEventListener("hashchange",e),e(),()=>{window.removeEventListener("hashchange",e)}},[]),(0,n.useEffect)(()=>{c.initialized&&c.position&&(t.position.copy(c.position),c.quarternion&&t.quaternion.copy(c.quarternion))},[t,c]),(0,n.useEffect)(()=>{c.initialized&&!c.position&&f>0&&-1===r&&g(0)},[f,g,r,c]);let y=(0,n.useMemo)(()=>({registerCamera:u,unregisterCamera:m,nextCamera:p,setCameraIndex:g,cameraCount:f}),[u,m,p,g,f]);return 0===f&&-1!==r&&i(-1),(0,a.jsx)(ex.Provider,{value:y,children:e})}let eI=(0,n.createContext)(null),eC=eI.Provider,eP=(0,n.lazy)(()=>e.A(61921).then(e=>({default:e.AudioEmitter}))),e_={AudioEmitter:function(e){let t,n=(0,r.c)(3),{audioEnabled:i}=(0,v.useSettings)();return n[0]!==i||n[1]!==e?(t=i?(0,a.jsx)(eP,{...e}):null,n[0]=i,n[1]=e,n[2]=t):t=n[2],t},Camera:function(e){let t,a,i,s,l,c=(0,r.c)(14),{object:d}=e,{registerCamera:u,unregisterCamera:h}=ek(),f=(0,n.useId)();c[0]!==d?(t=(0,m.getProperty)(d,"dataBlock"),c[0]=d,c[1]=t):t=c[1];let g=t;c[2]!==d?(a=(0,m.getPosition)(d),c[2]=d,c[3]=a):a=c[3];let p=a;c[4]!==d?(i=(0,m.getRotation)(d),c[4]=d,c[5]=i):i=c[5];let y=i;return c[6]!==g||c[7]!==f||c[8]!==p||c[9]!==y||c[10]!==u||c[11]!==h?(s=()=>{if("Observer"===g){let e={id:f,position:new o.Vector3(...p),rotation:y};return u(e),()=>{h(e)}}},l=[f,g,u,h,p,y],c[6]=g,c[7]=f,c[8]=p,c[9]=y,c[10]=u,c[11]=h,c[12]=s,c[13]=l):(s=c[12],l=c[13]),(0,n.useEffect)(s,l),null},ForceFieldBare:(0,n.lazy)(()=>e.A(25147).then(e=>({default:e.ForceFieldBare}))),InteriorInstance:X,Item:function(e){let t,i,o,s,l,c,d,h,f,g,p,y,F=(0,r.c)(32),{object:b}=e,S=A();F[0]!==b?(t=(0,m.getProperty)(b,"dataBlock")??"",F[0]=b,F[1]=t):t=F[1];let x=t,k=(0,eb.useDatablock)(x);F[2]!==k||F[3]!==b?(i=function(e){if("string"==typeof e){let t=e.toLowerCase();return"0"!==t&&"false"!==t&&""!==t}return!!e}((0,m.getProperty)(b,"rotate")??(0,m.getProperty)(k,"rotate")),F[2]=k,F[3]=b,F[4]=i):i=F[4];let w=i;F[5]!==b?(o=(0,m.getPosition)(b),F[5]=b,F[6]=o):o=F[6];let I=o;F[7]!==b?(s=(0,m.getScale)(b),F[7]=b,F[8]=s):s=F[8];let C=s;F[9]!==b?(l=(0,m.getRotation)(b),F[9]=b,F[10]=l):l=F[10];let P=l,{animationEnabled:_}=(0,v.useSettings)(),D=(0,n.useRef)(null);F[11]!==_||F[12]!==w?(c=()=>{if(!D.current||!w||!_)return;let e=performance.now()/1e3;D.current.rotation.y=e/3*Math.PI*2},F[11]=_,F[12]=w,F[13]=c):c=F[13],(0,u.useFrame)(c),F[14]!==k?(d=(0,m.getProperty)(k,"shapeFile"),F[14]=k,F[15]=d):d=F[15];let M=d;M||console.error(` missing shape for datablock: ${x}`);let T=x?.toLowerCase()==="flag",E=S?.team??null,B=E&&E>0?eS[E]:null,j=T&&B?`${B} Flag`:null;return F[16]!==P||F[17]!==w?(h=!w&&{quaternion:P},F[16]=P,F[17]=w,F[18]=h):h=F[18],F[19]!==j?(f=j?(0,a.jsx)(z.FloatingLabel,{opacity:.6,children:j}):null,F[19]=j,F[20]=f):f=F[20],F[21]!==f?(g=(0,a.jsx)(ev.ShapeRenderer,{loadingColor:"pink",children:f}),F[21]=f,F[22]=g):g=F[22],F[23]!==I||F[24]!==C||F[25]!==g||F[26]!==h?(p=(0,a.jsx)("group",{ref:D,position:I,...h,scale:C,children:g}),F[23]=I,F[24]=C,F[25]=g,F[26]=h,F[27]=p):p=F[27],F[28]!==b||F[29]!==M||F[30]!==p?(y=(0,a.jsx)(eF.ShapeInfoProvider,{type:"Item",object:b,shapeName:M,children:p}),F[28]=b,F[29]=M,F[30]=p,F[31]=y):y=F[31],y},SimGroup:function(e){let t,n,i,o,s=(0,r.c)(17),{object:l}=e,c=(0,I.useRuntimeObjectById)(l._id)??l,d=A();s[0]!==c._children?(t=c._children??[],s[0]=c._children,s[1]=t):t=s[1];let u=(0,I.useRuntimeChildIds)(c._id,t),h=null,m=!1;if(d&&d.hasTeams){if(m=!0,null!=d.team)h=d.team;else if(c._name){let e;if(s[2]!==c._name){let t;s[4]===Symbol.for("react.memo_cache_sentinel")?(t=/^team(\d+)$/i,s[4]=t):t=s[4],e=c._name.match(t),s[2]=c._name,s[3]=e}else e=s[3];let t=e;t&&(h=parseInt(t[1],10))}}else if(c._name){let e;s[5]!==c._name?(e=c._name.toLowerCase(),s[5]=c._name,s[6]=e):e=s[6],m="teams"===e}s[7]!==m||s[8]!==c||s[9]!==d||s[10]!==h?(n={object:c,parent:d,hasTeams:m,team:h},s[7]=m,s[8]=c,s[9]=d,s[10]=h,s[11]=n):n=s[11];let f=n;return s[12]!==u?(i=u.map(G),s[12]=u,s[13]=i):i=s[13],s[14]!==f||s[15]!==i?(o=(0,a.jsx)(N.Provider,{value:f,children:i}),s[14]=f,s[15]=i,s[16]=o):o=s[16],o},Sky:function({object:e}){let{fogEnabled:t,highQualityFog:r}=(0,v.useSettings)(),i=(0,m.getProperty)(e,"materialList"),s=(0,n.useMemo)(()=>ec((0,m.getProperty)(e,"SkySolidColor")),[e]),l=(0,m.getInt)(e,"useSkyTextures")??1,c=(0,n.useMemo)(()=>(function(e,t=!0){let a=(0,m.getFloat)(e,"fogDistance")??0,r=(0,m.getFloat)(e,"visibleDistance")??1e3,n=(0,m.getFloat)(e,"high_fogDistance"),i=(0,m.getFloat)(e,"high_visibleDistance"),s=t&&null!=n&&n>0?n:a,l=t&&null!=i&&i>0?i:r,c=function(e){if(!e)return new o.Color(.5,.5,.5);let[t,a,r]=e.split(" ").map(e=>parseFloat(e));return new o.Color().setRGB(t,a,r).convertSRGBToLinear()}((0,m.getProperty)(e,"fogColor")),d=[];for(let t=1;t<=3;t++){let a=function(e,t=1){if(!e)return null;let a=e.split(" ").map(e=>parseFloat(e));if(a.length<3)return null;let[r,n,i]=a;return r<=0||i<=n?null:{visibleDistance:r,minHeight:n,maxHeight:i,percentage:Math.max(0,Math.min(1,t))}}((0,m.getProperty)(e,`fogVolume${t}`),1);a&&d.push(a)}let u=d.reduce((e,t)=>Math.max(e,t.maxHeight),0);return{fogDistance:s,visibleDistance:l,fogColor:c,fogVolumes:d,fogLine:u,enabled:l>s}})(e,r),[e,r]),d=(0,n.useMemo)(()=>ec((0,m.getProperty)(e,"fogColor")),[e]),u=s||d,f=c.enabled&&t,g=c.fogColor,{scene:p,gl:y}=(0,h.useThree)();(0,n.useEffect)(()=>{if(f){let e=g.clone();p.background=e,y.setClearColor(e)}else if(u){let e=u[0].clone();p.background=e,y.setClearColor(e)}else p.background=null;return()=>{p.background=null}},[p,y,f,g,u]);let F=s?.[1];return(0,a.jsxs)(a.Fragment,{children:[i&&l?(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(eu,{materialList:i,fogColor:f?g:void 0,fogState:f?c:void 0},i)}):F?(0,a.jsx)(eh,{skyColor:F,fogColor:f?g:void 0,fogState:f?c:void 0}):null,(0,a.jsx)(n.Suspense,{children:(0,a.jsx)(eo,{object:e})}),c.enabled?(0,a.jsx)(ef,{fogState:c,enabled:t}):null]})},StaticShape:function(e){let t,n,i,o,s,l,c,d,u=(0,r.c)(19),{object:h}=e;u[0]!==h?(t=(0,m.getProperty)(h,"dataBlock")??"",u[0]=h,u[1]=t):t=u[1];let f=t,g=(0,eb.useDatablock)(f);u[2]!==h?(n=(0,m.getPosition)(h),u[2]=h,u[3]=n):n=u[3];let p=n;u[4]!==h?(i=(0,m.getRotation)(h),u[4]=h,u[5]=i):i=u[5];let y=i;u[6]!==h?(o=(0,m.getScale)(h),u[6]=h,u[7]=o):o=u[7];let v=o;u[8]!==g?(s=(0,m.getProperty)(g,"shapeFile"),u[8]=g,u[9]=s):s=u[9];let F=s;return F||console.error(` missing shape for datablock: ${f}`),u[10]===Symbol.for("react.memo_cache_sentinel")?(l=(0,a.jsx)(ev.ShapeRenderer,{}),u[10]=l):l=u[10],u[11]!==p||u[12]!==y||u[13]!==v?(c=(0,a.jsx)("group",{position:p,quaternion:y,scale:v,children:l}),u[11]=p,u[12]=y,u[13]=v,u[14]=c):c=u[14],u[15]!==h||u[16]!==F||u[17]!==c?(d=(0,a.jsx)(eF.ShapeInfoProvider,{type:"StaticShape",object:h,shapeName:F,children:c}),u[15]=h,u[16]=F,u[17]=c,u[18]=d):d=u[18],d},Sun:function(e){let t,i,s,l,c,d,u,h,f,g,y=(0,r.c)(25),{object:v}=e;y[0]!==v?(t=((0,m.getProperty)(v,"direction")??"0.57735 0.57735 -0.57735").split(" ").map(ey),y[0]=v,y[1]=t):t=y[1];let[F,b,S]=t,x=Math.sqrt(F*F+S*S+b*b),k=F/x,w=S/x,I=b/x;y[2]!==k||y[3]!==w||y[4]!==I?(i=new o.Vector3(k,w,I),y[2]=k,y[3]=w,y[4]=I,y[5]=i):i=y[5];let C=i,P=-(5e3*C.x),_=-(5e3*C.y),D=-(5e3*C.z);y[6]!==P||y[7]!==_||y[8]!==D?(s=new o.Vector3(P,_,D),y[6]=P,y[7]=_,y[8]=D,y[9]=s):s=y[9];let M=s;if(y[10]!==v){let[e,t,a]=((0,m.getProperty)(v,"color")??"0.7 0.7 0.7 1").split(" ").map(ep);l=new o.Color(e,t,a),y[10]=v,y[11]=l}else l=y[11];let T=l;if(y[12]!==v){let[e,t,a]=((0,m.getProperty)(v,"ambient")??"0.5 0.5 0.5 1").split(" ").map(eg);c=new o.Color(e,t,a),y[12]=v,y[13]=c}else c=y[13];let E=c,B=C.y<0;return y[14]!==B?(d=()=>{p.value=B},u=[B],y[14]=B,y[15]=d,y[16]=u):(d=y[15],u=y[16]),(0,n.useEffect)(d,u),y[17]!==T||y[18]!==M?(h=(0,a.jsx)("directionalLight",{position:M,color:T,intensity:1,castShadow:!0,"shadow-mapSize-width":8192,"shadow-mapSize-height":8192,"shadow-camera-left":-4096,"shadow-camera-right":4096,"shadow-camera-top":4096,"shadow-camera-bottom":-4096,"shadow-camera-near":100,"shadow-camera-far":12e3,"shadow-bias":-1e-5,"shadow-normalBias":.4,"shadow-radius":2}),y[17]=T,y[18]=M,y[19]=h):h=y[19],y[20]!==E?(f=(0,a.jsx)("ambientLight",{color:E,intensity:1}),y[20]=E,y[21]=f):f=y[21],y[22]!==h||y[23]!==f?(g=(0,a.jsxs)(a.Fragment,{children:[h,f]}),y[22]=h,y[23]=f,y[24]=g):g=y[24],g},TerrainBlock:D,TSStatic:function(e){let t,n,i,o,s,l,c,d=(0,r.c)(17),{object:u}=e;d[0]!==u?(t=(0,m.getProperty)(u,"shapeName"),d[0]=u,d[1]=t):t=d[1];let h=t;d[2]!==u?(n=(0,m.getPosition)(u),d[2]=u,d[3]=n):n=d[3];let f=n;d[4]!==u?(i=(0,m.getRotation)(u),d[4]=u,d[5]=i):i=d[5];let g=i;d[6]!==u?(o=(0,m.getScale)(u),d[6]=u,d[7]=o):o=d[7];let p=o;return h||console.error(" missing shapeName for object",u),d[8]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)(ev.ShapeRenderer,{}),d[8]=s):s=d[8],d[9]!==f||d[10]!==g||d[11]!==p?(l=(0,a.jsx)("group",{position:f,quaternion:g,scale:p,children:s}),d[9]=f,d[10]=g,d[11]=p,d[12]=l):l=d[12],d[13]!==u||d[14]!==h||d[15]!==l?(c=(0,a.jsx)(eF.ShapeInfoProvider,{type:"TSStatic",object:u,shapeName:h,children:l}),d[13]=u,d[14]=h,d[15]=l,d[16]=c):c=d[16],c},Turret:function(e){let t,n,i,o,s,l,c,d,u,h,f,g=(0,r.c)(27),{object:p}=e;g[0]!==p?(t=(0,m.getProperty)(p,"dataBlock")??"",g[0]=p,g[1]=t):t=g[1];let y=t;g[2]!==p?(n=(0,m.getProperty)(p,"initialBarrel"),g[2]=p,g[3]=n):n=g[3];let v=n,F=(0,eb.useDatablock)(y),b=(0,eb.useDatablock)(v);g[4]!==p?(i=(0,m.getPosition)(p),g[4]=p,g[5]=i):i=g[5];let S=i;g[6]!==p?(o=(0,m.getRotation)(p),g[6]=p,g[7]=o):o=g[7];let x=o;g[8]!==p?(s=(0,m.getScale)(p),g[8]=p,g[9]=s):s=g[9];let k=s;g[10]!==F?(l=(0,m.getProperty)(F,"shapeFile"),g[10]=F,g[11]=l):l=g[11];let w=l;g[12]!==b?(c=(0,m.getProperty)(b,"shapeFile"),g[12]=b,g[13]=c):c=g[13];let I=c;return w||console.error(` missing shape for datablock: ${y}`),v&&!I&&console.error(` missing shape for barrel datablock: ${v}`),g[14]===Symbol.for("react.memo_cache_sentinel")?(d=(0,a.jsx)(ev.ShapeRenderer,{}),g[14]=d):d=g[14],g[15]!==I||g[16]!==p?(u=I?(0,a.jsx)(eF.ShapeInfoProvider,{type:"Turret",object:p,shapeName:I,children:(0,a.jsx)("group",{position:[0,1.5,0],children:(0,a.jsx)(ev.ShapeRenderer,{})})}):null,g[15]=I,g[16]=p,g[17]=u):u=g[17],g[18]!==S||g[19]!==x||g[20]!==k||g[21]!==u?(h=(0,a.jsxs)("group",{position:S,quaternion:x,scale:k,children:[d,u]}),g[18]=S,g[19]=x,g[20]=k,g[21]=u,g[22]=h):h=g[22],g[23]!==p||g[24]!==w||g[25]!==h?(f=(0,a.jsx)(eF.ShapeInfoProvider,{type:"Turret",object:p,shapeName:w,children:h}),g[23]=p,g[24]=w,g[25]=h,g[26]=f):f=g[26],f},WaterBlock:(0,n.lazy)(()=>e.A(18599).then(e=>({default:e.WaterBlock}))),WayPoint:function(e){let t,n,i,o=(0,r.c)(7),{object:s}=e;o[0]!==s?(t=(0,m.getPosition)(s),o[0]=s,o[1]=t):t=o[1];let l=t;o[2]!==s?(n=(0,m.getProperty)(s,"name"),o[2]=s,o[3]=n):n=o[3];let c=n;return o[4]!==c||o[5]!==l?(i=c?(0,a.jsx)(z.FloatingLabel,{position:l,opacity:.6,children:c}):null,o[4]=c,o[5]=l,o[6]=i):i=o[6],i}},eD=new Set(["ForceFieldBare","Item","StaticShape","Turret"]);function eM(e){let t,i,o,s=(0,r.c)(13),{object:l,objectId:c}=e,d=(0,I.useRuntimeObjectById)(c??l?._id)??l,{missionType:u}=(0,n.useContext)(eI),h=(0,I.useEngineSelector)(eT);e:{let e,a;if(!d){t=!1;break e}s[0]!==d?(e=new Set(((0,m.getProperty)(d,"missionTypesList")??"").toLowerCase().split(/\s+/).filter(Boolean)),s[0]=d,s[1]=e):e=s[1];let r=e;s[2]!==u||s[3]!==r?(a=!r.size||r.has(u.toLowerCase()),s[2]=u,s[3]=r,s[4]=a):a=s[4],t=a}let f=t;if(!d)return null;let g=e_[d._className];s[5]!==h||s[6]!==d._className?(i=h&&eD.has(d._className),s[5]=h,s[6]=d._className,s[7]=i):i=s[7];let p=i;return s[8]!==g||s[9]!==p||s[10]!==d||s[11]!==f?(o=f&&g?(0,a.jsx)(n.Suspense,{children:!p&&(0,a.jsx)(g,{object:d})}):null,s[8]=g,s[9]=p,s[10]=d,s[11]=f,s[12]=o):o=s[12],o}function eT(e){return null!=e.playback.recording}var eE=e.i(51475);let eB=(0,n.createContext)(null);function ej(e){let t,n,i=(0,r.c)(5),{runtime:o,children:s}=e;return i[0]!==s?(t=(0,a.jsx)(eE.TickProvider,{children:s}),i[0]=s,i[1]=t):t=i[1],i[2]!==o||i[3]!==t?(n=(0,a.jsx)(eB.Provider,{value:o,children:t}),i[2]=o,i[3]=t,i[4]=n):n=i[4],n}var eR=e.i(86608),eN=e.i(38433),eA=e.i(33870),eG=e.i(91996),eU=e.i(7368);let eL=(0,d.createScriptLoader)(),ez=(0,eA.createScriptCache)(),eO={findFiles:e=>{let t=(0,l.default)(e,{nocase:!0});return(0,eG.getResourceList)().filter(e=>t(e)).map(e=>{let[,t]=(0,eG.getSourceAndPath)(e);return t})},isFile:e=>null!=(0,eG.getResourceMap)()[(0,eG.getResourceKey)(e)]};function eV(e){"batch.flushed"===e.type&&I.engineStore.getState().applyRuntimeBatch(e.events,{tick:e.tick})}function eq(e){e instanceof Error&&"AbortError"===e.name||console.error("Mission runtime failed to become ready:",e)}let eH=(0,n.memo)(function(e){let t,i,o,l,d,u,h,m,f=(0,r.c)(17),{name:g,missionType:p,onLoadingChange:y}=e,{data:v}=((m=(0,r.c)(2))[0]!==g?(h={queryKey:["parsedMission",g],queryFn:()=>(0,c.loadMission)(g)},m[0]=g,m[1]=h):h=m[1],(0,s.useQuery)(h)),{missionGroup:F,runtime:b,progress:S}=function(e,t,a){let i,o,s,l=(0,r.c)(6);l[0]===Symbol.for("react.memo_cache_sentinel")?(i={missionGroup:void 0,runtime:void 0,progress:0},l[0]=i):i=l[0];let[c,d]=(0,n.useState)(i);return l[1]!==e||l[2]!==t||l[3]!==a?(o=()=>{if(!a)return;let r=new AbortController,n=!1,i=null,o=(0,eN.createProgressTracker)(),s=()=>{d(e=>({...e,progress:o.progress}))};o.on("update",s);let{runtime:l,ready:c}=(0,eR.runServer)({missionName:e,missionType:t,runtimeOptions:{loadScript:eL,fileSystem:eO,cache:ez,signal:r.signal,progress:o,ignoreScripts:eU.ignoreScripts}});return c.then(()=>{n||r.signal.aborted||(I.engineStore.getState().setRuntime(l),d({missionGroup:l.getObjectByName("MissionGroup"),runtime:l,progress:1}))}).catch(eq),i=l.subscribeRuntimeEvents(eV),I.engineStore.getState().setRuntime(l),()=>{n=!0,o.off("update",s),r.abort(),i?.(),I.engineStore.getState().clearRuntime(),l.destroy()}},s=[e,t,a],l[1]=e,l[2]=t,l[3]=a,l[4]=o,l[5]=s):(o=l[4],s=l[5]),(0,n.useEffect)(o,s),c}(g,p,v),x=!v||!F||!b;f[0]!==F||f[1]!==p||f[2]!==v?(t={metadata:v,missionType:p,missionGroup:F},f[0]=F,f[1]=p,f[2]=v,f[3]=t):t=f[3];let k=t;return(f[4]!==x||f[5]!==y||f[6]!==S?(i=()=>{y?.(x,S)},o=[x,S,y],f[4]=x,f[5]=y,f[6]=S,f[7]=i,f[8]=o):(i=f[7],o=f[8]),(0,n.useEffect)(i,o),x)?null:(f[9]!==F?(l=(0,a.jsx)(eM,{object:F}),f[9]=F,f[10]=l):l=f[10],f[11]!==b||f[12]!==l?(d=(0,a.jsx)(ej,{runtime:b,children:l}),f[11]=b,f[12]=l,f[13]=d):d=f[13],f[14]!==k||f[15]!==d?(u=(0,a.jsx)(eC,{value:k,children:d}),f[14]=k,f[15]=d,f[16]=u):u=f[16],u)});var eW=e.i(17751),e$=e.i(12598),eY=e.i(8155);let eK=e=>{let t=(0,eY.createStore)(e),a=e=>(function(e,t=e=>e){let a=n.default.useSyncExternalStore(e.subscribe,n.default.useCallback(()=>t(e.getState()),[e,t]),n.default.useCallback(()=>t(e.getInitialState()),[e,t]));return n.default.useDebugValue(a),a})(t,e);return Object.assign(a,t),a};var eX=e.i(79473);let eZ=n.createContext(null);function eJ({map:e,children:t,onChange:a,domElement:r}){let i=e.map(e=>e.name+e.keys).join("-"),o=n.useMemo(()=>{let t;return(t=(0,eX.subscribeWithSelector)(()=>e.reduce((e,t)=>({...e,[t.name]:!1}),{})))?eK(t):eK},[i]),s=n.useMemo(()=>[o.subscribe,o.getState,o],[i]),l=o.setState;return n.useEffect(()=>{let t=e.map(({name:e,keys:t,up:r})=>({keys:t,up:r,fn:t=>{l({[e]:t}),a&&a(e,t,s[1]())}})).reduce((e,{keys:t,fn:a,up:r=!0})=>(t.forEach(t=>e[t]={fn:a,pressed:!1,up:r}),e),{}),n=({key:e,code:a})=>{let r=t[e]||t[a];if(!r)return;let{fn:n,pressed:i,up:o}=r;r.pressed=!0,(o||!i)&&n(!0)},i=({key:e,code:a})=>{let r=t[e]||t[a];if(!r)return;let{fn:n,up:i}=r;r.pressed=!1,i&&n(!1)},o=r||window;return o.addEventListener("keydown",n,{passive:!0}),o.addEventListener("keyup",i,{passive:!0}),()=>{o.removeEventListener("keydown",n),o.removeEventListener("keyup",i)}},[r,i]),n.createElement(eZ.Provider,{value:s,children:t})}function eQ(e){let[t,a,r]=n.useContext(eZ);return e?r(e):[t,a]}var e0=e.i(85413),e1=Object.defineProperty,e2=(e,t,a)=>{let r;return(r="symbol"!=typeof t?t+"":t)in e?e1(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a,a};let e3=new o.Euler(0,0,0,"YXZ"),e5=new o.Vector3,e4={type:"change"},e6={type:"lock"},e8={type:"unlock"},e7=Math.PI/2;class e9 extends e0.EventDispatcher{constructor(e,t){super(),e2(this,"camera"),e2(this,"domElement"),e2(this,"isLocked"),e2(this,"minPolarAngle"),e2(this,"maxPolarAngle"),e2(this,"pointerSpeed"),e2(this,"onMouseMove",e=>{this.domElement&&!1!==this.isLocked&&(e3.setFromQuaternion(this.camera.quaternion),e3.y-=.002*e.movementX*this.pointerSpeed,e3.x-=.002*e.movementY*this.pointerSpeed,e3.x=Math.max(e7-this.maxPolarAngle,Math.min(e7-this.minPolarAngle,e3.x)),this.camera.quaternion.setFromEuler(e3),this.dispatchEvent(e4))}),e2(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(e6),this.isLocked=!0):(this.dispatchEvent(e8),this.isLocked=!1))}),e2(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),e2(this,"connect",e=>{this.domElement=e||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),e2(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),e2(this,"dispose",()=>{this.disconnect()}),e2(this,"getObject",()=>this.camera),e2(this,"direction",new o.Vector3(0,0,-1)),e2(this,"getDirection",e=>e.copy(this.direction).applyQuaternion(this.camera.quaternion)),e2(this,"moveForward",e=>{e5.setFromMatrixColumn(this.camera.matrix,0),e5.crossVectors(this.camera.up,e5),this.camera.position.addScaledVector(e5,e)}),e2(this,"moveRight",e=>{e5.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(e5,e)}),e2(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),e2(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}}(t={}).forward="forward",t.backward="backward",t.left="left",t.right="right",t.up="up",t.down="down",t.lookUp="lookUp",t.lookDown="lookDown",t.lookLeft="lookLeft",t.lookRight="lookRight",t.camera1="camera1",t.camera2="camera2",t.camera3="camera3",t.camera4="camera4",t.camera5="camera5",t.camera6="camera6",t.camera7="camera7",t.camera8="camera8",t.camera9="camera9";let te=Math.PI/2-.01;function tt(){let e,t,a,i,s,l,c,d,m,f,g,p,y,F=(0,r.c)(26),{speedMultiplier:b,setSpeedMultiplier:S}=(0,v.useControls)(),[x,k]=eQ(),{camera:w,gl:I}=(0,h.useThree)(),{nextCamera:C,setCameraIndex:P,cameraCount:_}=ek(),D=(0,n.useRef)(null);F[0]===Symbol.for("react.memo_cache_sentinel")?(e=new o.Vector3,F[0]=e):e=F[0];let M=(0,n.useRef)(e);F[1]===Symbol.for("react.memo_cache_sentinel")?(t=new o.Vector3,F[1]=t):t=F[1];let T=(0,n.useRef)(t);F[2]===Symbol.for("react.memo_cache_sentinel")?(a=new o.Vector3,F[2]=a):a=F[2];let E=(0,n.useRef)(a);F[3]===Symbol.for("react.memo_cache_sentinel")?(i=new o.Euler(0,0,0,"YXZ"),F[3]=i):i=F[3];let B=(0,n.useRef)(i);return F[4]!==w||F[5]!==I.domElement?(s=()=>{let e=new e9(w,I.domElement);return D.current=e,()=>{e.dispose()}},l=[w,I.domElement],F[4]=w,F[5]=I.domElement,F[6]=s,F[7]=l):(s=F[6],l=F[7]),(0,n.useEffect)(s,l),F[8]!==w||F[9]!==I.domElement||F[10]!==C?(c=()=>{let e=I.domElement,t=new o.Euler(0,0,0,"YXZ"),a=!1,r=!1,n=0,i=0,s=t=>{D.current?.isLocked||t.target===e&&(a=!0,r=!1,n=t.clientX,i=t.clientY)},l=e=>{!a||!r&&3>Math.abs(e.clientX-n)&&3>Math.abs(e.clientY-i)||(r=!0,t.setFromQuaternion(w.quaternion,"YXZ"),t.y=t.y-.003*e.movementX,t.x=t.x-.003*e.movementY,t.x=Math.max(-te,Math.min(te,t.x)),w.quaternion.setFromEuler(t))},c=()=>{a=!1},d=t=>{let a=D.current;!a||a.isLocked?C():t.target!==e||r||a.lock()};return e.addEventListener("mousedown",s),document.addEventListener("mousemove",l),document.addEventListener("mouseup",c),document.addEventListener("click",d),()=>{e.removeEventListener("mousedown",s),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",c),document.removeEventListener("click",d)}},d=[w,I.domElement,C],F[8]=w,F[9]=I.domElement,F[10]=C,F[11]=c,F[12]=d):(c=F[11],d=F[12]),(0,n.useEffect)(c,d),F[13]!==_||F[14]!==P||F[15]!==x?(m=()=>{let e=["camera1","camera2","camera3","camera4","camera5","camera6","camera7","camera8","camera9"];return x(t=>{for(let a=0;a{let e=e=>{e.preventDefault();let t=e.deltaY>0?-1:1,a=Math.max(.05,Math.min(.5,Math.abs(.01*e.deltaY)))*t;S(e=>Math.max(.1,Math.min(5,Math.round((e+a)*20)/20)))},t=I.domElement;return t.addEventListener("wheel",e,{passive:!1}),()=>{t.removeEventListener("wheel",e)}},p=[I.domElement,S],F[18]=I.domElement,F[19]=S,F[20]=g,F[21]=p):(g=F[20],p=F[21]),(0,n.useEffect)(g,p),F[22]!==w||F[23]!==k||F[24]!==b?(y=(e,t)=>{let{forward:a,backward:r,left:n,right:i,up:o,down:s,lookUp:l,lookDown:c,lookLeft:d,lookRight:u}=k();if((l||c||d||u)&&(B.current.setFromQuaternion(w.quaternion,"YXZ"),d&&(B.current.y=B.current.y+ +t),u&&(B.current.y=B.current.y-t),l&&(B.current.x=B.current.x+ +t),c&&(B.current.x=B.current.x-t),B.current.x=Math.max(-te,Math.min(te,B.current.x)),w.quaternion.setFromEuler(B.current)),!a&&!r&&!n&&!i&&!o&&!s)return;let h=80*b;w.getWorldDirection(M.current),M.current.normalize(),T.current.crossVectors(w.up,M.current).normalize(),E.current.set(0,0,0),a&&E.current.add(M.current),r&&E.current.sub(M.current),n&&E.current.add(T.current),i&&E.current.sub(T.current),o&&(E.current.y=E.current.y+1),s&&(E.current.y=E.current.y-1),E.current.lengthSq()>0&&(E.current.normalize().multiplyScalar(h*t),w.position.add(E.current))},F[22]=w,F[23]=k,F[24]=b,F[25]=y):y=F[25],(0,u.useFrame)(y),null}let ta=[{name:"forward",keys:["KeyW"]},{name:"backward",keys:["KeyS"]},{name:"left",keys:["KeyA"]},{name:"right",keys:["KeyD"]},{name:"up",keys:["Space"]},{name:"down",keys:["ShiftLeft","ShiftRight"]},{name:"lookUp",keys:["ArrowUp"]},{name:"lookDown",keys:["ArrowDown"]},{name:"lookLeft",keys:["ArrowLeft"]},{name:"lookRight",keys:["ArrowRight"]},{name:"camera1",keys:["Digit1"]},{name:"camera2",keys:["Digit2"]},{name:"camera3",keys:["Digit3"]},{name:"camera4",keys:["Digit4"]},{name:"camera5",keys:["Digit5"]},{name:"camera6",keys:["Digit6"]},{name:"camera7",keys:["Digit7"]},{name:"camera8",keys:["Digit8"]},{name:"camera9",keys:["Digit9"]}];function tr(){let e,t,i=(0,r.c)(2);return i[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],i[0]=e):e=i[0],(0,n.useEffect)(tn,e),i[1]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)(tt,{}),i[1]=t):t=i[1],t}function tn(){return window.addEventListener("keydown",ti,{capture:!0}),window.addEventListener("keyup",ti,{capture:!0}),()=>{window.removeEventListener("keydown",ti,{capture:!0}),window.removeEventListener("keyup",ti,{capture:!0})}}function ti(e){(e.metaKey||e.ctrlKey)&&"k"===e.key||e.metaKey&&e.stopImmediatePropagation()}function to(e){let t,n=(0,r.c)(2),{children:i}=e;return n[0]!==i?(t=(0,a.jsx)(a.Fragment,{children:i}),n[0]=i,n[1]=t):t=n[1],t}function ts(){return(0,I.useEngineSelector)(tl)}function tl(e){return e.playback.recording}function tc(e){return"playing"===e.playback.status}function td(e){return e.playback.timeMs/1e3}function tu(e){return e.playback.durationMs/1e3}function th(e){return e.playback.rate}function tm(){let e,t,a,n,i,o,s=(0,r.c)(17),l=ts(),c=(0,I.useEngineSelector)(ty),d=(0,I.useEngineSelector)(tp),u=(0,I.useEngineSelector)(tg),h=(0,I.useEngineSelector)(tf);s[0]!==c?(e=e=>{c(e)},s[0]=c,s[1]=e):e=s[1];let m=e;s[2]!==l||s[3]!==d?(t=()=>{l&&d("playing")},s[2]=l,s[3]=d,s[4]=t):t=s[4];let f=t;s[5]!==d?(a=()=>{d("paused")},s[5]=d,s[6]=a):a=s[6];let g=a;s[7]!==u?(n=e=>{u(1e3*e)},s[7]=u,s[8]=n):n=s[8];let p=n;s[9]!==h?(i=e=>{h(e)},s[9]=h,s[10]=i):i=s[10];let y=i;return s[11]!==g||s[12]!==f||s[13]!==p||s[14]!==m||s[15]!==y?(o={setRecording:m,play:f,pause:g,seek:p,setSpeed:y},s[11]=g,s[12]=f,s[13]=p,s[14]=m,s[15]=y,s[16]=o):o=s[16],o}function tf(e){return e.setPlaybackRate}function tg(e){return e.setPlaybackTime}function tp(e){return e.setPlaybackStatus}function ty(e){return e.setDemoRecording}var tv=e.i(13070);function tF(){let e,t,n,i,o,s,l,c,d,u,h,m,f,g,p,y,v,F,b,S,x,k,w,I,C=(0,r.c)(51),P=ts(),_=eQ(tD),D=eQ(t_),M=eQ(tP),T=eQ(tC),E=eQ(tI),B=eQ(tw),j=eQ(tk),R=eQ(tx),N=eQ(tS),A=eQ(tb);return P?null:(C[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)("div",{className:tv.default.Spacer}),C[0]=e):e=C[0],C[1]!==_?(t=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":_,children:"W"}),C[1]=_,C[2]=t):t=C[2],C[3]===Symbol.for("react.memo_cache_sentinel")?(n=(0,a.jsx)("div",{className:tv.default.Spacer}),C[3]=n):n=C[3],C[4]!==t?(i=(0,a.jsxs)("div",{className:tv.default.Row,children:[e,t,n]}),C[4]=t,C[5]=i):i=C[5],C[6]!==M?(o=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":M,children:"A"}),C[6]=M,C[7]=o):o=C[7],C[8]!==D?(s=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":D,children:"S"}),C[8]=D,C[9]=s):s=C[9],C[10]!==T?(l=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":T,children:"D"}),C[10]=T,C[11]=l):l=C[11],C[12]!==o||C[13]!==s||C[14]!==l?(c=(0,a.jsxs)("div",{className:tv.default.Row,children:[o,s,l]}),C[12]=o,C[13]=s,C[14]=l,C[15]=c):c=C[15],C[16]!==i||C[17]!==c?(d=(0,a.jsxs)("div",{className:tv.default.Column,children:[i,c]}),C[16]=i,C[17]=c,C[18]=d):d=C[18],C[19]===Symbol.for("react.memo_cache_sentinel")?(u=(0,a.jsx)("span",{className:tv.default.Arrow,children:"↑"}),C[19]=u):u=C[19],C[20]!==E?(h=(0,a.jsx)("div",{className:tv.default.Row,children:(0,a.jsxs)("div",{className:tv.default.Key,"data-pressed":E,children:[u," Space"]})}),C[20]=E,C[21]=h):h=C[21],C[22]===Symbol.for("react.memo_cache_sentinel")?(m=(0,a.jsx)("span",{className:tv.default.Arrow,children:"↓"}),C[22]=m):m=C[22],C[23]!==B?(f=(0,a.jsx)("div",{className:tv.default.Row,children:(0,a.jsxs)("div",{className:tv.default.Key,"data-pressed":B,children:[m," Shift"]})}),C[23]=B,C[24]=f):f=C[24],C[25]!==h||C[26]!==f?(g=(0,a.jsxs)("div",{className:tv.default.Column,children:[h,f]}),C[25]=h,C[26]=f,C[27]=g):g=C[27],C[28]===Symbol.for("react.memo_cache_sentinel")?(p=(0,a.jsx)("div",{className:tv.default.Spacer}),C[28]=p):p=C[28],C[29]!==j?(y=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":j,children:"↑"}),C[29]=j,C[30]=y):y=C[30],C[31]===Symbol.for("react.memo_cache_sentinel")?(v=(0,a.jsx)("div",{className:tv.default.Spacer}),C[31]=v):v=C[31],C[32]!==y?(F=(0,a.jsxs)("div",{className:tv.default.Row,children:[p,y,v]}),C[32]=y,C[33]=F):F=C[33],C[34]!==N?(b=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":N,children:"←"}),C[34]=N,C[35]=b):b=C[35],C[36]!==R?(S=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":R,children:"↓"}),C[36]=R,C[37]=S):S=C[37],C[38]!==A?(x=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":A,children:"→"}),C[38]=A,C[39]=x):x=C[39],C[40]!==b||C[41]!==S||C[42]!==x?(k=(0,a.jsxs)("div",{className:tv.default.Row,children:[b,S,x]}),C[40]=b,C[41]=S,C[42]=x,C[43]=k):k=C[43],C[44]!==F||C[45]!==k?(w=(0,a.jsxs)("div",{className:tv.default.Column,children:[F,k]}),C[44]=F,C[45]=k,C[46]=w):w=C[46],C[47]!==g||C[48]!==w||C[49]!==d?(I=(0,a.jsxs)("div",{className:tv.default.Root,children:[d,g,w]}),C[47]=g,C[48]=w,C[49]=d,C[50]=I):I=C[50],I)}function tb(e){return e.lookRight}function tS(e){return e.lookLeft}function tx(e){return e.lookDown}function tk(e){return e.lookUp}function tw(e){return e.down}function tI(e){return e.up}function tC(e){return e.right}function tP(e){return e.left}function t_(e){return e.backward}function tD(e){return e.forward}var tM=e.i(78295);function tT(e){let t=e.querySelector(".back");t&&(t.style.background="rgba(3, 79, 76, 0.6)",t.style.border="1px solid rgba(0, 219, 223, 0.5)",t.style.boxShadow="inset 0 0 10px rgba(0, 0, 0, 0.7)");let a=e.querySelector(".front");a&&(a.style.background="radial-gradient(circle at 50% 50%, rgba(23, 247, 198, 0.9) 0%, rgba(9, 184, 170, 0.95) 100%)",a.style.border="2px solid rgba(255, 255, 255, 0.4)",a.style.boxShadow="0 2px 4px rgba(0, 0, 0, 0.5), 0 1px 1px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.15), inset 0 -1px 2px rgba(0, 0, 0, 0.3)")}let tE=Math.PI/2-.01;function tB({joystickState:t,joystickZone:r,lookJoystickState:i,lookJoystickZone:o}){let{touchMode:s}=(0,v.useControls)();(0,n.useEffect)(()=>{let a=r.current;if(!a)return;let n=null,i=!1;return e.A(84968).then(e=>{i||(n=e.default.create({zone:a,mode:"static",position:{left:"70px",bottom:"70px"},size:120,restOpacity:.9}),tT(a),n.on("move",(e,a)=>{t.current.angle=a.angle.radian,t.current.force=Math.min(1,a.force)}),n.on("end",()=>{t.current.force=0}))}),()=>{i=!0,n?.destroy()}},[t,r,s]),(0,n.useEffect)(()=>{if("dualStick"!==s)return;let t=o.current;if(!t)return;let a=null,r=!1;return e.A(84968).then(e=>{r||(a=e.default.create({zone:t,mode:"static",position:{right:"70px",bottom:"70px"},size:120,restOpacity:.9}),tT(t),a.on("move",(e,t)=>{i.current.angle=t.angle.radian,i.current.force=Math.min(1,t.force)}),a.on("end",()=>{i.current.force=0}))}),()=>{r=!0,a?.destroy()}},[s,i,o]);let l=()=>{document.activeElement instanceof HTMLElement&&document.activeElement.blur()};return"dualStick"===s?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{ref:r,className:tM.default.Left,onContextMenu:e=>e.preventDefault(),onTouchStart:l}),(0,a.jsx)("div",{ref:o,className:tM.default.Right,onContextMenu:e=>e.preventDefault(),onTouchStart:l})]}):(0,a.jsx)("div",{ref:r,className:tM.default.Joystick,onContextMenu:e=>e.preventDefault(),onTouchStart:l})}function tj(e){let t,a,i,s,l,c,d,m,f,g,p=(0,r.c)(25),{joystickState:y,joystickZone:F,lookJoystickState:b}=e,{speedMultiplier:S,touchMode:x}=(0,v.useControls)(),{camera:k,gl:w}=(0,h.useThree)();p[0]===Symbol.for("react.memo_cache_sentinel")?(t=new o.Euler(0,0,0,"YXZ"),p[0]=t):t=p[0];let I=(0,n.useRef)(t),C=(0,n.useRef)(null);p[1]===Symbol.for("react.memo_cache_sentinel")?(a={x:0,y:0},p[1]=a):a=p[1];let P=(0,n.useRef)(a);p[2]===Symbol.for("react.memo_cache_sentinel")?(i=new o.Vector3,p[2]=i):i=p[2];let _=(0,n.useRef)(i);p[3]===Symbol.for("react.memo_cache_sentinel")?(s=new o.Vector3,p[3]=s):s=p[3];let D=(0,n.useRef)(s);p[4]===Symbol.for("react.memo_cache_sentinel")?(l=new o.Vector3,p[4]=l):l=p[4];let M=(0,n.useRef)(l);return p[5]!==k.quaternion?(c=()=>{I.current.setFromQuaternion(k.quaternion,"YXZ")},p[5]=k.quaternion,p[6]=c):c=p[6],p[7]!==k?(d=[k],p[7]=k,p[8]=d):d=p[8],(0,n.useEffect)(c,d),p[9]!==k.quaternion||p[10]!==w.domElement||p[11]!==F||p[12]!==x?(m=()=>{if("moveLookStick"!==x)return;let e=w.domElement,t=e=>{let t=F.current;if(!t)return!1;let a=t.getBoundingClientRect();return e.clientX>=a.left&&e.clientX<=a.right&&e.clientY>=a.top&&e.clientY<=a.bottom},a=e=>{if(null===C.current)for(let a=0;a{if(null!==C.current)for(let t=0;t{for(let t=0;t{e.removeEventListener("touchstart",a),e.removeEventListener("touchmove",r),e.removeEventListener("touchend",n),e.removeEventListener("touchcancel",n),C.current=null}},p[9]=k.quaternion,p[10]=w.domElement,p[11]=F,p[12]=x,p[13]=m):m=p[13],p[14]!==k||p[15]!==w.domElement||p[16]!==F||p[17]!==x?(f=[k,w.domElement,F,x],p[14]=k,p[15]=w.domElement,p[16]=F,p[17]=x,p[18]=f):f=p[18],(0,n.useEffect)(m,f),p[19]!==k||p[20]!==y.current||p[21]!==b||p[22]!==S||p[23]!==x?(g=(e,t)=>{let{force:a,angle:r}=y.current;if("dualStick"===x){let e=b.current;if(e.force>.15){let a=(e.force-.15)/.85,r=Math.cos(e.angle),n=Math.sin(e.angle);I.current.setFromQuaternion(k.quaternion,"YXZ"),I.current.y=I.current.y-r*a*2.5*t,I.current.x=I.current.x+n*a*2.5*t,I.current.x=Math.max(-tE,Math.min(tE,I.current.x)),k.quaternion.setFromEuler(I.current)}if(a>.08){let e=80*S*((a-.08)/.92),n=Math.cos(r),i=Math.sin(r);k.getWorldDirection(_.current),_.current.normalize(),D.current.crossVectors(k.up,_.current).normalize(),M.current.set(0,0,0).addScaledVector(_.current,i).addScaledVector(D.current,-n),M.current.lengthSq()>0&&(M.current.normalize().multiplyScalar(e*t),k.position.add(M.current))}}else if("moveLookStick"===x&&a>0){let e=80*S*.5;if(k.getWorldDirection(_.current),_.current.normalize(),M.current.copy(_.current).multiplyScalar(e*t),k.position.add(M.current),a>=.15){let e=Math.cos(r),n=Math.sin(r),i=(a-.15)/.85;I.current.setFromQuaternion(k.quaternion,"YXZ"),I.current.y=I.current.y-e*i*1.25*t,I.current.x=I.current.x+n*i*1.25*t,I.current.x=Math.max(-tE,Math.min(tE,I.current.x)),k.quaternion.setFromEuler(I.current)}}},p[19]=k,p[20]=y.current,p[21]=b,p[22]=S,p[23]=x,p[24]=g):g=p[24],(0,u.useFrame)(g),null}var tR=e.i(11889),tN=e.i(56373),tA=e.i(86447),tG=e.i(1559),tU=e.i(78440),tL=e.i(59129),tz=e.i(25998),tO=e.i(18364),tV=e.i(70238),tq=e.i(29402),tH=e.i(97442);let tW=new Set(["SkiFree","SkiFree_Daily","SkiFree_Randomizer"]),t$={"missions.vl2":"Official","TR2final105-client.vl2":"Team Rabbit 2","z_mappacks/CTF/Classic_maps_v1.vl2":"Classic","z_mappacks/CTF/DynamixFinalPack.vl2":"Official","z_mappacks/CTF/KryMapPack_b3EDIT.vl2":"KryMapPack","z_mappacks/CTF/S5maps.vl2":"S5","z_mappacks/CTF/S8maps.vl2":"S8","z_mappacks/CTF/TWL-MapPack.vl2":"TWL","z_mappacks/CTF/TWL-MapPackEDIT.vl2":"TWL","z_mappacks/CTF/TWL2-MapPack.vl2":"TWL2","z_mappacks/CTF/TWL2-MapPackEDIT.vl2":"TWL2","z_mappacks/TWL_T2arenaOfficialMaps.vl2":"Arena","z_mappacks/xPack2.vl2":"xPack2","z_mappacks/z_DMP2-V0.6.vl2":"DMP2 (Discord Map Pack)","z_mappacks/zDMP-4.7.3DX.vl2":"DMP (Discord Map Pack)","z_mappacks/zDMP-4.7.3DX-ServerOnly.vl2":"DMP (Discord Map Pack)"},tY={"z_mappacks/DM":"DM","z_mappacks/LCTF":"LCTF","z_mappacks/Lak":"LakRabbit"},tK=(0,eG.getMissionList)().filter(e=>!tW.has(e)).map(e=>{let t,a=(0,eG.getMissionInfo)(e),[r]=(0,eG.getSourceAndPath)(a.resourcePath),n=(t=r.match(/^(.*)(\/[^/]+)$/))?t[1]:"",i=t$[r]??tY[n]??null;return{resourcePath:a.resourcePath,missionName:e,displayName:a.displayName,sourcePath:r,groupName:i,missionTypes:a.missionTypes}}),tX=new Map(tK.map(e=>[e.missionName,e])),tZ=function(e){let t=new Map;for(let a of e){let e=t.get(a.groupName)??[];e.push(a),t.set(a.groupName,e)}return t.forEach((e,a)=>{t.set(a,(0,tq.default)(e,[e=>(e.displayName||e.missionName).toLowerCase()],["asc"]))}),(0,tq.default)(Array.from(t.entries()),[([e])=>"Official"===e?0:null==e?2:1,([e])=>e?e.toLowerCase():""],["asc","asc"])}(tK),tJ="u">typeof navigator&&/Mac|iPhone|iPad|iPod/.test(navigator.platform);function tQ(e){let t,n,i,o,s,l=(0,r.c)(12),{mission:c}=e,d=c.displayName||c.missionName;return l[0]!==d?(t=(0,a.jsx)("span",{className:tH.default.ItemName,children:d}),l[0]=d,l[1]=t):t=l[1],l[2]!==c.missionTypes?(n=c.missionTypes.length>0&&(0,a.jsx)("span",{className:tH.default.ItemTypes,children:c.missionTypes.map(t0)}),l[2]=c.missionTypes,l[3]=n):n=l[3],l[4]!==t||l[5]!==n?(i=(0,a.jsxs)("span",{className:tH.default.ItemHeader,children:[t,n]}),l[4]=t,l[5]=n,l[6]=i):i=l[6],l[7]!==c.missionName?(o=(0,a.jsx)("span",{className:tH.default.ItemMissionName,children:c.missionName}),l[7]=c.missionName,l[8]=o):o=l[8],l[9]!==i||l[10]!==o?(s=(0,a.jsxs)(a.Fragment,{children:[i,o]}),l[9]=i,l[10]=o,l[11]=s):s=l[11],s}function t0(e){return(0,a.jsx)("span",{className:tH.default.ItemType,"data-mission-type":e,children:e},e)}function t1(e){let t,i,o,s,l,c,d,u,h,m,f,g,p,y,v,F,b,S=(0,r.c)(46),{value:x,missionType:k,onChange:w,disabled:I}=e,[C,P]=(0,n.useState)(""),_=(0,n.useRef)(null),D=(0,n.useRef)(k);S[0]===Symbol.for("react.memo_cache_sentinel")?(t=e=>{(0,n.startTransition)(()=>P(e))},S[0]=t):t=S[0];let M=(0,tO.useComboboxStore)({resetValueOnHide:!0,selectedValue:x,setSelectedValue:e=>{if(e){let t=D.current,a=(0,eG.getMissionInfo)(e).missionTypes;t&&a.includes(t)||(t=a[0]),w({missionName:e,missionType:t}),_.current?.blur()}},setValue:t});S[1]!==M?(i=()=>{let e=e=>{"k"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),_.current?.focus(),M.show())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},o=[M],S[1]=M,S[2]=i,S[3]=o):(i=S[2],o=S[3]),(0,n.useEffect)(i,o),S[4]!==x?(s=tX.get(x),S[4]=x,S[5]=s):s=S[5];let T=s;e:{let e,t;if(!C){let e;S[6]===Symbol.for("react.memo_cache_sentinel")?(e={type:"grouped",groups:tZ},S[6]=e):e=S[6],l=e;break e}S[7]!==C?(e=(0,tV.matchSorter)(tK,C,{keys:["displayName","missionName","missionTypes","groupName"]}),S[7]=C,S[8]=e):e=S[8];let a=e;S[9]!==a?(t={type:"flat",missions:a},S[9]=a,S[10]=t):t=S[10],l=t}let E=l,B=T?T.displayName||T.missionName:x,j="flat"===E.type?0===E.missions.length:0===E.groups.length,R=e=>(0,a.jsx)(tN.ComboboxItem,{value:e.missionName,className:tH.default.Item,focusOnHover:!0,onClick:t=>{if(t.target&&t.target instanceof HTMLElement){let a=t.target.dataset.missionType;a?(D.current=a,e.missionName===x&&w({missionName:e.missionName,missionType:a})):D.current=null}else D.current=null},children:(0,a.jsx)(tQ,{mission:e})},e.missionName),N=tU.ComboboxProvider;S[11]!==M?(c=()=>{try{document.exitPointerLock()}catch{}M.show()},d=e=>{"Escape"!==e.key||M.getState().open||_.current?.blur()},S[11]=M,S[12]=c,S[13]=d):(c=S[12],d=S[13]),S[14]!==I||S[15]!==B||S[16]!==c||S[17]!==d?(u=(0,a.jsx)(tR.Combobox,{ref:_,autoSelect:!0,disabled:I,placeholder:B,className:tH.default.Input,onFocus:c,onKeyDown:d}),S[14]=I,S[15]=B,S[16]=c,S[17]=d,S[18]=u):u=S[18],S[19]!==B?(h=(0,a.jsx)("span",{className:tH.default.SelectedName,children:B}),S[19]=B,S[20]=h):h=S[20],S[21]!==k?(m=k&&(0,a.jsx)("span",{className:tH.default.ItemType,"data-mission-type":k,children:k}),S[21]=k,S[22]=m):m=S[22],S[23]!==m||S[24]!==h?(f=(0,a.jsxs)("div",{className:tH.default.SelectedValue,children:[h,m]}),S[23]=m,S[24]=h,S[25]=f):f=S[25],S[26]===Symbol.for("react.memo_cache_sentinel")?(g=(0,a.jsx)("kbd",{className:tH.default.Shortcut,children:tJ?"⌘K":"^K"}),S[26]=g):g=S[26],S[27]!==f||S[28]!==u?(p=(0,a.jsxs)("div",{className:tH.default.InputWrapper,children:[u,f,g]}),S[27]=f,S[28]=u,S[29]=p):p=S[29];let A=tG.ComboboxPopover,G=tH.default,U=tA.ComboboxList,L=tH.default,z="flat"===E.type?E.missions.map(R):E.groups.map(e=>{let[t,r]=e;return t?(0,a.jsxs)(tL.ComboboxGroup,{className:tH.default.Group,children:[(0,a.jsx)(tz.ComboboxGroupLabel,{className:tH.default.GroupLabel,children:t}),r.map(R)]},t):(0,a.jsx)(n.Fragment,{children:r.map(R)},"ungrouped")});return S[30]!==j?(y=j&&(0,a.jsx)("div",{className:tH.default.NoResults,children:"No missions found"}),S[30]=j,S[31]=y):y=S[31],S[32]!==U||S[33]!==L.List||S[34]!==z||S[35]!==y?(v=(0,a.jsxs)(U,{className:L.List,children:[z,y]}),S[32]=U,S[33]=L.List,S[34]=z,S[35]=y,S[36]=v):v=S[36],S[37]!==A||S[38]!==G.Popover||S[39]!==v?(F=(0,a.jsx)(A,{gutter:4,fitViewport:!0,autoFocusOnHide:!1,className:G.Popover,children:v}),S[37]=A,S[38]=G.Popover,S[39]=v,S[40]=F):F=S[40],S[41]!==N||S[42]!==M||S[43]!==p||S[44]!==F?(b=(0,a.jsxs)(N,{store:M,children:[p,F]}),S[41]=N,S[42]=M,S[43]=p,S[44]=F,S[45]=b):b=S[45],b}var t2=e.i(11152),t3=e.i(40141);function t5(e){return(0,t3.GenIcon)({tag:"svg",attr:{viewBox:"0 0 384 512"},child:[{tag:"path",attr:{d:"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"},child:[]}]})(e)}var t4=e.i(36679);function t6(e){let t,i,o,s,l,c=(0,r.c)(11),{cameraRef:d,missionName:u,missionType:h}=e,{fogEnabled:m}=(0,v.useSettings)(),[f,g]=(0,n.useState)(!1),p=(0,n.useRef)(null);c[0]!==d||c[1]!==m||c[2]!==u||c[3]!==h?(t=async()=>{clearTimeout(p.current);let e=d.current;if(!e)return;let t=function({position:e,quaternion:t}){let a=e=>parseFloat(e.toFixed(3)),r=`${a(e.x)},${a(e.y)},${a(e.z)}`,n=`${a(t.x)},${a(t.y)},${a(t.z)},${a(t.w)}`;return`#c${r}~${n}`}(e),a=new URLSearchParams;a.set("mission",`${u}~${h}`),a.set("fog",m.toString());let r=`${window.location.pathname}?${a}${t}`,n=`${window.location.origin}${r}`;window.history.replaceState(null,"",r);try{await navigator.clipboard.writeText(n),g(!0),p.current=setTimeout(()=>{g(!1)},1100)}catch(e){console.error(e)}},c[0]=d,c[1]=m,c[2]=u,c[3]=h,c[4]=t):t=c[4];let y=t,F=f?"true":"false";return c[5]===Symbol.for("react.memo_cache_sentinel")?(i=(0,a.jsx)(t2.FaMapPin,{className:t4.default.MapPin}),o=(0,a.jsx)(t5,{className:t4.default.ClipboardCheck}),s=(0,a.jsx)("span",{className:t4.default.ButtonLabel,children:" Copy coordinates URL"}),c[5]=i,c[6]=o,c[7]=s):(i=c[5],o=c[6],s=c[7]),c[8]!==y||c[9]!==F?(l=(0,a.jsxs)("button",{type:"button",className:t4.default.Root,"aria-label":"Copy coordinates URL",title:"Copy coordinates URL",onClick:y,"data-copied":F,id:"copyCoordinatesButton",children:[i,o,s]}),c[8]=y,c[9]=F,c[10]=l):l=c[10],l}function t8(e){return(0,t3.GenIcon)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M21 3H3c-1.11 0-2 .89-2 2v12a2 2 0 0 0 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5a2 2 0 0 0-2-2zm0 14H3V5h18v12zm-5-6-7 4V7z"},child:[]}]})(e)}var t7={},t9=function(e,t,a,r,n){var i=new Worker(t7[t]||(t7[t]=URL.createObjectURL(new Blob([e+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return i.onmessage=function(e){var t=e.data,a=t.$e$;if(a){var r=Error(a[0]);r.code=a[1],r.stack=a[2],n(r,null)}else n(null,t)},i.postMessage(a,r),i},ae=Uint8Array,at=Uint16Array,aa=Int32Array,ar=new ae([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),an=new ae([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),ai=new ae([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ao=function(e,t){for(var a=new at(31),r=0;r<31;++r)a[r]=t+=1<>1|(21845&af)<<1;ag=(61680&(ag=(52428&ag)>>2|(13107&ag)<<2))>>4|(3855&ag)<<4,am[af]=((65280&ag)>>8|(255&ag)<<8)>>1}for(var ap=function(e,t,a){for(var r,n=e.length,i=0,o=new at(t);i>l]=c}else for(i=0,r=new at(n);i>15-e[i]);return r},ay=new ae(288),af=0;af<144;++af)ay[af]=8;for(var af=144;af<256;++af)ay[af]=9;for(var af=256;af<280;++af)ay[af]=7;for(var af=280;af<288;++af)ay[af]=8;for(var av=new ae(32),af=0;af<32;++af)av[af]=5;var aF=ap(ay,9,0),ab=ap(ay,9,1),aS=ap(av,5,0),ax=ap(av,5,1),ak=function(e){for(var t=e[0],a=1;at&&(t=e[a]);return t},aw=function(e,t,a){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(7&t)&a},aI=function(e,t){var a=t/8|0;return(e[a]|e[a+1]<<8|e[a+2]<<16)>>(7&t)},aC=function(e){return(e+7)/8|0},aP=function(e,t,a){return(null==t||t<0)&&(t=0),(null==a||a>e.length)&&(a=e.length),new ae(e.subarray(t,a))},a_=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],aD=function(e,t,a){var r=Error(t||a_[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,aD),!a)throw r;return r},aM=function(e,t,a,r){var n=e.length,i=r?r.length:0;if(!n||t.f&&!t.l)return a||new ae(0);var o=!a,s=o||2!=t.i,l=t.i;o&&(a=new ae(3*n));var c=function(e){var t=a.length;if(e>t){var r=new ae(Math.max(2*t,e));r.set(a),a=r}},d=t.f||0,u=t.p||0,h=t.b||0,m=t.l,f=t.d,g=t.m,p=t.n,y=8*n;do{if(!m){d=aw(e,u,1);var v=aw(e,u+1,3);if(u+=3,v)if(1==v)m=ab,f=ax,g=9,p=5;else if(2==v){var F=aw(e,u,31)+257,b=aw(e,u+10,15)+4,S=F+aw(e,u+5,31)+1;u+=14;for(var x=new ae(S),k=new ae(19),w=0;w>4;if(D<16)x[w++]=D;else{var M=0,T=0;for(16==D?(T=3+aw(e,u,3),u+=2,M=x[w-1]):17==D?(T=3+aw(e,u,7),u+=3):18==D&&(T=11+aw(e,u,127),u+=7);T--;)x[w++]=M}}var E=x.subarray(0,F),B=x.subarray(F);g=ak(E),p=ak(B),m=ap(E,g,1),f=ap(B,p,1)}else aD(1);else{var D=aC(u)+4,j=e[D-4]|e[D-3]<<8,R=D+j;if(R>n){l&&aD(0);break}s&&c(h+j),a.set(e.subarray(D,R),h),t.b=h+=j,t.p=u=8*R,t.f=d;continue}if(u>y){l&&aD(0);break}}s&&c(h+131072);for(var N=(1<>4;if((u+=15&M)>y){l&&aD(0);break}if(M||aD(2),U<256)a[h++]=U;else if(256==U){G=u,m=null;break}else{var L=U-254;if(U>264){var w=U-257,z=ar[w];L=aw(e,u,(1<>4;O||aD(3),u+=15&O;var B=au[V];if(V>3){var z=an[V];B+=aI(e,u)&(1<y){l&&aD(0);break}s&&c(h+131072);var q=h+L;if(h>8},aE=function(e,t,a){a<<=7&t;var r=t/8|0;e[r]|=a,e[r+1]|=a>>8,e[r+2]|=a>>16},aB=function(e,t){for(var a=[],r=0;rh&&(h=i[r].s);var m=new at(h+1),f=aj(a[d-1],m,0);if(f>t){var r=0,g=0,p=f-t,y=1<t)g+=y-(1<>=p;g>0;){var F=i[r].s;m[F]=0&&g;--r){var b=i[r].s;m[b]==t&&(--m[b],++g)}f=t}return{t:new ae(m),l:f}},aj=function(e,t,a){return -1==e.s?Math.max(aj(e.l,t,a+1),aj(e.r,t,a+1)):t[e.s]=a},aR=function(e){for(var t=e.length;t&&!e[--t];);for(var a=new at(++t),r=0,n=e[0],i=1,o=function(e){a[r++]=e},s=1;s<=t;++s)if(e[s]==n&&s!=t)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=e[s]}return{c:a.subarray(0,r),n:t}},aN=function(e,t){for(var a=0,r=0;r>8,e[n+2]=255^e[n],e[n+3]=255^e[n+1];for(var i=0;i4&&!M[ai[E-1]];--E);var B=c+5<<3,j=aN(n,ay)+aN(i,av)+o,R=aN(n,p)+aN(i,F)+o+14+3*E+aN(P,M)+2*P[16]+3*P[17]+7*P[18];if(l>=0&&B<=j&&B<=R)return aA(t,d,e.subarray(l,l+c));if(aT(t,d,1+(R15&&(aT(t,d,U[_]>>5&127),d+=U[_]>>12)}}else u=aF,h=ay,m=aS,f=av;for(var _=0;_255){var L=z>>18&31;aE(t,d,u[L+257]),d+=h[L+257],L>7&&(aT(t,d,z>>23&31),d+=ar[L]);var O=31&z;aE(t,d,m[O]),d+=f[O],O>3&&(aE(t,d,z>>5&8191),d+=an[O])}else aE(t,d,u[z]),d+=h[z]}return aE(t,d,u[256]),d+h[256]},aU=new aa([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),aL=new ae(0),az=function(e,t,a,r,n,i){var o=i.z||e.length,s=new ae(r+o+5*(1+Math.ceil(o/7e3))+n),l=s.subarray(r,s.length-n),c=i.l,d=7&(i.r||0);if(t){d&&(l[0]=i.r>>3);for(var u=aU[t-1],h=u>>13,m=8191&u,f=(1<7e3||C>24576)&&(E>423||!c)){d=aG(e,l,0,b,S,x,w,C,_,I-_,d),C=k=w=0,_=I;for(var B=0;B<286;++B)S[B]=0;for(var B=0;B<30;++B)x[B]=0}var j=2,R=0,N=m,A=M-T&32767;if(E>2&&D==F(I-A))for(var G=Math.min(h,E)-1,U=Math.min(32767,I),L=Math.min(258,E);A<=U&&--N&&M!=T;){if(e[I+j]==e[I+j-A]){for(var z=0;zj){if(j=z,R=A,z>G)break;for(var O=Math.min(A,z-2),V=0,B=0;BV&&(V=W,T=q)}}}T=g[M=T],A+=M-T&32767}if(R){b[C++]=0x10000000|ac[j]<<18|ah[R];var $=31&ac[j],Y=31&ah[R];w+=ar[$]+an[Y],++S[257+$],++x[Y],P=I+j,++k}else b[C++]=e[I],++S[e[I]]}}for(I=Math.max(I,P);I=o&&(l[d/8|0]=c,K=o),d=aA(l,d+1,e.subarray(I,K))}i.i=o}return aP(s,0,r+aC(d)+n)},aO=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var a=t,r=9;--r;)a=(1&a&&-0x12477ce0)^a>>>1;e[t]=a}return e}(),aV=function(){var e=-1;return{p:function(t){for(var a=e,r=0;r>>8;e=a},d:function(){return~e}}},aq=function(){var e=1,t=0;return{p:function(a){for(var r=e,n=t,i=0|a.length,o=0;o!=i;){for(var s=Math.min(o+2655,i);o>16),n=(65535&n)+15*(n>>16)}e=r,t=n},d:function(){return e%=65521,t%=65521,(255&e)<<24|(65280&e)<<8|(255&t)<<8|t>>8}}},aH=function(e,t,a,r,n){if(!n&&(n={l:1},t.dictionary)){var i=t.dictionary.subarray(-32768),o=new ae(i.length+e.length);o.set(i),o.set(e,i.length),e=o,n.w=i.length}return az(e,null==t.level?6:t.level,null==t.mem?n.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):20:12+t.mem,a,r,n)},aW=function(e,t){var a={};for(var r in e)a[r]=e[r];for(var r in t)a[r]=t[r];return a},a$=function(e,t,a){for(var r=e(),n=e.toString(),i=n.slice(n.indexOf("[")+1,n.lastIndexOf("]")).replace(/\s+/g,"").split(","),o=0;o>>0},a7=function(e,t){return a8(e,t)+0x100000000*a8(e,t+4)},a9=function(e,t,a){for(;a;++t)e[t]=a,a>>>=8},re=function(e,t){var a=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:2*(9==t.level),e[9]=3,0!=t.mtime&&a9(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),a){e[3]=8;for(var r=0;r<=a.length;++r)e[r+10]=a.charCodeAt(r)}},rt=function(e){(31!=e[0]||139!=e[1]||8!=e[2])&&aD(6,"invalid gzip data");var t=e[3],a=10;4&t&&(a+=(e[10]|e[11]<<8)+2);for(var r=(t>>3&1)+(t>>4&1);r>0;r-=!e[a++]);return a+(2&t)},ra=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},rr=function(e){return 10+(e.filename?e.filename.length+1:0)},rn=function(e,t){var a=t.level;if(e[0]=120,e[1]=(0==a?0:a<6?1:9==a?3:2)<<6|(t.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,t.dictionary){var r=aq();r.p(t.dictionary),a9(e,2,r.d())}},ri=function(e,t){return((15&e[0])!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&aD(6,"invalid zlib data"),(e[1]>>5&1)==+!t&&aD(6,"invalid zlib data: "+(32&e[1]?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function ro(e,t){return"function"==typeof e&&(t=e,e={}),this.ondata=t,e}var rs=function(){function e(e,t){if("function"==typeof e&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new ae(98304),this.o.dictionary){var a=this.o.dictionary.subarray(-32768);this.b.set(a,32768-a.length),this.s.i=32768-a.length}}return e.prototype.p=function(e,t){this.ondata(aH(e,this.o,0,0,this.s),t)},e.prototype.push=function(e,t){this.ondata||aD(5),this.s.l&&aD(4);var a=e.length+this.s.z;if(a>this.b.length){if(a>2*this.b.length-32768){var r=new ae(-32768&a);r.set(this.b.subarray(0,this.s.z)),this.b=r}var n=this.b.length-this.s.z;this.b.set(e.subarray(0,n),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(n),32768),this.s.z=e.length-n+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=1&t,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2)},e.prototype.flush=function(){this.ondata||aD(5),this.s.l&&aD(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},e}(),rl=function(e,t){a4([aJ,function(){return[a5,rs]}],this,ro.call(this,e,t),function(e){onmessage=a5(new rs(e.data))},6,1)};function rc(e,t){return aH(e,t||{},0,0)}var rd=function(){function e(e,t){"function"==typeof e&&(t=e,e={}),this.ondata=t;var a=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:a?a.length:0},this.o=new ae(32768),this.p=new ae(0),a&&this.o.set(a)}return e.prototype.e=function(e){if(this.ondata||aD(5),this.d&&aD(4),this.p.length){if(e.length){var t=new ae(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}}else this.p=e},e.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,a=aM(this.p,this.s,this.o);this.ondata(aP(a,t,this.s.b),this.d),this.o=aP(a,this.s.b-32768),this.s.b=this.o.length,this.p=aP(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),ru=function(e,t){a4([aZ,function(){return[a5,rd]}],this,ro.call(this,e,t),function(e){onmessage=a5(new rd(e.data))},7,0)};function rh(e,t){return aM(e,{i:2},t&&t.out,t&&t.dictionary)}(function(){function e(e,t){this.c=aV(),this.l=0,this.v=1,rs.call(this,e,t)}e.prototype.push=function(e,t){this.c.p(e),this.l+=e.length,rs.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){var a=aH(e,this.o,this.v&&rr(this.o),t&&8,this.s);this.v&&(re(a,this.o),this.v=0),t&&(a9(a,a.length-8,this.c.d()),a9(a,a.length-4,this.l)),this.ondata(a,t)},e.prototype.flush=function(){rs.prototype.flush.call(this)}})();var rm=function(){function e(e,t){this.v=1,this.r=0,rd.call(this,e,t)}return e.prototype.push=function(e,t){if(rd.prototype.e.call(this,e),this.r+=e.length,this.v){var a=this.p.subarray(this.v-1),r=a.length>3?rt(a):4;if(r>a.length){if(!t)return}else this.v>1&&this.onmember&&this.onmember(this.r-a.length);this.p=a.subarray(r),this.v=0}rd.prototype.c.call(this,t),!this.s.f||this.s.l||t||(this.v=aC(this.s.p)+9,this.s={i:0},this.o=new ae(0),this.push(new ae(0),t))},e}(),rf=function(e,t){var a=this;a4([aZ,aQ,function(){return[a5,rd,rm]}],this,ro.call(this,e,t),function(e){var t=new rm(e.data);t.onmember=function(e){return postMessage(e)},onmessage=a5(t)},9,0,function(e){return a.onmember&&a.onmember(e)})},rg=(function(){function e(e,t){this.c=aq(),this.v=1,rs.call(this,e,t)}e.prototype.push=function(e,t){this.c.p(e),rs.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){var a=aH(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&(rn(a,this.o),this.v=0),t&&a9(a,a.length-4,this.c.d()),this.ondata(a,t)},e.prototype.flush=function(){rs.prototype.flush.call(this)}}(),function(){function e(e,t){rd.call(this,e,t),this.v=e&&e.dictionary?2:1}return e.prototype.push=function(e,t){if(rd.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(ri(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&aD(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),rd.prototype.c.call(this,t)},e}()),rp=function(e,t){a4([aZ,a0,function(){return[a5,rd,rg]}],this,ro.call(this,e,t),function(e){onmessage=a5(new rg(e.data))},11,0)},ry=function(){function e(e,t){this.o=ro.call(this,e,t)||{},this.G=rm,this.I=rd,this.Z=rg}return e.prototype.i=function(){var e=this;this.s.ondata=function(t,a){e.ondata(t,a)}},e.prototype.push=function(e,t){if(this.ondata||aD(5),this.s)this.s.push(e,t);else{if(this.p&&this.p.length){var a=new ae(this.p.length+e.length);a.set(this.p),a.set(e,this.p.length)}else this.p=e;this.p.length>2&&(this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(this.o):(15&this.p[0])!=8||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(this.o):new this.Z(this.o),this.i(),this.s.push(this.p,t),this.p=null)}},e}();function rv(e,t){ry.call(this,e,t),this.queuedSize=0,this.G=rf,this.I=ru,this.Z=rp}rv.prototype.i=function(){var e=this;this.s.ondata=function(t,a,r){e.ondata(t,a,r)},this.s.ondrain=function(t){e.queuedSize-=t,e.ondrain&&e.ondrain(t)}},rv.prototype.push=function(e,t){this.queuedSize+=e.length,ry.prototype.push.call(this,e,t)};var rF="u">typeof TextEncoder&&new TextEncoder,rb="u">typeof TextDecoder&&new TextDecoder,rS=0;try{rb.decode(aL,{stream:!0}),rS=1}catch(e){}var rx=function(e){for(var t="",a=0;;){var r=e[a++],n=(r>127)+(r>223)+(r>239);if(a+n>e.length)return{s:t,r:aP(e,a-1)};n?3==n?t+=String.fromCharCode(55296|(r=((15&r)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536)>>10,56320|1023&r):1&n?t+=String.fromCharCode((31&r)<<6|63&e[a++]):t+=String.fromCharCode((15&r)<<12|(63&e[a++])<<6|63&e[a++]):t+=String.fromCharCode(r)}};function rk(e,t){if(t){for(var a=new ae(e.length),r=0;r>1)),o=0,s=function(e){i[o++]=e},r=0;ri.length){var l=new ae(o+8+(n-r<<1));l.set(i),i=l}var c=e.charCodeAt(r);c<128||t?s(c):(c<2048?s(192|c>>6):(c>55295&&c<57344?(s(240|(c=65536+(1047552&c)|1023&e.charCodeAt(++r))>>18),s(128|c>>12&63)):s(224|c>>12),s(128|c>>6&63)),s(128|63&c))}return aP(i,0,o)}(function(e){this.ondata=e,rS?this.t=new TextDecoder:this.p=aL}).prototype.push=function(e,t){if(this.ondata||aD(5),t=!!t,this.t){this.ondata(this.t.decode(e,{stream:!0}),t),t&&(this.t.decode().length&&aD(8),this.t=null);return}this.p||aD(4);var a=new ae(this.p.length+e.length);a.set(this.p),a.set(e,this.p.length);var r=rx(a),n=r.s,i=r.r;t?(i.length&&aD(8),this.p=null):this.p=i,this.ondata(n,t)},(function(e){this.ondata=e}).prototype.push=function(e,t){this.ondata||aD(5),this.d&&aD(4),this.ondata(rk(e),this.d=t||!1)};var rw=function(e){return 1==e?3:e<6?2:+(9==e)},rI=function(e,t){for(;1!=a6(e,t);t+=4+a6(e,t+2));return[a7(e,t+12),a7(e,t+4),a7(e,t+20)]},rC=function(e){var t=0;if(e)for(var a in e){var r=e[a].length;r>65535&&aD(9),t+=r+4}return t},rP=function(e,t,a,r,n,i,o,s){var l=r.length,c=a.extra,d=s&&s.length,u=rC(c);a9(e,t,null!=o?0x2014b50:0x4034b50),t+=4,null!=o&&(e[t++]=20,e[t++]=a.os),e[t]=20,t+=2,e[t++]=a.flag<<1|(i<0&&8),e[t++]=n&&8,e[t++]=255&a.compression,e[t++]=a.compression>>8;var h=new Date(null==a.mtime?Date.now():a.mtime),m=h.getFullYear()-1980;if((m<0||m>119)&&aD(10),a9(e,t,m<<25|h.getMonth()+1<<21|h.getDate()<<16|h.getHours()<<11|h.getMinutes()<<5|h.getSeconds()>>1),t+=4,-1!=i&&(a9(e,t,a.crc),a9(e,t+4,i<0?-i-2:i),a9(e,t+8,a.size)),a9(e,t+12,l),a9(e,t+14,u),t+=16,null!=o&&(a9(e,t,d),a9(e,t+6,a.attrs),a9(e,t+10,o),t+=14),e.set(r,t),t+=l,u)for(var f in c){var g=c[f],p=g.length;a9(e,t,+f),a9(e,t+2,p),e.set(g,t+4),t+=4+p}return d&&(e.set(s,t),t+=d),t},r_=function(e,t,a,r,n){a9(e,t,0x6054b50),a9(e,t+8,a),a9(e,t+10,a),a9(e,t+12,r),a9(e,t+16,n)},rD=function(){function e(e){this.filename=e,this.c=aV(),this.size=0,this.compression=0}return e.prototype.process=function(e,t){this.ondata(null,e,t)},e.prototype.push=function(e,t){this.ondata||aD(5),this.c.p(e),this.size+=e.length,t&&(this.crc=this.c.d()),this.process(e,t||!1)},e}();function rM(e,t){var a=this;t||(t={}),rD.call(this,e),this.d=new rs(t,function(e,t){a.ondata(null,e,t)}),this.compression=8,this.flag=rw(t.level)}function rT(e,t){var a=this;t||(t={}),rD.call(this,e),this.d=new rl(t,function(e,t,r){a.ondata(e,t,r)}),this.compression=8,this.flag=rw(t.level),this.terminate=this.d.terminate}function rE(e){this.ondata=e,this.u=[],this.d=1}rM.prototype.process=function(e,t){try{this.d.push(e,t)}catch(e){this.ondata(e,null,t)}},rM.prototype.push=function(e,t){rD.prototype.push.call(this,e,t)},rT.prototype.process=function(e,t){this.d.push(e,t)},rT.prototype.push=function(e,t){rD.prototype.push.call(this,e,t)},rE.prototype.add=function(e){var t=this;if(this.ondata||aD(5),2&this.d)this.ondata(aD(4+(1&this.d)*8,0,1),null,!1);else{var a=rk(e.filename),r=a.length,n=e.comment,i=n&&rk(n),o=r!=e.filename.length||i&&n.length!=i.length,s=r+rC(e.extra)+30;r>65535&&this.ondata(aD(11,0,1),null,!1);var l=new ae(s);rP(l,0,e,a,o,-1);var c=[l],d=function(){for(var e=0,a=c;e0){var r=Math.min(this.c,e.length),n=e.subarray(0,r);if(this.c-=r,this.d?this.d.push(n,!this.c):this.k[0].push(n),(e=e.subarray(r)).length)return this.push(e,t)}else{var i=0,o=0,s=void 0,l=void 0;this.p.length?e.length?((l=new ae(this.p.length+e.length)).set(this.p),l.set(e,this.p.length)):l=this.p:l=e;for(var c=l.length,d=this.c,u=d&&this.d,h=this;oo+30+u+m){var f,g,p=[];h.k.unshift(p),i=2;var y=a8(l,o+18),v=a8(l,o+22),F=function(e,t){if(t){for(var a="",r=0;r=0&&(b.size=y,b.originalSize=v),h.onfile(b)}return"break"}if(d){if(0x8074b50==e)return s=o+=12+(-2==d&&8),i=3,h.c=0,"break";else if(0x2014b50==e)return s=o-=4,i=3,h.c=0,"break"}}();++o);if(this.p=aL,d<0){var m=i?l.subarray(0,s-12-(-2==d&&8)-(0x8074b50==a8(l,s-16)&&4)):l.subarray(0,o);u?u.push(m,!!i):this.k[+(2==i)].push(m)}if(2&i)return this.push(l.subarray(o),t);this.p=l.subarray(o)}t&&(this.c&&aD(13),this.p=null)},rN.prototype.register=function(e){this.o[e.compression]=e},"function"==typeof queueMicrotask&&queueMicrotask;var rA=e.i(48450);let rG=[0,0,0,0,0,0,0,0,0,329,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2809,68,0,27,0,58,3,62,4,7,0,0,15,65,554,3,394,404,189,117,30,51,27,15,34,32,80,1,142,3,142,39,0,144,125,44,122,275,70,135,61,127,8,12,113,246,122,36,185,1,149,309,335,12,11,14,54,151,0,0,2,0,0,211,0,2090,344,736,993,2872,701,605,646,1552,328,305,1240,735,1533,1713,562,3,1775,1149,1469,979,407,553,59,279,31,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function rU(e){return e.node?e.node.pop:e.leaf.pop}let rL=new class{nodes=[];leaves=[];tablesBuilt=!1;buildTables(){if(this.tablesBuilt)return;this.tablesBuilt=!0,this.leaves=[];for(let t=0;t<256;t++){var e;this.leaves.push({pop:rG[t]+ +((e=t)>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122)+1,symbol:t,numBits:0,code:0})}this.nodes=[{pop:0,index0:0,index1:0}];let t=256,a=[];for(let e=0;e<256;e++)a.push({node:null,leaf:this.leaves[e]});for(;1!==t;){let e=0xfffffffe,r=0xffffffff,n=-1,i=-1;for(let o=0;oi?n:i;a[s]={node:o,leaf:null},l!==t-1&&(a[l]=a[t-1]),t--}this.nodes[0]=a[0].node,this.generateCodes(0,0,0)}determineIndex(e){return null!==e.leaf?-(this.leaves.indexOf(e.leaf)+1):this.nodes.indexOf(e.node)}generateCodes(e,t,a){if(t<0){let r=this.leaves[-(t+1)];r.code=e,r.numBits=a}else{let r=this.nodes[t];this.generateCodes(e,r.index0,a+1),this.generateCodes(e|1<=0)t=e.readFlag()?this.nodes[t].index1:this.nodes[t].index0;else{a.push(this.leaves[-(t+1)].symbol);break}}return String.fromCharCode(...a)}{let t=e.readInt(8);return String.fromCharCode(...e.readBytes(t))}}};class rz{data;bitNum;maxReadBitNum;error;stringBuffer=null;constructor(e,t=0){this.data=e,this.bitNum=t,this.maxReadBitNum=e.length<<3,this.error=!1}getCurPos(){return this.bitNum}setCurPos(e){this.bitNum=e}getBytePosition(){return this.bitNum+7>>3}isError(){return this.error}isFull(){return this.bitNum>this.maxReadBitNum}getRemainingBits(){return this.maxReadBitNum-this.bitNum}getMaxPos(){return this.maxReadBitNum}readFlag(){if(this.bitNum>=this.maxReadBitNum)return this.error=!0,!1;let e=1<<(7&this.bitNum),t=(this.data[this.bitNum>>3]&e)!=0;return this.bitNum++,t}readInt(e){if(0===e)return 0;if(this.bitNum+e>this.maxReadBitNum)return this.error=!0,0;let t=this.bitNum>>3,a=7&this.bitNum;if(this.bitNum+=e,e+a<=32){let r=0,n=e+a+7>>3;for(let e=0;e>>=a,32===e)?r>>>0:r&(1<>3;for(let e=0;e>>0:r&(1<>3,a=new Uint8Array(t),r=this.bitNum>>3,n=7&this.bitNum,i=8-n;if(0===n)a.set(this.data.subarray(r,r+t));else{let e=this.data[r];for(let o=0;o>n|t<this.maxReadBitNum)return this.error=!0,0;let e=this.bitNum>>3,t=7&this.bitNum,a=rz.f32U8;if(0===t)a[0]=this.data[e],a[1]=this.data[e+1],a[2]=this.data[e+2],a[3]=this.data[e+3];else{let r=8-t;for(let n=0;n<4;n++){let i=this.data[e+n],o=e+n+1>t|o<>>0)}getCompressionPoint(){return this.compressionPoint}getConnectionContext(){let e=this.dataBlockDataMap;return{compressionPoint:this.compressionPoint,ghostTracker:this.ghostTracker,getDataBlockParser:e=>this.registry.getDataBlockParser(e),getDataBlockData:e?t=>e.get(t):void 0,getGhostParser:e=>this.registry.getGhostParser(e)}}setNextRecvEventSeq(e){this.nextRecvEventSeq=e>>>0}setConnectionProtocolState(e){for(this.lastSeqRecvdAtSend=e.lastSeqRecvdAtSend.slice(0,32);this.lastSeqRecvdAtSend.length<32;)this.lastSeqRecvdAtSend.push(0);this.lastSeqRecvd=e.lastSeqRecvd>>>0,this.highestAckedSeq=e.highestAckedSeq>>>0,this.lastSendSeq=e.lastSendSeq>>>0,this.recvAckMask=e.ackMask>>>0,this.connectSequence=e.connectSequence>>>0,this.lastRecvAckAck=e.lastRecvAckAck>>>0,this.connectionEstablished=e.connectionEstablished}onSendPacketTrigger(){this.lastSendSeq=this.lastSendSeq+1>>>0,this.lastSeqRecvdAtSend[31&this.lastSendSeq]=this.lastSeqRecvd>>>0}applyProtocolHeader(e){if(e.connectSeqBit!==(1&this.connectSequence)||e.ackByteCount>4||e.packetType>2)return{accepted:!1,dispatchData:!1};let t=(e.seqNumber|0xfffffe00&this.lastSeqRecvd)>>>0;if(t>>0),this.lastSeqRecvd+31>>0;if(a>>0),this.lastSendSeq>>0,0===e.packetType&&(this.recvAckMask=(1|this.recvAckMask)>>>0);for(let t=this.highestAckedSeq+1;t<=a;t++)(e.ackMask&1<<(a-t&31))!=0&&(this.lastRecvAckAck=this.lastSeqRecvdAtSend[31&t]>>>0);t-this.lastRecvAckAck>32&&(this.lastRecvAckAck=t-32),this.highestAckedSeq=a;let n=this.lastSeqRecvd!==t&&0===e.packetType;return this.lastSeqRecvd=t,{accepted:!0,dispatchData:n}}parsePacket(e){let t=new rz(e),a=this.readDnetHeader(t),r=this.applyProtocolHeader(a);if(this.packetsParsed++,!r.accepted)return this.protocolRejected++,{dnetHeader:a,rateInfo:{},gameState:this.emptyGameState(),events:[],ghosts:[]};if(!r.dispatchData)return this.protocolNoDispatch++,{dnetHeader:a,rateInfo:{},gameState:this.emptyGameState(),events:[],ghosts:[]};let n=this.readRateInfo(t);t.setStringBuffer(!0);let i=this.readGameState(t),o=void 0===i.controlObjectDataStart||void 0!==i.controlObjectData,s=o?this.readEvents(t):[],l=s[s.length-1],c=!l||l.dataBitsEnd!==l.dataBitsStart,d=o&&c?t.getCurPos():void 0,u=o&&c?this.readGhosts(t,a.seqNumber):[];return t.setStringBuffer(!1),{dnetHeader:a,rateInfo:n,gameState:i,events:s,ghosts:u,ghostSectionStart:d}}readDnetHeader(e){let t=e.readFlag(),a=e.readInt(1),r=e.readInt(9),n=e.readInt(9),i=e.readInt(2),o=e.readInt(3),s=o>0?e.readInt(8*o):0;return{gameFlag:t,connectSeqBit:a,seqNumber:r,highestAck:n,packetType:i,ackByteCount:o,ackMask:s}}readRateInfo(e){let t={};return e.readFlag()&&(t.updateDelay=e.readInt(10),t.packetSize=e.readInt(10)),e.readFlag()&&(t.maxUpdateDelay=e.readInt(10),t.maxPacketSize=e.readInt(10)),t}readGameState(e){let t,a,r,n,i,o,s,l,c,d,u,h,m,f,g,p=e.readInt(32);e.readFlag()&&(e.readFlag()&&(t=e.readFloat(7)),e.readFlag()&&(a=1.5*e.readFloat(7))),e.readFlag()&&(r=e.readFlag(),n=e.readFlag()),e.readFlag()&&((i=e.readFlag())&&(o={x:e.readF32(),y:e.readF32(),z:e.readF32()}),1===(s=e.readRangedU32(0,2))?e.readFlag()&&(l=e.readRangedU32(0,1023)):2===s&&(c={x:e.readF32(),y:e.readF32(),z:e.readF32()}));let y=e.readFlag(),v=e.readFlag();if(e.readFlag())if(e.readFlag()){let g=e.readInt(10);d=g,u=e.getCurPos();let F=e.savePos(),b=this.ghostTracker.getGhost(g),S=b?this.registry.getGhostParser(b.classId):void 0,x=this.controlParserByGhostIndex.get(g),k=this.registry.getGhostParser(25),w=this.registry.getGhostParser(4),I=[],C=new Set,P=e=>{!e?.readPacketData||C.has(e.name)||(C.add(e.name),I.push(e))};P(S),P(x),P(k),P(w);let _=!1;for(let t of I){e.restorePos(F);try{let a=this.getConnectionContext(),r=t.readPacketData(e,a);if(e.getCurPos()-u<=0||e.isError())continue;m=r,h=e.getCurPos(),this.controlParserByGhostIndex.set(g,t),a.compressionPoint!==this.compressionPoint&&(this.compressionPoint=a.compressionPoint,f=this.compressionPoint),this.controlObjectParsed++,_=!0;break}catch{}}if(!_)return e.restorePos(F),h=u,this.controlObjectFailed++,{lastMoveAck:p,damageFlash:t,whiteOut:a,selfLocked:r,selfHomed:n,seekerTracking:i,seekerTrackingPos:o,seekerMode:s,seekerObjectGhostIndex:l,targetPos:c,pinged:y,jammed:v,controlObjectGhostIndex:d,controlObjectDataStart:u,controlObjectDataEnd:h,controlObjectData:m,targetVisibility:[]}}else f={x:e.readF32(),y:e.readF32(),z:e.readF32()},this.compressionPoint=f;let F=[];for(;e.readFlag();)F.push({index:e.readInt(4),mask:e.readInt(32)});return e.readFlag()&&(g=e.readInt(8)),{lastMoveAck:p,damageFlash:t,whiteOut:a,selfLocked:r,selfHomed:n,seekerTracking:i,seekerTrackingPos:o,seekerMode:s,seekerObjectGhostIndex:l,targetPos:c,pinged:y,jammed:v,controlObjectGhostIndex:d,controlObjectDataStart:u,controlObjectDataEnd:h,controlObjectData:m,compressionPoint:f,targetVisibility:F.length>0?F:void 0,cameraFov:g}}readEvents(e){let t=[],a=!0,r=-2;for(;;){let n,i,o,s=e.readFlag();if(a&&!s){if(a=!1,!e.readFlag()){this.dispatchGuaranteedEvents(t);break}}else if(a||s){if(!s)break}else{this.dispatchGuaranteedEvents(t);break}!a&&(r=n=e.readFlag()?r+1&127:e.readInt(7),(i=n|0xffffff80&this.nextRecvEventSeq)0&&this.pendingGuaranteedEvents[0].absoluteSequenceNumber===this.nextRecvEventSeq;){let t=this.pendingGuaranteedEvents.shift();if(!t)break;this.nextRecvEventSeq=this.nextRecvEventSeq+1>>>0,e.push(t.event),t.event.parsedData&&this.applyEventSideEffects(t.event.parsedData)}}applyEventSideEffects(e){let t=e.type;if("GhostingMessageEvent"===t){let t=e.message;"number"==typeof t&&2===t&&this.ghostTracker.clear();return}if("GhostAlwaysObjectEvent"===t){let t=e.ghostIndex,a=e.classId;if("number"==typeof t&&"number"==typeof a){let e=this.registry.getGhostParser(a);this.ghostTracker.createGhost(t,a,e?.name??`unknown_${a}`)}}"SimDataBlockEvent"===t&&this.dataBlockDataMap&&e.dataBlockData&&"number"==typeof e.objectId&&this.dataBlockDataMap.set(e.objectId,e.dataBlockData)}readGhosts(e,t){let a=[];if(!e.readFlag())return a;let r=e.readInt(3)+3;for(;e.readFlag();){let n;if(e.isError())break;let i=e.readInt(r);if(e.isError())break;if(e.readFlag()){this.ghostTracker.deleteGhost(i),this.ghostDeletes++,a.push({index:i,type:"delete",updateBitsStart:e.getCurPos(),updateBitsEnd:e.getCurPos()});continue}let o=!this.ghostTracker.hasGhost(i);n=o?e.readInt(7)+0:this.ghostTracker.getGhost(i)?.classId;let s=e.getCurPos(),l=void 0!==n?this.registry.getGhostParser(n):void 0;if(o&&!l){this.ghostsTrackerDiverged++,rH("DIVERGED pkt=%d seq=%d idx=%d classId=%d bit=%d/%d trackerSize=%d (server sent UPDATE for ghost not in our tracker; 7-bit classId is actually update data)",this.packetsParsed,t,i,n,s,e.getMaxPos(),this.ghostTracker.size()),a.push({index:i,type:"create",classId:n,updateBitsStart:s,updateBitsEnd:s});break}let c=!1;if(l)try{let t=this.getConnectionContext();t.currentGhostIndex=i;let r=l.unpackUpdate(e,o,t),d=e.getCurPos();o&&void 0!==n?(this.ghostTracker.createGhost(i,n,l.name),this.ghostCreatesParsed++):this.ghostUpdatesParsed++,a.push({index:i,type:o?"create":"update",classId:n,updateBitsStart:s,updateBitsEnd:d,parsedData:r}),c=!0}catch(d){this.ghostsFailed++;let r=o?"create":"update",c=d instanceof Error?d.message:String(d);rH("FAIL pkt=%d seq=%d #%d idx=%d op=%s classId=%d parser=%s bit=%d/%d trackerSize=%d err=%s",this.packetsParsed,t,a.length,i,r,n,l.name,s,e.getMaxPos(),this.ghostTracker.size(),c)}if(!c){rH("STOP pkt=%d seq=%d idx=%d op=%s classId=%d parser=%s bit=%d/%d",this.packetsParsed,t,i,o?"create":"update",n,l?.name??"NONE",s,e.getMaxPos()),a.push({index:i,type:o?"create":"update",classId:n,updateBitsStart:s,updateBitsEnd:s});break}}return a}emptyGameState(){return{lastMoveAck:0,pinged:!1,jammed:!1}}}class r${eventParsers=new Map;ghostParsers=new Map;dataBlockParsers=new Map;eventCatalog=new Map;ghostCatalog=new Map;dataBlockCatalog=new Map;catalogEvent(e){this.eventCatalog.set(e.name,e)}catalogGhost(e){this.ghostCatalog.set(e.name,e)}catalogDataBlock(e){this.dataBlockCatalog.set(e.name,e)}bindDeterministicDataBlocks(e,t){let a=0,r=[];for(let n=0;n0&&(r.sounds=t)}if(e.readFlag()){let t=[];for(let a=0;a<4;a++)e.readFlag()&&t.push({index:a,sequence:e.readInt(5),state:e.readInt(2),forward:e.readFlag(),atEnd:e.readFlag()});t.length>0&&(r.threads=t)}let n=!1;if(e.readFlag()){let a=[];for(let r=0;r<8;r++)if(e.readFlag()){let i={index:r};e.readFlag()?i.dataBlockId=rX(e):i.dataBlockId=0,e.readFlag()&&(e.readFlag()?i.skinTagIndex=e.readInt(10):i.skinName=e.readString(),n=!0),i.triggerDown=e.readFlag(),i.loaded=e.readFlag(),i.ammo=e.readFlag(),i.wet=e.readFlag(),i.target=e.readFlag(),i.fireCount=e.readInt(3),t&&(i.imageExtraFlag=e.readFlag()),a.push(i)}a.length>0&&(r.images=a)}if(e.readFlag()){if(e.readFlag()){r.stateAEnabled=e.readFlag(),r.stateB=e.readFlag();let t=e.readFlag();r.hasInvulnerability=t,t?(r.invulnerabilityVisual=e.readFlag(),r.invulnerabilityTicks=e.readU32()):r.binaryCloak=e.readFlag()}if(e.readFlag())if(e.readFlag()){let t=e.readFlag();r.stateBMode=t,t?r.energyPackOn=!0:r.energyPackOn=!1}else r.shieldNormal=e.readNormalVector(8),r.energyPercent=e.readFloat(5);e.readFlag()&&(r.stateValue1=e.readU32(),r.stateValue2=e.readU32())}return n&&(r.imageSkinDirty=!0),e.readFlag()&&(e.readFlag()?(r.mountObject=e.readInt(10),r.mountNode=e.readInt(5)):r.mountObject=-1),r}function rQ(e,t,a){let r=rJ(e,t,a);if(e.readFlag()&&(r.impactSound=e.readInt(3)),e.readFlag()&&(r.action=e.readInt(8),r.actionHoldAtEnd=e.readFlag(),r.actionAtEnd=e.readFlag(),r.actionFirstPerson=e.readFlag(),!r.actionAtEnd&&e.readFlag()&&(r.actionAnimPos=e.readSignedFloat(6))),e.readFlag()&&(r.armAction=e.readInt(8)),e.readFlag())return r;if(e.readFlag()){if(r.actionState=e.readInt(3),e.readFlag()&&(r.recoverTicks=e.readInt(7)),r.moveFlag0=e.readFlag(),r.moveFlag1=e.readFlag(),r.position=e.readCompressedPoint(a.compressionPoint),e.readFlag()){let t=e.readInt(13)/32,a=e.readNormalVector(10);r.velocity={x:a.x*t,y:a.y*t,z:a.z*t}}else r.velocity={x:0,y:0,z:0};r.headX=e.readSignedFloat(6),r.headZ=e.readSignedFloat(6),r.rotationZ=2*e.readFloat(7)*Math.PI,r.move=rK(e),r.allowWarp=e.readFlag()}return r.energy=e.readFloat(5),r}function r0(e,t){let a={};if(a.energyLevel=e.readF32(),a.rechargeRate=e.readF32(),a.actionState=e.readInt(3),e.readFlag()&&(a.recoverTicks=e.readInt(7)),e.readFlag()&&(a.jumpDelay=e.readInt(7)),e.readFlag()){let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};a.position=r,t.compressionPoint=r,a.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},a.jumpSurfaceLastContact=e.readInt(4)}if(a.headX=e.readF32(),a.headZ=e.readF32(),a.rotationZ=e.readF32(),e.readFlag()){let r=e.readInt(10);a.controlObjectGhost=r;let n=t.ghostTracker.getGhost(r),i=n?t.getGhostParser?.(n.classId):void 0;if(i?.readPacketData){let n=t.currentGhostIndex;t.currentGhostIndex=r,a.controlObjectData=i.readPacketData(e,t),t.currentGhostIndex=n}}return a.disableMove=e.readFlag(),a.pilot=e.readFlag(),a}function r1(e,t,a){let r=rJ(e,t,a);return(r.jetting=e.readFlag(),e.readFlag())?r._controlledEarlyReturn=!0:(r.steeringYaw=e.readFloat(9),r.steeringPitch=e.readFloat(9),r.move=rK(e),r.frozen=e.readFlag(),e.readFlag()&&(r.position=e.readCompressedPoint(a.compressionPoint),r.angPosition={x:e.readF32(),y:e.readF32(),z:e.readF32(),w:e.readF32()},r.linMomentum=e.readPoint3F(),r.angMomentum=e.readPoint3F()),e.readFlag()&&(r.energy=e.readFloat(8))),r}function r2(e,t){let a={};a.energyLevel=e.readF32(),a.rechargeRate=e.readF32(),a.steering={x:e.readF32(),y:e.readF32()};let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};return a.linPosition=r,a.angPosition={x:e.readF32(),y:e.readF32(),z:e.readF32(),w:e.readF32()},a.linMomentum=e.readPoint3F(),a.angMomentum=e.readPoint3F(),a.disableMove=e.readFlag(),a.frozen=e.readFlag(),t.compressionPoint=r,a}function r3(e,t){let a=r2(e,t);a.braking=e.readFlag();let r=4,n=t.currentGhostIndex;if(void 0!==n){let e=nR.get(n);void 0!==e&&(r=e)}let i=[];for(let t=0;t64)throw Error(`Invalid Sky fogVolumeCount: ${t}`);r.fogVolumeCount=t,r.useSkyTextures=e.readBool(),r.renderBottomTexture=e.readBool(),r.skySolidColor={r:e.readF32(),g:e.readF32(),b:e.readF32()},r.windEffectPrecipitation=e.readBool();let a=[];for(let r=0;r3)throw Error(`Invalid precipitation colorCount: ${t}`);let a=[];for(let r=0;rMath.floor(e.getRemainingBits()/96))throw Error(`Invalid physicalZone point count: ${t}`);let a=[];for(let r=0;rMath.floor(e.getRemainingBits()/128))throw Error(`Invalid physicalZone plane count: ${n}`);let i=[];for(let t=0;tMath.floor(e.getRemainingBits()/128))throw Error(`Invalid physicalZone edge count: ${o}`);let s=[];for(let t=0;t0&&(a.audioData=e.readBitsBuffer(8*r)),a}function n4(e,t){return{type:"GhostingMessageEvent",sequence:e.readU32(),message:e.readInt(3),ghostCount:e.readInt(11)}}function n6(e,t){let a={type:"GhostAlwaysObjectEvent"};a.ghostIndex=e.readInt(10);let r=e.readFlag();if(a._hasObjectData=r,r){let r=e.readInt(7);a.classId=r;let n=t.getGhostParser?.(r);if(!n)throw Error(`No ghost parser for GhostAlwaysObjectEvent classId=${r}`);a.objectData=n.unpackUpdate(e,!0,t)}return a}function n8(e,t){let a={type:"PathManagerEvent"};if(e.readFlag()){a.messageType="NewPaths";let t=e.readU32(),r=[];for(let a=0;a0&&(t.hudImages=a),t}function ig(e){let t={};e.readFlag()&&(t.crc=e.readU32()),t.shapeName=e.readString(),t.mountPoint=e.readU32(),e.readFlag()||(t.offset=e.readAffineTransform()),t.firstPerson=e.readFlag(),t.mass=e.readF32(),t.usesEnergy=e.readFlag(),t.minEnergy=e.readF32(),t.hasFlash=e.readFlag(),t.projectile=il(e),t.muzzleFlash=il(e),t.isSeeker=e.readFlag(),t.isSeeker&&(t.seekerRadius=e.readF32(),t.maxSeekAngle=e.readF32(),t.seekerLockTime=e.readF32(),t.seekerFreeTime=e.readF32(),t.isTargetLockRequired=e.readFlag(),t.maxLockRange=e.readF32()),t.cloakable=e.readFlag(),t.lightType=e.readRangedU32(0,3),0!==t.lightType&&(t.lightRadius=e.readF32(),t.lightTime=e.readS32(),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7)}),t.shellExitDir={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.shellExitVariance=e.readF32(),t.shellVelocity=e.readF32(),t.casing=il(e),t.accuFire=e.readFlag();let a=[];for(let t=0;t<31;t++){if(!e.readFlag())continue;let t={};t.name=e.readString(),t.transitionOnAmmo=e.readInt(5),t.transitionOnNoAmmo=e.readInt(5),t.transitionOnTarget=e.readInt(5),t.transitionOnNoTarget=e.readInt(5),t.transitionOnWet=e.readInt(5),t.transitionOnNotWet=e.readInt(5),t.transitionOnTriggerUp=e.readInt(5),t.transitionOnTriggerDown=e.readInt(5),t.transitionOnTimeout=e.readInt(5),t.transitionGeneric0In=e.readInt(5),t.transitionGeneric0Out=e.readInt(5),e.readFlag()&&(t.timeoutValue=e.readF32()),t.waitForTimeout=e.readFlag(),t.fire=e.readFlag(),t.ejectShell=e.readFlag(),t.scaleAnimation=e.readFlag(),t.direction=e.readFlag(),t.reload=e.readFlag(),e.readFlag()&&(t.energyDrain=e.readF32()),t.loaded=e.readInt(3),t.spin=e.readInt(3),t.recoil=e.readInt(3),e.readFlag()&&(t.sequence=e.readSignedInt(16)),e.readFlag()&&(t.sequenceVis=e.readSignedInt(16)),t.flashSequence=e.readFlag(),t.ignoreLoadedForReady=e.readFlag(),t.emitter=il(e),null!==t.emitter&&(t.emitterTime=e.readF32(),t.emitterNode=e.readS32()),t.sound=il(e),a.push(t)}return t.states=a,t}function ip(e){let t=im(e);t.renderFirstPerson=e.readFlag(),t.minLookAngle=e.readF32(),t.maxLookAngle=e.readF32(),t.maxFreelookAngle=e.readF32(),t.maxTimeScale=e.readF32(),t.maxStepHeight=e.readF32(),t.runForce=e.readF32(),t.runEnergyDrain=e.readF32(),t.minRunEnergy=e.readF32(),t.maxForwardSpeed=e.readF32(),t.maxBackwardSpeed=e.readF32(),t.maxSideSpeed=e.readF32(),t.maxUnderwaterForwardSpeed=e.readF32(),t.maxUnderwaterBackwardSpeed=e.readF32(),t.maxUnderwaterSideSpeedRef=il(e),e.readFlag()&&(t.runSurfaceAngleRef=e.readInt(11)),t.runSurfaceAngle=e.readF32(),t.recoverDelay=e.readF32(),t.recoverRunForceScale=e.readF32(),t.jumpForce=e.readF32(),t.jumpEnergyDrain=e.readF32(),t.minJumpEnergy=e.readF32(),t.minJumpSpeed=e.readF32(),t.maxJumpSpeed=e.readF32(),t.jumpSurfaceAngle=e.readF32(),t.minJetEnergy=e.readF32(),t.splashVelocity=e.readF32(),t.splashAngle=e.readF32(),t.splashFreqMod=e.readF32(),t.splashVelEpsilon=e.readF32(),t.bubbleEmitTime=e.readF32(),t.medSplashSoundVel=e.readF32(),t.hardSplashSoundVel=e.readF32(),t.exitSplashSoundVel=e.readF32(),t.jumpDelay=e.readInt(7),t.horizMaxSpeed=e.readF32(),t.horizResistSpeed=e.readF32(),t.horizResistFactor=e.readF32(),t.upMaxSpeed=e.readF32(),t.upResistSpeed=e.readF32(),t.upResistFactor=e.readF32(),t.jetEnergyDrain=e.readF32(),t.canJet=e.readF32(),t.maxJetHorizontalPercentage=e.readF32(),t.maxJetForwardSpeed=e.readF32(),t.jetForce=e.readF32(),t.minJetSpeed=e.readF32(),t.maxDamage=e.readF32(),t.minImpactDamageSpeed=e.readF32(),t.impactDamageScale=e.readF32(),t.footSplashHeight=e.readF32();let a=[];for(let t=0;t<32;t++)e.readFlag()?a.push(e.readInt(11)):a.push(null);t.sounds=a,t.boxSize={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.footPuffEmitter=il(e),t.footPuffNumParts=e.readF32(),t.footPuffRadius=e.readF32(),t.decalData=il(e),t.decalOffset=e.readF32(),t.dustEmitter=il(e),t.splash=il(e);let r=[];for(let t=0;t<3;t++)r.push(il(e));return t.splashEmitters=r,t.groundImpactMinSpeed=e.readF32(),t.groundImpactShakeFreq={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.groundImpactShakeAmp={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.groundImpactShakeDuration=e.readF32(),t.groundImpactShakeFalloff=e.readF32(),t.boundingRadius=e.readF32(),t.moveBubbleSize=e.readF32(),t}function iy(e){let t=im(e);t.bodyRestitution=e.readF32(),t.bodyFriction=e.readF32();let a=[];for(let t=0;t<2;t++)a.push(il(e));t.impactSounds=a,t.minImpactSpeed=e.readF32(),t.softImpactSpeed=e.readF32(),t.hardImpactSpeed=e.readF32(),t.minRollSpeed=e.readF32(),t.maxSteeringAngle=e.readF32(),t.maxDrag=e.readF32(),t.minDrag=e.readF32(),t.cameraOffset=e.readF32(),t.cameraLag=e.readF32(),t.jetForce=e.readF32(),t.jetEnergyDrain=e.readF32(),t.minJetEnergy=e.readF32(),t.integration=e.readF32(),t.collisionTol=e.readF32(),t.massCenter=e.readF32(),t.exitSplashSoundVelocity=e.readF32(),t.softSplashSoundVelocity=e.readF32(),t.mediumSplashSoundVelocity=e.readF32(),t.hardSplashSoundVelocity=e.readF32();let r=[];for(let t=0;t<5;t++)r.push(il(e));t.waterSounds=r,t.dustEmitter=il(e);let n=[];for(let t=0;t<3;t++)n.push(il(e));t.damageEmitters=n;let i=[];for(let t=0;t<2;t++)i.push(il(e));return t.splashEmitters=i,t.damageEmitterOffset0={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.damageEmitterOffset1={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.damageLevelTolerance0=e.readF32(),t.damageLevelTolerance1=e.readF32(),t.splashFreqMod=e.readF32(),t.splashVelEpsilon=e.readF32(),t.collDamageThresholdVel=e.readF32(),t.collDamageMultiplier=e.readF32(),t}function iv(e){let t=iy(e);t.jetActivateSound=il(e),t.jetDeactivateSound=il(e);let a=[];for(let t=0;t<4;t++)a.push(il(e));return t.jetEmitters=a,t.maneuveringForce=e.readF32(),t.horizontalSurfaceForce=e.readF32(),t.verticalSurfaceForce=e.readF32(),t.autoInputDamping=e.readF32(),t.steeringForce=e.readF32(),t.steeringRollForce=e.readF32(),t.rollForce=e.readF32(),t.autoAngularForce=e.readF32(),t.rotationalDrag=e.readF32(),t.maxAutoSpeed=e.readF32(),t.autoLinearForce=e.readF32(),t.hoverHeight=e.readF32(),t.createHoverHeight=e.readF32(),t.minTrailSpeed=e.readF32(),t.vertThrustMultiple=e.readF32(),t.maxForwardSpeed=e.readF32(),t}function iF(e){let t=iy(e);t.dragForce=e.readF32(),t.mainThrustForce=e.readF32(),t.reverseThrustForce=e.readF32(),t.strafeThrustForce=e.readF32(),t.turboFactor=e.readF32(),t.stabLenMin=e.readF32(),t.stabLenMax=e.readF32(),t.stabSpringConstant=e.readF32(),t.stabDampingConstant=e.readF32(),t.gyroDrag=e.readF32(),t.normalForce=e.readF32(),t.restorativeForce=e.readF32(),t.steeringForce=e.readF32(),t.rollForce=e.readF32(),t.pitchForce=e.readF32(),t.floatingThrustFactor=e.readF32(),t.brakingForce=e.readF32(),t.dustTrailOffset={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.dustTrailFreqMod=e.readF32(),t.triggerTrailHeight=e.readF32(),t.floatSound=il(e),t.thrustSound=il(e),t.turboSound=il(e);let a=[];for(let t=0;t<3;t++)a.push(il(e));return t.jetEmitters=a,t.dustTrailEmitter=il(e),t.mainThrustEmitterFactor=e.readF32(),t.strafeThrustEmitterFactor=e.readF32(),t.reverseThrustEmitterFactor=e.readF32(),t}function ib(e){let t=iy(e);return t.tireRadius=e.readF32(),t.tireStaticFriction=e.readF32(),t.tireKineticFriction=e.readF32(),t.tireRestitution=e.readF32(),t.tireLateralForce=e.readF32(),t.tireLateralDamping=e.readF32(),t.tireLateralRelaxation=e.readF32(),t.tireLongitudinalForce=e.readF32(),t.tireLongitudinalDamping=e.readF32(),t.tireEmitter=il(e),t.jetSound=il(e),t.engineSound=il(e),t.squealSound=il(e),t.wadeSound=il(e),t.spring=e.readF32(),t.springDamping=e.readF32(),t.springLength=e.readF32(),t.brakeTorque=e.readF32(),t.engineTorque=e.readF32(),t.engineBrake=e.readF32(),t.maxWheelSpeed=e.readF32(),t.steeringAngle=e.readF32(),t.steeringReturn=e.readF32(),t.steeringDamping=e.readF32(),t.powerSteeringFactor=e.readF32(),t}function iS(e){let t=im(e);return t.noIndividualDamage=e.readFlag(),t.dynamicTypeField=e.readS32(),t}function ix(e){let t=iS(e);return t.thetaMin=e.readF32(),t.thetaMax=e.readF32(),t.thetaNull=e.readF32(),t.neverUpdateControl=e.readFlag(),t.primaryAxis=e.readRangedU32(0,3),t.maxCapacitorEnergy=e.readF32(),t.capacitorRechargeRate=e.readF32(),t}function ik(e){let t=ig(e);return t.activationMS=e.readInt(8),t.deactivateDelayMS=e.readInt(8),t.degPerSecTheta=e.readRangedU32(0,1080),t.degPerSecPhi=e.readRangedU32(0,1080),t.dontFireInsideDamageRadius=e.readFlag(),t.damageRadius=e.readF32(),t.useCapacitor=e.readFlag(),t}function iw(e){let t=im(e);return t.friction=e.readFloat(10),t.elasticity=e.readFloat(10),t.sticky=e.readFlag(),e.readFlag()&&(t.gravityMod=e.readFloat(10)),e.readFlag()&&(t.maxVelocity=e.readF32()),e.readFlag()&&(t.lightType=e.readInt(2),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7)},t.lightTime=e.readS32(),t.lightRadius=e.readF32(),t.lightOnlyStatic=e.readFlag()),t}function iI(e){let t={};t.projectileShapeName=e.readString(),t.faceViewerLinkTime=e.readS32(),t.lifetime=e.readS32(),t.faceViewer=e.readFlag(),e.readFlag()&&(t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()}),t.baseEmitter=il(e),t.delayEmitter=il(e),t.bubbleEmitter=il(e),t.explosion=il(e),t.underwaterExplosion=il(e),t.splash=il(e),t.sound=il(e),t.wetFireSound=il(e),t.fireSound=il(e);let a=[];for(let t=0;t<6;t++)a.push(il(e));return t.decals=a,e.readFlag()&&(t.lightRadius=e.readFloat(8),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7)}),e.readFlag()&&(t.underwaterLightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7)}),t.explodeOnWaterImpact=iu(e),t.depthTolerance=e.readF32(),t}function iC(e){let t=iI(e);return t.dryVelocity=e.readF32(),t.wetVelocity=e.readF32(),t.fizzleTime=e.readU32(),t.fizzleType=e.readU32(),t.hardRetarget=e.readFlag(),t.inheritedVelocityScale=e.readRangedU32(0,90),t.lifetimeMS=e.readRangedU32(0,90),t.collideWithOwnerTimeMS=e.readU32(),t.proximityRadius=e.readU32(),t.tracerProjectile=e.readFlag(),t}function iP(e){let t=iI(e);return t.grenadeElasticity=e.readS32(),t.grenadeFriction=e.readF32(),t.dragCoefficient=e.readF32(),t.windCoefficient=e.readF32(),t.gravityMod=e.readF32(),t.muzzleVelocity=e.readF32(),t.drag=e.readF32(),t.lifetimeMS=e.readS32(),t}function i_(e){let t=iI(e);return t.lifetimeMS=e.readS32(),t.muzzleVelocity=e.readF32(),t.turningSpeed=e.readF32(),t.proximityRadius=e.readF32(),t.terrainAvoidanceSpeed=e.readF32(),t.terrainScanAhead=e.readF32(),t.terrainHeightFail=e.readF32(),t.terrainAvoidanceRadius=e.readF32(),t.flareDistance=e.readF32(),t.flareAngle=e.readF32(),t.useFlechette=iu(e),t.maxVelocity=e.readF32(),t.acceleration=e.readF32(),t.flechetteDelayMs=e.readS32(),t.exhaustTimeMs=e.readS32(),t.exhaustNodeName=e.readString(),t.casingShapeName=e.readString(),t.casingDebris=il(e),t.puffEmitter=il(e),t.exhaustEmitter=il(e),t}function iD(e){let t=iI(e);t.maxRifleRange=e.readF32(),t.rifleHeadMultiplier=e.readF32(),t.beamColor=id(e),t.fadeTime=e.readF32(),t.startBeamWidth=e.readF32(),t.endBeamWidth=e.readF32(),t.pulseBeamWidth=e.readF32(),t.beamFlareAngle=e.readF32(),t.minFlareSize=e.readF32(),t.maxFlareSize=e.readF32(),t.pulseSpeed=e.readF32(),t.pulseLength=e.readF32(),t.lightColor=id(e),t.lightRadius=e.readF32();let a=[];for(let t=0;t<12;t++)a.push(e.readString());return t.textures=a,t}function iM(e){let t=iI(e);t.zapDuration=e.readF32(),t.boltLength=e.readF32(),t.numParts=e.readF32(),t.lightningFreq=e.readF32(),t.lightningDensity=e.readF32(),t.lightningAmp=e.readF32(),t.lightningWidth=e.readF32(),t.shockwave=il(e);let a=[],r=[],n=[],i=[];for(let t=0;t<2;t++)a.push(e.readF32()),r.push(e.readF32()),n.push(e.readF32()),i.push(e.readF32());t.startWidth=a,t.endWidth=r,t.boltSpeed=n,t.texWrap=i;let o=[];for(let t=0;t<4;t++)o.push(e.readString());return t.textures=o,t.emitter=il(e),t}function iT(e){let t=iI(e);return t.beamRange=e.readF32(),t.beamDrainRate=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=e.readF32(),t.startWidth=e.readF32(),t.endWidth=e.readF32(),t.mainBeamTexture=e.readString(),t.innerBeamTexture=e.readString(),t.flareTexture=e.readString(),t.hitEmitter=il(e),t}function iE(e){let t=iI(e);return t.beamRange=e.readF32(),t.beamRepairRate=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=e.readF32(),t.startWidth=e.readF32(),t.endWidth=e.readF32(),t.startBeamWidth=e.readF32(),t.endBeamWidth=e.readF32(),t.mainBeamTexture=e.readString(),t.innerBeamTexture=e.readString(),t}function iB(e){let t=iI(e);t.maxRifleRange=e.readF32(),t.beamColor=id(e),t.startBeamWidth=e.readF32(),t.pulseBeamWidth=e.readF32(),t.beamFlareAngle=e.readF32(),t.minFlareSize=e.readF32(),t.maxFlareSize=e.readF32(),t.pulseSpeed=e.readF32(),t.pulseLength=e.readF32();let a=[];for(let t=0;t<4;t++)a.push(e.readString());return t.textures=a,t}function ij(e){let t=iC(e);return t.tracerLength=e.readF32(),t.tracerAlpha=e.readF32(),t.tracerMinPixels=e.readF32(),t.crossViewFraction=iu(e),t.tracerColor=id(e),t.tracerWidth=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=iu(e),t.textureName0=e.readString(),t.textureName1=e.readString(),t}function iR(e){let t=iP(e);return t.energyDrainPerSecond=e.readF32(),t.energyMinDrain=e.readF32(),t.beamWidth=e.readF32(),t.beamRange=e.readF32(),t.numSegments=e.readF32(),t.texRepeat=e.readF32(),t.beamFlareAngle=e.readF32(),t.beamTexture=e.readString(),t.flareTexture=e.readString(),t}function iN(e){let t=iC(e);return t.numFlares=e.readF32(),t.flareColor=id(e),t.flareTexture=e.readString(),t.smokeTexture=e.readString(),t.size=e.readF32(),t.flareModTexture=e.readF32(),t.smokeSize=e.readF32(),t}function iA(e){let t=iP(e);return t.smokeDist=e.readF32(),t.noSmoke=e.readF32(),t.boomTime=e.readF32(),t.casingDist=e.readF32(),t.smokeCushion=e.readF32(),t.noSmokeCounter=e.readF32(),t.smokeTexture=e.readString(),t.bombTexture=e.readString(),t}function iG(e){let t=iP(e);return t.size=e.readF32(),t.useLensFlare=iu(e),t.flareTexture=e.readString(),t.lensFlareTexture=e.readString(),t}function iU(e){let t={};t.dtsFileName=e.readString(),t.soundProfile=il(e),t.particleEmitter=il(e),t.particleDensity=e.readInt(14),t.particleRadius=e.readF32(),t.faceViewer=e.readFlag(),e.readFlag()&&(t.explosionScale={x:e.readInt(16),y:e.readInt(16),z:e.readInt(16)}),t.playSpeed=e.readInt(14),t.debrisThetaMin=e.readRangedU32(0,180),t.debrisThetaMax=e.readRangedU32(0,180),t.debrisPhiMin=e.readRangedU32(0,360),t.debrisPhiMax=e.readRangedU32(0,360),t.debrisMinVelocity=e.readRangedU32(0,1e3),t.debrisMaxVelocity=e.readRangedU32(0,1e3),t.debrisNum=e.readInt(14),t.debrisVariance=e.readRangedU32(0,1e4),t.delayMS=e.readInt(16),t.delayVariance=e.readInt(16),t.lifetimeMS=e.readInt(16),t.lifetimeVariance=e.readInt(16),t.offset=e.readF32(),t.shakeCamera=e.readFlag(),t.hasLight=e.readFlag(),t.camShakeFreq={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.camShakeAmp={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.camShakeDuration=e.readF32(),t.camShakeRadius=e.readF32(),t.camShakeFalloff=e.readF32(),t.shockwave=il(e),t.debris=il(e);let a=[];for(let t=0;t<4;t++)a.push(il(e));t.emitters=a;let r=[];for(let t=0;t<5;t++)r.push(il(e));t.subExplosions=r;let n=e.readRangedU32(0,4),i=[];for(let t=0;t0&&oi("DataBlock binding: %d/%d bound, missing parsers: %s",t,rO.length,a.join(", "));const{bound:r,missing:n}=this.registry.bindDeterministicGhosts(rV,0);n.length>0&&oi("Ghost binding: %d/%d bound, missing parsers: %s",r,rV.length,n.join(", "));const{bound:i,missing:o}=this.registry.bindDeterministicEvents(rq,255);o.length>0&&oi("Event binding: %d/%d bound, missing parsers: %s",i,rq.length,o.join(", ")),this.packetParser=new rW(this.registry,this.ghostTracker)}getRegistry(){return this.registry}getGhostTracker(){return this.ghostTracker}getPacketParser(){return this.packetParser}get loaded(){return this._loaded}get header(){if(!this._loaded)throw Error("must call load() first");return this._header}get initialBlock(){if(!this._loaded)throw Error("must call load() first");return this._initialBlock}get blockCount(){if(!this._loaded)throw Error("must call load() first");if(void 0===this._blockCount){let e=this._decompressedData,t=this._decompressedView,a=0,r=0;for(;r+2<=e.length;){let n=4095&t.getUint16(r,!0);if((r+=2+n)>e.length)break;a++}this._blockCount=a}return this._blockCount}get blockCursor(){if(!this._loaded)throw Error("must call load() first");return this._blockCursor}async load(){if(this._loaded)return{header:this._header,initialBlock:this._initialBlock};let e=this.readHeader();oi('header: "%s" version=0x%s length=%dms (%smin) initialBlockSize=%d',e.identString,e.protocolVersion.toString(16),e.demoLengthMs,(e.demoLengthMs/1e3/60).toFixed(1),e.initialBlockSize);let t=this.buffer.subarray(this.offset,this.offset+e.initialBlockSize),a=this.readInitialBlock(t);this.offset+=e.initialBlockSize;let r=this.buffer.subarray(this.offset);oi("compressed block stream: %d bytes",r.length);let n=await new Promise((e,t)=>{var a,n;a=(a,r)=>{a?t(a):e(r)},n||(n=a,a={}),"function"!=typeof n&&aD(7),a3(r,a,[aZ],function(e){return a1(rh(e.data[0],a2(e.data[1])))},1,n)});return oi("decompressed block stream: %d bytes",n.length),this._decompressedData=n,this._decompressedView=new DataView(n.buffer,n.byteOffset,n.byteLength),this.setupPacketParser(a),this._header=e,this._initialBlock=a,this._blockStreamOffset=0,this._blockCursor=0,this._loaded=!0,{header:e,initialBlock:a}}nextBlock(){if(!this._loaded)throw Error("must call load() first");let e=this._decompressedData,t=this._decompressedView,a=this._blockStreamOffset;if(a+2>e.length)return;let r=t.getUint16(a,!0),n=r>>12,i=4095&r;if(a+2+i>e.length)return void os("block %d: size %d would exceed decompressed data (offset=%d remaining=%d), stopping",this._blockCursor,i,a+2,e.length-a-2);let o=e.subarray(a+2,a+2+i);this._blockStreamOffset=a+2+i;let s={index:this._blockCursor,type:n,size:i,data:o};if(this._blockCursor++,0===n)try{s.parsed=this.packetParser.parsePacket(o)}catch{}else if(1===n)this.packetParser.onSendPacketTrigger();else if(2===n&&64===i)try{s.parsed=this.readRawMove(o)}catch{}else if(3===n&&8===i)try{s.parsed=this.readInfoBlock(o)}catch{}return s}reset(){if(!this._loaded)throw Error("must call load() first");this._blockStreamOffset=0,this._blockCursor=0,this._blockCount=void 0,this.setupPacketParser(this._initialBlock)}processBlocks(e){if(!this._loaded)throw Error("must call load() first");let t=0;for(let a=0;a=128&&t<128+rO.length?rO[t-128]:`unknown(${t})`;throw Error(`No parser for DataBlock classId ${t} (${e}) at bit ${i}`)}}oi("all %d/%d DataBlocks parsed (%d payloads), bit position after DataBlocks: %d",l,i,s.size,r.getCurPos());let c=r.readU8(),d=[];for(let e=0;e<6;e++)d.push(r.readU32());let u=[];for(let e=0;e<16;e++)u.push(r.readU32());let h=r.readU32(),m=[];for(let e=0;e>3<<3),this.readSimpleTargetManager(r),this.readSimpleTargetManager(r),oo('after sequential tail bit=%d mission="%s" CRC=0x%s',r.getCurPos(),M,T.toString(16))}catch(e){a=e instanceof Error?e.message:String(e)}finally{this.ghostTracker=w}let E=x-r.getCurPos(),B=M.length>0?M.split("").filter(e=>{let t=e.charCodeAt(0);return t>=32&&t<=126}).length/M.length:1,j=M.length>0&&B>=.8&&void 0===a;return oi('initial block: events=%d ghosts=%d ghostingSeq=%d controlObj=%d mission="%s" CRC=0x%s valid=%s%s',I.length,_.length,P,D,M,T.toString(16),j,a?` error=${a}`:""),{taggedStrings:n,dataBlockHeaders:o,dataBlockCount:l,dataBlocks:s,demoSetting:c,connectionFields:d,stateArray:u,scoreEntries:m,demoValues:f,sensorGroupColors:g,targetEntries:p,connectionState:y,roundTripTime:v,packetLoss:F,pathManager:b,notifyCount:S,nextRecvEventSeq:C,ghostingSequence:P,initialGhosts:_,initialEvents:I,controlObjectGhostIndex:D,controlObjectData:t,missionName:M,missionCRC:T,phase2TrailingBits:E,phase2Valid:j,phase2Error:a}}readScoreEntry(e){let t=e.readFlag()?e.readInt(16):0,a=e.readFlag()?e.readInt(16):0,r=e.readFlag()?e.readInt(16):0,n=e.readInt(6),i=e.readInt(6),o=e.readInt(6),s=e.readFlag(),l=[];for(let t=0;t<6;t++)l.push(e.readFlag());return{clientId:t,teamId:a,score:r,field0:n,field1:i,field2:o,isBot:s,triggerFlags:l}}readDemoValues(e){let t=[];for(;e.readFlag();)t.push(e.readString());return t}readComplexTargetManager(e){e.readU8(),e.readU8(),e.readU8(),e.readU8();let t=[];for(let a=0;a<32;a++)for(let r=0;r<32;r++)e.readFlag()&&t.push({group:a,targetGroup:r,r:e.readU8(),g:e.readU8(),b:e.readU8(),a:e.readU8()});let a=[];for(let t=0;t<512;t++){if(!e.readFlag())continue;let r={targetId:t,sensorGroup:0,targetData:0,damageLevel:0};e.readFlag()&&(r.sensorData=e.readU32()),e.readFlag()&&(r.voiceMapData=e.readU32()),e.readFlag()&&(r.name=e.readString()),e.readFlag()&&(r.skin=e.readString()),e.readFlag()&&(r.skinPref=e.readString()),e.readFlag()&&(r.voice=e.readString()),e.readFlag()&&(r.typeDescription=e.readString()),r.sensorGroup=e.readInt(5),r.targetData=e.readInt(9),t>=32&&e.readFlag()&&(r.dataBlockRef=e.readInt(11)),r.damageLevel=e.readFloat(7),a.push(r)}return{sensorGroupColors:t,targets:a}}readPathManager(e){let t=[],a=e.readU32();for(let r=0;rthis.registry.getDataBlockParser(e)};t=i.unpack(e,a)}catch{a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:n});break}else{a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:n});break}a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:e.getCurPos(),parsedData:t}),oo(" event classId=%d bits=%d",r,e.getCurPos()-n)}return{nextRecvEventSeq:t,events:a}}readGhostStartBlock(e,t){let a=e.readU32(),r=[];oo("ghost block: seq=%d bit=%d",a,e.getCurPos());let n=this.registry.getGhostCatalog(),i=8*e.getBuffer().length,o=new Map;for(let[e,a]of t)o.set(e,a.data);for(;e.readFlag()&&!e.isError();){let a=e.readInt(10),s=e.readInt(7)+0,l=e.getCurPos(),c=[],d=new Set,{entry:u}=this.identifyGhostViaDataBlock(e,t,n),h=this.registry.getGhostParser(s);h&&(c.push({entry:h,method:"registry"}),d.add(h)),u&&!d.has(u)&&(c.push({entry:u,method:"datablock"}),d.add(u));let m={getDataBlockData:e=>o.get(e),getDataBlockParser:e=>this.registry.getDataBlockParser(e)},f=!1;for(let{entry:t,method:n}of c){let o="registry"===n,c=this.tryGhostParser(e,t,l,i,!1,m,o);if(!1!==c){this.ghostTracker.createGhost(a,s,t.name),oo(" ghost idx=%d classId=%d parser=%s bits=%d via=%s",a,s,t.name,e.getCurPos()-l,n),r.push({index:a,type:"create",classId:s,updateBitsStart:l,updateBitsEnd:e.getCurPos(),parsedData:c}),f=!0;break}}if(!f){oo(" ghost idx=%d classId=%d NO PARSER (stopping at bit=%d, remaining=%d)",a,s,l,i-l);break}}return oo("ghost loop ended at bit=%d remaining=%d count=%d",e.getCurPos(),i-e.getCurPos(),r.length),{ghostingSequence:a,ghosts:r}}tryGhostParser(e,t,a,r,n=!1,i,o=!1){let s=e.savePos();n||oo(" try %s: startBit=%d",t.name,a);try{let l=t.unpackUpdate(e,!0,{compressionPoint:{x:0,y:0,z:0},ghostTracker:this.ghostTracker,...i}),c=e.getCurPos()-a,d=r-e.getCurPos();if(e.isError()||!o&&c<3)return n||oo(" reject %s: bits=%d isError=%s",t.name,c,e.isError()),e.restorePos(s),!1;if(d>1e3){let a=e.getCurPos(),r=e.readFlag();if(e.setCurPos(a),!r)return n||oo(" reject %s: bits=%d misaligned (remaining=%d)",t.name,c,d),e.restorePos(s),!1}return l??{}}catch(a){return n||oo(" reject %s: error at bit=%d: %s",t.name,e.getCurPos(),a instanceof Error?a.message:String(a)),e.restorePos(s),!1}}identifyGhostViaDataBlock(e,t,a){let r;if(!t)return{entry:void 0,dbFlag:!1};let n=e.savePos(),i=!1;try{if(i=e.readFlag()){let n=e.readInt(11),i=t.get(n);if(i){let e=i.className.replace(/Data$/,"");(r=a.get(e))||oo(" identifyGhostViaDataBlock: dbId=%d className=%s ghostName=%s (no ghost parser)",n,i.className,e)}else oo(" identifyGhostViaDataBlock: dbId=%d (no DataBlock found)",n)}else oo(" identifyGhostViaDataBlock: DataBlock flag=0")}catch{}return e.restorePos(n),{entry:r,dbFlag:i}}readRawMove(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),a=t.getInt32(0,!0),r=t.getInt32(4,!0),n=t.getInt32(8,!0),i=t.getUint32(12,!0),o=t.getUint32(16,!0),s=t.getUint32(20,!0),l=t.getFloat32(24,!0),c=t.getFloat32(28,!0),d=t.getFloat32(32,!0),u=t.getFloat32(36,!0),h=t.getFloat32(40,!0),m=t.getFloat32(44,!0),f=t.getUint32(48,!0),g=t.getUint32(52,!0),p=0!==e[56],y=[];for(let t=0;t<6;t++)y.push(0!==e[57+t]);return{px:a,py:r,pz:n,pyaw:i,ppitch:o,proll:s,x:l,y:c,z:d,yaw:u,pitch:h,roll:m,id:f,sendCount:g,freeLook:p,trigger:y}}readInfoBlock(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength);return{value1:t.getUint32(0,!0),value2:t.getFloat32(4,!0)}}}let oc=Object.freeze({r:0,g:255,b:0}),od=Object.freeze({r:255,g:0,b:0}),ou=new Set(["FlyingVehicle","HoverVehicle","WheeledVehicle"]),oh=new Set(["BombProjectile","EnergyProjectile","FlareProjectile","GrenadeProjectile","LinearFlareProjectile","LinearProjectile","Projectile","SeekerProjectile","TracerProjectile"]),om=new Set(["LinearProjectile","TracerProjectile","LinearFlareProjectile","Projectile"]),of=new Set(["GrenadeProjectile","EnergyProjectile","FlareProjectile","BombProjectile"]),og=new Set(["SeekerProjectile"]),op=new Set(["StaticShape","ScopeAlwaysShape","Turret","BeaconObject","ForceFieldBare"]),oy=new Set(["TSStatic","InteriorInstance","TerrainBlock","Sky","Sun","MissionArea","PhysicalZone","MissionMarker","SpawnSphere","VehicleBlocker","Camera"]),ov=.494*Math.PI,oF=new o.Matrix4,ob=new o.Quaternion,oS=new Map([["gui/hud_new_packammo",0],["gui/hud_new_packcloak",1],["gui/hud_new_packenergy",2],["gui/hud_new_packrepair",3],["gui/hud_new_packsatchel",4],["gui/hud_new_packshield",5],["gui/hud_new_packinventory",6],["gui/hud_new_packmotionsens",7],["gui/hud_new_packradar",8],["gui/hud_new_packturretout",9],["gui/hud_new_packturretin",10],["gui/hud_new_packsensjam",11],["gui/hud_new_packturret",12],["gui/hud_satchel_unarmed",18]]);function ox(e){return null!=e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)}function ok(e,t,a){return ea?a:e}function ow(e){let t=-e/2;return[0,Math.sin(t),0,Math.cos(t)]}function oI(e){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(e.z)||!Number.isFinite(e.w))return null;let t=-e.y,a=-e.z,r=-e.x,n=e.w,i=t*t+a*a+r*r+n*n;if(i<=1e-12)return null;let o=1/Math.sqrt(i);return[t*o,a*o,r*o,n*o]}function oC(e){let t="";for(let a=0;a=32&&(t+=e[a]);return t}let oP={2:0,3:1,4:2,5:3,6:4,7:5,8:6,11:7,12:8,14:9};function o_(e){for(let t=0;t=32)break}}function oD(e){let t=e.indexOf("~w");return -1===t?{text:e,wavPath:null}:{text:e.substring(0,t),wavPath:e.substring(t+2)}}function oM(e){return"Player"===e?"Player":ou.has(e)?"Vehicle":"Item"===e?"Item":oh.has(e)?"Projectile":op.has(e)?"Deployable":"Ghost"}function oT(e,t){return"Player"===e?`player_${t}`:ou.has(e)?`vehicle_${t}`:"Item"===e?`item_${t}`:oh.has(e)?`projectile_${t}`:op.has(e)?`deployable_${t}`:`ghost_${t}`}function oE(e){return!!e&&"object"==typeof e&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z&&"number"==typeof e.w}function oB(e){return!!e&&"object"==typeof e&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z}function oj(e){if(e){for(let t of[e.shapeName,e.projectileShapeName,e.shapeFileName,e.shapeFile,e.model])if("string"==typeof t&&t.length>0)return t}}function oR(e,t){if(e)for(let a of t){let t=e[a];if("number"==typeof t&&Number.isFinite(t))return t}}function oN(e,t){if(e)for(let a of t){let t=e[a];if("string"==typeof t&&t.length>0)return t}}function oA(e){return e?"number"==typeof e.cameraMode?"camera":"number"==typeof e.rotationZ?"player":null:null}class oG{parser;initialBlock;registry;netStrings=new Map;targetNames=new Map;targetTeams=new Map;sensorGroupColors=new Map;state;constructor(e){this.parser=e,this.registry=e.getRegistry();const t=e.initialBlock;this.initialBlock={dataBlocks:t.dataBlocks,initialGhosts:t.initialGhosts,controlObjectGhostIndex:t.controlObjectGhostIndex,controlObjectData:t.controlObjectData,targetEntries:t.targetEntries,sensorGroupColors:t.sensorGroupColors,taggedStrings:t.taggedStrings,initialEvents:t.initialEvents,demoValues:t.demoValues},this.state={moveTicks:0,absoluteYaw:0,absolutePitch:0,lastAbsYaw:0,lastAbsPitch:0,lastControlType:"player",isPiloting:!1,lastOrbitDistance:void 0,exhausted:!1,latestFov:100,latestControl:{ghostIndex:t.controlObjectGhostIndex,data:t.controlObjectData,position:ox(t.controlObjectData?.position)?t.controlObjectData?.position:void 0},camera:null,entitiesById:new Map,entityIdByGhostIndex:new Map,lastStatus:{health:1,energy:1},nextExplosionId:0,playerSensorGroup:0,chatMessages:[],pendingAudioEvents:[],weaponsHud:{slots:new Map,activeIndex:-1},backpackHud:{packIndex:-1,active:!1,text:""},inventoryHud:{slots:new Map,activeSlot:-1},teamScores:[]},this.reset()}reset(){for(let[e,t]of(this.parser.reset(),this.netStrings.clear(),this.targetNames.clear(),this.targetTeams.clear(),this.sensorGroupColors.clear(),this.state.entitiesById.clear(),this.state.entityIdByGhostIndex.clear(),this.initialBlock.taggedStrings))this.netStrings.set(e,t);for(let e of this.initialBlock.targetEntries)e.name&&this.targetNames.set(e.targetId,oC(e.name)),this.targetTeams.set(e.targetId,e.sensorGroup);for(let e of this.initialBlock.sensorGroupColors){let t=this.sensorGroupColors.get(e.group);t||(t=new Map,this.sensorGroupColors.set(e.group,t)),t.set(e.targetGroup,{r:e.r,g:e.g,b:e.b})}if(this.state.playerSensorGroup=0,this.state.chatMessages=[],this.state.pendingAudioEvents=[],this.state.weaponsHud={slots:new Map,activeIndex:-1},this.state.backpackHud={packIndex:-1,active:!1,text:""},this.state.inventoryHud={slots:new Map,activeSlot:-1},this.state.teamScores=[],this.state.moveTicks=0,this.state.absoluteYaw=0,this.state.absolutePitch=0,this.state.lastAbsYaw=0,this.state.lastAbsPitch=0,this.state.lastControlType=oA(this.initialBlock.controlObjectData)??"player",this.state.isPiloting="player"===this.state.lastControlType&&!!(this.initialBlock.controlObjectData?.pilot||this.initialBlock.controlObjectData?.controlObjectGhost!=null),this.state.lastCameraMode="camera"===this.state.lastControlType&&"number"==typeof this.initialBlock.controlObjectData?.cameraMode?this.initialBlock.controlObjectData.cameraMode:void 0,this.state.lastOrbitGhostIndex="camera"===this.state.lastControlType&&"number"==typeof this.initialBlock.controlObjectData?.orbitObjectGhostIndex?this.initialBlock.controlObjectData.orbitObjectGhostIndex:void 0,"camera"===this.state.lastControlType){let e=this.initialBlock.controlObjectData?.minOrbitDist,t=this.initialBlock.controlObjectData?.maxOrbitDist,a=this.initialBlock.controlObjectData?.curOrbitDist;"number"==typeof e&&"number"==typeof t&&Number.isFinite(e)&&Number.isFinite(t)?this.state.lastOrbitDistance=Math.max(0,t-e):"number"==typeof a&&Number.isFinite(a)?this.state.lastOrbitDistance=Math.max(0,a):this.state.lastOrbitDistance=void 0}else this.state.lastOrbitDistance=void 0;let e=this.getAbsoluteRotation(this.initialBlock.controlObjectData);for(let t of(e&&(this.state.absoluteYaw=e.yaw,this.state.absolutePitch=e.pitch,this.state.lastAbsYaw=e.yaw,this.state.lastAbsPitch=e.pitch),this.state.exhausted=!1,this.state.latestFov=100,this.state.latestControl={ghostIndex:this.initialBlock.controlObjectGhostIndex,data:this.initialBlock.controlObjectData,position:ox(this.initialBlock.controlObjectData?.position)?this.initialBlock.controlObjectData?.position:void 0},this.state.controlPlayerGhostId="player"===this.state.lastControlType&&this.initialBlock.controlObjectGhostIndex>=0?`player_${this.initialBlock.controlObjectGhostIndex}`:void 0,this.state.camera=null,this.state.lastStatus={health:1,energy:1},this.state.nextExplosionId=0,this.initialBlock.initialGhosts)){if("create"!==t.type||null==t.classId)continue;let e=this.registry.getGhostParser(t.classId)?.name??`ghost_${t.classId}`,a=oT(e,t.index),r={id:a,ghostIndex:t.index,className:e,spawnTick:0,type:oM(e),rotation:[0,0,0,1]};this.applyGhostData(r,t.parsedData),this.state.entitiesById.set(a,r),this.state.entityIdByGhostIndex.set(t.index,a)}if(0===this.state.playerSensorGroup&&"player"===this.state.lastControlType&&this.state.latestControl.ghostIndex>=0){let e=this.state.entityIdByGhostIndex.get(this.state.latestControl.ghostIndex),t=e?this.state.entitiesById.get(e):void 0;t?.sensorGroup!=null&&t.sensorGroup>0&&(this.state.playerSensorGroup=t.sensorGroup)}for(let e of this.initialBlock.initialEvents){let t=this.registry.getEventParser(e.classId)?.name;if("SetSensorGroupEvent"===t&&e.parsedData){let t=e.parsedData.sensorGroup;null!=t&&(this.state.playerSensorGroup=t)}else if("RemoteCommandEvent"===t&&e.parsedData){let t=this.resolveNetString(e.parsedData.funcName),a=e.parsedData.args;this.handleHudRemoteCommand(t,a)}}let t=function(e){let t={weaponsHud:null,backpackHud:null,inventoryHud:null,teamScores:[],chatMessages:[]};if(!e.length)return t;let a=0,r=()=>{let t=e[a++];return""===t?"":t??""};if(r(),a>=e.length)return t;let n=parseInt(r(),10)||0,i=new Map;for(let e=0;e0&&i.set(e,(i.get(e)??0)+1)}if(a>=e.length||(r(),a>=e.length))return t;{let e=r().split(" "),a=e[0]??"",n="1"===e[1]||"true"===e[1],i=e[2]??"",o="1"===e[4]||"true"===e[4];n&&a&&(t.backpackHud={packIndex:function(e){let t=e.toLowerCase();for(let[e,a]of oS)if(e===t)return a;return -1}(a),active:o,text:i})}if(a>=e.length)return t;let o=r().split(" "),s=parseInt(o[4],10)||0,l=parseInt(o[5],10)||0,c=parseInt(o[6],10);for(let e=0;e=e.length)return t;let u=r().split(" "),h=parseInt(u[4],10)||0,m=parseInt(u[5],10)||0,f=parseInt(u[6],10);for(let e=0;e0)||e.set(a,n)}e.size>0&&(t.inventoryHud={slots:e,activeSlot:isNaN(f)?-1:f})}if(a>=e.length)return t;let g=r().split(" "),p=g[1]??"",y=parseInt(g[2],10)||0,v=[];for(let e=0;e=8)for(let e=0;e<2;e++){let a=4*e,r=e+1;t.teamScores.push({teamId:r,name:v[a]??"",score:parseInt(v[a+1],10)||0,playerCount:i.get(r)??0})}else if("TR2Game"===p&&y>=4)for(let e=0;e<2;e++){let a=2*e,r=e+1;t.teamScores.push({teamId:r,name:v[a+1]??"",score:parseInt(v[a],10)||0,playerCount:i.get(r)??0})}if(a>=e.length)return t;r();for(let n=0;n<10&&!(a>=e.length);n++){let e=r();e&&t.chatMessages.push(e)}return t}(this.initialBlock.demoValues);for(let e of(t.weaponsHud&&(this.state.weaponsHud.slots=t.weaponsHud.slots,this.state.weaponsHud.activeIndex=t.weaponsHud.activeIndex),t.backpackHud&&(this.state.backpackHud.packIndex=t.backpackHud.packIndex,this.state.backpackHud.active=t.backpackHud.active,this.state.backpackHud.text=t.backpackHud.text),t.inventoryHud&&(this.state.inventoryHud.slots=t.inventoryHud.slots,this.state.inventoryHud.activeSlot=t.inventoryHud.activeSlot),this.state.teamScores=t.teamScores,t.chatMessages)){let t=function(e){let t=[],a=0,r="",n=!1;for(let i=0;i=32&&(r+=e[i]);continue}let s=oP[o];void 0!==s?(r&&(t.push({text:r,colorCode:a}),r=""),a=s):15===o?(r&&(t.push({text:r,colorCode:a}),r=""),a=0):o>=32&&(r+=e[i])}return r&&t.push({text:r,colorCode:a}),t}(e);if(!t.length)continue;let a=t.map(e=>e.text).join("");if(!a.trim())continue;let r=t[0].colorCode;if(t.some(e=>3===e.colorCode||4===e.colorCode)&&a.includes(": ")){let e=a.indexOf(": ");this.state.chatMessages.push({timeSec:0,sender:a.slice(0,e),text:a.slice(e+2),kind:"chat",colorCode:r,segments:t})}else this.state.chatMessages.push({timeSec:0,sender:"",text:a,kind:"server",colorCode:r,segments:t})}this.updateCameraAndHud()}getSnapshot(){return this.buildSnapshot()}getEffectShapes(){let e=new Set;for(let[,t]of this.initialBlock.dataBlocks){let a=t.data?.explosion;if(null==a)continue;let r=this.getDataBlockData(a),n=r?.dtsFileName;n&&e.add(n)}return[...e]}stepToTime(e,t=1/0){let a=Math.floor(1e3*(Number.isFinite(e)?Math.max(0,e):0)/32);a0&&(this.state.playerSensorGroup=t.sensorGroup)}if(a){let e=oA(a);if(e&&(this.state.lastControlType=e),"player"===this.state.lastControlType)this.state.isPiloting=!!(a.pilot||null!=a.controlObjectGhost);else if(this.state.isPiloting=!1,"number"==typeof a.cameraMode)if(this.state.lastCameraMode=a.cameraMode,3===a.cameraMode){"number"==typeof a.orbitObjectGhostIndex&&(this.state.lastOrbitGhostIndex=a.orbitObjectGhostIndex);let e=a.minOrbitDist,t=a.maxOrbitDist,r=a.curOrbitDist;"number"==typeof e&&"number"==typeof t&&Number.isFinite(e)&&Number.isFinite(t)?this.state.lastOrbitDistance=Math.max(0,t-e):"number"==typeof r&&Number.isFinite(r)&&(this.state.lastOrbitDistance=Math.max(0,r))}else this.state.lastOrbitGhostIndex=void 0,this.state.lastOrbitDistance=void 0;let t=this.getAbsoluteRotation(a);t&&(this.state.absoluteYaw=t.yaw,this.state.absolutePitch=t.pitch,this.state.lastAbsYaw=t.yaw,this.state.lastAbsPitch=t.pitch)}for(let e of t.events){let t=this.registry.getEventParser(e.classId)?.name;if("NetStringEvent"===t&&e.parsedData){let t=e.parsedData.id,a=e.parsedData.value;null!=t&&"string"==typeof a&&this.netStrings.set(t,a);continue}if("TargetInfoEvent"===t&&e.parsedData){let t=e.parsedData.targetId,a=e.parsedData.nameTag;if(null!=t&&null!=a){let e=this.netStrings.get(a);e&&this.targetNames.set(t,oC(e))}let r=e.parsedData.sensorGroup;null!=t&&null!=r&&this.targetTeams.set(t,r)}else if("SetSensorGroupEvent"===t&&e.parsedData){let t=e.parsedData.sensorGroup;null!=t&&(this.state.playerSensorGroup=t)}else if("SensorGroupColorEvent"===t&&e.parsedData){let t=e.parsedData.sensorGroup,a=e.parsedData.colors;if(a){let e=this.sensorGroupColors.get(t);for(let r of(e||(e=new Map,this.sensorGroupColors.set(t,e)),a))r.default?e.delete(r.index):e.set(r.index,{r:r.r??0,g:r.g??0,b:r.b??0})}}else if("RemoteCommandEvent"===t&&e.parsedData){let t=this.resolveNetString(e.parsedData.funcName),a=e.parsedData.args,r=.032*this.state.moveTicks;if("ChatMessage"===t&&a.length>=4){let e=o_(this.resolveNetString(a[3])),t=a[4]?oC(this.resolveNetString(a[4])):"",n=this.formatRemoteArgs(a[3],a.slice(4));if(n){let i,o,s=n.indexOf(": "),{text:l,wavPath:c}=oD(s>=0?n.slice(s+2):n);if(c){let e=this.resolveNetString(a[1]);i=e?`voice/${e}/${c}.wav`:c;let t=this.resolveNetString(a[2]);if(t){let e=parseFloat(t);Number.isFinite(e)&&(o=Math.max(.5,Math.min(2,e)))}}let d=e??0;this.pushChatMessage({timeSec:r,sender:t,text:l,kind:"chat",colorCode:d,segments:[{text:t?`${t}: ${l}`:l,colorCode:d}],soundPath:i,soundPitch:o})}}else if("CannedChatMessage"===t&&a.length>=6){let e=o_(this.resolveNetString(a[1])),t=oC(this.resolveNetString(a[2])),n=oC(this.resolveNetString(a[4])),i=this.formatRemoteArgs(a[1],a.slice(2));if(i){let o,s,{wavPath:l}=oD(i),c=oD(oC(this.resolveNetString(a[3]))).text;if(l){let e=this.resolveNetString(a[5]);if(o=e?`voice/${e}/${l}.wav`:l,a[6]){let e=parseFloat(this.resolveNetString(a[6]));Number.isFinite(e)&&(s=Math.max(.5,Math.min(2,e)))}}let d=e??0,u=[];n&&u.push({text:`[${n}] `,colorCode:0}),u.push({text:t?`${t}: ${c}`:c,colorCode:d}),this.pushChatMessage({timeSec:r,sender:t,text:c,kind:"chat",colorCode:d,segments:u,soundPath:o,soundPitch:s})}}else if("ServerMessage"===t&&a.length>=2){let e=o_(this.resolveNetString(a[1])),t=this.formatRemoteArgs(a[1],a.slice(2));if(t){let{text:a,wavPath:n}=oD(t),i=e??0;this.pushChatMessage({timeSec:r,sender:"",text:a,kind:"server",colorCode:i,segments:[{text:a,colorCode:i}],soundPath:n??void 0})}}else this.handleHudRemoteCommand(t,a)}else if(("Sim3DAudioEvent"===t||"Sim2DAudioEvent"===t)&&e.parsedData){let a=e.parsedData.profileId;if("number"==typeof a){let r=.032*this.state.moveTicks,n="Sim3DAudioEvent"===t?e.parsedData.position:void 0;this.state.pendingAudioEvents.push({profileId:a,position:n,timeSec:r}),this.state.pendingAudioEvents.length>100&&this.state.pendingAudioEvents.splice(0,this.state.pendingAudioEvents.length-100)}}}for(let e of t.ghosts)this.applyPacketGhost(e);return}if(3===e.type&&this.isInfoData(e.parsed)){Number.isFinite(e.parsed.value2)&&(this.state.latestFov=e.parsed.value2);return}if(2===e.type&&this.isMoveData(e.parsed)){this.state.absoluteYaw+=e.parsed.yaw??0;let t=2*Math.PI;this.state.absoluteYaw=(this.state.absoluteYaw%t+t)%t,this.state.absolutePitch=ok(this.state.absolutePitch+(e.parsed.pitch??0),-ov,ov)}}applyPacketGhost(e){let t,a=e.index,r=this.state.entityIdByGhostIndex.get(a);if(r){let t=this.state.entitiesById.get(r);t&&"Projectile"===t.type&&!t.hasExploded&&t.explosionShape&&t.position&&("delete"===e.type||"create"===e.type)&&this.spawnExplosion(t,[...t.position])}if("delete"===e.type){r&&(this.state.entitiesById.delete(r),this.state.entityIdByGhostIndex.delete(a));return}let n=this.resolveGhostClassName(a,e.classId);if(!n)return;let i=oT(n,a);r&&r!==i&&this.state.entitiesById.delete(r);let o=this.state.entitiesById.get(i);o&&"create"===e.type?(o.spawnTick=this.state.moveTicks,o.rotation=[0,0,0,1],o.hasExploded=void 0,o.explosionShape=void 0,o.explosionLifetimeTicks=void 0,o.faceViewer=void 0,o.simulatedVelocity=void 0,o.projectilePhysics=void 0,o.gravityMod=void 0,o.direction=void 0,o.velocity=void 0,o.position=void 0,o.dataBlock=void 0,o.dataBlockId=void 0,o.shapeHint=void 0,o.visual=void 0,t=o):o?t=o:(t={id:i,ghostIndex:a,className:n,spawnTick:this.state.moveTicks,type:oM(n),rotation:[0,0,0,1]},this.state.entitiesById.set(i,t)),t.ghostIndex=a,t.className=n,t.type=oM(n),this.state.entityIdByGhostIndex.set(a,i),this.applyGhostData(t,e.parsedData)}resolveGhostClassName(e,t){if("number"==typeof t){let e=this.registry.getGhostParser(t)?.name;if(e)return e}let a=this.state.entityIdByGhostIndex.get(e);if(a){let e=this.state.entitiesById.get(a);if(e?.className)return e.className}let r=this.parser.getGhostTracker().getGhost(e);if(r?.className)return r.className}resolveEntityIdForGhostIndex(e){let t=this.state.entityIdByGhostIndex.get(e);if(t)return t;let a=this.parser.getGhostTracker().getGhost(e);if(a)return oT(a.className,e)}getDataBlockData(e){let t=this.initialBlock.dataBlocks.get(e);if(t?.data)return t.data;let a=this.parser.getPacketParser();return a.dataBlockDataMap?.get(e)}resolveExplosionInfo(e){let t=this.getDataBlockData(e),a=t?.explosion;if(null==a)return;let r=this.getDataBlockData(a);if(!r)return;let n=r.dtsFileName;if(!n)return;let i=r.lifetimeMS??31;return{shape:n,faceViewer:!1!==r.faceViewer&&0!==r.faceViewer,lifetimeTicks:i,explosionDataBlockId:a}}applyGhostData(e,t){if(!t)return;let a=t.dataBlockId;if(null!=a){e.dataBlockId=a;let t=this.getDataBlockData(a),r=oj(t);if(e.visual=function(e,t){if(!t)return;let a=oN(t,["tracerTex0","textureName0","texture0"])??"";if(!("TracerProjectile"===e||a.length>0&&null!=oR(t,["tracerLength"]))||!a)return;let r=oN(t,["tracerTex1","textureName1","texture1"]),n=oR(t,["tracerLength"])??10,i=oR(t,["tracerWidth"]),o=oR(t,["tracerAlpha"]),s=null!=i&&(null!=oR(t,["crossViewAng"])||i<=.7)?i:o??i??.5,l=oR(t,["crossViewAng","crossViewFraction"])??("number"==typeof t.tracerWidth&&t.tracerWidth>.7?t.tracerWidth:.98);return{kind:"tracer",texture:a,crossTexture:r,tracerLength:n,tracerWidth:s,crossViewAng:l,crossSize:oR(t,["crossSize","muzzleVelocity"])??.45,renderCross:function(e,t){if(e)for(let a of t){let t=e[a];if("boolean"==typeof t)return t}}(t,["renderCross","proximityRadius"])??!0}}(e.className,t)??function(e,t){if(t){if("LinearFlareProjectile"===e){let e=oN(t,["smokeTexture","flareTexture"]);if(!e)return;let a=t.flareColor,r=oR(t,["size"])??.5;return{kind:"sprite",texture:e,color:a?{r:a.r,g:a.g,b:a.b}:{r:1,g:1,b:1},size:r}}if("FlareProjectile"===e){let e=oN(t,["flareTexture"]);if(!e)return;return{kind:"sprite",texture:e,color:{r:1,g:.9,b:.5},size:oR(t,["size"])??4}}}}(e.className,t),"string"==typeof r&&(e.shapeHint=r,e.dataBlock=r),"Player"===e.type&&"number"==typeof t?.maxEnergy&&(e.maxEnergy=t.maxEnergy),"Projectile"===e.type&&(om.has(e.className)?e.projectilePhysics="linear":of.has(e.className)?(e.projectilePhysics="ballistic",e.gravityMod=oR(t,["gravityMod"])??1):og.has(e.className)&&(e.projectilePhysics="seeker")),"Projectile"===e.type&&!e.explosionShape){let t=this.resolveExplosionInfo(a);t&&(e.explosionShape=t.shape,e.faceViewer=t.faceViewer,e.explosionLifetimeTicks=t.lifetimeTicks,e.explosionDataBlockId=t.explosionDataBlockId)}if("Projectile"===e.type&&null==e.maintainEmitterId){let a=t?.baseEmitter;"number"==typeof a&&a>0&&(e.maintainEmitterId=a)}}if("Player"===e.type){let a=t.images;if(Array.isArray(a)&&a.length>0){let t=a.find(e=>0===e.index);if(t?.dataBlockId&&t.dataBlockId>0){let a=this.getDataBlockData(t.dataBlockId),r=oj(a);if(r){let t=a?.mountPoint;(null==t||t<=0)&&!/pack_/i.test(r)&&(e.weaponShape=r)}let n=e.weaponImageState;e.weaponImageState={dataBlockId:t.dataBlockId,triggerDown:t.triggerDown??n?.triggerDown??!1,ammo:t.ammo??n?.ammo??!0,loaded:t.loaded??n?.loaded??!0,target:t.target??n?.target??!1,wet:t.wet??n?.wet??!1,fireCount:t.fireCount??n?.fireCount??0},a&&e.weaponImageStatesDbId!==t.dataBlockId&&(e.weaponImageStates=function(e){let t=e.states;if(Array.isArray(t)&&0!==t.length)return t.map(e=>{let t=e=>null==e?-1:e-1;return{name:e.name??"",transitionOnNotLoaded:t(e.transitionOnAmmo),transitionOnLoaded:t(e.transitionOnNoAmmo),transitionOnNoAmmo:t(e.transitionOnTarget),transitionOnAmmo:t(e.transitionOnNoTarget),transitionOnNoTarget:t(e.transitionOnWet),transitionOnTarget:t(e.transitionOnNotWet),transitionOnNotWet:t(e.transitionOnTriggerUp),transitionOnWet:t(e.transitionOnTriggerDown),transitionOnTriggerUp:t(e.transitionOnTimeout),transitionOnTriggerDown:t(e.transitionGeneric0In),transitionOnTimeout:t(e.transitionGeneric0Out),timeoutValue:e.timeoutValue,waitForTimeout:e.waitForTimeout??!1,fire:e.fire??!1,sequence:e.sequence,spin:e.spin??0,direction:e.direction??!0,scaleAnimation:e.scaleAnimation??!1,loaded:e.loaded??0,soundDataBlockId:e.sound??-1}})}(a),e.weaponImageStatesDbId=t.dataBlockId)}else t&&!t.dataBlockId&&(e.weaponShape=void 0,e.weaponImageState=void 0,e.weaponImageStates=void 0)}}let r=ox(t.position)?t.position:ox(t.initialPosition)?t.initialPosition:ox(t.explodePosition)?t.explodePosition:ox(t.endPoint)?t.endPoint:ox(t.transform?.position)?t.transform.position:void 0;r&&(e.position=[r.x,r.y,r.z]);let n=oB(t.direction)?t.direction:void 0;if(n&&(e.direction=[n.x,n.y,n.z]),"Player"===e.type&&"number"==typeof t.rotationZ&&(e.rotation=ow(t.rotationZ)),"Player"===e.type&&("number"==typeof t.headX&&(e.headPitch=t.headX),"number"==typeof t.headZ&&(e.headYaw=t.headZ)),oE(t.angPosition)){let a=oI(t.angPosition);a&&(e.rotation=a)}else if(oE(t.transform?.rotation)){let a=oI(t.transform.rotation);a&&(e.rotation=a)}else if("Item"===e.type&&"number"==typeof t.rotation?.angle){let a=t.rotation;e.rotation=ow((a.zSign??1)*a.angle)}else if("Projectile"===e.type){let a=t.velocity??t.direction??(ox(t.initialPosition)&&ox(t.endPos)?{x:t.endPos.x-t.initialPosition.x,y:t.endPos.y-t.initialPosition.y,z:t.endPos.z-t.initialPosition.z}:void 0);oB(a)&&(0!==a.x||0!==a.y)&&(e.rotation=ow(Math.atan2(a.x,a.y)))}if(oB(t.velocity)&&(e.velocity=[t.velocity.x,t.velocity.y,t.velocity.z],e.direction||(e.direction=[t.velocity.x,t.velocity.y,t.velocity.z])),"Item"===e.type){let a=t.atRest;if(!0===a)e.itemPhysics=void 0;else if(!1===a&&oB(t.velocity)){let a=null!=e.dataBlockId?this.getDataBlockData(e.dataBlockId):void 0;e.itemPhysics={velocity:[t.velocity.x,t.velocity.y,t.velocity.z],atRest:!1,elasticity:oR(a,["elasticity"])??.2,friction:oR(a,["friction"])??.6,gravityMod:oR(a,["gravityMod"])??1}}else r&&!oB(t.velocity)&&(e.itemPhysics=void 0)}if(e.projectilePhysics){if("linear"===e.projectilePhysics){let a=oR(null!=e.dataBlockId?this.getDataBlockData(e.dataBlockId):void 0,["dryVelocity","muzzleVelocity","bulletVelocity"])??80,r=e.direction??[0,1,0],n=r[0]*a,i=r[1]*a,o=r[2]*a,s=t.excessVel,l=t.excessDir;"number"==typeof s&&s>0&&oB(l)&&(n+=l.x*s,i+=l.y*s,o+=l.z*s),e.simulatedVelocity=[n,i,o]}else e.velocity&&(e.simulatedVelocity=[e.velocity[0],e.velocity[1],e.velocity[2]]);let a=t.currTick;if("number"==typeof a&&a>0&&e.simulatedVelocity&&e.position){let t=.032*a,r=e.simulatedVelocity;if(e.position[0]+=r[0]*t,e.position[1]+=r[1]*t,e.position[2]+=r[2]*t,"ballistic"===e.projectilePhysics){let a=9.81*(e.gravityMod??1);e.position[2]-=.5*a*t*t,r[2]-=a*t}}}let i=ox(t.explodePosition)?t.explodePosition:ox(t.explodePoint)?t.explodePoint:void 0;if("Projectile"===e.type&&!e.hasExploded&&i&&e.explosionShape&&this.spawnExplosion(e,[i.x,i.y,i.z]),"number"==typeof t.damageLevel&&(e.health=ok(1-t.damageLevel,0,1)),"number"==typeof t.damageState&&(e.damageState=t.damageState),"number"==typeof t.action&&(e.actionAnim=t.action,e.actionAtEnd=!!t.actionAtEnd),Array.isArray(t.threads)){let a=t.threads;if(e.threads){let t=[...e.threads];for(let e of a){let a=t.findIndex(t=>t.index===e.index);a>=0?t[a]=e:t.push(e)}e.threads=t}else e.threads=a}if("number"==typeof t.energy&&(e.energy=ok(t.energy,0,1)),"number"==typeof t.targetId){e.targetId=t.targetId;let a=this.targetNames.get(t.targetId);a&&(e.playerName=a);let r=this.targetTeams.get(t.targetId);null!=r&&(e.sensorGroup=r,e.ghostIndex===this.state.latestControl.ghostIndex&&"player"===this.state.lastControlType&&(this.state.playerSensorGroup=r))}let o=t.sounds;if(Array.isArray(o)){let t=.032*this.state.moveTicks;for(let a of o)if(a.playing&&"number"==typeof a.profileId){let r=e.position;this.state.pendingAudioEvents.push({profileId:a.profileId,position:r?{x:r[0],y:r[1],z:r[2]}:void 0,timeSec:t})}}}advanceProjectiles(){for(let e of this.state.entitiesById.values()){if(!e.simulatedVelocity||!e.position)continue;let t=e.simulatedVelocity,a=e.position;if("ballistic"===e.projectilePhysics){let a=9.81*(e.gravityMod??1);t[2]-=.032*a}a[0]+=.032*t[0],a[1]+=.032*t[1],a[2]+=.032*t[2],(0!==t[0]||0!==t[1])&&(e.rotation=ow(Math.atan2(t[0],t[1])))}}advanceItems(){for(let a of this.state.entitiesById.values()){var e,t;let r=a.itemPhysics;if(!r||r.atRest||!a.position)continue;let n=r.velocity,i=a.position;n[2]+=-20*r.gravityMod*.032,i[0]+=.032*n[0],i[1]+=.032*n[1],i[2]+=.032*n[2];let o=(e=i[0],t=i[1],P?P(e,t):null);if(null!=o&&i[2]0){let e=Math.max(0,1-t/a);n[0]*=e,n[1]*=e}.15>Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2])&&(n[0]=n[1]=n[2]=0,r.atRest=!0)}}}spawnExplosion(e,t){e.hasExploded=!0;let a=`fx_${this.state.nextExplosionId++}`,r=e.explosionLifetimeTicks??31,n={id:a,ghostIndex:-1,className:"Explosion",spawnTick:this.state.moveTicks,type:"Explosion",dataBlock:e.explosionShape,explosionDataBlockId:e.explosionDataBlockId,position:t,rotation:[0,0,0,1],isExplosion:!0,faceViewer:!1!==e.faceViewer,expiryTick:this.state.moveTicks+r};this.state.entitiesById.set(a,n),e.position=void 0,e.simulatedVelocity=void 0}removeExpiredExplosions(){for(let[e,t]of this.state.entitiesById)t.isExplosion&&null!=t.expiryTick&&this.state.moveTicks>=t.expiryTick&&this.state.entitiesById.delete(e)}updateCameraAndHud(){let e=this.state.latestControl,t=.032*this.state.moveTicks,a=e.data,r=this.state.lastControlType;if(e.position){var n;let i,o,s,l,c=!this.state.isPiloting&&"player"===r,d=c?this.state.absoluteYaw:this.state.lastAbsYaw,u=c?this.state.absolutePitch:this.state.lastAbsPitch;if(c&&(this.state.lastAbsYaw=d,this.state.lastAbsPitch=u),this.state.camera={time:t,position:[e.position.x,e.position.y,e.position.z],rotation:(i=Math.sin(n=ok(u,-ov,ov)),o=Math.cos(n),s=Math.sin(d),l=Math.cos(d),oF.set(-s,l*i,-l*o,0,0,o,i,0,l,s*i,-s*o,0,0,0,0,1),ob.setFromRotationMatrix(oF),[ob.x,ob.y,ob.z,ob.w]),fov:this.state.latestFov,mode:"observer",yaw:d,pitch:u},"camera"===r)if(("number"==typeof a?.cameraMode?a.cameraMode:this.state.lastCameraMode)===3){this.state.camera.mode="third-person","number"==typeof this.state.lastOrbitDistance&&(this.state.camera.orbitDistance=this.state.lastOrbitDistance);let e="number"==typeof a?.orbitObjectGhostIndex?a.orbitObjectGhostIndex:this.state.lastOrbitGhostIndex;"number"==typeof e&&e>=0&&(this.state.camera.orbitTargetId=this.resolveEntityIdForGhostIndex(e))}else this.state.camera.mode="observer";else this.state.camera.mode="first-person",e.ghostIndex>=0&&(this.state.controlPlayerGhostId=`player_${e.ghostIndex}`),this.state.controlPlayerGhostId&&(this.state.camera.controlEntityId=this.state.controlPlayerGhostId);if("player"===r&&!this.state.isPiloting&&this.state.controlPlayerGhostId&&e.position){let t=this.state.entitiesById.get(this.state.controlPlayerGhostId);t&&(t.position=[e.position.x,e.position.y,e.position.z],t.rotation=ow(d),t.headPitch=ok(this.state.absolutePitch/ov,-1,1))}}else this.state.camera&&(this.state.camera={...this.state.camera,time:t,fov:this.state.latestFov});let i={health:1,energy:1};if(this.state.camera?.mode==="first-person"){let e=this.state.controlPlayerGhostId,t=e?this.state.entitiesById.get(e):void 0;i.health=t?.health??1;let r=a?.energyLevel;if("number"==typeof r){let e=t?.maxEnergy??60;e>0&&(i.energy=ok(r/e,0,1))}else i.energy=t?.energy??1}else if(this.state.camera?.mode==="third-person"&&this.state.camera.orbitTargetId){let e=this.state.entitiesById.get(this.state.camera.orbitTargetId);i.health=e?.health??1,i.energy=e?.energy??1}this.state.lastStatus=i}pushChatMessage(e){this.state.chatMessages.push(e),this.state.chatMessages.length>200&&this.state.chatMessages.splice(0,this.state.chatMessages.length-200)}handleHudRemoteCommand(e,t){if("setWeaponsHudItem"===e&&t.length>=3){let e=parseInt(t[0],10),a=parseInt(t[1],10),r="1"===t[2]||"true"===t[2];isNaN(e)||(r?this.state.weaponsHud.slots.set(e,isNaN(a)?-1:a):this.state.weaponsHud.slots.delete(e))}else if("setWeaponsHudAmmo"===e&&t.length>=2){let e=parseInt(t[0],10),a=parseInt(t[1],10);isNaN(e)||this.state.weaponsHud.slots.set(e,isNaN(a)?-1:a)}else if("setWeaponsHudActive"===e&&t.length>=1){let e=parseInt(t[0],10);this.state.weaponsHud.activeIndex=isNaN(e)?-1:e,isNaN(e)||!(e>=0)||this.state.weaponsHud.slots.has(e)||this.state.weaponsHud.slots.set(e,-1)}else if("setWeaponsHudClearAll"===e)this.state.weaponsHud.slots.clear(),this.state.weaponsHud.activeIndex=-1;else if("setBackpackHudItem"===e&&t.length>=2){let e=parseInt(t[0],10);"1"!==t[1]&&"true"!==t[1]||isNaN(e)?this.state.backpackHud.packIndex=-1:this.state.backpackHud.packIndex=e,this.state.backpackHud.active=!1,this.state.backpackHud.text=""}else if("setSatchelArmed"===e)this.state.backpackHud.active=!0;else if("setCloakIconOn"===e||"setRepairPackIconOn"===e||"setShieldIconOn"===e||"setSenJamIconOn"===e)this.state.backpackHud.active=!0;else if("setCloakIconOff"===e||"setRepairPackIconOff"===e||"setShieldIconOff"===e||"setSenJamIconOff"===e)this.state.backpackHud.active=!1;else if("updatePackText"===e&&t.length>=1)this.state.backpackHud.text=t[0]??"";else if("setInventoryHudItem"===e&&t.length>=3){let e=parseInt(t[0],10),a=parseInt(t[1],10),r="1"===t[2]||"true"===t[2];isNaN(e)||(r&&!isNaN(a)?this.state.inventoryHud.slots.set(e,a):this.state.inventoryHud.slots.delete(e))}else if("setInventoryHudAmount"===e&&t.length>=2){let e=parseInt(t[0],10),a=parseInt(t[1],10);isNaN(e)||isNaN(a)||this.state.inventoryHud.slots.set(e,a)}else"setInventoryHudClearAll"===e&&(this.state.inventoryHud.slots.clear(),this.state.inventoryHud.activeSlot=-1)}buildSnapshot(){let e=[];for(let t of this.state.entitiesById.values())(t.spawnTick>0||!oy.has(t.className))&&e.push({id:t.id,type:t.type,visual:t.visual,direction:t.direction,ghostIndex:t.ghostIndex,className:t.className,dataBlockId:t.dataBlockId,shapeHint:t.shapeHint,dataBlock:t.dataBlock,weaponShape:t.weaponShape,playerName:t.playerName,iffColor:"Player"===t.type&&null!=t.sensorGroup?this.resolveIffColor(t.sensorGroup):void 0,position:t.position&&(t.simulatedVelocity||t.itemPhysics&&!t.itemPhysics.atRest)?[...t.position]:t.position,rotation:t.rotation,velocity:t.velocity,health:t.health,energy:t.energy,actionAnim:t.actionAnim,actionAtEnd:t.actionAtEnd,damageState:t.damageState,faceViewer:t.faceViewer,threads:t.threads,explosionDataBlockId:t.explosionDataBlockId,maintainEmitterId:t.maintainEmitterId,weaponImageState:t.weaponImageState,weaponImageStates:t.weaponImageStates,headPitch:t.headPitch,headYaw:t.headYaw});let t=.032*this.state.moveTicks;return{timeSec:t,exhausted:this.state.exhausted,camera:this.state.camera,entities:e,controlPlayerGhostId:this.state.controlPlayerGhostId,playerSensorGroup:this.state.playerSensorGroup,status:this.state.lastStatus,chatMessages:this.state.chatMessages.filter(e=>e.timeSec>t-15),audioEvents:this.state.pendingAudioEvents.filter(e=>e.timeSec>t-.5&&e.timeSec<=t),weaponsHud:{slots:Array.from(this.state.weaponsHud.slots.entries()).map(([e,t])=>({index:e,ammo:t})),activeIndex:this.state.weaponsHud.activeIndex},backpackHud:this.state.backpackHud.packIndex>=0?{...this.state.backpackHud}:null,inventoryHud:{slots:Array.from(this.state.inventoryHud.slots.entries()).map(([e,t])=>({slot:e,count:t})),activeSlot:this.state.inventoryHud.activeSlot},teamScores:this.state.teamScores}}resolveIffColor(e){if(0===this.state.playerSensorGroup)return;let t=this.sensorGroupColors.get(this.state.playerSensorGroup);if(t){let a=t.get(e);if(a)return a}return e===this.state.playerSensorGroup?oc:0!==e?od:void 0}getAbsoluteRotation(e){return e?"number"==typeof e.rotationZ&&"number"==typeof e.headX?{yaw:e.rotationZ,pitch:e.headX}:"number"==typeof e.rotZ&&"number"==typeof e.rotX?{yaw:e.rotZ,pitch:e.rotX}:null:null}isPacketData(e){return!!e&&"object"==typeof e&&"gameState"in e&&"events"in e&&"ghosts"in e}isMoveData(e){return!!e&&"object"==typeof e&&"yaw"in e}isInfoData(e){return!!e&&"object"==typeof e&&"value2"in e&&"number"==typeof e.value2}resolveNetString(e){if(e.length>=2&&1===e.charCodeAt(0)){let t=parseInt(e.slice(1),10);if(Number.isFinite(t))return this.netStrings.get(t)??e}return e}formatRemoteArgs(e,t){let a=this.resolveNetString(e);for(let e=0;e{if(h){g.current=g.current+1,m(null);return}f.current?.click()},u[0]=h,u[1]=m,u[2]=e):e=u[2];let p=e;u[3]!==m?(t=async e=>{let t=e.target.files?.[0];if(t){e.target.value="";try{let e=await t.arrayBuffer(),a=g.current+1;g.current=a;let r=await oU(e);if(g.current!==a)return;m(r)}catch(e){console.error("Failed to load demo:",e)}}},u[3]=m,u[4]=t):t=u[4];let y=t;u[5]===Symbol.for("react.memo_cache_sentinel")?(i={display:"none"},u[5]=i):i=u[5],u[6]!==y?(o=(0,a.jsx)("input",{ref:f,type:"file",accept:".rec",style:i,onChange:y}),u[6]=y,u[7]=o):o=u[7];let v=h?"Unload demo":"Load demo (.rec)",F=h?"Unload demo":"Load demo (.rec)",b=h?"true":void 0;u[8]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)(t8,{className:oL.default.DemoIcon}),u[8]=s):s=u[8];let S=h?"Unload demo":"Demo";return u[9]!==S?(l=(0,a.jsx)("span",{className:oL.default.ButtonLabel,children:S}),u[9]=S,u[10]=l):l=u[10],u[11]!==p||u[12]!==v||u[13]!==F||u[14]!==b||u[15]!==l?(c=(0,a.jsxs)("button",{type:"button",className:oL.default.Root,"aria-label":v,title:F,onClick:p,"data-active":b,children:[s,l]}),u[11]=p,u[12]=v,u[13]=F,u[14]=b,u[15]=l,u[16]=c):c=u[16],u[17]!==c||u[18]!==o?(d=(0,a.jsxs)(a.Fragment,{children:[o,c]}),u[17]=c,u[18]=o,u[19]=d):d=u[19],d}function oO(e){return(0,t3.GenIcon)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"circle",attr:{cx:"12",cy:"12",r:"10"},child:[]},{tag:"line",attr:{x1:"12",y1:"16",x2:"12",y2:"12"},child:[]},{tag:"line",attr:{x1:"12",y1:"8",x2:"12.01",y2:"8"},child:[]}]})(e)}function oV(e){return(0,t3.GenIcon)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"circle",attr:{cx:"12",cy:"12",r:"3"},child:[]},{tag:"path",attr:{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"},child:[]}]})(e)}var oq=e.i(65883);function oH(e){let t,i,o,s,l,c,d,u,h,m,f,g,p,y,F,b,S,x,k,w,I,C,P,_,D,M,T,E,B,j,R,N,A,G,U,L,z,O,V,q,H,W,$,Y,K,X=(0,r.c)(103),{missionName:Z,missionType:J,onChangeMission:Q,onOpenMapInfo:ee,cameraRef:et,isTouch:ea}=e,{fogEnabled:er,setFogEnabled:en,fov:ei,setFov:eo,audioEnabled:es,setAudioEnabled:el,animationEnabled:ec,setAnimationEnabled:ed}=(0,v.useSettings)(),{speedMultiplier:eu,setSpeedMultiplier:eh,touchMode:em,setTouchMode:ef}=(0,v.useControls)(),{debugMode:eg,setDebugMode:ep}=(0,v.useDebug)(),ey=null!=ts(),[ev,eF]=(0,n.useState)(!1),eb=(0,n.useRef)(null),eS=(0,n.useRef)(null),ex=(0,n.useRef)(null);X[0]!==ev?(t=()=>{ev&&eb.current?.focus()},i=[ev],X[0]=ev,X[1]=t,X[2]=i):(t=X[1],i=X[2]),(0,n.useEffect)(t,i),X[3]===Symbol.for("react.memo_cache_sentinel")?(o=e=>{let t=e.relatedTarget;t&&ex.current?.contains(t)||eF(!1)},X[3]=o):o=X[3];let ek=o;X[4]===Symbol.for("react.memo_cache_sentinel")?(s=e=>{"Escape"===e.key&&(eF(!1),eS.current?.focus())},X[4]=s):s=X[4];let ew=s;return X[5]!==ey||X[6]!==Z||X[7]!==J||X[8]!==Q?(l=(0,a.jsx)("div",{className:oq.default.MissionSelectWrapper,children:(0,a.jsx)(t1,{value:Z,missionType:J,onChange:Q,disabled:ey})}),X[5]=ey,X[6]=Z,X[7]=J,X[8]=Q,X[9]=l):l=X[9],X[10]===Symbol.for("react.memo_cache_sentinel")?(c=()=>{eF(oW)},X[10]=c):c=X[10],X[11]===Symbol.for("react.memo_cache_sentinel")?(d=(0,a.jsx)(oV,{}),X[11]=d):d=X[11],X[12]!==ev?(u=(0,a.jsx)("button",{ref:eS,className:oq.default.Toggle,onClick:c,"aria-expanded":ev,"aria-controls":"settingsPanel","aria-label":"Settings",children:d}),X[12]=ev,X[13]=u):u=X[13],X[14]!==et||X[15]!==Z||X[16]!==J?(h=(0,a.jsx)(t6,{cameraRef:et,missionName:Z,missionType:J}),X[14]=et,X[15]=Z,X[16]=J,X[17]=h):h=X[17],X[18]===Symbol.for("react.memo_cache_sentinel")?(m=(0,a.jsx)(oz,{}),X[18]=m):m=X[18],X[19]===Symbol.for("react.memo_cache_sentinel")?(f=(0,a.jsx)(oO,{}),g=(0,a.jsx)("span",{className:oq.default.ButtonLabel,children:"Show map info"}),X[19]=f,X[20]=g):(f=X[19],g=X[20]),X[21]!==ee?(p=(0,a.jsxs)("button",{type:"button",className:oq.default.MapInfoButton,"aria-label":"Show map info",onClick:ee,children:[f,g]}),X[21]=ee,X[22]=p):p=X[22],X[23]!==p||X[24]!==h?(y=(0,a.jsxs)("div",{className:oq.default.Group,children:[h,m,p]}),X[23]=p,X[24]=h,X[25]=y):y=X[25],X[26]!==en?(F=e=>{en(e.target.checked)},X[26]=en,X[27]=F):F=X[27],X[28]!==er||X[29]!==F?(b=(0,a.jsx)("input",{id:"fogInput",type:"checkbox",checked:er,onChange:F}),X[28]=er,X[29]=F,X[30]=b):b=X[30],X[31]===Symbol.for("react.memo_cache_sentinel")?(S=(0,a.jsx)("label",{htmlFor:"fogInput",children:"Fog?"}),X[31]=S):S=X[31],X[32]!==b?(x=(0,a.jsxs)("div",{className:oq.default.CheckboxField,children:[b,S]}),X[32]=b,X[33]=x):x=X[33],X[34]!==el?(k=e=>{el(e.target.checked)},X[34]=el,X[35]=k):k=X[35],X[36]!==es||X[37]!==k?(w=(0,a.jsx)("input",{id:"audioInput",type:"checkbox",checked:es,onChange:k}),X[36]=es,X[37]=k,X[38]=w):w=X[38],X[39]===Symbol.for("react.memo_cache_sentinel")?(I=(0,a.jsx)("label",{htmlFor:"audioInput",children:"Audio?"}),X[39]=I):I=X[39],X[40]!==w?(C=(0,a.jsxs)("div",{className:oq.default.CheckboxField,children:[w,I]}),X[40]=w,X[41]=C):C=X[41],X[42]!==x||X[43]!==C?(P=(0,a.jsxs)("div",{className:oq.default.Group,children:[x,C]}),X[42]=x,X[43]=C,X[44]=P):P=X[44],X[45]!==ed?(_=e=>{ed(e.target.checked)},X[45]=ed,X[46]=_):_=X[46],X[47]!==ec||X[48]!==_?(D=(0,a.jsx)("input",{id:"animationInput",type:"checkbox",checked:ec,onChange:_}),X[47]=ec,X[48]=_,X[49]=D):D=X[49],X[50]===Symbol.for("react.memo_cache_sentinel")?(M=(0,a.jsx)("label",{htmlFor:"animationInput",children:"Animation?"}),X[50]=M):M=X[50],X[51]!==D?(T=(0,a.jsxs)("div",{className:oq.default.CheckboxField,children:[D,M]}),X[51]=D,X[52]=T):T=X[52],X[53]!==ep?(E=e=>{ep(e.target.checked)},X[53]=ep,X[54]=E):E=X[54],X[55]!==eg||X[56]!==E?(B=(0,a.jsx)("input",{id:"debugInput",type:"checkbox",checked:eg,onChange:E}),X[55]=eg,X[56]=E,X[57]=B):B=X[57],X[58]===Symbol.for("react.memo_cache_sentinel")?(j=(0,a.jsx)("label",{htmlFor:"debugInput",children:"Debug?"}),X[58]=j):j=X[58],X[59]!==B?(R=(0,a.jsxs)("div",{className:oq.default.CheckboxField,children:[B,j]}),X[59]=B,X[60]=R):R=X[60],X[61]!==T||X[62]!==R?(N=(0,a.jsxs)("div",{className:oq.default.Group,children:[T,R]}),X[61]=T,X[62]=R,X[63]=N):N=X[63],X[64]===Symbol.for("react.memo_cache_sentinel")?(A=(0,a.jsx)("label",{htmlFor:"fovInput",children:"FOV"}),X[64]=A):A=X[64],X[65]!==eo?(G=e=>eo(parseInt(e.target.value)),X[65]=eo,X[66]=G):G=X[66],X[67]!==ei||X[68]!==ey||X[69]!==G?(U=(0,a.jsx)("input",{id:"fovInput",type:"range",min:75,max:120,step:5,value:ei,disabled:ey,onChange:G}),X[67]=ei,X[68]=ey,X[69]=G,X[70]=U):U=X[70],X[71]!==ei?(L=(0,a.jsx)("output",{htmlFor:"fovInput",children:ei}),X[71]=ei,X[72]=L):L=X[72],X[73]!==U||X[74]!==L?(z=(0,a.jsxs)("div",{className:oq.default.Field,children:[A,U,L]}),X[73]=U,X[74]=L,X[75]=z):z=X[75],X[76]===Symbol.for("react.memo_cache_sentinel")?(O=(0,a.jsx)("label",{htmlFor:"speedInput",children:"Speed"}),X[76]=O):O=X[76],X[77]!==eh?(V=e=>eh(parseFloat(e.target.value)),X[77]=eh,X[78]=V):V=X[78],X[79]!==ey||X[80]!==eu||X[81]!==V?(q=(0,a.jsxs)("div",{className:oq.default.Field,children:[O,(0,a.jsx)("input",{id:"speedInput",type:"range",min:.1,max:5,step:.05,value:eu,disabled:ey,onChange:V})]}),X[79]=ey,X[80]=eu,X[81]=V,X[82]=q):q=X[82],X[83]!==z||X[84]!==q?(H=(0,a.jsxs)("div",{className:oq.default.Group,children:[z,q]}),X[83]=z,X[84]=q,X[85]=H):H=X[85],X[86]!==ea||X[87]!==ef||X[88]!==em?(W=ea&&(0,a.jsx)("div",{className:oq.default.Group,children:(0,a.jsxs)("div",{className:oq.default.Field,children:[(0,a.jsx)("label",{htmlFor:"touchModeInput",children:"Joystick:"})," ",(0,a.jsxs)("select",{id:"touchModeInput",value:em,onChange:e=>ef(e.target.value),children:[(0,a.jsx)("option",{value:"dualStick",children:"Dual Stick"}),(0,a.jsx)("option",{value:"moveLookStick",children:"Single Stick"})]})]})}),X[86]=ea,X[87]=ef,X[88]=em,X[89]=W):W=X[89],X[90]!==ev||X[91]!==y||X[92]!==P||X[93]!==N||X[94]!==H||X[95]!==W?($=(0,a.jsxs)("div",{className:oq.default.Dropdown,ref:eb,id:"settingsPanel",tabIndex:-1,onKeyDown:ew,onBlur:ek,"data-open":ev,children:[y,P,N,H,W]}),X[90]=ev,X[91]=y,X[92]=P,X[93]=N,X[94]=H,X[95]=W,X[96]=$):$=X[96],X[97]!==$||X[98]!==u?(Y=(0,a.jsxs)("div",{ref:ex,children:[u,$]}),X[97]=$,X[98]=u,X[99]=Y):Y=X[99],X[100]!==Y||X[101]!==l?(K=(0,a.jsxs)("div",{id:"controls",className:oq.default.Controls,onKeyDown:oK,onPointerDown:oY,onClick:o$,children:[l,Y]}),X[100]=Y,X[101]=l,X[102]=K):K=X[102],K}function oW(e){return!e}function o$(e){return e.stopPropagation()}function oY(e){return e.stopPropagation()}function oK(e){return e.stopPropagation()}let oX=()=>null;var oZ=e.i(31067);let oJ=n.forwardRef(({envMap:e,resolution:t=256,frames:a=1/0,makeDefault:r,children:i,...s},l)=>{let c=(0,h.useThree)(({set:e})=>e),d=(0,h.useThree)(({camera:e})=>e),m=(0,h.useThree)(({size:e})=>e),f=n.useRef(null);n.useImperativeHandle(l,()=>f.current,[]);let g=n.useRef(null),p=function(e,t,a){let r=(0,h.useThree)(e=>e.size),i=(0,h.useThree)(e=>e.viewport),s="number"==typeof e?e:r.width*i.dpr,l=r.height*i.dpr,c=("number"==typeof e?void 0:e)||{},{samples:d=0,depth:u,...m}=c,f=null!=u?u:c.depthBuffer,g=n.useMemo(()=>{let e=new o.WebGLRenderTarget(s,l,{minFilter:o.LinearFilter,magFilter:o.LinearFilter,type:o.HalfFloatType,...m});return f&&(e.depthTexture=new o.DepthTexture(s,l,o.FloatType)),e.samples=d,e},[]);return n.useLayoutEffect(()=>{g.setSize(s,l),d&&(g.samples=d)},[d,g,s,l]),n.useEffect(()=>()=>g.dispose(),[]),g}(t);n.useLayoutEffect(()=>{s.manual||(f.current.aspect=m.width/m.height)},[m,s]),n.useLayoutEffect(()=>{f.current.updateProjectionMatrix()});let y=0,v=null,F="function"==typeof i;return(0,u.useFrame)(t=>{F&&(a===1/0||y{if(r)return c(()=>({camera:f.current})),()=>c(()=>({camera:d}))},[f,r,c]),n.createElement(n.Fragment,null,n.createElement("perspectiveCamera",(0,oZ.default)({ref:f},s),!F&&i),n.createElement("group",{ref:g},F&&i(p.texture)))});function oQ(){let e,t,n=(0,r.c)(3),{fov:i}=(0,v.useSettings)();return n[0]===Symbol.for("react.memo_cache_sentinel")?(e=[0,256,0],n[0]=e):e=n[0],n[1]!==i?(t=(0,a.jsx)(oJ,{makeDefault:!0,position:e,fov:i}),n[1]=i,n[2]=t):t=n[2],t}var o0=e.i(51434),o1=e.i(86855),o2=e.i(71832),o3=n,o5=e.i(82816);class o4{states;seqIndexToName;currentStateIndex=0;delayTime=0;lastFireCount=-1;spinTimeScale=0;constructor(e,t){this.states=e,this.seqIndexToName=t,e.length>0&&(this.delayTime=e[0].timeoutValue??0)}get stateIndex(){return this.currentStateIndex}reset(){this.currentStateIndex=0,this.delayTime=this.states.length>0?this.states[0].timeoutValue??0:0,this.lastFireCount=-1}tick(e,t){if(0===this.states.length)return{sequenceName:null,isFiring:!1,spinTimeScale:0,reverse:!1,scaleAnimation:!1,timeoutValue:0,transitioned:!1,soundDataBlockIds:[],stateIndex:-1};let a=this.lastFireCount>=0&&t.fireCount!==this.lastFireCount;this.lastFireCount=t.fireCount;let r=[];if(a){let e=this.states.findIndex(e=>e.fire);if(e>=0&&e!==this.currentStateIndex){this.currentStateIndex=e,this.delayTime=this.states[e].timeoutValue??0;let t=this.states[e].soundDataBlockId;t>=0&&r.push(t)}}this.delayTime-=e;let n=a,i=this.evaluateTickTransitions(t),o=0;for(;i>=0&&o<32;){if(o++,n=!0,i===this.currentStateIndex){this.delayTime=this.states[i].timeoutValue??0;break}let e=this.states[this.currentStateIndex].spin,a=this.delayTime;this.currentStateIndex=i;let s=this.states[i].timeoutValue??0;this.delayTime=s;let l=this.states[i].soundDataBlockId;switch(l>=0&&r.push(l),this.states[i].spin){case 1:this.spinTimeScale=0;break;case 4:this.spinTimeScale=1;break;case 2:3===e&&s>0&&(this.delayTime*=1-a/s);break;case 3:2===e&&s>0&&(this.delayTime*=1-a/s)}i=this.evaluateEntryTransitions(t)}let s=this.states[this.currentStateIndex],l=s.timeoutValue??0;switch(s.spin){case 1:this.spinTimeScale=0;break;case 2:this.spinTimeScale=l>0?Math.max(0,1-this.delayTime/l):1;break;case 4:this.spinTimeScale=1;break;case 3:this.spinTimeScale=l>0?Math.max(0,this.delayTime/l):0}return{sequenceName:this.resolveSequenceName(s),isFiring:s.fire,spinTimeScale:this.spinTimeScale,reverse:!s.direction,scaleAnimation:s.scaleAnimation,timeoutValue:s.timeoutValue??0,transitioned:n,soundDataBlockIds:r,stateIndex:this.currentStateIndex}}evaluateTickTransitions(e){let t=this.states[this.currentStateIndex],a=this.delayTime<=0;if(!(a||!t.waitForTimeout))return -1;let r=this.evaluateConditions(t,e);if(-1!==r)return r;if(a){let e=t.transitionOnTimeout;if(-1!==e)return e}return -1}evaluateEntryTransitions(e){let t=this.states[this.currentStateIndex];return this.evaluateConditions(t,e)}evaluateConditions(e,t){let a=t.loaded?e.transitionOnLoaded:e.transitionOnNotLoaded;if(-1!==a)return a;let r=t.ammo?e.transitionOnAmmo:e.transitionOnNoAmmo;if(-1!==r)return r;let n=t.target?e.transitionOnTarget:e.transitionOnNoTarget;if(-1!==n)return n;let i=t.wet?e.transitionOnWet:e.transitionOnNotWet;if(-1!==i)return i;let o=t.triggerDown?e.transitionOnTriggerDown:e.transitionOnTriggerUp;return -1!==o?o:-1}resolveSequenceName(e){return null==e.sequence||e.sequence<0?null:this.seqIndexToName[e.sequence]??null}}var o6=e.i(43595),o8=e.i(29055);function o7(e,t,a){let r=e.current;if(r){try{r.stop()}catch{}r.disconnect(),a?.remove(r),e.current=null,t.current=-1}}function o9(e){let t,i,s,l,c,d,h,m,f,g,p,y,v,F,b,S,x,k,w=(0,r.c)(42),{entity:C,timeRef:P}=e,_=(0,I.useEngineStoreApi)(),D=(0,ev.useStaticShape)(C.dataBlock);w[0]!==C.dataBlock?(t=e=>{let t=C.dataBlock?.toLowerCase();return t?e.runtime.sequenceAliases.get(t):void 0},w[0]=C.dataBlock,w[1]=t):t=w[1];let M=(0,I.useEngineSelector)(t);w[2]!==D.scene?(c=o5.clone(D.scene),i=(0,o2.processShapeScene)(c),c.traverse(sr),l=new o.AnimationMixer(c),s=null,c.traverse(e=>{s||"Mount0"!==e.name||(s=e)}),w[2]=D.scene,w[3]=i,w[4]=s,w[5]=l,w[6]=c):(i=w[3],s=w[4],l=w[5],c=w[6]),w[7]!==i||w[8]!==s||w[9]!==l||w[10]!==c?(d={clonedScene:c,mixer:l,mount0:s,iflInitializers:i},w[7]=i,w[8]=s,w[9]=l,w[10]=c,w[11]=d):d=w[11];let{clonedScene:T,mixer:E,mount0:B,iflInitializers:j}=d;w[12]===Symbol.for("react.memo_cache_sentinel")?(h=new Map,w[12]=h):h=w[12];let R=(0,n.useRef)(h);w[13]===Symbol.for("react.memo_cache_sentinel")?(m={look:null,head:null,headside:null},w[13]=m):m=w[13];let N=(0,n.useRef)(m);w[14]===Symbol.for("react.memo_cache_sentinel")?(f={name:"root",timeScale:1},w[14]=f):f=w[14];let A=(0,n.useRef)(f),G=(0,n.useRef)(!1);return w[15]!==D.animations||w[16]!==E||w[17]!==M?(g=()=>{let e=(0,o6.getAliasedActions)(D.animations,E,M);R.current=e;let t=e.get("root");t&&t.play(),A.current={name:"root",timeScale:1};let a={look:null,head:null,headside:null};for(let{key:e,names:t}of[{key:"look",names:["lookde","look"]},{key:"head",names:["head"]},{key:"headside",names:["headside"]}]){let r=D.animations.find(e=>t.includes(e.name.toLowerCase()));if(!r)continue;let n=r.clone(),i=Math.round(30*r.duration/2);o.AnimationUtils.makeClipAdditive(n,i,r,30);let s=E.clipAction(n);s.blendMode=o.AdditiveAnimationBlendMode,s.timeScale=0,s.weight=1,s.play(),a[e]=s}return N.current=a,E.update(0),()=>{E.stopAllAction(),R.current=new Map,N.current={look:null,head:null,headside:null}}},p=[E,D.animations,M],w[15]=D.animations,w[16]=E,w[17]=M,w[18]=g,w[19]=p):(g=w[18],p=w[19]),(0,n.useEffect)(g,p),w[20]!==j||w[21]!==P?(y=()=>{let e=[];for(let{mesh:t,initialize:a}of j)a(t,()=>P.current).then(t=>e.push(t)).catch(sa);return()=>e.forEach(st)},w[20]=j,w[21]=P,w[22]=y):y=w[22],w[23]!==j?(v=[j],w[23]=j,w[24]=v):v=w[24],(0,n.useEffect)(y,v),w[25]!==_||w[26]!==C.headPitch||w[27]!==C.headYaw||w[28]!==C.keyframes||w[29]!==E||w[30]!==P?(F=(e,t)=>{let a=_.getState().playback,r="playing"===a.status,n=P.current,i=(0,o2.getKeyframeAtTime)(C.keyframes,n),s=i?.damageState!=null&&i.damageState>=1,l=R.current;if(s&&!G.current){G.current=!0;let e=[...l.keys()].filter(se);if(e.length>0){let t=e[Math.floor(Math.random()*e.length)],a=l.get(A.current.name.toLowerCase());a&&a.fadeOut(o2.ANIM_TRANSITION_TIME);let r=l.get(t);r.setLoop(o.LoopOnce,1),r.clampWhenFinished=!0,r.reset().fadeIn(o2.ANIM_TRANSITION_TIME).play(),A.current={name:t,timeScale:1}}}if(!s&&G.current){G.current=!1;let e=l.get(A.current.name.toLowerCase());e&&(e.stop(),e.setLoop(o.LoopRepeat,1/0),e.clampWhenFinished=!1),A.current={name:"root",timeScale:1};let t=l.get("root");t&&t.reset().play()}if(!G.current){let e=function(e,t){if(!e)return{animation:"root",timeScale:1};let[a,r,n]=e;if(n<-10)return{animation:"fall",timeScale:1};let i=-2*Math.atan2(t[1],t[3]),o=Math.cos(i),s=Math.sin(i),l=a*o+r*s,c=-a*s+r*o,d=-c,u=-l,h=Math.max(c,d,u,l);return h<.1?{animation:"root",timeScale:1}:h===c?{animation:"run",timeScale:1}:h===d?{animation:"back",timeScale:1}:h===u?{animation:"side",timeScale:1}:{animation:"side",timeScale:-1}}(i?.velocity,i?.rotation??[0,0,0,1]),t=A.current;if(e.animation!==t.name||e.timeScale!==t.timeScale){let a=l.get(t.name.toLowerCase()),n=l.get(e.animation.toLowerCase());n&&(r&&a&&a!==n?(a.fadeOut(o2.ANIM_TRANSITION_TIME),n.reset().fadeIn(o2.ANIM_TRANSITION_TIME).play()):(a&&a!==n&&a.stop(),n.reset().play()),n.timeScale=e.timeScale,A.current={name:e.animation,timeScale:e.timeScale})}}let{look:c,head:d,headside:u}=N.current,h=+!s,m=C.headPitch??0,f=C.headYaw??0,g=(m+1)/2;c&&(c.time=g*c.getClip().duration,c.weight=h),d&&(d.time=g*d.getClip().duration,d.weight=h),u&&(u.time=(f+1)/2*u.getClip().duration,u.weight=h),r?E.update(t*a.rate):E.update(0)},w[25]=_,w[26]=C.headPitch,w[27]=C.headYaw,w[28]=C.keyframes,w[29]=E,w[30]=P,w[31]=F):F=w[31],(0,u.useFrame)(F),w[32]===Symbol.for("react.memo_cache_sentinel")?(b=[0,Math.PI/2,0],w[32]=b):b=w[32],w[33]!==T?(S=(0,a.jsx)("group",{rotation:b,children:(0,a.jsx)("primitive",{object:T})}),w[33]=T,w[34]=S):S=w[34],w[35]!==C||w[36]!==B||w[37]!==P?(x=C.weaponShape&&B&&(0,a.jsx)(sT,{fallback:null,children:(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(sn,{entity:C,mount0:B,timeRef:P})})}),w[35]=C,w[36]=B,w[37]=P,w[38]=x):x=w[38],w[39]!==S||w[40]!==x?(k=(0,a.jsxs)(a.Fragment,{children:[S,x]}),w[39]=S,w[40]=x,w[41]=k):k=w[41],k}function se(e){return e.startsWith("death")}function st(e){return e()}function sa(){}function sr(e){if(e.isMesh&&e.material)for(let t of Array.isArray(e.material)?e.material:[e.material])t.side=o.FrontSide}function sn(e){let t,a,i,s,l,d,h,m,f,g,p,y,F,b,S=(0,r.c)(40),{entity:x,mount0:k,timeRef:w}=e,C=(0,I.useEngineStoreApi)(),P=(0,ev.useStaticShape)(x.weaponShape);if(S[0]!==P.animations||S[1]!==P.scene){t=o5.clone(P.scene),a=(0,o2.processShapeScene)(t);let e=(0,o2.getPosedNodeTransform)(P.scene,P.animations,"Mountpoint");if(e){let a=e.quaternion.clone().invert(),r=e.position.clone().negate().applyQuaternion(a);t.position.copy(r),t.quaternion.copy(a)}s=new Map,t.traverse(e=>{if(!e.isMesh)return;let t=e.userData,a=(t?.vis_sequence??"").toLowerCase();if(!a)return;let r=s.get(a);r||(r=[],s.set(a,r)),r.push(e)}),i=new o.AnimationMixer(t),S[0]=P.animations,S[1]=P.scene,S[2]=t,S[3]=a,S[4]=i,S[5]=s}else t=S[2],a=S[3],i=S[4],s=S[5];let _=i,D=P.scene;S[6]!==D||S[7]!==P.animations?(l=function(e,t){let a=e.userData?.dts_sequence_names;if("string"==typeof a)try{return JSON.parse(a).map(e=>e.toLowerCase())}catch{}return t.map(e=>e.name.toLowerCase())}(D,P.animations),S[6]=D,S[7]=P.animations,S[8]=l):l=S[8];let M=l;S[9]!==t||S[10]!==a||S[11]!==_||S[12]!==M||S[13]!==s?(d={weaponClone:t,weaponMixer:_,seqIndexToName:M,visNodesBySequence:s,weaponIflInitializers:a},S[9]=t,S[10]=a,S[11]=_,S[12]=M,S[13]=s,S[14]=d):d=S[14];let{weaponClone:T,weaponMixer:E,seqIndexToName:B,visNodesBySequence:j,weaponIflInitializers:R}=d;S[15]===Symbol.for("react.memo_cache_sentinel")?(h=new Map,S[15]=h):h=S[15];let N=(0,n.useRef)(h),A=(0,n.useRef)(null);S[16]!==P.animations||S[17]!==E?(m=()=>{let e=new Map;for(let t of P.animations)e.set(t.name.toLowerCase(),E.clipAction(t));N.current=e;let t=e.get("spin");return t&&(t.setLoop(o.LoopRepeat,1/0),t.timeScale=0,t.play()),A.current=t??null,E.update(0),()=>{E.stopAllAction(),N.current=new Map,A.current=null,o7(H,W)}},f=[E,P.animations],S[16]=P.animations,S[17]=E,S[18]=m,S[19]=f):(m=S[18],f=S[19]),(0,n.useEffect)(m,f),S[20]!==w||S[21]!==R?(g=()=>{let e=[];for(let{mesh:t,initialize:a}of R)a(t,()=>w.current).then(t=>e.push(t)).catch(so);return()=>e.forEach(si)},S[20]=w,S[21]=R,S[22]=g):g=S[22],S[23]!==R?(p=[R],S[23]=R,S[24]=p):p=S[24],(0,n.useEffect)(g,p);let{audioLoader:G,audioListener:U}=(0,o0.useAudio)(),L=(0,v.useSettings)(),z=L?.audioEnabled??!1,O=(0,n.useRef)(null),V=(0,n.useRef)(null),q=(0,n.useRef)(x.weaponImageStates),H=(0,n.useRef)(null),W=(0,n.useRef)(-1);return S[25]!==k||S[26]!==T?(y=()=>(k.add(T),()=>{k.remove(T)}),F=[T,k],S[25]=k,S[26]=T,S[27]=y,S[28]=F):(y=S[27],F=S[28]),(0,n.useEffect)(y,F),S[29]!==z||S[30]!==U||S[31]!==G||S[32]!==C||S[33]!==x.weaponImageState||S[34]!==x.weaponImageStates||S[35]!==B||S[36]!==j||S[37]!==T||S[38]!==E?(b=(e,t)=>{let a=C.getState().playback,r="playing"===a.status,n=N.current,i=x.weaponImageState,s=x.weaponImageStates;s!==q.current&&(q.current=s,s&&s.length>0?O.current=new o4(s,B):O.current=null,V.current=null,o7(H,W,T)),!O.current&&s&&s.length>0&&(O.current=new o4(s,B));let l=O.current;if(l&&i&&r){let e=t*a.rate,r=l.tick(e,i);if(function(e,t,a,r){let n=e.sequenceName,i=a.current;if(n===i&&!e.transitioned)return;if(n!==i){if(i){let e=r.get(i);if(e)for(let t of e)t.visible=!1}if(n){let e=r.get(n);if(e)for(let t of e)t.visible=!0}}if(!n){if(i){let e=t.get(i);e&&e.fadeOut(o2.ANIM_TRANSITION_TIME),a.current=null}return}let s=t.get(n);if(s&&(e.transitioned||n!==i)){let r=i?t.get(i):null;if(e.isFiring||e.timeoutValue>0?(s.setLoop(o.LoopOnce,1),s.clampWhenFinished=!0):(s.setLoop(o.LoopRepeat,1/0),s.clampWhenFinished=!1),e.scaleAnimation&&e.timeoutValue>0){let t=s.getClip().duration;s.timeScale=t>0?t/e.timeoutValue:1}else s.timeScale=e.reverse?-1:1;r&&r!==s?(r.fadeOut(o2.ANIM_TRANSITION_TIME),s.reset().fadeIn(o2.ANIM_TRANSITION_TIME).play()):s.reset().play(),a.current=n}}(r,n,V,j),H.current&&r.stateIndex!==W.current&&o7(H,W,T),z&&G&&U&&r.soundDataBlockIds.length>0){let e=a.recording?.streamingPlayback.getDataBlockData.bind(a.recording.streamingPlayback);if(e)for(let t of r.soundDataBlockIds){let a=(0,o8.resolveAudioProfile)(t,e);if(a)if(a.isLooping){if(!H.current)try{let e=(0,c.audioToUrl)(a.filename);(0,o8.getCachedAudioBuffer)(e,G,e=>{if(H.current)return;let t=l.stateIndex,r=new o.PositionalAudio(U);r.setBuffer(e),r.setDistanceModel("inverse"),r.setRefDistance(a.refDist),r.setMaxDistance(a.maxDist),r.setRolloffFactor(1),r.setVolume(a.volume),r.setLoop(!0),T.add(r),r.play(),H.current=r,W.current=t})}catch{}}else(0,o8.playOneShotSound)(a,U,G,void 0,T)}}A.current&&(A.current.timeScale=r.spinTimeScale)}r?E.update(t*a.rate):E.update(0)},S[29]=z,S[30]=U,S[31]=G,S[32]=C,S[33]=x.weaponImageState,S[34]=x.weaponImageStates,S[35]=B,S[36]=j,S[37]=T,S[38]=E,S[39]=b):b=S[39],(0,u.useFrame)(b),null}function si(e){return e()}function so(){}function ss(e){let t,a,i=(0,r.c)(7),{shapeName:o,eyeOffsetRef:s}=e,l=(0,ev.useStaticShape)(o);return i[0]!==s||i[1]!==l.animations||i[2]!==l.scene?(t=()=>{let e=(0,o2.getPosedNodeTransform)(l.scene,l.animations,"Eye");e?s.current.set(e.position.z,e.position.y,-e.position.x):s.current.set(0,o2.DEFAULT_EYE_HEIGHT,0)},i[0]=s,i[1]=l.animations,i[2]=l.scene,i[3]=t):t=i[3],i[4]!==s||i[5]!==l?(a=[l,s],i[4]=s,i[5]=l,i[6]=a):a=i[6],(0,n.useEffect)(t,a),null}function sl(e){let t,n,i,o=(0,r.c)(8),{shapeName:s,entityId:l,threads:c}=e,d="number"==typeof l?l:0;o[0]!==d?(t={_class:"player",_className:"Player",_id:d},o[0]=d,o[1]=t):t=o[1];let u=t;return o[2]!==c?(n=(0,a.jsx)(ev.ShapeRenderer,{loadingColor:"#00ff88",demoThreads:c}),o[2]=c,o[3]=n):n=o[3],o[4]!==s||o[5]!==n||o[6]!==u?(i=(0,a.jsx)(eF.ShapeInfoProvider,{object:u,shapeName:s,type:"StaticShape",children:n}),o[4]=s,o[5]=n,o[6]=u,o[7]=i):i=o[7],i}function sc(e){let t,n,i,o,s,l=(0,r.c)(16),{shapeName:c,playerShapeName:d}=e,u=(0,ev.useStaticShape)(d),h=(0,ev.useStaticShape)(c);if(l[0]!==u.animations||l[1]!==u.scene||l[2]!==h){e:{let e,a,r,n=(0,o2.getPosedNodeTransform)(u.scene,u.animations,"Mount0");if(!n){let e;l[4]===Symbol.for("react.memo_cache_sentinel")?(e={position:void 0,quaternion:void 0},l[4]=e):e=l[4],t=e;break e}let i=(0,o2.getPosedNodeTransform)(h.scene,h.animations,"Mountpoint");if(i){let t=i.quaternion.clone().invert(),r=i.position.clone().negate().applyQuaternion(t);a=n.quaternion.clone().multiply(t),e=r.clone().applyQuaternion(n.quaternion).add(n.position)}else e=n.position.clone(),a=n.quaternion.clone();let o=e.applyQuaternion(o2._r90),s=o2._r90.clone().multiply(a).multiply(o2._r90inv);l[5]!==o||l[6]!==s?(r={position:o,quaternion:s},l[5]=o,l[6]=s,l[7]=r):r=l[7],t=r}l[0]=u.animations,l[1]=u.scene,l[2]=h,l[3]=t}else t=l[3];let m=t;l[8]===Symbol.for("react.memo_cache_sentinel")?(n={_class:"weapon",_className:"Weapon",_id:0},l[8]=n):n=l[8];let f=n;return l[9]===Symbol.for("react.memo_cache_sentinel")?(i=(0,a.jsx)(ev.ShapeRenderer,{loadingColor:"#4488ff"}),l[9]=i):i=l[9],l[10]!==m.position||l[11]!==m.quaternion?(o=(0,a.jsx)("group",{position:m.position,quaternion:m.quaternion,children:i}),l[10]=m.position,l[11]=m.quaternion,l[12]=o):o=l[12],l[13]!==c||l[14]!==o?(s=(0,a.jsx)(eF.ShapeInfoProvider,{object:f,shapeName:c,type:"Item",children:o}),l[13]=c,l[14]=o,l[15]=s):s=l[15],s}let sd=new o.Vector3,su=new o.Vector3,sh=new o.Vector3,sm=new o.Vector3,sf=new o.Vector3,sg=new o.Vector3,sp=new o.Vector3(0,1,0);function sy(e){let t,n,i,s,l,d=(0,r.c)(14),{visual:u}=e;d[0]!==u.texture?(t=(0,c.textureToUrl)(u.texture),d[0]=u.texture,d[1]=t):t=d[1];let h=t,m=(0,g.useTexture)(h,sv),f=Array.isArray(m)?m[0]:m;d[2]!==u.color.b||d[3]!==u.color.g||d[4]!==u.color.r?(n=new o.Color().setRGB(u.color.r,u.color.g,u.color.b,o.SRGBColorSpace),d[2]=u.color.b,d[3]=u.color.g,d[4]=u.color.r,d[5]=n):n=d[5];let p=n;return d[6]!==u.size?(i=[u.size,u.size,1],d[6]=u.size,d[7]=i):i=d[7],d[8]!==p||d[9]!==f?(s=(0,a.jsx)("spriteMaterial",{map:f,color:p,transparent:!0,blending:o.AdditiveBlending,depthWrite:!1,toneMapped:!1}),d[8]=p,d[9]=f,d[10]=s):s=d[10],d[11]!==i||d[12]!==s?(l=(0,a.jsx)("sprite",{scale:i,children:s}),d[11]=i,d[12]=s,d[13]=l):l=d[13],l}function sv(e){let t=Array.isArray(e)?e[0]:e;(0,o2.setupEffectTexture)(t)}function sF(e){let t,i,s,l,d,h,m,f,p,y,v,F,b=(0,r.c)(28),{entity:S,visual:x}=e,k=(0,n.useRef)(null),w=(0,n.useRef)(null),I=(0,n.useRef)(null);b[0]===Symbol.for("react.memo_cache_sentinel")?(t=new o.Quaternion,b[0]=t):t=b[0];let C=(0,n.useRef)(t);b[1]!==x.texture?(i=(0,c.textureToUrl)(x.texture),b[1]=x.texture,b[2]=i):i=b[2];let P=x.crossTexture??x.texture;b[3]!==P?(s=(0,c.textureToUrl)(P),b[3]=P,b[4]=s):s=b[4],b[5]!==i||b[6]!==s?(l=[i,s],b[5]=i,b[6]=s,b[7]=l):l=b[7];let _=l,D=(0,g.useTexture)(_,sb);b[8]!==D?(d=Array.isArray(D)?D:[D,D],b[8]=D,b[9]=d):d=b[9];let[M,T]=d;return b[10]!==S||b[11]!==x.crossSize||b[12]!==x.crossViewAng||b[13]!==x.renderCross||b[14]!==x.tracerLength||b[15]!==x.tracerWidth?(h=e=>{let{camera:t}=e,a=k.current,r=w.current;if(!a||!r)return;let n=S.keyframes[0],i=n?.position,o=S.direction??n?.velocity;if(!i||!o||((0,o2.torqueVecToThree)(o,sd),1e-8>sd.lengthSq())){a.visible=!1,I.current&&(I.current.visible=!1);return}sd.normalize(),a.visible=!0,(0,o2.torqueVecToThree)(i,sg),su.copy(sg).sub(t.position),sh.crossVectors(su,sd),1e-8>sh.lengthSq()&&(sh.crossVectors(sp,sd),1e-8>sh.lengthSq()&&sh.set(1,0,0)),sh.normalize().multiplyScalar(x.tracerWidth);let s=.5*x.tracerLength;sm.copy(sd).multiplyScalar(-s),sf.copy(sd).multiplyScalar(s);let l=r.array;l[0]=sm.x+sh.x,l[1]=sm.y+sh.y,l[2]=sm.z+sh.z,l[3]=sm.x-sh.x,l[4]=sm.y-sh.y,l[5]=sm.z-sh.z,l[6]=sf.x-sh.x,l[7]=sf.y-sh.y,l[8]=sf.z-sh.z,l[9]=sf.x+sh.x,l[10]=sf.y+sh.y,l[11]=sf.z+sh.z,r.needsUpdate=!0;let c=I.current;if(!c)return;if(!x.renderCross){c.visible=!1;return}su.normalize();let d=sd.dot(su);if(d>-x.crossViewAng&&d{let e=v.current;if(!e)return;e.getWorldPosition(sI);let t=y.position.distanceTo(sI),a=y.matrixWorld.elements,r=!(-((sI.x-a[12])*a[8])+-((sI.y-a[13])*a[9])+-((sI.z-a[14])*a[10])<0)&&t<150;if(k!==r&&w(r),!r)return;let n=(0,o2.getKeyframeAtTime)(f.keyframes,g.current),i=n?.health??1;if(n?.damageState!=null&&n.damageState>=1){F.current&&(F.current.style.opacity="0"),b.current&&(b.current.style.opacity="0");return}let o=Math.max(0,Math.min(1,1-t/150)).toString();if(F.current&&(F.current.style.opacity=o),b.current&&(b.current.style.opacity=o),x.current&&f.iffColor){let e=f.iffColor.r>f.iffColor.g?sw:sk;x.current.src!==e&&(x.current.src=e)}S.current&&P&&(S.current.style.width=`${Math.max(0,Math.min(100,100*i))}%`,S.current.style.background=f.iffColor?`rgb(${f.iffColor.r}, ${f.iffColor.g}, ${f.iffColor.b})`:"")},m[7]=y,m[8]=f.iffColor,m[9]=f.keyframes,m[10]=P,m[11]=k,m[12]=g,m[13]=l):l=m[13],(0,u.useFrame)(l);let _=f.iffColor&&f.iffColor.r>f.iffColor.g?sw:sk;return m[14]!==I||m[15]!==P||m[16]!==C||m[17]!==_||m[18]!==k?(c=k&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(sS.Html,{position:[0,C,0],center:!0,children:(0,a.jsx)("div",{ref:F,className:sx.default.Top,children:(0,a.jsx)("img",{ref:x,className:sx.default.IffArrow,src:_,alt:""})})}),(0,a.jsx)(sS.Html,{position:[0,-.2,0],center:!0,children:(0,a.jsxs)("div",{ref:b,className:sx.default.Bottom,children:[(0,a.jsx)("div",{className:sx.default.Name,children:I}),P&&(0,a.jsx)("div",{className:sx.default.HealthBar,children:(0,a.jsx)("div",{ref:S,className:sx.default.HealthFill})})]})})]}),m[14]=I,m[15]=P,m[16]=C,m[17]=_,m[18]=k,m[19]=c):c=m[19],m[20]!==c?(d=(0,a.jsx)("group",{ref:v,children:c}),m[20]=c,m[21]=d):d=m[21],d}function sP(e){return null!=e.health}function s_(e){let t,n,i,o,s,l,c,d,u=(0,r.c)(79),{entity:h,timeRef:m}=e,f=(0,v.useDebug)(),g=f?.debugMode??!1,p=(0,I.useEngineSelector)(sD),y=String(h.id);if(h.visual?.kind==="tracer"){let e,t,r,n,i;return u[0]===Symbol.for("react.memo_cache_sentinel")?(e={demoVisualKind:"tracer"},u[0]=e):e=u[0],u[1]!==h?(t=(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sF,{entity:h,visual:h.visual})}),u[1]=h,u[2]=t):t=u[2],u[3]!==g||u[4]!==h?(r=g?(0,a.jsx)(sM,{entity:h}):null,u[3]=g,u[4]=h,u[5]=r):r=u[5],u[6]!==t||u[7]!==r?(n=(0,a.jsxs)("group",{name:"model",userData:e,children:[t,r]}),u[6]=t,u[7]=r,u[8]=n):n=u[8],u[9]!==y||u[10]!==n?(i=(0,a.jsx)("group",{name:y,children:n}),u[9]=y,u[10]=n,u[11]=i):i=u[11],i}if(h.visual?.kind==="sprite"){let e,t,r,n,i;return u[12]===Symbol.for("react.memo_cache_sentinel")?(e={demoVisualKind:"sprite"},u[12]=e):e=u[12],u[13]!==h.visual?(t=(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sy,{visual:h.visual})}),u[13]=h.visual,u[14]=t):t=u[14],u[15]!==g||u[16]!==h?(r=g?(0,a.jsx)(sM,{entity:h}):null,u[15]=g,u[16]=h,u[17]=r):r=u[17],u[18]!==t||u[19]!==r?(n=(0,a.jsxs)("group",{name:"model",userData:e,children:[t,r]}),u[18]=t,u[19]=r,u[20]=n):n=u[20],u[21]!==y||u[22]!==n?(i=(0,a.jsx)("group",{name:y,children:n}),u[21]=y,u[22]=n,u[23]=i):i=u[23],i}if(!h.dataBlock){let e,t,r,n,i,o;return u[24]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)("sphereGeometry",{args:[.3,6,4]}),u[24]=e):e=u[24],u[25]!==h.type?(t=(0,o2.entityTypeColor)(h.type),u[25]=h.type,u[26]=t):t=u[26],u[27]!==t?(r=(0,a.jsxs)("mesh",{children:[e,(0,a.jsx)("meshBasicMaterial",{color:t,wireframe:!0})]}),u[27]=t,u[28]=r):r=u[28],u[29]!==g||u[30]!==h?(n=g?(0,a.jsx)(sM,{entity:h}):null,u[29]=g,u[30]=h,u[31]=n):n=u[31],u[32]!==r||u[33]!==n?(i=(0,a.jsxs)("group",{name:"model",children:[r,n]}),u[32]=r,u[33]=n,u[34]=i):i=u[34],u[35]!==y||u[36]!==i?(o=(0,a.jsx)("group",{name:y,children:i}),u[35]=y,u[36]=i,u[37]=o):o=u[37],o}u[38]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)("sphereGeometry",{args:[.5,8,6]}),u[38]=t):t=u[38],u[39]!==h.type?(n=(0,o2.entityTypeColor)(h.type),u[39]=h.type,u[40]=n):n=u[40],u[41]!==n?(i=(0,a.jsxs)("mesh",{children:[t,(0,a.jsx)("meshBasicMaterial",{color:n,wireframe:!0})]}),u[41]=n,u[42]=i):i=u[42];let F=i;if("Player"===h.type){let e,t,r,n,i,o,s=h.id===p;return u[43]!==h||u[44]!==m?(e=(0,a.jsx)(o9,{entity:h,timeRef:m}),u[43]=h,u[44]=m,u[45]=e):e=u[45],u[46]!==F||u[47]!==e?(t=(0,a.jsx)(o3.Suspense,{fallback:F,children:e}),u[46]=F,u[47]=e,u[48]=t):t=u[48],u[49]!==F||u[50]!==t?(r=(0,a.jsx)(sT,{fallback:F,children:t}),u[49]=F,u[50]=t,u[51]=r):r=u[51],u[52]!==h||u[53]!==s||u[54]!==m?(n=!s&&(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sC,{entity:h,timeRef:m})}),u[52]=h,u[53]=s,u[54]=m,u[55]=n):n=u[55],u[56]!==r||u[57]!==n?(i=(0,a.jsxs)("group",{name:"model",children:[r,n]}),u[56]=r,u[57]=n,u[58]=i):i=u[58],u[59]!==y||u[60]!==i?(o=(0,a.jsx)("group",{name:y,children:i}),u[59]=y,u[60]=i,u[61]=o):o=u[61],o}return u[62]!==h.dataBlock||u[63]!==h.id||u[64]!==h.threads?(o=(0,a.jsx)(sl,{shapeName:h.dataBlock,entityId:h.id,threads:h.threads}),u[62]=h.dataBlock,u[63]=h.id,u[64]=h.threads,u[65]=o):o=u[65],u[66]!==F||u[67]!==o?(s=(0,a.jsx)(o3.Suspense,{fallback:F,children:o}),u[66]=F,u[67]=o,u[68]=s):s=u[68],u[69]!==F||u[70]!==s?(l=(0,a.jsx)("group",{name:"model",children:(0,a.jsx)(sT,{fallback:F,children:s})}),u[69]=F,u[70]=s,u[71]=l):l=u[71],u[72]!==h.dataBlock||u[73]!==h.weaponShape?(c=h.weaponShape&&(0,a.jsx)("group",{name:"weapon",children:(0,a.jsx)(sT,{fallback:null,children:(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sc,{shapeName:h.weaponShape,playerShapeName:h.dataBlock})})})}),u[72]=h.dataBlock,u[73]=h.weaponShape,u[74]=c):c=u[74],u[75]!==y||u[76]!==l||u[77]!==c?(d=(0,a.jsxs)("group",{name:y,children:[l,c]}),u[75]=y,u[76]=l,u[77]=c,u[78]=d):d=u[78],d}function sD(e){return e.playback.streamSnapshot?.controlPlayerGhostId}function sM(e){let t,n,i=(0,r.c)(9),{entity:o}=e,s=String(o.id);i[0]!==o.className||i[1]!==o.dataBlockId||i[2]!==o.ghostIndex||i[3]!==o.shapeHint||i[4]!==o.type||i[5]!==s?((t=[]).push(`${s} (${o.type})`),o.className&&t.push(`class ${o.className}`),"number"==typeof o.ghostIndex&&t.push(`ghost ${o.ghostIndex}`),"number"==typeof o.dataBlockId&&t.push(`db ${o.dataBlockId}`),t.push(o.shapeHint?`shapeHint ${o.shapeHint}`:"shapeHint "),i[0]=o.className,i[1]=o.dataBlockId,i[2]=o.ghostIndex,i[3]=o.shapeHint,i[4]=o.type,i[5]=s,i[6]=t):t=i[6];let l=t.join(" | ");return i[7]!==l?(n=(0,a.jsx)(z.FloatingLabel,{color:"#ff6688",children:l}),i[7]=l,i[8]=n):n=i[8],n}class sT extends o3.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e,t){console.warn("[demo] Shape load failed:",e.message,t.componentStack)}render(){return this.state.hasError?this.props.fallback:this.props.children}}let sE=Math.PI/180,sB=Math.PI/18e4;function sj(e,t,a){let r=e[t];return"number"==typeof r&&Number.isFinite(r)?r:a}function sR(e,t,a){let r=e[t];return"boolean"==typeof r?r:"number"==typeof r?0!==r:a}function sN(e,t){let a,r=e.particles;if(Array.isArray(r)){for(let e of r)if("number"==typeof e&&(a=t(e)))break}return a?{ejectionPeriodMS:sj(e,"ejectionPeriodMS",100),periodVarianceMS:sj(e,"periodVarianceMS",0),ejectionVelocity:.01*sj(e,"ejectionVelocity",200),velocityVariance:.01*sj(e,"velocityVariance",100),ejectionOffset:.01*sj(e,"ejectionOffset",0),thetaMin:sj(e,"thetaMin",0),thetaMax:sj(e,"thetaMax",90),phiReferenceVel:sj(e,"phiReferenceVel",0),phiVariance:sj(e,"phiVariance",360),overrideAdvances:sR(e,"overrideAdvances",!1),orientParticles:sR(e,"orientParticles",!1),orientOnVelocity:sR(e,"orientOnVelocity",!0),lifetimeMS:sj(e,"lifetimeMS",0)<<5,lifetimeVarianceMS:sj(e,"lifetimeVarianceMS",0)<<5,particles:function(e){let t=e.keys,a=[];if(Array.isArray(t)&&t.length>0)for(let e=0;e0&&t[0]&&(r=t[0])}return{dragCoefficient:5*sj(e,"dragCoefficient",0),windCoefficient:sj(e,"windCoefficient",1),gravityCoefficient:10*sj(e,"gravityCoefficient",0),inheritedVelFactor:sj(e,"inheritedVelFactor",0),constantAcceleration:sj(e,"constantAcceleration",0),lifetimeMS:sj(e,"lifetimeMS",31)<<5,lifetimeVarianceMS:sj(e,"lifetimeVarianceMS",0)<<5,spinSpeed:sj(e,"spinSpeed",0),spinRandomMin:sj(e,"spinRandomMin",1e3)+-1e3,spinRandomMax:sj(e,"spinRandomMax",1e3)+-1e3,useInvAlpha:sR(e,"useInvAlpha",!1),keys:a,textureName:r}}(a)}:null}function sA(e,t){return e+(2*Math.random()-1)*t}function sG(e,t,a,r,n,i,o){let s=Math.cos(o),l=Math.sin(o),c=e*r+t*n+a*i;return[e*s+(n*a-i*t)*l+r*c*(1-s),t*s+(i*e-r*a)*l+n*c*(1-s),a*s+(r*t-n*e)*l+i*c*(1-s)]}class sU{data;particles=[];maxParticles;internalClock=0;nextParticleTime=0;emitterAge=0;emitterLifetime;emitterDead=!1;constructor(e,t=256,a){this.data=e,this.maxParticles=t;let r=a??e.lifetimeMS;!a&&e.lifetimeVarianceMS>0&&(r+=Math.round(sA(0,e.lifetimeVarianceMS))),this.emitterLifetime=r}emitBurst(e,t,a=[0,0,1]){for(let r=0;r0;){if(this.nextParticleTime>0){let e=Math.min(r,this.nextParticleTime);this.nextParticleTime-=e,r-=e,this.internalClock+=e;continue}this.particles.length0&&(t+=Math.round(sA(0,this.data.periodVarianceMS))),this.nextParticleTime=Math.max(1,t)}}update(e){this.emitterAge+=e,this.emitterLifetime>0&&this.emitterAge>=this.emitterLifetime&&(this.emitterDead=!0);let t=e/1e3,a=this.data.particles;for(let r=this.particles.length-1;r>=0;r--){let n=this.particles[r];if(n.currentAge+=e,n.currentAge>=n.totalLifetime){this.particles[r]=this.particles[this.particles.length-1],this.particles.pop();continue}let i=a.dragCoefficient,o=a.gravityCoefficient,s=-n.vel[0]*i,l=-n.vel[1]*i,c=-n.vel[2]*i+-9.81*o;n.vel[0]+=s*t,n.vel[1]+=l*t,n.vel[2]+=c*t,n.pos[0]+=n.vel[0]*t,n.pos[1]+=n.vel[1]*t,n.pos[2]+=n.vel[2]*t;let d=n.currentAge/n.totalLifetime,u=function(e,t){for(let a=1;a=t){let r=e[a-1],n=e[a],i=n.time-r.time,o=i>0?(t-r.time)/i:0;return{r:r.r+(n.r-r.r)*o,g:r.g+(n.g-r.g)*o,b:r.b+(n.b-r.b)*o,a:r.a+(n.a-r.a)*o,size:r.size+(n.size-r.size)*o}}let a=e[e.length-1];return{r:a.r,g:a.g,b:a.b,a:a.a,size:a.size}}(a.keys,d);n.r=u.r,n.g=u.g,n.b=u.b,n.a=u.a,n.size=u.size,n.currentSpin=n.spinSpeed*n.currentAge*sB}}isDead(){return this.emitterDead&&0===this.particles.length}kill(){this.emitterDead=!0}addParticle(e,t){var a,r,n,i;let o,s,l,c,d=this.data,u=d.particles,h=t[0],m=t[1],f=t[2],g=(a=h,r=m,.9>Math.abs(n=f)?(o=r,s=-a,l=0):(o=-n,s=0,l=a),(c=Math.sqrt(o*o+s*s+l*l))<1e-8?[1,0,0]:[o/c,s/c,l/c]),p=(d.thetaMin+Math.random()*(d.thetaMax-d.thetaMin))*sE,y=(this.internalClock/1e3*d.phiReferenceVel+Math.random()*d.phiVariance)*sE;[h,m,f]=sG(h,m,f,g[0],g[1],g[2],p),[h,m,f]=sG(h,m,f,t[0],t[1],t[2],y);let v=Math.sqrt(h*h+m*m+f*f);v>1e-8&&(h/=v,m/=v,f/=v);let F=sA(d.ejectionVelocity,d.velocityVariance),b=[e[0]+h*d.ejectionOffset,e[1]+m*d.ejectionOffset,e[2]+f*d.ejectionOffset],S=[h*F,m*F,f*F],x=u.lifetimeMS;u.lifetimeVarianceMS>0&&(x+=Math.round(sA(0,u.lifetimeVarianceMS))),x=Math.max(1,x);let k=u.spinSpeed+((i=u.spinRandomMin)+Math.random()*(u.spinRandomMax-i)),w=u.keys[0];this.particles.push({pos:b,vel:S,orientDir:[h,m,f],currentAge:0,totalLifetime:x,dataIndex:0,spinSpeed:k,currentSpin:0,r:w.r,g:w.g,b:w.b,a:w.a,size:w.size})}}let sL=` -// 'position' is auto-declared by Three.js for ShaderMaterial. -attribute vec4 particleColor; -attribute float particleSize; -attribute float particleSpin; -attribute vec2 quadCorner; // (-0.5,-0.5) to (0.5,0.5) - -varying vec2 vUv; -varying vec4 vColor; - -void main() { - vUv = quadCorner + 0.5; // [0,1] range - vColor = particleColor; - - // Transform particle center to view space for billboarding. - vec3 viewPos = (modelViewMatrix * vec4(position, 1.0)).xyz; - - // Apply spin rotation to quad corner. - float c = cos(particleSpin); - float s = sin(particleSpin); - vec2 rotated = vec2( - c * quadCorner.x - s * quadCorner.y, - s * quadCorner.x + c * quadCorner.y - ); - - // Offset in view space (camera-facing billboard). - viewPos.xy += rotated * particleSize; - - gl_Position = projectionMatrix * vec4(viewPos, 1.0); -} -`,sz=` -uniform sampler2D particleTexture; -uniform bool hasTexture; - -varying vec2 vUv; -varying vec4 vColor; - -void main() { - if (hasTexture) { - vec4 texColor = texture2D(particleTexture, vUv); - gl_FragColor = texColor * vColor; - } else { - gl_FragColor = vColor; - } -} -`,sO=new Float32Array([-.5,-.5,.5,-.5,.5,.5,-.5,.5]),sV=new Map,sq=new Set,sH=new o.DataTexture(new Uint8Array([255,255,255,255]),1,1,o.RGBAFormat,o.UnsignedByteType);function sW(e){if(!e)return sH;let t=sV.get(e);if(t)return t;try{let t=(0,c.textureToUrl)(e),a=(0,f.loadTexture)(t,e=>{(0,o2.setupEffectTexture)(e),sq.add(e)});return(0,o2.setupEffectTexture)(a),sV.set(e,a),a}catch{return sH}}sH.needsUpdate=!0;let s$=new o.SphereGeometry(1,6,6),sY=new o.MeshBasicMaterial({color:0xff0000,wireframe:!0}),sK=new o.BoxGeometry(.3,.3,.3),sX=new o.MeshBasicMaterial({color:65280,wireframe:!0});function sZ(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function sJ(e){let t=new o.BufferGeometry,a=4*e,r=new Float32Array(2*a);for(let t=0;t{let a=C.current,r=b.current;if(!a||!r)return;let n=1e3*t,i=F.getDataBlockData.bind(F);for(let e of r.entities){if("Explosion"!==e.type||!e.explosionDataBlockId||!e.position||_.current.has(e.id))continue;_.current.add(e.id);let t=function(e,t){let a=t(e);if(!a)return null;let r=[],n=[],i=a.particleEmitter;if("number"==typeof i){let e=t(i);if(e){let n=sN(e,t);if(n){let e=a.particleDensity??10;r.push({data:n,density:e})}}}let o=a.emitters;if(Array.isArray(o))for(let e of o){if("number"!=typeof e)continue;let a=t(e);if(!a)continue;let r=sN(a,t);r&&n.push(r)}return 0===r.length&&0===n.length?null:{burstEmitters:r,streamingEmitters:n,lifetimeMS:32*(a.lifetimeMS??31)}}(e.explosionDataBlockId,i);if(!t)continue;let r=[...e.position];for(let e of t.burstEmitters){let t=new sU(e.data,256);t.emitBurst(r,e.density);let n=sW(e.data.particles.textureName),i=sJ(256),s=sQ(n,e.data.particles.useInvAlpha),l=new o.Mesh(i,s);l.frustumCulled=!1,a.add(l),P.current.push({emitter:t,mesh:l,geometry:i,material:s,targetTexture:n,origin:r,isBurst:!0,hasBurst:!0})}for(let e of t.streamingEmitters){let n=new sU(e,256,t.lifetimeMS),i=sW(e.particles.textureName),s=sJ(256),l=sQ(i,e.particles.useInvAlpha),c=new o.Mesh(s,l);c.frustumCulled=!1,a.add(c),P.current.push({emitter:n,mesh:c,geometry:s,material:l,targetTexture:i,origin:r,isBurst:!1,hasBurst:!1})}}let s=new Set;for(let e of r.entities){if(s.add(e.id),!e.maintainEmitterId||D.current.has(e.id))continue;D.current.add(e.id);let t=i(e.maintainEmitterId);if(!t)continue;let r=sN(t,i);if(!r)continue;let n=e.position?[...e.position]:[0,0,0],l=new sU(r,256),c=sW(r.particles.textureName),d=sJ(256),u=sQ(c,r.particles.useInvAlpha),h=new o.Mesh(d,u);h.frustumCulled=!1,a.add(h),P.current.push({emitter:l,mesh:h,geometry:d,material:u,targetTexture:c,origin:n,isBurst:!1,hasBurst:!1,followEntityId:e.id})}for(let e of P.current)e.followEntityId&&!s.has(e.followEntityId)&&e.emitter.kill();for(let e of D.current)s.has(e)||D.current.delete(e);let l=P.current;for(let e=l.length-1;e>=0;e--){let t=l[e];if(t.shaderChecked||(!function(e,t,a){let r=e.properties.get(t).currentProgram;if(!r)return;let n=r.program,i=e.getContext();i.getProgramParameter(n,i.LINK_STATUS)||console.error(`[ParticleFX] Shader LINK ERROR (${a}):`,i.getProgramInfoLog(n))}(I,t.material,t.isBurst?"burst":"stream"),t.shaderChecked=!0),t.followEntityId){let e=r.entities.find(e=>e.id===t.followEntityId);e?.position&&(t.origin[0]=e.position[0],t.origin[1]=e.position[1],t.origin[2]=e.position[2])}if(t.isBurst||t.emitter.emitPeriodic(t.origin,n),t.emitter.update(n),sq.has(t.targetTexture)&&t.material.uniforms.particleTexture.value!==t.targetTexture&&(t.material.uniforms.particleTexture.value=t.targetTexture),!function(e){let t=e.emitter.particles,a=e.geometry,r=a.getAttribute("position"),n=a.getAttribute("particleColor"),i=a.getAttribute("particleSize"),o=a.getAttribute("particleSpin"),s=r.array,l=n.array,c=i.array,d=o.array,u=Math.min(t.length,256);for(let e=0;e=20)continue;let a=i(t.dataBlockId);if(!a)continue;let r=a.sound;if("number"!=typeof r)continue;let n=(0,o8.resolveAudioProfile)(r,i);if(n&&n.isLooping&&n.is3D)try{let a=(0,c.audioToUrl)(n.filename);(0,o8.getCachedAudioBuffer)(a,k,a=>{if(!s.has(t.id)||e.has(t.id))return;let r=C.current;if(!r)return;let i=new o.PositionalAudio(w);i.setBuffer(a),i.setDistanceModel("inverse"),i.setRefDistance(n.refDist),i.setMaxDistance(n.maxDist),i.setRolloffFactor(1),i.setVolume(n.volume),i.setLoop(!0),i.position.set(t.position[1],t.position[2],t.position[0]),r.add(i),i.play(),e.set(t.id,i)})}catch{}}for(let[t,a]of e)if(!s.has(t)){try{a.stop()}catch{}a.disconnect(),C.current?.remove(a),e.delete(t)}for(let e of r.audioEvents){let t=`${e.timeSec}:${e.profileId}:${e.position?.x??""}`;if(T.current.has(t))continue;T.current.add(t);let a=(0,o8.resolveAudioProfile)(e.profileId,i);if(!a)continue;let r=e.position?new o.Vector3(e.position.y,e.position.z,e.position.x):void 0;(0,o8.playOneShotSound)(a,w,k,r,C.current)}}if(_.current.size>500){let e=new Set(r.entities.map(s2));for(let t of _.current)e.has(t)||_.current.delete(t)}if(T.current.size>500){let e=new Set(r.entities.map(s1));for(let t of T.current)t.startsWith("snd:")&&e.has(t.slice(4))||T.current.delete(t)}},y[5]=x,y[6]=w,y[7]=k,y[8]=S,y[9]=I,y[10]=F,y[11]=b,y[12]=m):m=y[12],(0,u.useFrame)(m),y[13]===Symbol.for("react.memo_cache_sentinel")?(f=()=>()=>{let e=C.current;for(let t of P.current){if(e&&(e.remove(t.mesh),t.debugOriginMesh&&e.remove(t.debugOriginMesh),t.debugParticleMeshes))for(let a of t.debugParticleMeshes)e.remove(a);t.geometry.dispose(),t.material.dispose()}for(let[,t]of(P.current=[],_.current.clear(),D.current.clear(),M.current)){try{t.stop()}catch{}t.disconnect(),e&&e.remove(t)}M.current.clear(),T.current.clear()},g=[],y[13]=f,y[14]=g):(f=y[13],g=y[14]),(0,n.useEffect)(f,g),y[15]===Symbol.for("react.memo_cache_sentinel")?(p=(0,a.jsx)("group",{ref:C}),y[15]=p):p=y[15],p}function s1(e){return e.id}function s2(e){return e.id}function s3(e){return e.gl}let s5=new WeakMap;function s4(e){let t=s5.get(e);return t||(t=new Map(e.entities.map(e=>[e.id,e])),s5.set(e,t)),t}let s6=new o.Vector3,s8=new o.Quaternion,s7=new o.Quaternion,s9=new o.Quaternion(0,1,0,0),le=new o.Vector3,lt=new o.Vector3,la=new o.Vector3;function lr(e){let t,i,s,l,d,h,m,f,g,p,y,v,F=(0,r.c)(24),{recording:b}=e,S=(0,I.useEngineStoreApi)(),x=(0,n.useRef)(null),k=(0,n.useRef)(0),w=(0,n.useRef)(0),C=(0,n.useRef)(null),P=(0,n.useRef)(null);F[0]===Symbol.for("react.memo_cache_sentinel")?(t=new o.Vector3(0,o2.DEFAULT_EYE_HEIGHT,0),F[0]=t):t=F[0];let _=(0,n.useRef)(t),D=(0,n.useRef)(b.streamingPlayback??null),M=(0,n.useRef)(null);F[1]===Symbol.for("react.memo_cache_sentinel")?(i=new Map,F[1]=i):i=F[1];let T=(0,n.useRef)(i),E=(0,n.useRef)(null);F[2]===Symbol.for("react.memo_cache_sentinel")?(s=[],F[2]=s):s=F[2];let[B,j]=(0,n.useState)(s),[R,N]=(0,n.useState)(null);F[3]===Symbol.for("react.memo_cache_sentinel")?(l=e=>{if(e===E.current)return;E.current=e;let t=T.current,a=new Map,r=e.entities.length!==t.size;for(let n of e.entities){let i=t.get(n.id);i&&i.type===n.type&&i.dataBlock===n.dataBlock&&i.weaponShape===n.weaponShape&&i.className===n.className&&i.ghostIndex===n.ghostIndex&&i.dataBlockId===n.dataBlockId&&i.shapeHint===n.shapeHint||(i=(0,o2.buildStreamDemoEntity)(n.id,n.type,n.dataBlock,n.visual,n.direction,n.weaponShape,n.playerName,n.className,n.ghostIndex,n.dataBlockId,n.shapeHint),r=!0),i.playerName=n.playerName,i.iffColor=n.iffColor,i.dataBlock=n.dataBlock,i.visual=n.visual,i.direction=n.direction,i.weaponShape=n.weaponShape,i.className=n.className,i.ghostIndex=n.ghostIndex,i.dataBlockId=n.dataBlockId,i.shapeHint=n.shapeHint,i.threads=n.threads,i.weaponImageState=n.weaponImageState,i.weaponImageStates=n.weaponImageStates,i.headPitch=n.headPitch,i.headYaw=n.headYaw,0===i.keyframes.length&&i.keyframes.push({time:e.timeSec,position:n.position??[0,0,0],rotation:n.rotation??[0,0,0,1]});let o=i.keyframes[0];o.time=e.timeSec,n.position&&(o.position=n.position),n.rotation&&(o.rotation=n.rotation),o.velocity=n.velocity,o.health=n.health,o.energy=n.energy,o.actionAnim=n.actionAnim,o.actionAtEnd=n.actionAtEnd,o.damageState=n.damageState,a.set(n.id,i)}T.current=a,r&&j(Array.from(a.values()));let n=null;if(e.camera?.mode==="first-person"&&e.camera.controlEntityId){let t=a.get(e.camera.controlEntityId);t?.dataBlock&&(n=t.dataBlock)}N(e=>e===n?e:n)},F[3]=l):l=F[3];let A=l;return F[4]!==S||F[5]!==b.streamingPlayback?(d=()=>{D.current=b.streamingPlayback??null,T.current=new Map,E.current=null,M.current=null,k.current=0,w.current=0,C.current=null,P.current=null;let e=D.current;if(!e)return void S.getState().setPlaybackStreamSnapshot(null);for(let t of(e.reset(),e.getEffectShapes()))L.useGLTF.preload((0,c.shapeToUrl)(t));let t=e.getSnapshot();return k.current=t.timeSec,w.current=t.timeSec,C.current=t,P.current=t,A(t),S.getState().setPlaybackStreamSnapshot(t),M.current=t,()=>{S.getState().setPlaybackStreamSnapshot(null)}},F[4]=S,F[5]=b.streamingPlayback,F[6]=d):d=F[6],F[7]!==S||F[8]!==b?(h=[b,S,A],F[7]=S,F[8]=b,F[9]=h):h=F[9],(0,n.useEffect)(d,h),F[10]!==S?(m=(e,t)=>{let a=D.current;if(!a)return;let r=S.getState(),n=r.playback,i="playing"===n.status,o=n.timeMs/1e3,s=!i&&Math.abs(o-w.current)>5e-4,l=i&&Math.abs(o-k.current)>.05,c=s||l;c&&(w.current=o),i&&(w.current=w.current+t*n.rate);let d=Math.max(1,Math.ceil(1e3*t*Math.max(n.rate,.01)/32)+2),u=w.current+o2.STREAM_TICK_SEC,h=a.stepToTime(u,i&&!c?d:1/0),m=P.current;!m||h.timeSec1.5*o2.STREAM_TICK_SEC?(C.current=h,P.current=h):h.timeSec!==m.timeSec&&(C.current=m,P.current=h);let f=P.current??h,g=C.current??f,p=f.timeSec-o2.STREAM_TICK_SEC,y=Math.max(0,Math.min(1,(w.current-p)/o2.STREAM_TICK_SEC));k.current=w.current,h.exhausted&&i&&(w.current=Math.min(w.current,h.timeSec)),A(f);let v=M.current;v&&f.timeSec===v.timeSec&&f.exhausted===v.exhausted&&f.status.health===v.status.health&&f.status.energy===v.status.energy&&f.camera?.mode===v.camera?.mode&&f.camera?.controlEntityId===v.camera?.controlEntityId&&f.camera?.orbitTargetId===v.camera?.orbitTargetId&&f.chatMessages.length===v.chatMessages.length&&f.teamScores===v.teamScores||(M.current=f,r.setPlaybackStreamSnapshot(f));let F=f.camera,b=F&&g.camera&&g.camera.mode===F.mode&&g.camera.controlEntityId===F.controlEntityId&&g.camera.orbitTargetId===F.orbitTargetId?g.camera:null;if(F){if(b){let t=b.position[0],a=b.position[1],r=b.position[2],n=F.position[0],i=F.position[1],o=F.position[2];e.camera.position.set(a+(i-a)*y,r+(o-r)*y,t+(n-t)*y),s8.set(...b.rotation),s7.set(...F.rotation),s8.slerp(s7,y),e.camera.quaternion.copy(s8)}else e.camera.position.set(F.position[1],F.position[2],F.position[0]),e.camera.quaternion.set(...F.rotation);if(Number.isFinite(F.fov)&&"isPerspectiveCamera"in e.camera&&e.camera.isPerspectiveCamera){let t=e.camera,a=b&&Number.isFinite(b.fov)?b.fov+(F.fov-b.fov)*y:F.fov,r=(0,o2.torqueHorizontalFovToThreeVerticalFov)(a,t.aspect);Math.abs(t.fov-r)>.01&&(t.fov=r,t.updateProjectionMatrix())}}let I=s4(f),T=s4(g),E=x.current;if(E)for(let t of E.children){let a=I.get(t.name);if(!a?.position){t.visible=!1;continue}t.visible=!0;let r=T.get(t.name);if(r?.position){let e=r.position[0],n=r.position[1],i=r.position[2],o=a.position[0],s=a.position[1],l=a.position[2],c=e+(o-e)*y,d=n+(s-n)*y,u=i+(l-i)*y;t.position.set(d,u,c)}else t.position.set(a.position[1],a.position[2],a.position[0]);a.faceViewer?t.quaternion.copy(e.camera.quaternion).multiply(s9):a.visual?.kind==="tracer"?t.quaternion.identity():a.rotation&&(r?.rotation?(s8.set(...r.rotation),s7.set(...a.rotation),s8.slerp(s7,y),t.quaternion.copy(s8)):t.quaternion.set(...a.rotation))}let B=F?.mode;if("third-person"===B&&E&&F?.orbitTargetId){let t=E.children.find(e=>e.name===F.orbitTargetId);if(t){let a=I.get(F.orbitTargetId);lt.copy(t.position),a?.type==="Player"&&(lt.y=lt.y+1);let r=!1;if("number"==typeof F.yaw&&"number"==typeof F.pitch){let e=Math.sin(F.pitch),t=Math.cos(F.pitch),a=Math.sin(F.yaw),n=Math.cos(F.yaw);le.set(-t,-a*e,-n*e),r=le.lengthSq()>1e-8}if(r||(le.copy(e.camera.position).sub(lt),r=le.lengthSq()>1e-8),r){le.normalize();let t=Math.max(.1,F.orbitDistance??4);la.copy(lt).addScaledVector(le,t),e.camera.position.copy(la),e.camera.lookAt(lt)}}}if("first-person"===B&&E&&F?.controlEntityId){let t=E.children.find(e=>e.name===F.controlEntityId);t?(s6.copy(_.current).applyQuaternion(t.quaternion),e.camera.position.add(s6)):e.camera.position.y=e.camera.position.y+_.current.y}i&&h.exhausted&&r.setPlaybackStatus("paused");let j=1e3*w.current;Math.abs(j-n.timeMs)>.5&&r.setPlaybackTime(j)},F[10]=S,F[11]=m):m=F[11],(0,u.useFrame)(m),F[12]!==B?(f=B.map(e=>(0,a.jsx)(s_,{entity:e,timeRef:k},e.id)),F[12]=B,F[13]=f):f=F[13],F[14]!==f?(g=(0,a.jsx)("group",{ref:x,children:f}),F[14]=f,F[15]=g):g=F[15],F[16]!==b.streamingPlayback?(p=(0,a.jsx)(s0,{playback:b.streamingPlayback,snapshotRef:P}),F[16]=b.streamingPlayback,F[17]=p):p=F[17],F[18]!==R?(y=R&&(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(ss,{shapeName:R,eyeOffsetRef:_})}),F[18]=R,F[19]=y):y=F[19],F[20]!==p||F[21]!==y||F[22]!==g?(v=(0,a.jsxs)(eE.TickProvider,{children:[g,p,y]}),F[20]=p,F[21]=y,F[22]=g,F[23]=v):v=F[23],v}function ln(){let e,t=(0,r.c)(2),n=ts();return n?(t[0]!==n?(e=(0,a.jsx)(lr,{recording:n}),t[0]=n,t[1]=e):e=t[1],e):null}var li=e.i(21629);let lo=[.25,.5,1,2,4];function ls(e){let t=Math.floor(e/60),a=Math.floor(e%60);return`${t}:${a.toString().padStart(2,"0")}`}function ll(){let e,t,i,o,s,l,c,d,u,h,m,f,g=(0,r.c)(33),p=ts(),y=(0,I.useEngineSelector)(tc),v=(0,I.useEngineSelector)(td),F=(0,I.useEngineSelector)(tu),b=(0,I.useEngineSelector)(th),{play:S,pause:x,seek:k,setSpeed:w}=tm();g[0]!==y||g[1]!==x||g[2]!==S||g[3]!==p?(e=()=>{if(!p)return;let e=e=>{if("Space"!==e.code)return;let t=e.target;"INPUT"===t.tagName||"TEXTAREA"===t.tagName||"SELECT"===t.tagName||"BUTTON"===t.tagName||t.isContentEditable||(e.preventDefault(),y?x():S())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},t=[p,y,S,x],g[0]=y,g[1]=x,g[2]=S,g[3]=p,g[4]=e,g[5]=t):(e=g[4],t=g[5]),(0,n.useEffect)(e,t),g[6]!==k?(i=e=>{k(parseFloat(e.target.value))},g[6]=k,g[7]=i):i=g[7];let C=i;g[8]!==w?(o=e=>{w(parseFloat(e.target.value))},g[8]=w,g[9]=o):o=g[9];let P=o;if(!p)return null;let _=y?x:S,D=y?"Pause":"Play",M=y?"❚❚":"▶";g[10]!==_||g[11]!==D||g[12]!==M?(s=(0,a.jsx)("button",{className:li.default.PlayPause,onClick:_,"aria-label":D,children:M}),g[10]=_,g[11]=D,g[12]=M,g[13]=s):s=g[13],g[14]!==v?(l=ls(v),g[14]=v,g[15]=l):l=g[15],g[16]!==F?(c=ls(F),g[16]=F,g[17]=c):c=g[17];let T=`${l} / ${c}`;return g[18]!==T?(d=(0,a.jsx)("span",{className:li.default.Time,children:T}),g[18]=T,g[19]=d):d=g[19],g[20]!==v||g[21]!==F||g[22]!==C?(u=(0,a.jsx)("input",{className:li.default.Seek,type:"range",min:0,max:F,step:.01,value:v,onChange:C}),g[20]=v,g[21]=F,g[22]=C,g[23]=u):u=g[23],g[24]===Symbol.for("react.memo_cache_sentinel")?(h=lo.map(lc),g[24]=h):h=g[24],g[25]!==P||g[26]!==b?(m=(0,a.jsx)("select",{className:li.default.Speed,value:b,onChange:P,children:h}),g[25]=P,g[26]=b,g[27]=m):m=g[27],g[28]!==d||g[29]!==u||g[30]!==m||g[31]!==s?(f=(0,a.jsxs)("div",{className:li.default.Root,onKeyDown:lh,onPointerDown:lu,onClick:ld,children:[s,d,u,m]}),g[28]=d,g[29]=u,g[30]=m,g[31]=s,g[32]=f):f=g[32],f}function lc(e){return(0,a.jsxs)("option",{value:e,children:[e,"x"]},e)}function ld(e){return e.stopPropagation()}function lu(e){return e.stopPropagation()}function lh(e){return e.stopPropagation()}var lm=e.i(75840);let lf=(0,c.textureToUrl)("gui/hud_new_compass"),lg=(0,c.textureToUrl)("gui/hud_new_NSEW");function lp(e){let t,n,i=(0,r.c)(3),{yaw:o}=e;if(null==o)return null;let s=180*o/Math.PI;i[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)("img",{src:lf,alt:"",className:lm.default.CompassRing}),i[0]=t):t=i[0];let l=`rotate(${-s}deg)`;return i[1]!==l?(n=(0,a.jsxs)("div",{className:lm.default.Compass,children:[t,(0,a.jsx)("img",{src:lg,alt:"",className:lm.default.CompassNSEW,style:{transform:l}})]}),i[1]=l,i[2]=n):n=i[2],n}function ly(e){let t,n=(0,r.c)(2),{value:i}=e,o=Math.max(0,Math.min(100,100*i)),s=`${o}%`;return n[0]!==s?(t=(0,a.jsx)("div",{className:lm.default.BarTrack,children:(0,a.jsx)("div",{className:lm.default.BarFillHealth,style:{width:s}})}),n[0]=s,n[1]=t):t=n[1],t}function lv(e){let t,n=(0,r.c)(2),{value:i}=e,o=Math.max(0,Math.min(100,100*i)),s=`${o}%`;return n[0]!==s?(t=(0,a.jsx)("div",{className:lm.default.BarTrack,children:(0,a.jsx)("div",{className:lm.default.BarFillEnergy,style:{width:s}})}),n[0]=s,n[1]=t):t=n[1],t}let lF={weapon_sniper:"gui/hud_ret_sniper",weapon_shocklance:"gui/hud_ret_shocklance",weapon_targeting:"gui/hud_ret_targlaser"};function lb(){let e,t=(0,r.c)(5),n=(0,I.useEngineSelector)(lS);if(void 0===n)return null;let i=lF[!n?"":n.replace(/\.dts$/i,"").toLowerCase()];if(i){let e,r;return t[0]!==i?(e=(0,c.textureToUrl)(i),t[0]=i,t[1]=e):e=t[1],t[2]!==e?(r=(0,a.jsx)("div",{className:lm.default.Reticle,children:(0,a.jsx)("img",{src:e,alt:"",className:lm.default.ReticleImage})}),t[2]=e,t[3]=r):r=t[3],r}return t[4]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)("div",{className:lm.default.Reticle,children:(0,a.jsx)("div",{className:lm.default.ReticleDot})}),t[4]=e):e=t[4],e}function lS(e){let t=e.playback.streamSnapshot;if(!t||t.camera?.mode!=="first-person")return;let a=t.controlPlayerGhostId;if(a)return t.entities.find(e=>e.id===a)?.weaponShape}let lx={0:{icon:"gui/hud_blaster",label:"Blaster"},1:{icon:"gui/hud_plasma",label:"Plasma"},2:{icon:"gui/hud_chaingun",label:"Chaingun"},3:{icon:"gui/hud_disc",label:"Spinfusor"},4:{icon:"gui/hud_grenlaunch",label:"GL"},5:{icon:"gui/hud_sniper",label:"Laser Rifle"},6:{icon:"gui/hud_elfgun",label:"ELF Gun"},7:{icon:"gui/hud_new_mortar",label:"Mortar"},8:{icon:"gui/hud_missiles",label:"Missile"},9:{icon:"gui/hud_targetlaser",label:"Targeting"},10:{icon:"gui/hud_shocklance",label:"Shocklance"},11:{icon:"gui/hud_disc",label:"Spinfusor"},12:{icon:"gui/hud_grenlaunch",label:"GL"},13:{icon:"gui/hud_chaingun",label:"Chaingun"},14:{icon:"gui/hud_targetlaser",label:"Targeting"},15:{icon:"gui/hud_targetlaser",label:"Targeting"},16:{icon:"gui/hud_shocklance",label:"Shocklance"},17:{icon:"gui/hud_new_mortar",label:"Mortar"}},lk=new Map(Object.entries(lx).map(([e,t])=>[Number(e),(0,c.textureToUrl)(t.icon)])),lw=new Set([9,14,15]),lI=(0,c.textureToUrl)("gui/hud_infinity");function lC(e){let t,n,i,o,s=(0,r.c)(12),{slot:l,isSelected:c}=e,d=lx[l.index];if(!d)return null;let u=l.ammo<0,h=`${lm.default.PackInvItem} ${c?lm.default.PackInvItemActive:lm.default.PackInvItemDim}`;return s[0]!==l.index?(t=lk.get(l.index),s[0]=l.index,s[1]=t):t=s[1],s[2]!==d.label||s[3]!==t?(n=(0,a.jsx)("img",{src:t,alt:d.label,className:lm.default.PackInvIcon}),s[2]=d.label,s[3]=t,s[4]=n):n=s[4],s[5]!==u||s[6]!==l.ammo?(i=u?(0,a.jsx)("img",{src:lI,alt:"\\u221E",className:lm.default.PackInvInfinity}):(0,a.jsx)("span",{className:lm.default.PackInvCount,children:l.ammo}),s[5]=u,s[6]=l.ammo,s[7]=i):i=s[7],s[8]!==h||s[9]!==n||s[10]!==i?(o=(0,a.jsxs)("div",{className:h,children:[n,i]}),s[8]=h,s[9]=n,s[10]=i,s[11]=o):o=s[11],o}function lP(){let e,t,n,i,o,s,l=(0,r.c)(15),c=(0,I.useEngineSelector)(l_);if(!c||!c.slots.length)return null;if(l[0]!==c.slots){for(let a of(t=[],e=[],c.slots))lw.has(a.index)?e.push(a):t.push(a);l[0]=c.slots,l[1]=e,l[2]=t}else e=l[1],t=l[2];return l[3]!==t||l[4]!==c?(n=t.map(e=>(0,a.jsx)(lC,{slot:e,isSelected:e.index===c.activeIndex},e.index)),l[3]=t,l[4]=c,l[5]=n):n=l[5],l[6]!==e.length?(i=e.length>0&&(0,a.jsx)("div",{className:lm.default.WeaponSeparator}),l[6]=e.length,l[7]=i):i=l[7],l[8]!==e||l[9]!==c?(o=e.map(e=>(0,a.jsx)(lC,{slot:e,isSelected:e.index===c.activeIndex},e.index)),l[8]=e,l[9]=c,l[10]=o):o=l[10],l[11]!==n||l[12]!==i||l[13]!==o?(s=(0,a.jsxs)("div",{className:lm.default.WeaponHUD,children:[n,i,o]}),l[11]=n,l[12]=i,l[13]=o,l[14]=s):s=l[14],s}function l_(e){return e.playback.streamSnapshot?.weaponsHud}let lD={1:"Storm",2:"Inferno",3:"Starwolf",4:"Diamond Sword",5:"Blood Eagle",6:"Phoenix"};function lM(){let e,t,n,i=(0,r.c)(11),o=(0,I.useEngineSelector)(lE),s=(0,I.useEngineSelector)(lT);if(!o?.length)return null;if(i[0]!==s||i[1]!==o){let r,n;i[4]!==s?(r=(e,t)=>{if(s){if(e.teamId===s)return -1;if(t.teamId===s)return 1}return e.teamId-t.teamId},i[4]=s,i[5]=r):r=i[5];let l=[...o].sort(r);e=lm.default.TeamScores,i[6]!==s?(n=e=>{let t=s>0&&e.teamId===s,r=e.name||(lD[e.teamId]??`Team ${e.teamId}`);return(0,a.jsxs)("div",{className:lm.default.TeamRow,children:[(0,a.jsx)("span",{className:t?lm.default.TeamNameFriendly:lm.default.TeamNameEnemy,children:r}),(0,a.jsx)("span",{className:lm.default.TeamScore,children:e.score}),(0,a.jsxs)("span",{className:lm.default.TeamCount,children:["(",e.playerCount,")"]})]},e.teamId)},i[6]=s,i[7]=n):n=i[7],t=l.map(n),i[0]=s,i[1]=o,i[2]=e,i[3]=t}else e=i[2],t=i[3];return i[8]!==e||i[9]!==t?(n=(0,a.jsx)("div",{className:e,children:t}),i[8]=e,i[9]=t,i[10]=n):n=i[10],n}function lT(e){return e.playback.streamSnapshot?.playerSensorGroup}function lE(e){return e.playback.streamSnapshot?.teamScores}let lB={0:lm.default.ChatColor0,1:lm.default.ChatColor1,2:lm.default.ChatColor2,3:lm.default.ChatColor3,4:lm.default.ChatColor4,5:lm.default.ChatColor5,6:lm.default.ChatColor6,7:lm.default.ChatColor7,8:lm.default.ChatColor8,9:lm.default.ChatColor9};function lj(){let e,t,n,i,o=(0,r.c)(13),s=(0,I.useEngineSelector)(lA),l=(0,I.useEngineSelector)(lN);if(!s||!s.length||null==l)return null;let c=l-7.5;if(o[0]!==c||o[1]!==s||o[2]!==l){n=Symbol.for("react.early_return_sentinel");e:{let r,i;o[6]!==c?(r=e=>e.timeSec>c&&""!==e.text.trim(),o[6]=c,o[7]=r):r=o[7];let d=s.filter(r);if(!d.length){n=null;break e}e=lm.default.ChatWindow,o[8]!==l?(i=(e,t)=>{let r=l-e.timeSec,n=r<=6?1:Math.max(0,1-(r-6)/1.5);return(0,a.jsx)("div",{className:lm.default.ChatMessage,style:{opacity:n},children:e.segments?e.segments.map(lR):(0,a.jsxs)("span",{className:null!=e.colorCode&&lB[e.colorCode]?lB[e.colorCode]:lB[0],children:[e.sender?`${e.sender}: `:"",e.text]})},`${e.timeSec}-${t}`)},o[8]=l,o[9]=i):i=o[9],t=d.map(i)}o[0]=c,o[1]=s,o[2]=l,o[3]=e,o[4]=t,o[5]=n}else e=o[3],t=o[4],n=o[5];return n!==Symbol.for("react.early_return_sentinel")?n:(o[10]!==e||o[11]!==t?(i=(0,a.jsx)("div",{className:e,children:t}),o[10]=e,o[11]=t,o[12]=i):i=o[12],i)}function lR(e,t){return(0,a.jsx)("span",{className:lB[e.colorCode]??lB[0],children:e.text},t)}function lN(e){return e.playback.streamSnapshot?.timeSec}function lA(e){return e.playback.streamSnapshot?.chatMessages}let lG=new Map(Object.entries({0:"gui/hud_new_packammo",1:"gui/hud_new_packcloak",2:"gui/hud_new_packenergy",3:"gui/hud_new_packrepair",4:"gui/hud_new_packsatchel",5:"gui/hud_new_packshield",6:"gui/hud_new_packinventory",7:"gui/hud_new_packmotionsens",8:"gui/hud_new_packradar",9:"gui/hud_new_packturretout",10:"gui/hud_new_packturretin",11:"gui/hud_new_packsensjam",12:"gui/hud_new_packturret",13:"gui/hud_new_packturret",14:"gui/hud_new_packturret",15:"gui/hud_new_packturret",16:"gui/hud_new_packturret",17:"gui/hud_new_packturret",18:"gui/hud_satchel_unarmed",19:"gui/hud_new_packenergy"}).map(([e,t])=>[Number(e),(0,c.textureToUrl)(t)])),lU=new Map(Object.entries({1:"gui/hud_new_packcloak_armed",3:"gui/hud_new_packrepair_armed",4:"gui/hud_satchel_armed",5:"gui/hud_new_packshield_armed",11:"gui/hud_new_packsensjam_armed"}).map(([e,t])=>[Number(e),(0,c.textureToUrl)(t)])),lL={0:{icon:"gui/hud_handgren",label:"Grenade"},1:{icon:"gui/hud_mine",label:"Mine"},2:{icon:"gui/hud_beacon",label:"Beacon"},3:{icon:"gui/hud_medpack",label:"Repair Kit"}},lz=new Map(Object.entries(lL).map(([e,t])=>[Number(e),(0,c.textureToUrl)(t.icon)]));function lO(){let e,t,n,i,o,s,l,c=(0,r.c)(25),d=(0,I.useEngineSelector)(lH),u=(0,I.useEngineSelector)(lq),h=d&&d.packIndex>=0;if(h){let t,a;c[0]!==d.active||c[1]!==d.packIndex?(t=d.active?lU.get(d.packIndex):void 0,c[0]=d.active,c[1]=d.packIndex,c[2]=t):t=c[2];let r=t;c[3]!==r||c[4]!==d.packIndex?(a=r??lG.get(d.packIndex),c[3]=r,c[4]=d.packIndex,c[5]=a):a=c[5],e=a}if(c[6]!==u){if(t=new Map,u)for(let e of u.slots)t.set(e.slot,e.count);c[6]=u,c[7]=t}else t=c[7];if(c[8]!==d||c[9]!==t||c[10]!==h||c[11]!==e){s=Symbol.for("react.early_return_sentinel");e:{let r,l=Object.keys(lL).map(Number).sort(lV);if(!h&&!t.size){s=null;break e}n=lm.default.PackInventoryHUD,c[16]!==d||c[17]!==e?(i=e&&(0,a.jsxs)("div",{className:`${lm.default.PackInvItem} ${d.active?lm.default.PackInvItemActive:""}`,children:[(0,a.jsx)("img",{src:e,alt:"",className:lm.default.PackInvIcon}),(0,a.jsx)("span",{className:lm.default.PackInvCount,children:d.text||" "})]}),c[16]=d,c[17]=e,c[18]=i):i=c[18],c[19]!==t?(r=e=>{let r=lL[e],n=lz.get(e);return r&&n?(0,a.jsxs)("div",{className:lm.default.PackInvItem,children:[(0,a.jsx)("img",{src:n,alt:r.label,className:lm.default.PackInvIcon}),(0,a.jsx)("span",{className:lm.default.PackInvCount,children:t.get(e)??0})]},e):null},c[19]=t,c[20]=r):r=c[20],o=l.map(r)}c[8]=d,c[9]=t,c[10]=h,c[11]=e,c[12]=n,c[13]=i,c[14]=o,c[15]=s}else n=c[12],i=c[13],o=c[14],s=c[15];return s!==Symbol.for("react.early_return_sentinel")?s:(c[21]!==n||c[22]!==i||c[23]!==o?(l=(0,a.jsxs)("div",{className:n,children:[i,o]}),c[21]=n,c[22]=i,c[23]=o,c[24]=l):l=c[24],l)}function lV(e,t){return e-t}function lq(e){return e.playback.streamSnapshot?.inventoryHud}function lH(e){return e.playback.streamSnapshot?.backpackHud}function lW(){let e,t,n,i,o,s,l,c,d,u,h,m=(0,r.c)(19),f=ts(),g=(0,I.useEngineSelector)(l$);if(!f)return null;let p=g?.status;if(!p)return null;m[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)(lj,{}),m[0]=e):e=m[0],m[1]!==p.health?(t=(0,a.jsx)(ly,{value:p.health}),m[1]=p.health,m[2]=t):t=m[2],m[3]!==p.energy?(n=(0,a.jsx)(lv,{value:p.energy}),m[3]=p.energy,m[4]=n):n=m[4],m[5]!==t||m[6]!==n?(i=(0,a.jsxs)("div",{className:lm.default.Bars,children:[t,n]}),m[5]=t,m[6]=n,m[7]=i):i=m[7];let y=g?.camera?.yaw;return m[8]!==y?(o=(0,a.jsx)(lp,{yaw:y}),m[8]=y,m[9]=o):o=m[9],m[10]!==i||m[11]!==o?(s=(0,a.jsxs)("div",{className:lm.default.TopRight,children:[i,o]}),m[10]=i,m[11]=o,m[12]=s):s=m[12],m[13]===Symbol.for("react.memo_cache_sentinel")?(c=(0,a.jsx)(lP,{}),d=(0,a.jsx)(lO,{}),u=(0,a.jsx)(lM,{}),l=(0,a.jsx)(lb,{}),m[13]=l,m[14]=c,m[15]=d,m[16]=u):(l=m[13],c=m[14],d=m[15],u=m[16]),m[17]!==s?(h=(0,a.jsxs)("div",{className:lm.default.PlayerHUD,children:[e,s,c,d,u,l]}),m[17]=s,m[18]=h):h=m[18],h}function l$(e){return e.playback.streamSnapshot}function lY(){let{audioLoader:e,audioListener:t}=(0,o0.useAudio)(),a=(0,v.useSettings)(),r=a?.audioEnabled??!1,i=(0,I.useEngineSelector)(e=>e.playback.streamSnapshot?.chatMessages),s=(0,I.useEngineSelector)(e=>e.playback.streamSnapshot?.timeSec),l=(0,n.useRef)(0);return(0,n.useEffect)(()=>{if(!r||!e||!t||!i?.length||null==s)return;let a=l.current;for(let r=a;r2))try{let r=(0,c.audioToUrl)(a.soundPath),n=a.soundPitch??1;(0,o8.getCachedAudioBuffer)(r,e,e=>{let a=new o.Audio(t);a.setBuffer(e),1!==n&&a.setPlaybackRate(n),a.play(),a.source.onended=()=>{a.disconnect()}})}catch{}}l.current=i.length},[r,e,t,i,s]),null}var lK=e.i(38847),lX=e.i(3011);let lZ=(0,n.lazy)(()=>e.A(59197).then(e=>({default:e.MapInfoDialog}))),lJ=new eW.QueryClient,lQ={toneMapping:o.NoToneMapping,outputColorSpace:o.SRGBColorSpace},l0=(0,lK.createParser)({parse(e){let[t,a]=e.split("~"),r=a,n=(0,eG.getMissionInfo)(t).missionTypes;return a&&n.includes(a)||(r=n[0]),{missionName:t,missionType:r}},serialize:({missionName:e,missionType:t})=>1===(0,eG.getMissionInfo)(e).missionTypes.length?e:`${e}~${t}`,eq:(e,t)=>e.missionName===t.missionName&&e.missionType===t.missionType}).withDefault({missionName:"RiverDance",missionType:"CTF"});function l1(){let e,t,s,l,c,d,u,h,m,f,g,p,y,F,b,S,x,k,w,I,C,P,_,D,M,T,E,B,j,R,N,A,G,U,L,z,O,V,q,H=(0,r.c)(69),[W,$]=(0,lK.useQueryState)("mission",l0),[Y,K]=(0,lK.useQueryState)("fog",lK.parseAsBoolean);H[0]!==K?(e=()=>{K(null)},H[0]=K,H[1]=e):e=H[1];let X=e;H[2]!==X||H[3]!==$?(t=e=>{window.location.hash="",X(),$(e)},H[2]=X,H[3]=$,H[4]=t):t=H[4];let Z=t,J=(z=(0,r.c)(2),O=(0,n.useRef)(null),z[0]===Symbol.for("react.memo_cache_sentinel")?(U=e=>{let t=window.matchMedia("(pointer: coarse)");return t.addEventListener("change",e),O.current=t,()=>{t.removeEventListener("change",e)}},z[0]=U):U=z[0],V=U,z[1]===Symbol.for("react.memo_cache_sentinel")?(L=()=>O.current?.matches??null,z[1]=L):L=z[1],q=L,(0,n.useSyncExternalStore)(V,q,oX)),{missionName:Q,missionType:ee}=W,[et,ea]=(0,n.useState)(!1),[er,en]=(0,n.useState)(0),[ei,eo]=(0,n.useState)(!0),es=er<1;H[5]!==es?(s=()=>{if(es)eo(!0);else{let e=setTimeout(()=>eo(!1),500);return()=>clearTimeout(e)}},l=[es],H[5]=es,H[6]=s,H[7]=l):(s=H[6],l=H[7]),(0,n.useEffect)(s,l),H[8]!==Z?(c=()=>(window.setMissionName=e=>{let t=(0,eG.getMissionInfo)(e).missionTypes;Z({missionName:e,missionType:t[0]})},window.getMissionList=eG.getMissionList,window.getMissionInfo=eG.getMissionInfo,l2),d=[Z],H[8]=Z,H[9]=c,H[10]=d):(c=H[9],d=H[10]),(0,n.useEffect)(c,d),H[11]===Symbol.for("react.memo_cache_sentinel")?(u=()=>{let e=e=>{if("KeyI"!==e.code||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target;"INPUT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable||ea(!0)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},h=[],H[11]=u,H[12]=h):(u=H[11],h=H[12]),(0,n.useEffect)(u,h),H[13]===Symbol.for("react.memo_cache_sentinel")?(m=(e,t)=>{en(void 0===t?0:t)},H[13]=m):m=H[13];let el=m,ec=(0,n.useRef)(null);H[14]===Symbol.for("react.memo_cache_sentinel")?(f={angle:0,force:0},H[14]=f):f=H[14];let ed=(0,n.useRef)(f),eu=(0,n.useRef)(null);H[15]===Symbol.for("react.memo_cache_sentinel")?(g={angle:0,force:0},H[15]=g):g=H[15];let eh=(0,n.useRef)(g),em=(0,n.useRef)(null);H[16]!==es||H[17]!==er||H[18]!==ei?(p=ei&&(0,a.jsxs)("div",{id:"loadingIndicator",className:lX.default.LoadingIndicator,"data-complete":!es,children:[(0,a.jsx)("div",{className:lX.default.Spinner}),(0,a.jsx)("div",{className:lX.default.Progress,children:(0,a.jsx)("div",{className:lX.default.ProgressBar,style:{width:`${100*er}%`}})}),(0,a.jsxs)("div",{className:lX.default.ProgressText,children:[Math.round(100*er),"%"]})]}),H[16]=es,H[17]=er,H[18]=ei,H[19]=p):p=H[19],H[20]===Symbol.for("react.memo_cache_sentinel")?(y={type:o.PCFShadowMap},F=e=>{ec.current=e.camera},H[20]=y,H[21]=F):(y=H[20],F=H[21]);let ef=`${Q}~${ee}`;return H[22]!==Q||H[23]!==ee||H[24]!==ef?(b=(0,a.jsx)(eH,{name:Q,missionType:ee,onLoadingChange:el},ef),H[22]=Q,H[23]=ee,H[24]=ef,H[25]=b):b=H[25],H[26]===Symbol.for("react.memo_cache_sentinel")?(S=(0,a.jsx)(oQ,{}),x=(0,a.jsx)(o1.DebugElements,{}),k=(0,a.jsx)(ln,{}),w=(0,a.jsx)(lY,{}),H[26]=S,H[27]=x,H[28]=k,H[29]=w):(S=H[26],x=H[27],k=H[28],w=H[29]),H[30]!==J?(I=(0,a.jsx)(l4,{isTouch:J,joystickStateRef:ed,joystickZoneRef:eu,lookJoystickStateRef:eh,lookJoystickZoneRef:em}),H[30]=J,H[31]=I):I=H[31],H[32]!==b||H[33]!==I?(C=(0,a.jsx)(i.Canvas,{frameloop:"always",gl:lQ,shadows:y,onCreated:F,children:(0,a.jsx)(ew,{children:(0,a.jsxs)(o0.AudioProvider,{children:[b,S,x,k,w,I]})})}),H[32]=b,H[33]=I,H[34]=C):C=H[34],H[35]!==p||H[36]!==C?(P=(0,a.jsxs)("div",{id:"canvasContainer",className:lX.default.CanvasContainer,children:[p,C]}),H[35]=p,H[36]=C,H[37]=P):P=H[37],H[38]===Symbol.for("react.memo_cache_sentinel")?(_=(0,a.jsx)(lW,{}),H[38]=_):_=H[38],H[39]!==J?(D=J&&(0,a.jsx)(tB,{joystickState:ed,joystickZone:eu,lookJoystickState:eh,lookJoystickZone:em}),H[39]=J,H[40]=D):D=H[40],H[41]!==J?(M=!1===J&&(0,a.jsx)(tF,{}),H[41]=J,H[42]=M):M=H[42],H[43]===Symbol.for("react.memo_cache_sentinel")?(T=()=>ea(!0),H[43]=T):T=H[43],H[44]!==Z||H[45]!==J||H[46]!==Q||H[47]!==ee?(E=(0,a.jsx)(oH,{missionName:Q,missionType:ee,onChangeMission:Z,onOpenMapInfo:T,cameraRef:ec,isTouch:J}),H[44]=Z,H[45]=J,H[46]=Q,H[47]=ee,H[48]=E):E=H[48],H[49]!==et||H[50]!==Q||H[51]!==ee?(B=et&&(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(lZ,{open:et,onClose:()=>ea(!1),missionName:Q,missionType:ee??""})}),H[49]=et,H[50]=Q,H[51]=ee,H[52]=B):B=H[52],H[53]!==Z||H[54]!==W?(j=(0,a.jsx)(l5,{changeMission:Z,currentMission:W}),H[53]=Z,H[54]=W,H[55]=j):j=H[55],H[56]===Symbol.for("react.memo_cache_sentinel")?(R=(0,a.jsx)(ll,{}),N=(0,a.jsx)(l6,{}),H[56]=R,H[57]=N):(R=H[56],N=H[57]),H[58]!==P||H[59]!==D||H[60]!==M||H[61]!==E||H[62]!==B||H[63]!==j?(A=(0,a.jsxs)(eJ,{map:ta,children:[P,_,D,M,E,B,j,R,N]}),H[58]=P,H[59]=D,H[60]=M,H[61]=E,H[62]=B,H[63]=j,H[64]=A):A=H[64],H[65]!==X||H[66]!==Y||H[67]!==A?(G=(0,a.jsx)(e$.QueryClientProvider,{client:lJ,children:(0,a.jsx)("main",{children:(0,a.jsx)(to,{children:(0,a.jsx)(v.SettingsProvider,{fogEnabledOverride:Y,onClearFogEnabledOverride:X,children:A})})})}),H[65]=X,H[66]=Y,H[67]=A,H[68]=G):G=H[68],G}function l2(){delete window.setMissionName,delete window.getMissionList,delete window.getMissionInfo}let l3={"Capture the Flag":"CTF","Capture and Hold":"CnH",Deathmatch:"DM","Team Deathmatch":"TDM",Siege:"Siege",Bounty:"Bounty",Rabbit:"Rabbit"};function l5(e){let t,a,i=(0,r.c)(5),{changeMission:o,currentMission:s}=e,l=ts();return i[0]!==o||i[1]!==s||i[2]!==l?(t=()=>{if(!l?.missionName)return;let e=(0,eG.findMissionByDemoName)(l.missionName);if(!e)return void console.warn(`Demo mission "${l.missionName}" not found in manifest`);let t=(0,eG.getMissionInfo)(e),a=l.gameType?l3[l.gameType]:void 0,r=a&&t.missionTypes.includes(a)?a:t.missionTypes[0];(s.missionName!==e||s.missionType!==r)&&o({missionName:e,missionType:r})},a=[l,o,s],i[0]=o,i[1]=s,i[2]=l,i[3]=t,i[4]=a):(t=i[3],a=i[4]),(0,n.useEffect)(t,a),null}function l4(e){let t,n=(0,r.c)(6),{isTouch:i,joystickStateRef:o,joystickZoneRef:s,lookJoystickStateRef:l,lookJoystickZoneRef:c}=e;if(ts()||null===i)return null;if(i){let e;return n[0]!==o||n[1]!==s||n[2]!==l||n[3]!==c?(e=(0,a.jsx)(tj,{joystickState:o,joystickZone:s,lookJoystickState:l,lookJoystickZone:c}),n[0]=o,n[1]=s,n[2]=l,n[3]=c,n[4]=e):e=n[4],e}return n[5]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)(tr,{}),n[5]=t):t=n[5],t}function l6(){let e,t,a=(0,r.c)(3),{setRecording:i}=tm();return a[0]!==i?(e=()=>(window.loadDemoRecording=i,l8),t=[i],a[0]=i,a[1]=e,a[2]=t):(e=a[1],t=a[2]),(0,n.useEffect)(e,t),null}function l8(){delete window.loadDemoRecording}function l7(){let e,t=(0,r.c)(1);return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)(n.Suspense,{children:(0,a.jsx)(l1,{})}),t[0]=e):e=t[0],e}e.s(["default",()=>l7],31713)}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/29cbf5720c3c6313.js b/docs/_next/static/chunks/29cbf5720c3c6313.js new file mode 100644 index 00000000..4502a5ad --- /dev/null +++ b/docs/_next/static/chunks/29cbf5720c3c6313.js @@ -0,0 +1,38 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,13876,79473,43595,58647,e=>{"use strict";var t=e.i(932),r=e.i(8155);let n=e=>(t,r,n)=>{let i=n.subscribe;return n.subscribe=(e,t,r)=>{let o=e;if(t){let i=(null==r?void 0:r.equalityFn)||Object.is,a=e(n.getState());o=r=>{let n=e(r);if(!i(a,n)){let e=a;t(a=n,e)}},(null==r?void 0:r.fireImmediately)&&t(a,a)}return i(o)},e(t,r,n)};e.s(["subscribeWithSelector",()=>n],79473);var i=e.i(66748);function o(e){let t=new Map;for(let r of e.state.datablocks.values()){if("tsshapeconstructor"!==r._class)continue;let e=r.baseshape;if("string"!=typeof e)continue;let n=e.toLowerCase(),i=n.replace(/\.dts$/i,"")+"_",o=new Map;for(let e=0;e<=127;e++){let t=r[`sequence${e}`];if("string"!=typeof t)continue;let n=t.indexOf(" ");if(-1===n)continue;let a=t.slice(0,n).toLowerCase(),l=t.slice(n+1).trim().toLowerCase();if(!l||!a.startsWith(i)||!a.endsWith(".dsq"))continue;let s=a.slice(i.length,-4);s&&o.set(l,s)}o.size>0&&t.set(n,o)}return t}function a(e,t,r){let n=new Map;for(let r of e){let e=t.clipAction(r);n.set(r.name.toLowerCase(),e)}if(r)for(let[e,t]of r){let r=n.get(t);r&&!n.has(e)&&n.set(e,r)}return n}function l(e){return e.toLowerCase()}function s(e){let t=l(e.trim());return t.startsWith("$")?t.slice(1):t}e.s(["buildSequenceAliasMap",()=>o,"getAliasedActions",()=>a],43595);let c={runtime:{runtime:null,sequenceAliases:new Map,objectVersionById:{},globalVersionByName:{},objectIdsByName:{},datablockIdsByName:{},lastRuntimeTick:0},playback:{recording:null,status:"stopped",timeMs:0,rate:1,durationMs:0,streamSnapshot:null}},u=(0,r.createStore)()(n(e=>({...c,setRuntime(t){let r=function(e){let t={},r={},n={},i={};for(let r of e.state.objectsById.values())t[r._id]=0,r._name&&(n[l(r._name)]=r._id,r._isDatablock&&(i[l(r._name)]=r._id));for(let t of e.state.globals.keys())r[s(t)]=0;return{objectVersionById:t,globalVersionByName:r,objectIdsByName:n,datablockIdsByName:i}}(t),n=o(t);e(e=>({...e,runtime:{runtime:t,sequenceAliases:n,objectVersionById:r.objectVersionById,globalVersionByName:r.globalVersionByName,objectIdsByName:r.objectIdsByName,datablockIdsByName:r.datablockIdsByName,lastRuntimeTick:0}}))},clearRuntime(){e(e=>({...e,runtime:{runtime:null,sequenceAliases:new Map,objectVersionById:{},globalVersionByName:{},objectIdsByName:{},datablockIdsByName:{},lastRuntimeTick:0}}))},applyRuntimeBatch(t,r){0!==t.length&&e(e=>{let n={...e.runtime.objectVersionById},i={...e.runtime.globalVersionByName},o={...e.runtime.objectIdsByName},a={...e.runtime.datablockIdsByName},c=e=>{null!=e&&(n[e]=(n[e]??0)+1)};for(let e of t){if("object.created"===e.type){let t=e.object;if(c(e.objectId),t._name){let r=l(t._name);o[r]=e.objectId,t._isDatablock&&(a[r]=e.objectId)}c(t._parent?._id);continue}if("object.deleted"===e.type){let t=e.object;if(delete n[e.objectId],t?._name){let e=l(t._name);delete o[e],t._isDatablock&&delete a[e]}c(t?._parent?._id);continue}if("field.changed"===e.type){c(e.objectId);continue}if("global.changed"===e.type){let t=s(e.name);i[t]=(i[t]??0)+1;continue}}let u=r?.tick??(e.runtime.lastRuntimeTick>0?e.runtime.lastRuntimeTick+1:1);return{...e,runtime:{...e.runtime,objectVersionById:n,globalVersionByName:i,objectIdsByName:o,datablockIdsByName:a,lastRuntimeTick:u}}})},setDemoRecording(t){let r=Math.max(0,(t?.duration??0)*1e3);e(e=>({...e,playback:{recording:t,status:"stopped",timeMs:0,rate:1,durationMs:r,streamSnapshot:null}}))},setPlaybackTime(t){e(e=>{var r,n,i;let o=(r=t,n=0,i=e.playback.durationMs,r<0?0:r>i?i:r);return{...e,playback:{...e.playback,timeMs:o}}})},setPlaybackStatus(t){e(e=>({...e,playback:{...e.playback,status:t}}))},setPlaybackRate(t){var r,n,i;let o=Number.isFinite(t)?(n=.01,i=16,(r=t)<.01?.01:r>16?16:r):1;e(e=>({...e,playback:{...e.playback,rate:o}}))},setPlaybackStreamSnapshot(t){e(e=>({...e,playback:{...e.playback,streamSnapshot:t}}))}}))),d=0;function m(){return d}function f(e,t){d+=e*t*1e3}function y(){return u}function p(e,t){return(0,i.useStoreWithEqualityFn)(u,e,t)}function h(e){let r,n,i,o=(0,t.c)(7),a=p(b);o[0]!==e?(r=t=>null==e?-1:t.runtime.objectVersionById[e]??-1,o[0]=e,o[1]=r):r=o[1];let l=p(r);if(null==e||!a||-1===l)return;o[2]!==e||o[3]!==a.state.objectsById?(n=a.state.objectsById.get(e),o[2]=e,o[3]=a.state.objectsById,o[4]=n):n=o[4];let s=n;return o[5]!==s?(i=s?{...s}:void 0,o[5]=s,o[6]=i):i=o[6],i}function b(e){return e.runtime.runtime}function v(e){let r,n,i,o,a,s=(0,t.c)(11),c=p(g);s[0]!==e?(r=e?l(e):"",s[0]=e,s[1]=r):r=s[1];let u=r;s[2]!==u?(n=e=>u?e.runtime.objectIdsByName[u]:void 0,s[2]=u,s[3]=n):n=s[3];let d=p(n);s[4]!==d?(i=e=>null==d?-1:e.runtime.objectVersionById[d]??-1,s[4]=d,s[5]=i):i=s[5];let m=p(i);if(!c||!u||null==d||-1===m)return;s[6]!==d||s[7]!==c.state.objectsById?(o=c.state.objectsById.get(d),s[6]=d,s[7]=c.state.objectsById,s[8]=o):o=s[8];let f=o;return s[9]!==f?(a=f?{...f}:void 0,s[9]=f,s[10]=a):a=s[10],a}function g(e){return e.runtime.runtime}function x(e){let r,n,i,o,a,s=(0,t.c)(11),c=p(M);s[0]!==e?(r=e?l(e):"",s[0]=e,s[1]=r):r=s[1];let u=r;s[2]!==u?(n=e=>u?e.runtime.datablockIdsByName[u]:void 0,s[2]=u,s[3]=n):n=s[3];let d=p(n);s[4]!==d?(i=e=>null==d?-1:e.runtime.objectVersionById[d]??-1,s[4]=d,s[5]=i):i=s[5];let m=p(i);if(!c||!u||null==d||-1===m)return;s[6]!==d||s[7]!==c.state.objectsById?(o=c.state.objectsById.get(d),s[6]=d,s[7]=c.state.objectsById,s[8]=o):o=s[8];let f=o;return s[9]!==f?(a=f?{...f}:void 0,s[9]=f,s[10]=a):a=s[10],a}function M(e){return e.runtime.runtime}function j(e,r){let n,i,o,a,l=(0,t.c)(13);l[0]!==r?(n=void 0===r?[]:r,l[0]=r,l[1]=n):n=l[1];let s=n,c=p(I);l[2]!==e?(i=t=>null==e?-1:t.runtime.objectVersionById[e]??-1,l[2]=e,l[3]=i):i=l[3];let u=p(i);if(null==e){let e;return l[4]!==s?(e=s.map(w),l[4]=s,l[5]=e):e=l[5],e}if(!c||-1===u){let e;return l[6]!==s?(e=s.map(k),l[6]=s,l[7]=e):e=l[7],e}let d=c.state.objectsById;if(l[8]!==e||l[9]!==c.state.objectsById){a=Symbol.for("react.early_return_sentinel");e:{let t=d.get(e);if(!t?._children){let e;l[12]===Symbol.for("react.memo_cache_sentinel")?(e=[],l[12]=e):e=l[12],a=e;break e}o=t._children.map(B)}l[8]=e,l[9]=c.state.objectsById,l[10]=o,l[11]=a}else o=l[10],a=l[11];return a!==Symbol.for("react.early_return_sentinel")?a:o}function B(e){return e._id}function k(e){return e._id}function w(e){return e._id}function I(e){return e.runtime.runtime}u.subscribe(e=>e.playback.status,e=>{"stopped"===e&&(d=0)}),e.s(["advanceEffectClock",()=>f,"demoEffectNow",()=>m,"engineStore",0,u,"useDatablockByName",()=>x,"useEngineSelector",()=>p,"useEngineStoreApi",()=>y,"useRuntimeChildIds",()=>j,"useRuntimeObjectById",()=>h,"useRuntimeObjectByName",()=>v],58647),e.s([],13876)},67191,e=>{e.v({Label:"FloatingLabel-module__8y09Ka__Label"})},89887,60099,e=>{"use strict";let t,r;var n=e.i(43476),i=e.i(932),o=e.i(71645),a=e.i(90072),l=e.i(71753),s=e.i(31067),c=e.i(88014),u=e.i(15080);let d=new a.Vector3,m=new a.Vector3,f=new a.Vector3,y=new a.Vector2;function p(e,t,r){let n=d.setFromMatrixPosition(e.matrixWorld);n.project(t);let i=r.width/2,o=r.height/2;return[n.x*i+i,-(n.y*o)+o]}let h=e=>1e-10>Math.abs(e)?0:e;function b(e,t,r=""){let n="matrix3d(";for(let r=0;16!==r;r++)n+=h(t[r]*e.elements[r])+(15!==r?",":")");return r+n}let v=(t=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>b(e,t)),g=(r=e=>[1/e,1/e,1/e,1,-1/e,-1/e,-1/e,-1,1/e,1/e,1/e,1,1,1,1,1],(e,t)=>b(e,r(t),"translate(-50%,-50%)")),x=o.forwardRef(({children:e,eps:t=.001,style:r,className:n,prepend:i,center:b,fullscreen:x,portal:M,distanceFactor:j,sprite:B=!1,transform:k=!1,occlude:w,onOcclude:I,castShadow:P,receiveShadow:S,material:R,geometry:_,zIndexRange:T=[0x1000037,0],calculatePosition:A=p,as:E="div",wrapperClass:W,pointerEvents:D="auto",...N},F)=>{let{gl:V,camera:L,scene:C,size:$,raycaster:z,events:O,viewport:q}=(0,u.useThree)(),[H]=o.useState(()=>document.createElement(E)),G=o.useRef(null),U=o.useRef(null),K=o.useRef(0),Z=o.useRef([0,0]),J=o.useRef(null),Q=o.useRef(null),X=(null==M?void 0:M.current)||O.connected||V.domElement.parentNode,Y=o.useRef(null),ee=o.useRef(!1),et=o.useMemo(()=>{var e;return w&&"blending"!==w||Array.isArray(w)&&w.length&&(e=w[0])&&"object"==typeof e&&"current"in e},[w]);o.useLayoutEffect(()=>{let e=V.domElement;w&&"blending"===w?(e.style.zIndex=`${Math.floor(T[0]/2)}`,e.style.position="absolute",e.style.pointerEvents="none"):(e.style.zIndex=null,e.style.position=null,e.style.pointerEvents=null)},[w]),o.useLayoutEffect(()=>{if(U.current){let e=G.current=c.createRoot(H);if(C.updateMatrixWorld(),k)H.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{let e=A(U.current,L,$);H.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return X&&(i?X.prepend(H):X.appendChild(H)),()=>{X&&X.removeChild(H),e.unmount()}}},[X,k]),o.useLayoutEffect(()=>{W&&(H.className=W)},[W]);let er=o.useMemo(()=>k?{position:"absolute",top:0,left:0,width:$.width,height:$.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:b?"translate3d(-50%,-50%,0)":"none",...x&&{top:-$.height/2,left:-$.width/2,width:$.width,height:$.height},...r},[r,b,x,$,k]),en=o.useMemo(()=>({position:"absolute",pointerEvents:D}),[D]);o.useLayoutEffect(()=>{var t,i;ee.current=!1,k?null==(t=G.current)||t.render(o.createElement("div",{ref:J,style:er},o.createElement("div",{ref:Q,style:en},o.createElement("div",{ref:F,className:n,style:r,children:e})))):null==(i=G.current)||i.render(o.createElement("div",{ref:F,style:er,className:n,children:e}))});let ei=o.useRef(!0);(0,l.useFrame)(e=>{if(U.current){L.updateMatrixWorld(),U.current.updateWorldMatrix(!0,!1);let e=k?Z.current:A(U.current,L,$);if(k||Math.abs(K.current-L.zoom)>t||Math.abs(Z.current[0]-e[0])>t||Math.abs(Z.current[1]-e[1])>t){var r;let t,n,i,o,l=(r=U.current,t=d.setFromMatrixPosition(r.matrixWorld),n=m.setFromMatrixPosition(L.matrixWorld),i=t.sub(n),o=L.getWorldDirection(f),i.angleTo(o)>Math.PI/2),s=!1;et&&(Array.isArray(w)?s=w.map(e=>e.current):"blending"!==w&&(s=[C]));let c=ei.current;s?ei.current=function(e,t,r,n){let i=d.setFromMatrixPosition(e.matrixWorld),o=i.clone();o.project(t),y.set(o.x,o.y),r.setFromCamera(y,t);let a=r.intersectObjects(n,!0);if(a.length){let e=a[0].distance;return i.distanceTo(r.ray.origin)({vertexShader:k?void 0:` + /* + This shader is from the THREE's SpriteMaterial. + We need to turn the backing plane into a Sprite + (make it always face the camera) if "transfrom" + is false. + */ + #include + + void main() { + vec2 center = vec2(0., 1.); + float rotation = 0.0; + + // This is somewhat arbitrary, but it seems to work well + // Need to figure out how to derive this dynamically if it even matters + float size = 0.03; + + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + + gl_Position = projectionMatrix * mvPosition; + } + `,fragmentShader:` + void main() { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}),[k]);return o.createElement("group",(0,s.default)({},N,{ref:U}),w&&!et&&o.createElement("mesh",{castShadow:P,receiveShadow:S,ref:Y},_||o.createElement("planeGeometry",null),R||o.createElement("shaderMaterial",{side:a.DoubleSide,vertexShader:eo.vertexShader,fragmentShader:eo.fragmentShader})))});e.s(["Html",()=>x],60099);var M=e.i(67191);let j=[0,0,0],B=new a.Vector3,k=(0,o.memo)(function(e){let t,r,a,s=(0,i.c)(11),{children:c,color:u,position:d,opacity:m}=e,f=void 0===u?"white":u,y=void 0===d?j:d,p=void 0===m?"fadeWithDistance":m,h="fadeWithDistance"===p,b=(0,o.useRef)(null),[v,g]=(0,o.useState)(0!==p),k=(0,o.useRef)(null);return s[0]!==h||s[1]!==v||s[2]!==p?(t=e=>{var t,r,n;let i,{camera:o}=e,a=b.current;if(!a)return;a.getWorldPosition(B);let l=(t=B.x,r=B.y,n=B.z,-((t-(i=o.matrixWorld.elements)[12])*i[8])+-((r-i[13])*i[9])+-((n-i[14])*i[10])<0);if(h){let e=l?1/0:o.position.distanceTo(B),t=e<200;if(v!==t&&g(t),k.current&&t){let t=Math.max(0,Math.min(1,1-e/200));k.current.style.opacity=t.toString()}}else{let e=!l&&0!==p;v!==e&&g(e),k.current&&(k.current.style.opacity=p.toString())}},s[0]=h,s[1]=v,s[2]=p,s[3]=t):t=s[3],(0,l.useFrame)(t),s[4]!==c||s[5]!==f||s[6]!==v||s[7]!==y?(r=v?(0,n.jsx)(x,{position:y,center:!0,children:(0,n.jsx)("div",{ref:k,className:M.default.Label,style:{color:f},children:c})}):null,s[4]=c,s[5]=f,s[6]=v,s[7]=y,s[8]=r):r=s[8],s[9]!==r?(a=(0,n.jsx)("group",{ref:b,children:r}),s[9]=r,s[10]=a):a=s[10],a});e.s(["FloatingLabel",0,k],89887)},29055,51434,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(15080),i=e.i(71753),o=e.i(90072),a=e.i(62395),l=e.i(12979),s=e.i(932);e.i(13876);var c=e.i(58647);let u=(0,r.createContext)(void 0);function d(e){let i,a,l,d,y=(0,s.c)(7),{children:p}=e,{camera:h}=(0,n.useThree)();y[0]===Symbol.for("react.memo_cache_sentinel")?(i={audioLoader:null,audioListener:null},y[0]=i):i=y[0];let[b,v]=(0,r.useState)(i);return y[1]!==h?(a=()=>{let e=new o.AudioLoader,t=h.children.find(f);t||(t=new o.AudioListener,h.add(t)),v({audioLoader:e,audioListener:t});let r=c.engineStore.subscribe(m,e=>{let r=t?.context;r&&("paused"===e?r.suspend():"playing"===e&&"suspended"===r.state&&r.resume())});return()=>{r()}},l=[h],y[1]=h,y[2]=a,y[3]=l):(a=y[2],l=y[3]),(0,r.useEffect)(a,l),y[4]!==b||y[5]!==p?(d=(0,t.jsx)(u.Provider,{value:b,children:p}),y[4]=b,y[5]=p,y[6]=d):d=y[6],d}function m(e){return e.playback.status}function f(e){return e instanceof o.AudioListener}function y(){let e=(0,r.useContext)(u);if(void 0===e)throw Error("useAudio must be used within AudioProvider");return e}e.s(["AudioProvider",()=>d,"useAudio",()=>y],51434);var p=e.i(79123),h=e.i(89887);let b=new Map,v=new Map;function g(e,t=1){v.set(e,t)}function x(e){v.delete(e)}function M(e,t){let r=t(e),n=r?.filename;if(!n)return null;let i=n.endsWith(".wav")?n:`${n}.wav`,o=r.description,a=null!=o?t(o):void 0,l=a?.is3D??!0,s=a?.isLooping??!1,c=a?.referenceDistance??20;return{filename:i,is3D:l,isLooping:s,refDist:c,maxDist:a?.maxDistance??100,volume:a?.volume??1}}function j(e,t,r,n,i){let a;try{a=(0,l.audioToUrl)(e.filename)}catch{return}let s=c.engineStore.getState().playback.rate;B(a,r,r=>{try{if(e.is3D&&i){let a=new o.PositionalAudio(t);a.setBuffer(r),a.setDistanceModel("inverse"),a.setRefDistance(e.refDist),a.setMaxDistance(e.maxDist),a.setRolloffFactor(1),a.setVolume(e.volume),a.setPlaybackRate(s),n&&a.position.copy(n),i.add(a),v.set(a,1),a.play(),a.source.onended=()=>{v.delete(a),a.disconnect(),i.remove(a)}}else{let n=new o.Audio(t);n.setBuffer(r),n.setVolume(e.volume),n.setPlaybackRate(s),v.set(n,1),n.play(),n.source.onended=()=>{v.delete(n),n.disconnect()}}}catch{}})}function B(e,t,r){b.has(e)?r(b.get(e)):t.load(e,t=>{b.set(e,t),r(t)},void 0,t=>{console.error("Audio load error",e,t)})}c.engineStore.subscribe(e=>e.playback.rate,e=>{for(let[t,r]of v)try{t.setPlaybackRate(r*e)}catch{}});let k=(0,r.memo)(function({object:e}){let{debugMode:s}=(0,p.useDebug)(),c=(0,a.getProperty)(e,"fileName")??"",u=(0,a.getFloat)(e,"volume")??1,d=(0,a.getFloat)(e,"minDistance")??1,m=(0,a.getFloat)(e,"maxDistance")??1,f=(0,a.getFloat)(e,"minLoopGap")??0,b=(0,a.getFloat)(e,"maxLoopGap")??0,v=(0,a.getInt)(e,"is3D")??0,[g,x,M]=(0,a.getPosition)(e),{scene:j,camera:k}=(0,n.useThree)(),{audioLoader:w,audioListener:I}=y(),{audioEnabled:P}=(0,p.useSettings)(),S=(0,r.useRef)(null),R=(0,r.useRef)(null),_=(0,r.useRef)(null),T=(0,r.useRef)(!1),A=(0,r.useRef)(!1),E=(0,r.useRef)(new o.Vector3(g,x,M)),W=()=>{R.current&&clearTimeout(R.current),_.current&&clearTimeout(_.current)};(0,r.useEffect)(()=>{let e;if(w&&I){if(v){let t=new o.PositionalAudio(I);t.position.copy(E.current),t.setDistanceModel("inverse"),t.setRefDistance(d),t.setMaxDistance(m),t.setRolloffFactor(1),t.setVolume(u),e=t,j.add(e)}else(e=new o.Audio(I)).setVolume(u);return S.current=e,()=>{W();try{e.stop()}catch{}e.disconnect(),v&&j.remove(e),T.current=!1,A.current=!1}}},[w,I,v,d,m,u,j]);let D=e=>{if(f>0||b>0){let t=Math.max(0,f),r=Math.max(t,b),n=t===r?t:Math.random()*(r-t)+t;e.loop=!1;let i=()=>{!1===e.isPlaying?R.current=setTimeout(()=>{try{e.play(),D(e)}catch{}},n):_.current=setTimeout(i,100)};_.current=setTimeout(i,100)}else e.setLoop(!0)},N=e=>{if(T.current)try{e.isPlaying||(e.play(),D(e))}catch{}else B((0,l.audioToUrl)(c),w,t=>{if(!e.buffer){e.setBuffer(t),T.current=!0;try{e.play(),D(e)}catch{}}})};return(0,r.useEffect)(()=>{let e=S.current;e&&!v&&P&&c&&N(e)},[P,v,c,w,I]),(0,i.useFrame)(()=>{let e=S.current;if(!e||!v||!P||!c)return;let t=k.position.distanceTo(E.current),r=A.current,n=t<=m;if(n&&!r)A.current=!0,N(e);else if(!n&&r){A.current=!1,W();try{e.stop()}catch{}}}),(0,r.useEffect)(()=>{let e=S.current;if(e&&!P){W();try{e.stop()}catch{}}},[P]),s?(0,t.jsxs)("mesh",{position:E.current,children:[(0,t.jsx)("sphereGeometry",{args:[d,12,12]}),(0,t.jsx)("meshBasicMaterial",{color:"#00ff00",wireframe:!0,opacity:.05,transparent:!0,toneMapped:!1}),(0,t.jsx)(h.FloatingLabel,{color:"#00ff00",position:[0,d+1,0],children:c})]}):null});e.s(["AudioEmitter",0,k,"audioBufferCache",0,b,"getCachedAudioBuffer",()=>B,"playOneShotSound",()=>j,"resolveAudioProfile",()=>M,"trackDemoSound",()=>g,"untrackDemoSound",()=>x],29055)}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/325897a61efa2ade.js b/docs/_next/static/chunks/325897a61efa2ade.js deleted file mode 100644 index 8fbe67d3..00000000 --- a/docs/_next/static/chunks/325897a61efa2ade.js +++ /dev/null @@ -1,8 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,75056,e=>{"use strict";var t=e.i(40859),r=e.i(71645),n=e.i(8560),i=e.i(90072);e.s(["ACESFilmicToneMapping",()=>i.ACESFilmicToneMapping,"AddEquation",()=>i.AddEquation,"AddOperation",()=>i.AddOperation,"AdditiveAnimationBlendMode",()=>i.AdditiveAnimationBlendMode,"AdditiveBlending",()=>i.AdditiveBlending,"AgXToneMapping",()=>i.AgXToneMapping,"AlphaFormat",()=>i.AlphaFormat,"AlwaysCompare",()=>i.AlwaysCompare,"AlwaysDepth",()=>i.AlwaysDepth,"AlwaysStencilFunc",()=>i.AlwaysStencilFunc,"AmbientLight",()=>i.AmbientLight,"AnimationAction",()=>i.AnimationAction,"AnimationClip",()=>i.AnimationClip,"AnimationLoader",()=>i.AnimationLoader,"AnimationMixer",()=>i.AnimationMixer,"AnimationObjectGroup",()=>i.AnimationObjectGroup,"AnimationUtils",()=>i.AnimationUtils,"ArcCurve",()=>i.ArcCurve,"ArrayCamera",()=>i.ArrayCamera,"ArrowHelper",()=>i.ArrowHelper,"AttachedBindMode",()=>i.AttachedBindMode,"Audio",()=>i.Audio,"AudioAnalyser",()=>i.AudioAnalyser,"AudioContext",()=>i.AudioContext,"AudioListener",()=>i.AudioListener,"AudioLoader",()=>i.AudioLoader,"AxesHelper",()=>i.AxesHelper,"BackSide",()=>i.BackSide,"BasicDepthPacking",()=>i.BasicDepthPacking,"BasicShadowMap",()=>i.BasicShadowMap,"BatchedMesh",()=>i.BatchedMesh,"Bone",()=>i.Bone,"BooleanKeyframeTrack",()=>i.BooleanKeyframeTrack,"Box2",()=>i.Box2,"Box3",()=>i.Box3,"Box3Helper",()=>i.Box3Helper,"BoxGeometry",()=>i.BoxGeometry,"BoxHelper",()=>i.BoxHelper,"BufferAttribute",()=>i.BufferAttribute,"BufferGeometry",()=>i.BufferGeometry,"BufferGeometryLoader",()=>i.BufferGeometryLoader,"ByteType",()=>i.ByteType,"Cache",()=>i.Cache,"Camera",()=>i.Camera,"CameraHelper",()=>i.CameraHelper,"CanvasTexture",()=>i.CanvasTexture,"CapsuleGeometry",()=>i.CapsuleGeometry,"CatmullRomCurve3",()=>i.CatmullRomCurve3,"CineonToneMapping",()=>i.CineonToneMapping,"CircleGeometry",()=>i.CircleGeometry,"ClampToEdgeWrapping",()=>i.ClampToEdgeWrapping,"Clock",()=>i.Clock,"Color",()=>i.Color,"ColorKeyframeTrack",()=>i.ColorKeyframeTrack,"ColorManagement",()=>i.ColorManagement,"CompressedArrayTexture",()=>i.CompressedArrayTexture,"CompressedCubeTexture",()=>i.CompressedCubeTexture,"CompressedTexture",()=>i.CompressedTexture,"CompressedTextureLoader",()=>i.CompressedTextureLoader,"ConeGeometry",()=>i.ConeGeometry,"ConstantAlphaFactor",()=>i.ConstantAlphaFactor,"ConstantColorFactor",()=>i.ConstantColorFactor,"Controls",()=>i.Controls,"CubeCamera",()=>i.CubeCamera,"CubeDepthTexture",()=>i.CubeDepthTexture,"CubeReflectionMapping",()=>i.CubeReflectionMapping,"CubeRefractionMapping",()=>i.CubeRefractionMapping,"CubeTexture",()=>i.CubeTexture,"CubeTextureLoader",()=>i.CubeTextureLoader,"CubeUVReflectionMapping",()=>i.CubeUVReflectionMapping,"CubicBezierCurve",()=>i.CubicBezierCurve,"CubicBezierCurve3",()=>i.CubicBezierCurve3,"CubicInterpolant",()=>i.CubicInterpolant,"CullFaceBack",()=>i.CullFaceBack,"CullFaceFront",()=>i.CullFaceFront,"CullFaceFrontBack",()=>i.CullFaceFrontBack,"CullFaceNone",()=>i.CullFaceNone,"Curve",()=>i.Curve,"CurvePath",()=>i.CurvePath,"CustomBlending",()=>i.CustomBlending,"CustomToneMapping",()=>i.CustomToneMapping,"CylinderGeometry",()=>i.CylinderGeometry,"Cylindrical",()=>i.Cylindrical,"Data3DTexture",()=>i.Data3DTexture,"DataArrayTexture",()=>i.DataArrayTexture,"DataTexture",()=>i.DataTexture,"DataTextureLoader",()=>i.DataTextureLoader,"DataUtils",()=>i.DataUtils,"DecrementStencilOp",()=>i.DecrementStencilOp,"DecrementWrapStencilOp",()=>i.DecrementWrapStencilOp,"DefaultLoadingManager",()=>i.DefaultLoadingManager,"DepthFormat",()=>i.DepthFormat,"DepthStencilFormat",()=>i.DepthStencilFormat,"DepthTexture",()=>i.DepthTexture,"DetachedBindMode",()=>i.DetachedBindMode,"DirectionalLight",()=>i.DirectionalLight,"DirectionalLightHelper",()=>i.DirectionalLightHelper,"DiscreteInterpolant",()=>i.DiscreteInterpolant,"DodecahedronGeometry",()=>i.DodecahedronGeometry,"DoubleSide",()=>i.DoubleSide,"DstAlphaFactor",()=>i.DstAlphaFactor,"DstColorFactor",()=>i.DstColorFactor,"DynamicCopyUsage",()=>i.DynamicCopyUsage,"DynamicDrawUsage",()=>i.DynamicDrawUsage,"DynamicReadUsage",()=>i.DynamicReadUsage,"EdgesGeometry",()=>i.EdgesGeometry,"EllipseCurve",()=>i.EllipseCurve,"EqualCompare",()=>i.EqualCompare,"EqualDepth",()=>i.EqualDepth,"EqualStencilFunc",()=>i.EqualStencilFunc,"EquirectangularReflectionMapping",()=>i.EquirectangularReflectionMapping,"EquirectangularRefractionMapping",()=>i.EquirectangularRefractionMapping,"Euler",()=>i.Euler,"EventDispatcher",()=>i.EventDispatcher,"ExternalTexture",()=>i.ExternalTexture,"ExtrudeGeometry",()=>i.ExtrudeGeometry,"FileLoader",()=>i.FileLoader,"Float16BufferAttribute",()=>i.Float16BufferAttribute,"Float32BufferAttribute",()=>i.Float32BufferAttribute,"FloatType",()=>i.FloatType,"Fog",()=>i.Fog,"FogExp2",()=>i.FogExp2,"FramebufferTexture",()=>i.FramebufferTexture,"FrontSide",()=>i.FrontSide,"Frustum",()=>i.Frustum,"FrustumArray",()=>i.FrustumArray,"GLBufferAttribute",()=>i.GLBufferAttribute,"GLSL1",()=>i.GLSL1,"GLSL3",()=>i.GLSL3,"GreaterCompare",()=>i.GreaterCompare,"GreaterDepth",()=>i.GreaterDepth,"GreaterEqualCompare",()=>i.GreaterEqualCompare,"GreaterEqualDepth",()=>i.GreaterEqualDepth,"GreaterEqualStencilFunc",()=>i.GreaterEqualStencilFunc,"GreaterStencilFunc",()=>i.GreaterStencilFunc,"GridHelper",()=>i.GridHelper,"Group",()=>i.Group,"HalfFloatType",()=>i.HalfFloatType,"HemisphereLight",()=>i.HemisphereLight,"HemisphereLightHelper",()=>i.HemisphereLightHelper,"IcosahedronGeometry",()=>i.IcosahedronGeometry,"ImageBitmapLoader",()=>i.ImageBitmapLoader,"ImageLoader",()=>i.ImageLoader,"ImageUtils",()=>i.ImageUtils,"IncrementStencilOp",()=>i.IncrementStencilOp,"IncrementWrapStencilOp",()=>i.IncrementWrapStencilOp,"InstancedBufferAttribute",()=>i.InstancedBufferAttribute,"InstancedBufferGeometry",()=>i.InstancedBufferGeometry,"InstancedInterleavedBuffer",()=>i.InstancedInterleavedBuffer,"InstancedMesh",()=>i.InstancedMesh,"Int16BufferAttribute",()=>i.Int16BufferAttribute,"Int32BufferAttribute",()=>i.Int32BufferAttribute,"Int8BufferAttribute",()=>i.Int8BufferAttribute,"IntType",()=>i.IntType,"InterleavedBuffer",()=>i.InterleavedBuffer,"InterleavedBufferAttribute",()=>i.InterleavedBufferAttribute,"Interpolant",()=>i.Interpolant,"InterpolateDiscrete",()=>i.InterpolateDiscrete,"InterpolateLinear",()=>i.InterpolateLinear,"InterpolateSmooth",()=>i.InterpolateSmooth,"InterpolationSamplingMode",()=>i.InterpolationSamplingMode,"InterpolationSamplingType",()=>i.InterpolationSamplingType,"InvertStencilOp",()=>i.InvertStencilOp,"KeepStencilOp",()=>i.KeepStencilOp,"KeyframeTrack",()=>i.KeyframeTrack,"LOD",()=>i.LOD,"LatheGeometry",()=>i.LatheGeometry,"Layers",()=>i.Layers,"LessCompare",()=>i.LessCompare,"LessDepth",()=>i.LessDepth,"LessEqualCompare",()=>i.LessEqualCompare,"LessEqualDepth",()=>i.LessEqualDepth,"LessEqualStencilFunc",()=>i.LessEqualStencilFunc,"LessStencilFunc",()=>i.LessStencilFunc,"Light",()=>i.Light,"LightProbe",()=>i.LightProbe,"Line",()=>i.Line,"Line3",()=>i.Line3,"LineBasicMaterial",()=>i.LineBasicMaterial,"LineCurve",()=>i.LineCurve,"LineCurve3",()=>i.LineCurve3,"LineDashedMaterial",()=>i.LineDashedMaterial,"LineLoop",()=>i.LineLoop,"LineSegments",()=>i.LineSegments,"LinearFilter",()=>i.LinearFilter,"LinearInterpolant",()=>i.LinearInterpolant,"LinearMipMapLinearFilter",()=>i.LinearMipMapLinearFilter,"LinearMipMapNearestFilter",()=>i.LinearMipMapNearestFilter,"LinearMipmapLinearFilter",()=>i.LinearMipmapLinearFilter,"LinearMipmapNearestFilter",()=>i.LinearMipmapNearestFilter,"LinearSRGBColorSpace",()=>i.LinearSRGBColorSpace,"LinearToneMapping",()=>i.LinearToneMapping,"LinearTransfer",()=>i.LinearTransfer,"Loader",()=>i.Loader,"LoaderUtils",()=>i.LoaderUtils,"LoadingManager",()=>i.LoadingManager,"LoopOnce",()=>i.LoopOnce,"LoopPingPong",()=>i.LoopPingPong,"LoopRepeat",()=>i.LoopRepeat,"MOUSE",()=>i.MOUSE,"Material",()=>i.Material,"MaterialLoader",()=>i.MaterialLoader,"MathUtils",()=>i.MathUtils,"Matrix2",()=>i.Matrix2,"Matrix3",()=>i.Matrix3,"Matrix4",()=>i.Matrix4,"MaxEquation",()=>i.MaxEquation,"Mesh",()=>i.Mesh,"MeshBasicMaterial",()=>i.MeshBasicMaterial,"MeshDepthMaterial",()=>i.MeshDepthMaterial,"MeshDistanceMaterial",()=>i.MeshDistanceMaterial,"MeshLambertMaterial",()=>i.MeshLambertMaterial,"MeshMatcapMaterial",()=>i.MeshMatcapMaterial,"MeshNormalMaterial",()=>i.MeshNormalMaterial,"MeshPhongMaterial",()=>i.MeshPhongMaterial,"MeshPhysicalMaterial",()=>i.MeshPhysicalMaterial,"MeshStandardMaterial",()=>i.MeshStandardMaterial,"MeshToonMaterial",()=>i.MeshToonMaterial,"MinEquation",()=>i.MinEquation,"MirroredRepeatWrapping",()=>i.MirroredRepeatWrapping,"MixOperation",()=>i.MixOperation,"MultiplyBlending",()=>i.MultiplyBlending,"MultiplyOperation",()=>i.MultiplyOperation,"NearestFilter",()=>i.NearestFilter,"NearestMipMapLinearFilter",()=>i.NearestMipMapLinearFilter,"NearestMipMapNearestFilter",()=>i.NearestMipMapNearestFilter,"NearestMipmapLinearFilter",()=>i.NearestMipmapLinearFilter,"NearestMipmapNearestFilter",()=>i.NearestMipmapNearestFilter,"NeutralToneMapping",()=>i.NeutralToneMapping,"NeverCompare",()=>i.NeverCompare,"NeverDepth",()=>i.NeverDepth,"NeverStencilFunc",()=>i.NeverStencilFunc,"NoBlending",()=>i.NoBlending,"NoColorSpace",()=>i.NoColorSpace,"NoNormalPacking",()=>i.NoNormalPacking,"NoToneMapping",()=>i.NoToneMapping,"NormalAnimationBlendMode",()=>i.NormalAnimationBlendMode,"NormalBlending",()=>i.NormalBlending,"NormalGAPacking",()=>i.NormalGAPacking,"NormalRGPacking",()=>i.NormalRGPacking,"NotEqualCompare",()=>i.NotEqualCompare,"NotEqualDepth",()=>i.NotEqualDepth,"NotEqualStencilFunc",()=>i.NotEqualStencilFunc,"NumberKeyframeTrack",()=>i.NumberKeyframeTrack,"Object3D",()=>i.Object3D,"ObjectLoader",()=>i.ObjectLoader,"ObjectSpaceNormalMap",()=>i.ObjectSpaceNormalMap,"OctahedronGeometry",()=>i.OctahedronGeometry,"OneFactor",()=>i.OneFactor,"OneMinusConstantAlphaFactor",()=>i.OneMinusConstantAlphaFactor,"OneMinusConstantColorFactor",()=>i.OneMinusConstantColorFactor,"OneMinusDstAlphaFactor",()=>i.OneMinusDstAlphaFactor,"OneMinusDstColorFactor",()=>i.OneMinusDstColorFactor,"OneMinusSrcAlphaFactor",()=>i.OneMinusSrcAlphaFactor,"OneMinusSrcColorFactor",()=>i.OneMinusSrcColorFactor,"OrthographicCamera",()=>i.OrthographicCamera,"PCFShadowMap",()=>i.PCFShadowMap,"PCFSoftShadowMap",()=>i.PCFSoftShadowMap,"PMREMGenerator",()=>n.PMREMGenerator,"Path",()=>i.Path,"PerspectiveCamera",()=>i.PerspectiveCamera,"Plane",()=>i.Plane,"PlaneGeometry",()=>i.PlaneGeometry,"PlaneHelper",()=>i.PlaneHelper,"PointLight",()=>i.PointLight,"PointLightHelper",()=>i.PointLightHelper,"Points",()=>i.Points,"PointsMaterial",()=>i.PointsMaterial,"PolarGridHelper",()=>i.PolarGridHelper,"PolyhedronGeometry",()=>i.PolyhedronGeometry,"PositionalAudio",()=>i.PositionalAudio,"PropertyBinding",()=>i.PropertyBinding,"PropertyMixer",()=>i.PropertyMixer,"QuadraticBezierCurve",()=>i.QuadraticBezierCurve,"QuadraticBezierCurve3",()=>i.QuadraticBezierCurve3,"Quaternion",()=>i.Quaternion,"QuaternionKeyframeTrack",()=>i.QuaternionKeyframeTrack,"QuaternionLinearInterpolant",()=>i.QuaternionLinearInterpolant,"R11_EAC_Format",()=>i.R11_EAC_Format,"RED_GREEN_RGTC2_Format",()=>i.RED_GREEN_RGTC2_Format,"RED_RGTC1_Format",()=>i.RED_RGTC1_Format,"REVISION",()=>i.REVISION,"RG11_EAC_Format",()=>i.RG11_EAC_Format,"RGBADepthPacking",()=>i.RGBADepthPacking,"RGBAFormat",()=>i.RGBAFormat,"RGBAIntegerFormat",()=>i.RGBAIntegerFormat,"RGBA_ASTC_10x10_Format",()=>i.RGBA_ASTC_10x10_Format,"RGBA_ASTC_10x5_Format",()=>i.RGBA_ASTC_10x5_Format,"RGBA_ASTC_10x6_Format",()=>i.RGBA_ASTC_10x6_Format,"RGBA_ASTC_10x8_Format",()=>i.RGBA_ASTC_10x8_Format,"RGBA_ASTC_12x10_Format",()=>i.RGBA_ASTC_12x10_Format,"RGBA_ASTC_12x12_Format",()=>i.RGBA_ASTC_12x12_Format,"RGBA_ASTC_4x4_Format",()=>i.RGBA_ASTC_4x4_Format,"RGBA_ASTC_5x4_Format",()=>i.RGBA_ASTC_5x4_Format,"RGBA_ASTC_5x5_Format",()=>i.RGBA_ASTC_5x5_Format,"RGBA_ASTC_6x5_Format",()=>i.RGBA_ASTC_6x5_Format,"RGBA_ASTC_6x6_Format",()=>i.RGBA_ASTC_6x6_Format,"RGBA_ASTC_8x5_Format",()=>i.RGBA_ASTC_8x5_Format,"RGBA_ASTC_8x6_Format",()=>i.RGBA_ASTC_8x6_Format,"RGBA_ASTC_8x8_Format",()=>i.RGBA_ASTC_8x8_Format,"RGBA_BPTC_Format",()=>i.RGBA_BPTC_Format,"RGBA_ETC2_EAC_Format",()=>i.RGBA_ETC2_EAC_Format,"RGBA_PVRTC_2BPPV1_Format",()=>i.RGBA_PVRTC_2BPPV1_Format,"RGBA_PVRTC_4BPPV1_Format",()=>i.RGBA_PVRTC_4BPPV1_Format,"RGBA_S3TC_DXT1_Format",()=>i.RGBA_S3TC_DXT1_Format,"RGBA_S3TC_DXT3_Format",()=>i.RGBA_S3TC_DXT3_Format,"RGBA_S3TC_DXT5_Format",()=>i.RGBA_S3TC_DXT5_Format,"RGBDepthPacking",()=>i.RGBDepthPacking,"RGBFormat",()=>i.RGBFormat,"RGBIntegerFormat",()=>i.RGBIntegerFormat,"RGB_BPTC_SIGNED_Format",()=>i.RGB_BPTC_SIGNED_Format,"RGB_BPTC_UNSIGNED_Format",()=>i.RGB_BPTC_UNSIGNED_Format,"RGB_ETC1_Format",()=>i.RGB_ETC1_Format,"RGB_ETC2_Format",()=>i.RGB_ETC2_Format,"RGB_PVRTC_2BPPV1_Format",()=>i.RGB_PVRTC_2BPPV1_Format,"RGB_PVRTC_4BPPV1_Format",()=>i.RGB_PVRTC_4BPPV1_Format,"RGB_S3TC_DXT1_Format",()=>i.RGB_S3TC_DXT1_Format,"RGDepthPacking",()=>i.RGDepthPacking,"RGFormat",()=>i.RGFormat,"RGIntegerFormat",()=>i.RGIntegerFormat,"RawShaderMaterial",()=>i.RawShaderMaterial,"Ray",()=>i.Ray,"Raycaster",()=>i.Raycaster,"RectAreaLight",()=>i.RectAreaLight,"RedFormat",()=>i.RedFormat,"RedIntegerFormat",()=>i.RedIntegerFormat,"ReinhardToneMapping",()=>i.ReinhardToneMapping,"RenderTarget",()=>i.RenderTarget,"RenderTarget3D",()=>i.RenderTarget3D,"RepeatWrapping",()=>i.RepeatWrapping,"ReplaceStencilOp",()=>i.ReplaceStencilOp,"ReverseSubtractEquation",()=>i.ReverseSubtractEquation,"RingGeometry",()=>i.RingGeometry,"SIGNED_R11_EAC_Format",()=>i.SIGNED_R11_EAC_Format,"SIGNED_RED_GREEN_RGTC2_Format",()=>i.SIGNED_RED_GREEN_RGTC2_Format,"SIGNED_RED_RGTC1_Format",()=>i.SIGNED_RED_RGTC1_Format,"SIGNED_RG11_EAC_Format",()=>i.SIGNED_RG11_EAC_Format,"SRGBColorSpace",()=>i.SRGBColorSpace,"SRGBTransfer",()=>i.SRGBTransfer,"Scene",()=>i.Scene,"ShaderChunk",()=>n.ShaderChunk,"ShaderLib",()=>n.ShaderLib,"ShaderMaterial",()=>i.ShaderMaterial,"ShadowMaterial",()=>i.ShadowMaterial,"Shape",()=>i.Shape,"ShapeGeometry",()=>i.ShapeGeometry,"ShapePath",()=>i.ShapePath,"ShapeUtils",()=>i.ShapeUtils,"ShortType",()=>i.ShortType,"Skeleton",()=>i.Skeleton,"SkeletonHelper",()=>i.SkeletonHelper,"SkinnedMesh",()=>i.SkinnedMesh,"Source",()=>i.Source,"Sphere",()=>i.Sphere,"SphereGeometry",()=>i.SphereGeometry,"Spherical",()=>i.Spherical,"SphericalHarmonics3",()=>i.SphericalHarmonics3,"SplineCurve",()=>i.SplineCurve,"SpotLight",()=>i.SpotLight,"SpotLightHelper",()=>i.SpotLightHelper,"Sprite",()=>i.Sprite,"SpriteMaterial",()=>i.SpriteMaterial,"SrcAlphaFactor",()=>i.SrcAlphaFactor,"SrcAlphaSaturateFactor",()=>i.SrcAlphaSaturateFactor,"SrcColorFactor",()=>i.SrcColorFactor,"StaticCopyUsage",()=>i.StaticCopyUsage,"StaticDrawUsage",()=>i.StaticDrawUsage,"StaticReadUsage",()=>i.StaticReadUsage,"StereoCamera",()=>i.StereoCamera,"StreamCopyUsage",()=>i.StreamCopyUsage,"StreamDrawUsage",()=>i.StreamDrawUsage,"StreamReadUsage",()=>i.StreamReadUsage,"StringKeyframeTrack",()=>i.StringKeyframeTrack,"SubtractEquation",()=>i.SubtractEquation,"SubtractiveBlending",()=>i.SubtractiveBlending,"TOUCH",()=>i.TOUCH,"TangentSpaceNormalMap",()=>i.TangentSpaceNormalMap,"TetrahedronGeometry",()=>i.TetrahedronGeometry,"Texture",()=>i.Texture,"TextureLoader",()=>i.TextureLoader,"TextureUtils",()=>i.TextureUtils,"Timer",()=>i.Timer,"TimestampQuery",()=>i.TimestampQuery,"TorusGeometry",()=>i.TorusGeometry,"TorusKnotGeometry",()=>i.TorusKnotGeometry,"Triangle",()=>i.Triangle,"TriangleFanDrawMode",()=>i.TriangleFanDrawMode,"TriangleStripDrawMode",()=>i.TriangleStripDrawMode,"TrianglesDrawMode",()=>i.TrianglesDrawMode,"TubeGeometry",()=>i.TubeGeometry,"UVMapping",()=>i.UVMapping,"Uint16BufferAttribute",()=>i.Uint16BufferAttribute,"Uint32BufferAttribute",()=>i.Uint32BufferAttribute,"Uint8BufferAttribute",()=>i.Uint8BufferAttribute,"Uint8ClampedBufferAttribute",()=>i.Uint8ClampedBufferAttribute,"Uniform",()=>i.Uniform,"UniformsGroup",()=>i.UniformsGroup,"UniformsLib",()=>n.UniformsLib,"UniformsUtils",()=>i.UniformsUtils,"UnsignedByteType",()=>i.UnsignedByteType,"UnsignedInt101111Type",()=>i.UnsignedInt101111Type,"UnsignedInt248Type",()=>i.UnsignedInt248Type,"UnsignedInt5999Type",()=>i.UnsignedInt5999Type,"UnsignedIntType",()=>i.UnsignedIntType,"UnsignedShort4444Type",()=>i.UnsignedShort4444Type,"UnsignedShort5551Type",()=>i.UnsignedShort5551Type,"UnsignedShortType",()=>i.UnsignedShortType,"VSMShadowMap",()=>i.VSMShadowMap,"Vector2",()=>i.Vector2,"Vector3",()=>i.Vector3,"Vector4",()=>i.Vector4,"VectorKeyframeTrack",()=>i.VectorKeyframeTrack,"VideoFrameTexture",()=>i.VideoFrameTexture,"VideoTexture",()=>i.VideoTexture,"WebGL3DRenderTarget",()=>i.WebGL3DRenderTarget,"WebGLArrayRenderTarget",()=>i.WebGLArrayRenderTarget,"WebGLCoordinateSystem",()=>i.WebGLCoordinateSystem,"WebGLCubeRenderTarget",()=>i.WebGLCubeRenderTarget,"WebGLRenderTarget",()=>i.WebGLRenderTarget,"WebGLRenderer",()=>n.WebGLRenderer,"WebGLUtils",()=>n.WebGLUtils,"WebGPUCoordinateSystem",()=>i.WebGPUCoordinateSystem,"WebXRController",()=>i.WebXRController,"WireframeGeometry",()=>i.WireframeGeometry,"WrapAroundEnding",()=>i.WrapAroundEnding,"ZeroCurvatureEnding",()=>i.ZeroCurvatureEnding,"ZeroFactor",()=>i.ZeroFactor,"ZeroSlopeEnding",()=>i.ZeroSlopeEnding,"ZeroStencilOp",()=>i.ZeroStencilOp,"createCanvasElement",()=>i.createCanvasElement,"error",()=>i.error,"getConsoleFunction",()=>i.getConsoleFunction,"log",()=>i.log,"setConsoleFunction",()=>i.setConsoleFunction,"warn",()=>i.warn,"warnOnce",()=>i.warnOnce],32009);var o=e.i(32009);function a(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}let s=["x","y","top","bottom","left","right","width","height"];var l=e.i(46791),u=e.i(43476);function c({ref:e,children:n,fallback:i,resize:l,style:c,gl:d,events:f=t.f,eventSource:A,eventPrefix:h,shadows:m,linear:p,flat:B,legacy:C,orthographic:g,frameloop:v,dpr:y,performance:b,raycaster:E,camera:M,scene:F,onPointerMissed:S,onCreated:R,...I}){r.useMemo(()=>(0,t.e)(o),[]);let T=(0,t.u)(),[G,x]=function({debounce:e,scroll:t,polyfill:n,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){var o,l,u;let c=n||("u"(p.current=!0,()=>void(p.current=!1)));let[B,C,g]=(0,r.useMemo)(()=>{let e=()=>{let e,t;if(!A.current.element)return;let{left:r,top:n,width:o,height:a,bottom:l,right:u,x:c,y:d}=A.current.element.getBoundingClientRect(),h={left:r,top:n,width:o,height:a,bottom:l,right:u,x:c,y:d};A.current.element instanceof HTMLElement&&i&&(h.height=A.current.element.offsetHeight,h.width=A.current.element.offsetWidth),Object.freeze(h),p.current&&(e=A.current.lastBounds,t=h,!s.every(r=>e[r]===t[r]))&&f(A.current.lastBounds=h)};return[e,m?a(e,m):e,h?a(e,h):e]},[f,i,h,m]);function v(){A.current.scrollContainers&&(A.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),A.current.scrollContainers=null),A.current.resizeObserver&&(A.current.resizeObserver.disconnect(),A.current.resizeObserver=null),A.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",A.current.orientationHandler))}function y(){A.current.element&&(A.current.resizeObserver=new c(g),A.current.resizeObserver.observe(A.current.element),t&&A.current.scrollContainers&&A.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),A.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",A.current.orientationHandler))}return o=g,l=!!t,(0,r.useEffect)(()=>{if(l)return window.addEventListener("scroll",o,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",o,!0)},[o,l]),u=C,(0,r.useEffect)(()=>(window.addEventListener("resize",u),()=>void window.removeEventListener("resize",u)),[u]),(0,r.useEffect)(()=>{v(),y()},[t,g,C]),(0,r.useEffect)(()=>v,[]),[e=>{e&&e!==A.current.element&&(v(),A.current.element=e,A.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:i,overflowY:o}=window.getComputedStyle(t);return[n,i,o].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),y())},d,B]}({scroll:!0,debounce:{scroll:50,resize:0},...l}),D=r.useRef(null),w=r.useRef(null);r.useImperativeHandle(e,()=>D.current);let L=(0,t.a)(S),[_,O]=r.useState(!1),[H,P]=r.useState(!1);if(_)throw _;if(H)throw H;let J=r.useRef(null);(0,t.b)(()=>{let e=D.current;x.width>0&&x.height>0&&e&&(J.current||(J.current=(0,t.c)(e)),async function(){await J.current.configure({gl:d,scene:F,events:f,shadows:m,linear:p,flat:B,legacy:C,orthographic:g,frameloop:v,dpr:y,performance:b,raycaster:E,camera:M,size:x,onPointerMissed:(...e)=>null==L.current?void 0:L.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(A?(0,t.i)(A)?A.current:A:w.current),h&&e.setEvents({compute:(e,t)=>{let r=e[h+"X"],n=e[h+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==R||R(e)}}),J.current.render((0,u.jsx)(T,{children:(0,u.jsx)(t.E,{set:P,children:(0,u.jsx)(r.Suspense,{fallback:(0,u.jsx)(t.B,{set:O}),children:null!=n?n:null})})}))}())}),r.useEffect(()=>{let e=D.current;if(e)return()=>(0,t.d)(e)},[]);let U=A?"none":"auto";return(0,u.jsx)("div",{ref:w,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:U,...c},...I,children:(0,u.jsx)("div",{ref:G,style:{width:"100%",height:"100%"},children:(0,u.jsx)("canvas",{ref:D,style:{display:"block"},children:i})})})}function d(e){return(0,u.jsx)(l.FiberProvider,{children:(0,u.jsx)(c,{...e})})}e.i(89499),e.s(["Canvas",()=>d],75056)},17751,85413,e=>{"use strict";var t=e.i(19273),r=e.i(86491),n=e.i(40143),i=e.i(15823),o=class extends i.Subscribable{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,n,i){let o=n.queryKey,a=n.queryHash??(0,t.hashQueryKeyByOptions)(o,n),s=this.get(a);return s||(s=new r.Query({client:e,queryKey:o,queryHash:a,options:e.defaultQueryOptions(n),state:i,defaultOptions:e.getQueryDefaults(o)}),this.add(s)),s}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let r={exact:!0,...e};return this.getAll().find(e=>(0,t.matchQuery)(r,e))}findAll(e={}){let r=this.getAll();return Object.keys(e).length>0?r.filter(r=>(0,t.matchQuery)(e,r)):r}notify(e){n.notifyManager.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},a=e.i(88587),s=e.i(36553),l=class extends a.Removable{#t;#r;#n;#i;constructor(e){super(),this.#t=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#r=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#r.includes(e)||(this.#r.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#r=this.#r.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#r.length||("pending"===this.state.status?this.scheduleGc():this.#n.remove(this))}continue(){return this.#i?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#o({type:"continue"})},r={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#i=(0,s.createRetryer)({fn:()=>this.options.mutationFn?this.options.mutationFn(e,r):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#o({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#o({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let n="pending"===this.state.status,i=!this.#i.canStart();try{if(n)t();else{this.#o({type:"pending",variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,r);let t=await this.options.onMutate?.(e,r);t!==this.state.context&&this.#o({type:"pending",context:t,variables:e,isPaused:i})}let o=await this.#i.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,r),await this.options.onSuccess?.(o,e,this.state.context,r),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(o,null,e,this.state.context,r),this.#o({type:"success",data:o}),o}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,r)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,r)}catch(e){Promise.reject(e)}throw this.#o({type:"error",error:t}),t}finally{this.#n.runNext(this)}}#o(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),n.notifyManager.batch(()=>{this.#r.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:"updated",action:e})})}},u=i,c=class extends u.Subscribable{constructor(e={}){super(),this.config=e,this.#a=new Set,this.#s=new Map,this.#l=0}#a;#s;#l;build(e,t,r){let n=new l({client:e,mutationCache:this,mutationId:++this.#l,options:e.defaultMutationOptions(t),state:r});return this.add(n),n}add(e){this.#a.add(e);let t=d(e);if("string"==typeof t){let r=this.#s.get(t);r?r.push(e):this.#s.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#a.delete(e)){let t=d(e);if("string"==typeof t){let r=this.#s.get(t);if(r)if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&this.#s.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=d(e);if("string"!=typeof t)return!0;{let r=this.#s.get(t),n=r?.find(e=>"pending"===e.state.status);return!n||n===e}}runNext(e){let t=d(e);if("string"!=typeof t)return Promise.resolve();{let r=this.#s.get(t)?.find(t=>t!==e&&t.state.isPaused);return r?.continue()??Promise.resolve()}}clear(){n.notifyManager.batch(()=>{this.#a.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#a.clear(),this.#s.clear()})}getAll(){return Array.from(this.#a)}find(e){let r={exact:!0,...e};return this.getAll().find(e=>(0,t.matchMutation)(r,e))}findAll(e={}){return this.getAll().filter(r=>(0,t.matchMutation)(e,r))}notify(e){n.notifyManager.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return n.notifyManager.batch(()=>Promise.all(e.map(e=>e.continue().catch(t.noop))))}};function d(e){return e.options.scope?.id}var f=e.i(75555),A=e.i(14448);function h(e){return{onFetch:(r,n)=>{let i=r.options,o=r.fetchOptions?.meta?.fetchMore?.direction,a=r.state.data?.pages||[],s=r.state.data?.pageParams||[],l={pages:[],pageParams:[]},u=0,c=async()=>{let n=!1,c=(0,t.ensureQueryFn)(r.options,r.fetchOptions),d=async(e,i,o)=>{let a;if(n)return Promise.reject();if(null==i&&e.pages.length)return Promise.resolve(e);let s=(a={client:r.client,queryKey:r.queryKey,pageParam:i,direction:o?"backward":"forward",meta:r.options.meta},(0,t.addConsumeAwareSignal)(a,()=>r.signal,()=>n=!0),a),l=await c(s),{maxPages:u}=r.options,d=o?t.addToStart:t.addToEnd;return{pages:d(e.pages,l,u),pageParams:d(e.pageParams,i,u)}};if(o&&a.length){let e="backward"===o,t={pages:a,pageParams:s},r=(e?function(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}:m)(i,t);l=await d(t,r,e)}else{let t=e??a.length;do{let e=0===u?s[0]??i.initialPageParam:m(i,l);if(u>0&&null==e)break;l=await d(l,e),u++}while(ur.options.persister?.(c,{client:r.client,queryKey:r.queryKey,meta:r.options.meta,signal:r.signal},n):r.fetchFn=c}}}function m(e,{pages:t,pageParams:r}){let n=t.length-1;return t.length>0?e.getNextPageParam(t[n],t,r[n],r):void 0}var p=class{#u;#n;#c;#d;#f;#A;#h;#m;constructor(e={}){this.#u=e.queryCache||new o,this.#n=e.mutationCache||new c,this.#c=e.defaultOptions||{},this.#d=new Map,this.#f=new Map,this.#A=0}mount(){this.#A++,1===this.#A&&(this.#h=f.focusManager.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#u.onFocus())}),this.#m=A.onlineManager.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#u.onOnline())}))}unmount(){this.#A--,0===this.#A&&(this.#h?.(),this.#h=void 0,this.#m?.(),this.#m=void 0)}isFetching(e){return this.#u.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#n.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#u.get(t.queryHash)?.state.data}ensureQueryData(e){let r=this.defaultQueryOptions(e),n=this.#u.build(this,r),i=n.state.data;return void 0===i?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime((0,t.resolveStaleTime)(r.staleTime,n))&&this.prefetchQuery(r),Promise.resolve(i))}getQueriesData(e){return this.#u.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,r,n){let i=this.defaultQueryOptions({queryKey:e}),o=this.#u.get(i.queryHash),a=o?.state.data,s=(0,t.functionalUpdate)(r,a);if(void 0!==s)return this.#u.build(this,i).setData(s,{...n,manual:!0})}setQueriesData(e,t,r){return n.notifyManager.batch(()=>this.#u.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#u.get(t.queryHash)?.state}removeQueries(e){let t=this.#u;n.notifyManager.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=this.#u;return n.notifyManager.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,r={}){let i={revert:!0,...r};return Promise.all(n.notifyManager.batch(()=>this.#u.findAll(e).map(e=>e.cancel(i)))).then(t.noop).catch(t.noop)}invalidateQueries(e,t={}){return n.notifyManager.batch(()=>(this.#u.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType==="none")?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t))}refetchQueries(e,r={}){let i={...r,cancelRefetch:r.cancelRefetch??!0};return Promise.all(n.notifyManager.batch(()=>this.#u.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let r=e.fetch(void 0,i);return i.throwOnError||(r=r.catch(t.noop)),"paused"===e.state.fetchStatus?Promise.resolve():r}))).then(t.noop)}fetchQuery(e){let r=this.defaultQueryOptions(e);void 0===r.retry&&(r.retry=!1);let n=this.#u.build(this,r);return n.isStaleByTime((0,t.resolveStaleTime)(r.staleTime,n))?n.fetch(r):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(t.noop).catch(t.noop)}fetchInfiniteQuery(e){return e.behavior=h(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(t.noop).catch(t.noop)}ensureInfiniteQueryData(e){return e.behavior=h(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return A.onlineManager.isOnline()?this.#n.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#u}getMutationCache(){return this.#n}getDefaultOptions(){return this.#c}setDefaultOptions(e){this.#c=e}setQueryDefaults(e,r){this.#d.set((0,t.hashKey)(e),{queryKey:e,defaultOptions:r})}getQueryDefaults(e){let r=[...this.#d.values()],n={};return r.forEach(r=>{(0,t.partialMatchKey)(e,r.queryKey)&&Object.assign(n,r.defaultOptions)}),n}setMutationDefaults(e,r){this.#f.set((0,t.hashKey)(e),{mutationKey:e,defaultOptions:r})}getMutationDefaults(e){let r=[...this.#f.values()],n={};return r.forEach(r=>{(0,t.partialMatchKey)(e,r.mutationKey)&&Object.assign(n,r.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let r={...this.#c.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return r.queryHash||(r.queryHash=(0,t.hashQueryKeyByOptions)(r.queryKey,r)),void 0===r.refetchOnReconnect&&(r.refetchOnReconnect="always"!==r.networkMode),void 0===r.throwOnError&&(r.throwOnError=!!r.suspense),!r.networkMode&&r.persister&&(r.networkMode="offlineFirst"),r.queryFn===t.skipToken&&(r.enabled=!1),r}defaultMutationOptions(e){return e?._defaulted?e:{...this.#c.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#u.clear(),this.#n.clear()}};e.s(["QueryClient",()=>p],17751);var B=Object.defineProperty;class C{constructor(){((e,t,r)=>{let n;return(n="symbol"!=typeof t?t+"":t)in e?B(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r})(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,n=r.length;tC],85413)},91907,8597,78140,82816,25947,51475,71832,e=>{"use strict";let t;e.s(["ShapeRenderer",()=>tr,"applyShapeShaderModifications",()=>e3,"createMaterialFromFlags",()=>e6,"useStaticShape",()=>e4],91907);var r=e.i(43476),n=e.i(932),i=e.i(71645),o=i;let a=(0,o.createContext)(null),s={didCatch:!1,error:null};class l extends o.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=s}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(...e){let{error:t}=this.state;null!==t&&(this.props.onReset?.({args:e,reason:"imperative-api"}),this.setState(s))}componentDidCatch(e,t){this.props.onError?.(e,t)}componentDidUpdate(e,t){let{didCatch:r}=this.state,{resetKeys:n}=this.props;r&&null!==t.error&&function(e=[],t=[]){return e.length!==t.length||e.some((e,r)=>!Object.is(e,t[r]))}(e.resetKeys,n)&&(this.props.onReset?.({next:n,prev:e.resetKeys,reason:"keys"}),this.setState(s))}render(){let{children:e,fallbackRender:t,FallbackComponent:r,fallback:n}=this.props,{didCatch:i,error:s}=this.state,l=e;if(i){let e={error:s,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)l=t(e);else if(r)l=(0,o.createElement)(r,e);else if(void 0!==n)l=n;else throw s}return(0,o.createElement)(a.Provider,{value:{didCatch:i,error:s,resetErrorBoundary:this.resetErrorBoundary}},l)}}e.s(["ErrorBoundary",()=>l],8597);var u=e.i(31067),c=e.i(90072);function d(e,t){if(t===c.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==c.TriangleFanDrawMode&&t!==c.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;etypeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r=2.0 are supported."));return}let s=new ei(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});s.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===a[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}s.setExtensions(o),s.setPlugins(a),s.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}}function B(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let C={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class g{constructor(e){this.parser=e,this.name=C.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,o)}}class w{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let o=i.extensions[t],a=n.images[o.source],s=r.textureLoader;if(a.uri){let e=r.options.manager.getHandler(a.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,o.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class L{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let o=i.extensions[t],a=n.images[o.source],s=r.textureLoader;if(a.uri){let e=r.options.manager.getHandler(a.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,o.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class _{constructor(e){this.name=C.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,o=e.count,a=e.byteStride,s=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(o,a,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(o*a);return i.decodeGltfBuffer(new Uint8Array(t),o,a,s,e.mode,e.filter),t})})}}}class O{constructor(e){this.name=C.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],o={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new c.Matrix4,r=new c.Vector3,a=new c.Quaternion,s=new c.Vector3(1,1,1),l=new c.InstancedMesh(e.geometry,e.material,n);for(let e=0;e=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},z={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete};function $(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function ee(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function et(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;ntypeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"u"{let r=this.associations.get(e);for(let[n,o]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(o,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r=2&&o.setY(t,f[e*s+1]),s>=3&&o.setZ(t,f[e*s+2]),s>=4&&o.setW(t,f[e*s+3]),s>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return o})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],o=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(o=e)}return this.loadTextureImage(e,n,o)}loadTextureImage(e,t,r){let n=this,i=this.json,o=i.textures[e],a=i.images[t],s=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[s])return this.textureCache[s];let l=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=o.name||a.name||"",""===t.name&&"string"==typeof a.uri&&!1===a.uri.startsWith("data:image/")&&(t.name=a.uri);let r=(i.samplers||{})[o.sampler]||{};return t.magFilter=V[r.magFilter]||c.LinearFilter,t.minFilter=V[r.minFilter]||c.LinearMipmapLinearFilter,t.wrapS=q[r.wrapS]||c.RepeatWrapping,t.wrapT=q[r.wrapT]||c.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=l,l}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],o=self.URL||self.webkitURL,a=i.uri||"",s=!1;if(void 0!==i.bufferView)a=this.getDependency("bufferView",i.bufferView).then(function(e){s=!0;let t=new Blob([e],{type:i.mimeType});return a=o.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(a).then(function(e){return new Promise(function(r,i){let o=r;!0===t.isImageBitmapLoader&&(o=function(e){let t=new c.Texture(e);t.needsUpdate=!0,r(t)}),t.load(c.LoaderUtils.resolveURL(e,n.path),o,void 0,i)})}).then(function(e){var t;return!0===s&&o.revokeObjectURL(a),ee(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),e});return this.sourceCache[e]=l,l}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(o){if(!o)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((o=o.clone()).channel=r.texCoord),i.extensions[C.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[C.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(o);o=i.extensions[C.KHR_TEXTURE_TRANSFORM].extendTexture(o,e),i.associations.set(o,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?h:m),"colorSpace"in o?o.colorSpace=n:o.encoding=n===h?3001:3e3),e[t]=o,o})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new c.PointsMaterial,c.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new c.LineBasicMaterial,c.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||o){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,o=n.materials[e],a={},s=o.extensions||{},l=[];if(s[C.KHR_MATERIALS_UNLIT]){let e=i[C.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),l.push(e.extendParams(a,o,r))}else{let n=o.pbrMetallicRoughness||{};if(a.color=new c.Color(1,1,1),a.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;a.color.setRGB(e[0],e[1],e[2],m),a.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(r.assignTexture(a,"map",n.baseColorTexture,h)),a.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,a.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(r.assignTexture(a,"metalnessMap",n.metallicRoughnessTexture)),l.push(r.assignTexture(a,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)})))}!0===o.doubleSided&&(a.side=c.DoubleSide);let u=o.alphaMode||"OPAQUE";if("BLEND"===u?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,"MASK"===u&&(a.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&t!==c.MeshBasicMaterial&&(l.push(r.assignTexture(a,"normalMap",o.normalTexture)),a.normalScale=new c.Vector2(1,1),void 0!==o.normalTexture.scale)){let e=o.normalTexture.scale;a.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&t!==c.MeshBasicMaterial&&(l.push(r.assignTexture(a,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(a.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&t!==c.MeshBasicMaterial){let e=o.emissiveFactor;a.emissive=new c.Color().setRGB(e[0],e[1],e[2],m)}return void 0!==o.emissiveTexture&&t!==c.MeshBasicMaterial&&l.push(r.assignTexture(a,"emissiveMap",o.emissiveTexture,h)),Promise.all(l).then(function(){let n=new t(a);return o.name&&(n.name=o.name),ee(n,o),r.associations.set(n,{materials:e}),o.extensions&&$(i,n,o),n})}createUniqueName(e){let t=c.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let o=0,a=e.length;o0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r1?new c.Group:1===t.length?t[0]:new c.Object3D)!==t[0])for(let e=0,r=t.length;e{let t=new Map;for(let[e,r]of n.associations)(e instanceof c.Material||e instanceof c.Texture)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let o,a=[],s=e.name?e.name:e.uuid,l=[];switch(Z[i.path]===Z.weights?e.traverse(function(e){e.morphTargetInfluences&&l.push(e.name?e.name:e.uuid)}):l.push(s),Z[i.path]){case Z.weights:o=c.NumberKeyframeTrack;break;case Z.rotation:o=c.QuaternionKeyframeTrack;break;case Z.position:case Z.scale:o=c.VectorKeyframeTrack;break;default:o=1===r.itemSize?c.NumberKeyframeTrack:c.VectorKeyframeTrack}let u=void 0!==n.interpolation?z[n.interpolation]:c.InterpolateLinear,d=this._getArrayFromAccessor(r);for(let e=0,r=l.length;e{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(es.has(e)){let t=es.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(i,o).then(n=>(r=n,new Promise((n,o)=>{r._callbacks[i]={resolve:n,reject:o},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return a.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),es.set(e,{key:n,promise:a}),a}_createGeometry(e){let t=new ea.BufferGeometry;e.index&&t.setIndex(new ea.BufferAttribute(e.index.array,1));for(let r=0;r{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=eu.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,r=new t.Decoder,a=new t.DecoderBuffer;a.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){var i,o,a;let s,l,u,c,d,f,A=n.attributeIDs,h=n.attributeTypes,m=t.GetEncodedGeometryType(r);if(m===e.TRIANGULAR_MESH)d=new e.Mesh,f=t.DecodeBufferToMesh(r,d);else if(m===e.POINT_CLOUD)d=new e.PointCloud,f=t.DecodeBufferToPointCloud(r,d);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!f.ok()||0===d.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+f.error_msg());let p={index:null,attributes:[]};for(let r in A){let i,o,a=self[h[r]];if(n.useUniqueIDs)o=A[r],i=t.GetAttributeByUniqueId(d,o);else{if(-1===(o=t.GetAttributeId(d,e[A[r]])))continue;i=t.GetAttribute(d,o)}p.attributes.push(function(e,t,r,n,i,o){let a=o.num_components(),s=r.num_points()*a,l=s*i.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),c=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,o,u,l,c);let d=new i(e.HEAPF32.buffer,c,s).slice();return e._free(c),{name:n,array:d,itemSize:a}}(e,t,d,r,a,i))}return m===e.TRIANGULAR_MESH&&(i=e,o=t,a=d,s=3*a.num_faces(),l=4*s,u=i._malloc(l),o.GetTrianglesUInt32Array(a,l,u),c=new Uint32Array(i.HEAPF32.buffer,u,s).slice(),i._free(u),p.index={array:c,itemSize:1}),e.destroy(d),p}(t,r,a,o),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(a),t.destroy(r)}})}}}var ec=e.i(99143);let ed=function(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;i{let A={keys:l,deep:n,inject:s,castShadow:o,receiveShadow:a};if(Array.isArray(t=i.useMemo(()=>{if(!1===e&&!Array.isArray(t)){let e=!1;if(t.traverse(t=>{t.isSkinnedMesh&&(e=!0)}),e)return ed(t)}return t},[t,e])))return i.createElement("group",(0,u.default)({},d,{ref:f}),t.map(e=>i.createElement(ef,(0,u.default)({key:e.uuid,object:e},A))),r);let{children:h,...m}=function(e,{keys:t=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData","bindMode","bindMatrix","bindMatrixInverse","skeleton"],deep:r,inject:n,castShadow:o,receiveShadow:a}){let s={};for(let r of t)s[r]=e[r];return r&&(s.geometry&&"materialsOnly"!==r&&(s.geometry=s.geometry.clone()),s.material&&"geometriesOnly"!==r&&(s.material=s.material.clone())),n&&(s="function"==typeof n?{...s,children:n(e)}:i.isValidElement(n)?{...s,children:n}:{...s,...n}),e instanceof c.Mesh&&(o&&(s.castShadow=!0),a&&(s.receiveShadow=!0)),s}(t,A),p=t.type[0].toLowerCase()+t.type.slice(1);return i.createElement(p,(0,u.default)({},m,d,{ref:f}),t.children.map(e=>"Bone"===e.type?i.createElement("primitive",(0,u.default)({key:e.uuid,object:e},A)):i.createElement(ef,(0,u.default)({key:e.uuid,object:e},A,{isChild:!0}))),r,h)}),eA=null,eh="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function em(e=!0,r=!0,n){return i=>{n&&n(i),e&&(eA||(eA=new el),eA.setDecoderPath("string"==typeof e?e:eh),i.setDRACOLoader(eA)),r&&i.setMeshoptDecoder((()=>{let e;if(t)return t;let r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="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";WebAssembly.validate(r)&&(i="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");let o=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let r=0;for(let i=0;i{(e=t.instance).exports.__wasm_call_ctors()});function a(t,r,n,i,o,a){let s=e.exports.sbrk,l=n+3&-4,u=s(l*i),c=s(o.length),d=new Uint8Array(e.exports.memory.buffer);d.set(o,c);let f=t(u,n,i,c,o.length);if(0===f&&a&&a(u,l,i),r.set(d.subarray(u,u+n*i)),s(u-s(0)),0!==f)throw Error(`Malformed buffer data: ${f}`)}let s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return t={ready:o,supported:!0,decodeVertexBuffer(t,r,n,i,o){a(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[s[o]])},decodeIndexBuffer(t,r,n,i){a(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){a(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,o,u){a(e.exports[l[o]],t,r,n,i,e.exports[s[u]])}}})())}}let ep=(e,t,r,n)=>(0,ec.useLoader)(p,e,em(t,r,n));ep.preload=(e,t,r,n)=>ec.useLoader.preload(p,e,em(t,r,n)),ep.clear=e=>ec.useLoader.clear(p,e),ep.setDecoderPath=e=>{eh=e},e.s(["useGLTF",()=>ep],78140),e.i(47071);var eB=e.i(71753),eC=e.i(12979);function eg(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;ieg],82816);var ev=e.i(75567),ey=e.i(79123);let eb=/borg|xorg|porg|dorg|plant|tree|bush|fern|vine|grass|leaf|flower|frond|palm|foliage/i;function eE(e){return eb.test(e)}let eM=(0,i.createContext)(null);function eF(){let e=(0,i.useContext)(eM);if(!e)throw Error("useShapeInfo must be used within ShapeInfoProvider");return e}function eS(e){let t,i,o,a=(0,n.c)(10),{children:s,object:l,shapeName:u,type:c}=e;a[0]!==u?(t=eE(u),a[0]=u,a[1]=t):t=a[1];let d=t;a[2]!==d||a[3]!==l||a[4]!==u||a[5]!==c?(i={object:l,shapeName:u,type:c,isOrganic:d},a[2]=d,a[3]=l,a[4]=u,a[5]=c,a[6]=i):i=a[6];let f=i;return a[7]!==s||a[8]!==f?(o=(0,r.jsx)(eM.Provider,{value:f,children:s}),a[7]=s,a[8]=f,a[9]=o):o=a[9],o}e.s(["ShapeInfoProvider",()=>eS,"isOrganicShape",()=>eE,"useShapeInfo",()=>eF],25947),e.i(13876);var eR=e.i(58647),eI=e.i(89887);e.i(47167),e.i(69230),e.i(69637),e.i(54440);let eT=(0,i.createContext)(null);function eG({children:e}){let t=(0,i.useRef)(void 0),n=(0,i.useRef)(0),o=(0,i.useRef)(0);(0,eB.useFrame)((e,r)=>{for(n.current+=r;n.current>=.03125;)if(n.current-=.03125,o.current++,t.current)for(let e of t.current)e(o.current)});let a=(0,i.useCallback)(e=>(t.current??=new Set,t.current.add(e),()=>{t.current.delete(e)}),[]),s=(0,i.useCallback)(()=>o.current,[]),l=(0,i.useMemo)(()=>({subscribe:a,getTick:s}),[a,s]);return(0,r.jsx)(eT.Provider,{value:l,children:e})}function ex(e){let t=(0,i.useContext)(eT);if(!t)throw Error("useTick must be used within a TickProvider");let r=(0,i.useRef)(e);r.current=e,(0,i.useEffect)(()=>t.subscribe(e=>r.current(e)),[t])}e.s(["TICK_RATE",0,32,"TickProvider",()=>eG,"useTick",()=>ex],51475);let eD=1/30,ew=new Map;function eL(e,t){if(t===e.lastFrame)return;e.lastFrame=t;let r=t%e.columns,n=e.rows-1-Math.floor(t/e.columns);e.texture.offset.set(r/e.columns,n/e.rows)}function e_(e,t){let r=e.totalDurationSeconds;if(r<=0)return 0;let n=t;n>r&&(n-=r*Math.floor(n/r));for(let t=0;t(0,eC.iflTextureToUrl)(t.name,e)),B=(i=(n=(t=await Promise.all(p.map(ev.loadTextureAsync)))[0].image).width,o=n.height,s=Math.ceil(Math.sqrt(a=t.length)),l=Math.ceil(a/s),(u=document.createElement("canvas")).width=i*s,u.height=o*l,d=u.getContext("2d"),t.forEach((e,t)=>{let r=Math.floor(t/s);d.drawImage(e.image,t%s*i,r*o)}),(f=new c.CanvasTexture(u)).colorSpace=c.SRGBColorSpace,f.generateMipmaps=!1,f.minFilter=c.NearestFilter,f.magFilter=c.NearestFilter,f.wrapS=c.ClampToEdgeWrapping,f.wrapT=c.ClampToEdgeWrapping,f.repeat.set(1/s,1/l),{texture:f,columns:s,rows:l,frameCount:a,frameOffsetSeconds:[],totalDurationSeconds:0,lastFrame:-1});return A=0,(r=B).frameOffsetSeconds=m.map(e=>A+=e.frameCount*eD),r.totalDurationSeconds=A,ew.set(e,B),B}var eH=e.i(47021),eP=e.i(48066);e.s(["ANIM_TRANSITION_TIME",()=>eU,"DEFAULT_EYE_HEIGHT",()=>eJ,"STREAM_TICK_SEC",()=>eN,"_r90",()=>eX,"_r90inv",()=>eV,"buildStreamDemoEntity",()=>e8,"entityTypeColor",()=>e2,"getKeyframeAtTime",()=>ez,"getPosedNodeTransform",()=>e$,"processShapeScene",()=>e9,"replaceWithShapeMaterial",()=>e0,"setQuaternionFromDir",()=>eZ,"setupEffectTexture",()=>eW,"torqueHorizontalFovToThreeVerticalFov",()=>eq,"torqueVecToThree",()=>eY],71832);let eJ=2.1,eU=.25,eN=.032,ek=new c.Vector3,eK=new c.Vector3,ej=new c.Matrix4,eQ=new c.Vector3(0,1,0),eX=new c.Quaternion().setFromAxisAngle(new c.Vector3(0,1,0),Math.PI/2),eV=eX.clone().invert();function eq(e,t){return 180*(2*Math.atan(Math.tan(Math.max(.01,Math.min(179.99,e))*Math.PI/180/2)/(Number.isFinite(t)&&t>1e-6?t:4/3)))/Math.PI}function eW(e){e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.magFilter=c.LinearFilter,e.colorSpace=c.NoColorSpace,e.flipY=!1,e.needsUpdate=!0}function eY(e,t){return t.set(e[1],e[2],e[0])}function eZ(e,t){ek.crossVectors(e,eQ),1e-8>ek.lengthSq()&&ek.set(-1,0,0),ek.normalize(),eK.crossVectors(ek,e).normalize(),ej.set(ek.x,e.x,eK.x,0,ek.y,e.y,eK.y,0,ek.z,e.z,eK.z,0,0,0,0,1),t.setFromRotationMatrix(ej)}function ez(e,t){if(0===e.length)return null;if(t<=e[0].time)return e[0];if(t>=e[e.length-1].time)return e[e.length-1];let r=0,n=e.length-1;for(;n-r>1;){let i=r+n>>1;e[i].time<=t?r=i:n=i}return e[r]}function e$(e,t,r){let n=e.clone(!0),i=t.find(e=>"Root"===e.name);if(i){let e=new c.AnimationMixer(n);e.clipAction(i).play(),e.setTime(0)}n.updateMatrixWorld(!0);let o=null,a=null;return(n.traverse(e=>{o||e.name!==r||(o=new c.Vector3,a=new c.Quaternion,e.getWorldPosition(o),e.getWorldQuaternion(a))}),o&&a)?{position:o,quaternion:a}:null}function e0(e,t){let r=e.userData?.resource_path,n=new Set(e.userData?.flag_names??[]);if(!r){let t=new c.MeshLambertMaterial({color:e.color,side:2,reflectivity:0});return e3(t),{material:t}}if(n.has("IflMaterial")){let i=e6(e,null,n,!1,t),o=Array.isArray(i)?i[1]:i;return{material:o,initialize:(e,t)=>e1(o,r,e,t)}}let i=(0,eC.textureToUrl)(r),o=(0,ev.loadTexture)(i);(0,ev.setupTexture)(o);let a=e6(e,o,n,!1,t);return{material:Array.isArray(a)?a[1]:a}}async function e1(e,t,r,n){let i=`textures/${t}.ifl`,o=await eO(i);e.map=o.texture,e.needsUpdate=!0;let a=!1,s=r.onBeforeRender;return r.onBeforeRender=function(...e){s?.apply(this,e),a||eL(o,e_(o,n()))},()=>{a=!0,r.onBeforeRender=s??(()=>{})}}function e9(e){var t;let r,n=[],i=null;e.traverse(e=>{!i&&e.skeleton&&(i=e.skeleton)});let o=i?(t=i,r=new Set,t.bones.forEach((e,t)=>{e.name.match(/^Hulk/i)&&r.add(t)}),r):new Set;return e.traverse(e=>{if(!e.isMesh)return;if(e.name.match(/^Hulk/i)||e.material?.name==="Unassigned"){e.visible=!1;return}let t=!!e.userData?.vis_sequence;if((e.userData?.vis??1)<.01&&(e.visible=!1),e.geometry){let t=function(e,t){if(0===t.size||!e.attributes.skinIndex)return e;let r=e.attributes.skinIndex,n=e.attributes.skinWeight,i=e.index,o=Array(r.count).fill(!1);for(let e=0;e.01&&t.has(a)){o[e]=!0;break}}if(i){let t=[],r=i.array;for(let e=0;e1){let t=0,r=0,n=0;for(let o of e)t+=i[3*o],r+=i[3*o+1],n+=i[3*o+2];let o=Math.sqrt(t*t+r*r+n*n);for(let a of(o>0&&(t/=o,r/=o,n/=o),e))i[3*a]=t,i[3*a+1]=r,i[3*a+2]=n}r.needsUpdate=!0}(t=t.clone()),e.geometry=t}let r=t?1:e.userData?.vis??1;if(Array.isArray(e.material))e.material=e.material.map(t=>{let i=e0(t,r);return i.initialize&&n.push({mesh:e,initialize:i.initialize}),i.material});else if(e.material){let t=e0(e.material,r);t.initialize&&n.push({mesh:e,initialize:t.initialize}),e.material=t.material}}),n}function e8(e,t,r,n,i,o,a,s,l,u,c){return{id:e,type:t,dataBlock:r,visual:n,direction:i,weaponShape:o,playerName:a,className:s,ghostIndex:l,dataBlockId:u,shapeHint:c,keyframes:[{time:0,position:[0,0,0],rotation:[0,0,0,1]}]}}function e2(e){switch(e.toLowerCase()){case"player":return"#00ff88";case"vehicle":return"#ff8800";case"projectile":return"#ff0044";case"deployable":return"#ffcc00";default:return"#8888ff"}}function e3(e){e.onBeforeCompile=t=>{(0,eH.injectCustomFog)(t,eP.globalFogUniforms),e instanceof c.MeshLambertMaterial&&(t.uniforms.shapeDirectionalFactor={value:1},t.uniforms.shapeAmbientFactor={value:1.5},t.fragmentShader=t.fragmentShader.replace("#include ",`#include -uniform float shapeDirectionalFactor; -uniform float shapeAmbientFactor; -`),t.fragmentShader=t.fragmentShader.replace("#include ",`#include - // Apply shape-specific lighting multipliers - reflectedLight.directDiffuse *= shapeDirectionalFactor; - reflectedLight.indirectDiffuse *= shapeAmbientFactor; -`))}}function e6(e,t,r,n,i=1,o=!1){let a=r.has("Translucent"),s=r.has("Additive"),l=r.has("SelfIlluminating"),u=i<1||o;if(l||s){let e=s||a||u,r=new c.MeshBasicMaterial({map:t,side:2,transparent:e,depthWrite:!e,alphaTest:0,fog:!0,...u&&{opacity:i},...s&&{blending:c.AdditiveBlending}});return e3(r),r}if(n||a){let e={map:t,transparent:u,alphaTest:.5*!u,...u&&{opacity:i,depthWrite:!1},reflectivity:0},r=new c.MeshLambertMaterial({...e,side:1,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1}),n=new c.MeshLambertMaterial({...e,side:0});return e3(r),e3(n),[r,n]}let d=new c.MeshLambertMaterial({map:t,side:2,reflectivity:0,...u&&{transparent:!0,opacity:i,depthWrite:!1}});return e3(d),d}function e4(e){let t,r=(0,n.c)(2);return r[0]!==e?(t=(0,eC.shapeToUrl)(e),r[0]=e,r[1]=t):t=r[1],ep(t)}function e7(e){let t,i,o,a,s=(0,n.c)(9),{color:l,label:u}=e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("boxGeometry",{args:[10,10,10]}),s[0]=t):t=s[0],s[1]!==l?(i=(0,r.jsx)("meshStandardMaterial",{color:l,wireframe:!0}),s[1]=l,s[2]=i):i=s[2],s[3]!==l||s[4]!==u?(o=u?(0,r.jsx)(eI.FloatingLabel,{color:l,children:u}):null,s[3]=l,s[4]=u,s[5]=o):o=s[5],s[6]!==i||s[7]!==o?(a=(0,r.jsxs)("mesh",{children:[t,i,o]}),s[6]=i,s[7]=o,s[8]=a):a=s[8],a}function e5(e){let t,i=(0,n.c)(4),{color:o,label:a}=e,{debugMode:s}=(0,ey.useDebug)();return i[0]!==o||i[1]!==s||i[2]!==a?(t=s?(0,r.jsx)(e7,{color:o,label:a}):null,i[0]=o,i[1]=s,i[2]=a,i[3]=t):t=i[3],t}let te=new Set(["octahedron.dts"]);function tt(e){let t,i,o,a,s=(0,n.c)(6),{label:l}=e,{debugMode:u}=(0,ey.useDebug)();return u?(s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("icosahedronGeometry",{args:[1,1]}),i=(0,r.jsx)("meshBasicMaterial",{color:"cyan",wireframe:!0}),s[0]=t,s[1]=i):(t=s[0],i=s[1]),s[2]!==l?(o=l?(0,r.jsx)(eI.FloatingLabel,{color:"cyan",children:l}):null,s[2]=l,s[3]=o):o=s[3],s[4]!==o?(a=(0,r.jsxs)("mesh",{children:[t,i,o]}),s[4]=o,s[5]=a):a=s[5],a):null}function tr(e){let t,o,a,s,u,c=(0,n.c)(17),{loadingColor:d,demoThreads:f,children:A}=e,h=void 0===d?"yellow":d,{object:m,shapeName:p}=eF();if(!p){let e,t=`${m._id}: `;return c[0]!==t?(e=(0,r.jsx)(e5,{color:"orange",label:t}),c[0]=t,c[1]=e):e=c[1],e}if(te.has(p.toLowerCase())){let e,t=`${m._id}: ${p}`;return c[2]!==t?(e=(0,r.jsx)(tt,{label:t}),c[2]=t,c[3]=e):e=c[3],e}let B=`${m._id}: ${p}`;return c[4]!==B?(t=(0,r.jsx)(e5,{color:"red",label:B}),c[4]=B,c[5]=t):t=c[5],c[6]!==h?(o=(0,r.jsx)(e7,{color:h}),c[6]=h,c[7]=o):o=c[7],c[8]!==f?(a=(0,r.jsx)(ti,{demoThreads:f}),c[8]=f,c[9]=a):a=c[9],c[10]!==A||c[11]!==o||c[12]!==a?(s=(0,r.jsxs)(i.Suspense,{fallback:o,children:[a,A]}),c[10]=A,c[11]=o,c[12]=a,c[13]=s):s=c[13],c[14]!==t||c[15]!==s?(u=(0,r.jsx)(l,{fallback:t,children:s}),c[14]=t,c[15]=s,c[16]=u):u=c[16],u}let tn=(0,i.memo)(function({gltf:e,demoThreads:t}){let{object:n,shapeName:o}=eF(),{debugMode:a}=(0,ey.useDebug)(),{animationEnabled:s}=(0,ey.useSettings)(),l=(0,eR.useEngineSelector)(e=>e.runtime.runtime),{clonedScene:u,mixer:d,clipsByName:f,visNodesBySequence:A,iflMeshes:h}=(0,i.useMemo)(()=>{let t=eg(e.scene),r=[];for(let{mesh:e,hasVisSequence:n}of(t.traverse(e=>{if(!e.isMesh||!e.material)return;let t=Array.isArray(e.material)?e.material[0]:e.material;if(!t?.userData)return;let n=new Set(t.userData.flag_names??[]),i=t.userData.resource_path;if(n.has("IflMaterial")&&i){let t=e.userData,n=t?.ifl_sequence?String(t.ifl_sequence).toLowerCase():void 0,o=t?.ifl_duration?Number(t.ifl_duration):void 0,a=t?.ifl_sequence?!!t.ifl_cyclic:void 0,s=t?.ifl_tool_begin!=null?Number(t.ifl_tool_begin):void 0;r.push({mesh:e,iflPath:`textures/${i}.ifl`,hasVisSequence:!!t?.vis_sequence,iflSequence:n,iflDuration:o,iflCyclic:a,iflToolBegin:s})}}),e9(t),r))n||(e.visible=!0);let n=new Map;t.traverse(e=>{if(!e.isMesh)return;let t=e.userData;if(!t)return;let r=t.vis_keyframes,i=t.vis_duration,o=(t.vis_sequence??"").toLowerCase();if(!o||!Array.isArray(r)||r.length<=1||!i||i<=0)return;let a=n.get(o);a||(a=[],n.set(o,a)),a.push({mesh:e,keyframes:r,duration:i,cyclic:!!t.vis_cyclic})});let i=new Map;for(let t of e.animations)i.set(t.name.toLowerCase(),t);let o=i.size>0?new c.AnimationMixer(t):null;return{clonedScene:t,mixer:o,clipsByName:i,visNodesBySequence:n,iflMeshes:r}},[e]),m=(0,i.useRef)(new Map),p=(0,i.useRef)(new Map),B=(0,i.useRef)([]),C=(0,i.useRef)(0),g=(0,i.useRef)(s);g.current=s;let v=(0,i.useRef)(null),y=(0,i.useRef)(t);y.current=t;let b=(0,i.useRef)(null),E=(0,i.useRef)(null),M=(0,i.useRef)(void 0);(0,i.useEffect)(()=>{for(let e of(B.current=[],p.current.clear(),h))eO(e.iflPath).then(t=>{let r=Array.isArray(e.mesh.material)?e.mesh.material[0]:e.mesh.material;r&&(r.map=t.texture,r.needsUpdate=!0),B.current.push({atlas:t,sequenceName:e.iflSequence,sequenceDuration:e.iflDuration,cyclic:e.iflCyclic,toolBegin:e.iflToolBegin}),p.current.set(e.mesh,t)}).catch(()=>{})},[h]),(0,i.useEffect)(()=>{let e=m.current;function t(e){if(e.mesh.visible=!0,e.mesh.material?.isMeshStandardMaterial){let t=e0(e.mesh.material,e.mesh.userData?.vis??0);e.mesh.material=t.material}e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.transparent=!0,e.mesh.material.depthWrite=!1);let t=p.current.get(e.mesh);t&&e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.map=t.texture,e.mesh.material.needsUpdate=!0)}function r(r,n){let o=n.toLowerCase();i(r);let a=f.get(o),s=A.get(o),l={sequence:o,startTime:performance.now()/1e3};if(a&&d){let e=d.clipAction(a);"deploy"===o?(e.setLoop(c.LoopOnce,1),e.clampWhenFinished=!0):e.setLoop(c.LoopRepeat,1/0),e.reset().play(),l.action=e,!g.current&&"deploy"===o&&(e.time=a.duration,d.update(0),v.current&&queueMicrotask(()=>v.current?.(r)))}if(s){for(let e of s)t(e);l.visNodes=s}e.set(r,l)}function i(t){let r=e.get(t);if(r){if(r.action&&r.action.stop(),r.visNodes)for(let e of r.visNodes)e.mesh.visible=!1,e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.opacity=e.keyframes[0]);e.delete(t)}}if(b.current=r,E.current=i,null!=y.current)return()=>{for(let t of(b.current=null,E.current=null,[...e.keys()]))i(t)};let o=f.has("deploy"),a=!!(l&&o&&n.datablock);function s(e){if(!l)return;let t=n.datablock;if(!t)return;let r=l.getObjectByName(String(t));r&&l.$.call(r,"onEndSequence",n,e)}function u(){for(let r of["ambient","power"]){let n=A.get(r);if(n){let i=performance.now()/1e3;for(let e of n)t(e);let o=+("power"!==r);e.set(o,{sequence:r,visNodes:n,startTime:i})}let i=f.get(r);if(i&&d){let t=d.clipAction(i);t.setLoop(c.LoopRepeat,1/0),t.reset().play();let n=+("power"!==r),o=e.get(n);o?o.action=t:e.set(n,{sequence:r,action:t,startTime:performance.now()/1e3})}}}v.current=a?s:()=>u();let h=[],B=d?t=>{for(let[r,n]of e)if(n.action===t.action){a?s(r):u();break}}:null;return B&&d&&d.addEventListener("finished",B),l&&(h.push(l.$.onMethodCalled("ShapeBase","playThread",(e,t,i)=>{e._id===n._id&&r(Number(t),String(i))})),h.push(l.$.onMethodCalled("ShapeBase","stopThread",(e,t)=>{e._id===n._id&&i(Number(t))})),h.push(l.$.onMethodCalled("ShapeBase","pauseThread",(t,r)=>{if(t._id!==n._id)return;let i=e.get(Number(r));i?.action&&(i.action.paused=!0)}))),a?l.$.call(n,"deploy"):o?r(3,"deploy"):u(),()=>{for(let t of(B&&d&&d.removeEventListener("finished",B),h.forEach(e=>e()),v.current=null,b.current=null,E.current=null,[...e.keys()]))i(t)}},[d,f,A,n,l]);let F=(0,i.useMemo)(()=>{let t=e.scene.userData?.dts_sequence_names;if("string"==typeof t)try{return JSON.parse(t).map(e=>e.toLowerCase())}catch{}return e.animations.map(e=>e.name.toLowerCase())},[e]);return(0,eB.useFrame)((e,t)=>{let r=m.current,n=y.current,i=M.current;if(n!==i){let e=b.current,t=E.current;if(e&&t){M.current=n;let o=[];if(n)for(let e of n)o[e.index]=e;let a=[];if(i)for(let e of i)a[e.index]=e;let s=Math.max(o.length,a.length);for(let n=0;n0)for(let e of(C.current+=t,o)){if(!s){eL(e.atlas,0);continue}if(e.sequenceName&&e.sequenceDuration){let t=0;for(let[,n]of r)if(n.sequence===e.sequenceName){let r=performance.now()/1e3-n.startTime,i=e.sequenceDuration;t=(e.cyclic?r/i%1:Math.min(r/i,1))*i+(e.toolBegin??0);break}eL(e.atlas,e_(e.atlas,t))}else eL(e.atlas,e_(e.atlas,C.current))}}),(0,r.jsxs)("group",{rotation:[0,Math.PI/2,0],children:[(0,r.jsx)("primitive",{object:u}),a?(0,r.jsxs)(eI.FloatingLabel,{children:[n._id,": ",o]}):null]})});function ti(e){let t,i=(0,n.c)(3),{demoThreads:o}=e,{shapeName:a}=eF(),s=e4(a);return i[0]!==o||i[1]!==s?(t=(0,r.jsx)(tn,{gltf:s,demoThreads:o}),i[0]=o,i[1]=s,i[2]=t):t=i[2],t}},81405,(e,t,r)=>{var n;e.e,(n=function(){function e(e){return i.appendChild(e.dom),e}function t(e){for(var t=0;ta+1e3&&(l.update(1e3*s/(e-a),100),a=e,s=0,c)){var t=performance.memory;c.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){o=this.end()},domElement:i,setMode:t}}).Panel=function(e,t,r){var n=1/0,i=0,o=Math.round,a=o(window.devicePixelRatio||1),s=80*a,l=48*a,u=3*a,c=2*a,d=3*a,f=15*a,A=74*a,h=30*a,m=document.createElement("canvas");m.width=s,m.height=l,m.style.cssText="width:80px;height:48px";var p=m.getContext("2d");return p.font="bold "+9*a+"px Helvetica,Arial,sans-serif",p.textBaseline="top",p.fillStyle=r,p.fillRect(0,0,s,l),p.fillStyle=t,p.fillText(e,u,c),p.fillRect(d,f,A,h),p.fillStyle=r,p.globalAlpha=.9,p.fillRect(d,f,A,h),{dom:m,update:function(l,B){n=Math.min(n,l),i=Math.max(i,l),p.fillStyle=r,p.globalAlpha=1,p.fillRect(0,0,s,f),p.fillStyle=t,p.fillText(o(l)+" "+e+" ("+o(n)+"-"+o(i)+")",u,c),p.drawImage(m,d+a,f,A-a,h,d,f,A-a,h),p.fillRect(d+A-a,f,a,h),p.fillStyle=r,p.globalAlpha=.9,p.fillRect(d+A-a,f,a,o((1-l/B)*h))}}},t.exports=n},55141,e=>{e.v({AxisLabel:"DebugElements-module__Cmeo9W__AxisLabel",StatsPanel:"DebugElements-module__Cmeo9W__StatsPanel"})},86855,e=>{"use strict";var t=e.i(43476),r=e.i(932),n=e.i(71645),i=e.i(40859),i=i,o=i,a=e.i(81405);function s(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}function l({showPanel:e=0,className:t,parent:r}){let l=function(e,t=[],r){let[i,o]=n.useState();return n.useLayoutEffect(()=>{let t=e();return o(t),s(void 0,t),()=>s(void 0,null)},t),i}(()=>new a.default,[]);return n.useEffect(()=>{if(l){let n=r&&r.current||document.body;l.showPanel(e),null==n||n.appendChild(l.dom);let a=(null!=t?t:"").split(" ").filter(e=>e);a.length&&l.dom.classList.add(...a);let s=(0,i.j)(()=>l.begin()),u=(0,o.k)(()=>l.end());return()=>{a.length&&l.dom.classList.remove(...a),null==n||n.removeChild(l.dom),s(),u()}}},[r,l,t,e]),null}var u=e.i(60099),c=e.i(79123),d=e.i(55141);function f(){let e,i,o=(0,r.c)(3),{debugMode:a}=(0,c.useDebug)(),s=(0,n.useRef)(null);return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=()=>{let e=s.current;e&&e.setColors("rgb(153, 255, 0)","rgb(0, 153, 255)","rgb(255, 153, 0)")},o[0]=e):e=o[0],(0,n.useEffect)(e),o[1]!==a?(i=a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l,{className:d.default.StatsPanel}),(0,t.jsx)("axesHelper",{ref:s,args:[70],renderOrder:999,children:(0,t.jsx)("lineBasicMaterial",{depthTest:!1,depthWrite:!1,fog:!1,vertexColors:!0})}),(0,t.jsx)(u.Html,{position:[80,0,0],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"y",children:"Y"})}),(0,t.jsx)(u.Html,{position:[0,80,0],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"z",children:"Z"})}),(0,t.jsx)(u.Html,{position:[0,0,80],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"x",children:"X"})})]}):null,o[1]=a,o[2]=i):i=o[2],i}e.s(["DebugElements",()=>f],86855)},38360,(e,t,r)=>{var n={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ả:"A",Ạ:"A",Ẩ:"A",Ẫ:"A",Ậ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ẻ:"E",Ẽ:"E",Ẹ:"E",Ể:"E",Ễ:"E",Ệ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ỉ:"I",Ị:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ỏ:"O",Ọ:"O",Ổ:"O",Ỗ:"O",Ộ:"O",Ờ:"O",Ở:"O",Ỡ:"O",Ớ:"O",Ợ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ủ:"U",Ụ:"U",Ử:"U",Ữ:"U",Ự:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ả:"a",ạ:"a",ẩ:"a",ẫ:"a",ậ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ẻ:"e",ẽ:"e",ẹ:"e",ể:"e",ễ:"e",ệ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ỉ:"i",ị:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ỏ:"o",ọ:"o",ổ:"o",ỗ:"o",ộ:"o",ờ:"o",ở:"o",ỡ:"o",ớ:"o",ợ:"o",ù:"u",ú:"u",û:"u",ü:"u",ủ:"u",ụ:"u",ử:"u",ữ:"u",ự:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},i=Object.keys(n).join("|"),o=RegExp(i,"g"),a=RegExp(i,"");function s(e){return n[e]}var l=function(e){return e.replace(o,s)};t.exports=l,t.exports.has=function(e){return!!e.match(a)},t.exports.remove=l},11889,56373,86447,1559,18364,78440,59129,25998,70238,e=>{"use strict";e.i(47167);var t,r="u">typeof window&&!!(null==(t=window.document)?void 0:t.createElement);function n(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function i(e){return e?"self"in e?e.self:n(e).defaultView||window:self}function o(e,t=!1){var r;let{activeElement:i}=n(e);if(!(null==i?void 0:i.nodeName))return null;if(s(i)&&(null==(r=i.contentDocument)?void 0:r.body))return o(i.contentDocument.body,t);if(t){let e=i.getAttribute("aria-activedescendant");if(e){let t=n(i).getElementById(e);if(t)return t}}return i}function a(e,t){return e===t||e.contains(t)}function s(e){return"IFRAME"===e.tagName}function l(e){let t=e.tagName.toLowerCase();return"button"===t||"input"===t&&!!e.type&&-1!==u.indexOf(e.type)}var u=["button","color","file","image","reset","submit"];function c(e){return"function"==typeof e.checkVisibility?e.checkVisibility():e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0}function d(e){try{let t=e instanceof HTMLInputElement&&null!==e.selectionStart,r="TEXTAREA"===e.tagName;return t||r||!1}catch(e){return!1}}function f(e){return e.isContentEditable||d(e)}function A(e){let t=0,r=0;if(d(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let i=n(e).getSelection();if((null==i?void 0:i.rangeCount)&&i.anchorNode&&a(e,i.anchorNode)&&i.focusNode&&a(e,i.focusNode)){let n=i.getRangeAt(0),o=n.cloneRange();o.selectNodeContents(e),o.setEnd(n.startContainer,n.startOffset),t=o.toString().length,o.setEnd(n.endContainer,n.endOffset),r=o.toString().length}}return{start:t,end:r}}function h(e,t){let r=null==e?void 0:e.getAttribute("role");return r&&-1!==["dialog","menu","listbox","tree","grid"].indexOf(r)?r:t}function m(e){if(!e)return null;let t=e=>"auto"===e||"scroll"===e;if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return m(e.parentElement)||document.scrollingElement||document.body}function p(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function B(e,t){return t&&e.item(t)||null}var C=Symbol("FOCUS_SILENTLY");function g(e,t,r){if(!t||t===r)return!1;let n=e.item(t.id);return!!n&&(!r||n.element!==r)}function v(){}function y(e,t){return"function"==typeof Object.hasOwn?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function b(...e){return(...t)=>{for(let r of e)"function"==typeof r&&r(...t)}}function E(e){return e}function M(e,t){if(!e){if("string"!=typeof t)throw Error("Invariant failed");throw Error(t)}}function F(e,...t){let r="function"==typeof e?e(...t):e;return null!=r&&!r}function S(e){return e.disabled||!0===e["aria-disabled"]||"true"===e["aria-disabled"]}function R(e){let t={};for(let r in e)void 0!==e[r]&&(t[r]=e[r]);return t}function I(...e){for(let t of e)if(void 0!==t)return t}var T=e.i(71645);function G(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function x(){return r&&!!navigator.maxTouchPoints}function D(){return!!r&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}function w(){return r&&D()&&/apple/i.test(navigator.vendor)}function L(e){return!!(e.currentTarget&&!a(e.currentTarget,e.target))}function _(e){return e.target===e.currentTarget}function O(e,t){let r=new FocusEvent("blur",t),n=e.dispatchEvent(r),i={...t,bubbles:!0};return e.dispatchEvent(new FocusEvent("focusout",i)),n}function H(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function P(e,t){let r=t||e.currentTarget,n=e.relatedTarget;return!n||!a(r,n)}function J(e,t,r,n){let i=(e=>{if(n){let t=setTimeout(e,n);return()=>clearTimeout(t)}let t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)})(()=>{e.removeEventListener(t,o,!0),r()}),o=()=>{i(),r()};return e.addEventListener(t,o,{once:!0,capture:!0}),i}function U(e,t,r,n=window){let i=[];try{for(let o of(n.document.addEventListener(e,t,r),Array.from(n.frames)))i.push(U(e,t,r,o))}catch(e){}return()=>{try{n.document.removeEventListener(e,t,r)}catch(e){}for(let e of i)e()}}var N={...T},k=N.useId;N.useDeferredValue;var K=N.useInsertionEffect,j=r?T.useLayoutEffect:T.useEffect;function Q(e){let t=(0,T.useRef)(()=>{throw Error("Cannot call an event handler while rendering.")});return K?K(()=>{t.current=e}):t.current=e,(0,T.useCallback)((...e)=>{var r;return null==(r=t.current)?void 0:r.call(t,...e)},[])}function X(...e){return(0,T.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)G(r,t)}},e)}function V(e){if(k){let t=k();return e||t}let[t,r]=(0,T.useState)(e);return j(()=>{if(e||t)return;let n=Math.random().toString(36).slice(2,8);r(`id-${n}`)},[e,t]),e||t}function q(e,t){let r=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,T.useEffect)(()=>()=>{r.current=!1},[])}function W(){return(0,T.useReducer)(()=>[],[])}function Y(e){return Q("function"==typeof e?e:()=>e)}function Z(e,t,r=[]){let n=(0,T.useCallback)(r=>(e.wrapElement&&(r=e.wrapElement(r)),t(r)),[...r,e.wrapElement]);return{...e,wrapElement:n}}function z(e=!1,t){let[r,n]=(0,T.useState)(null);return{portalRef:X(n,t),portalNode:r,domReady:!e||r}}var $=!1,ee=!1,et=0,er=0;function en(e){let t,r;t=e.movementX||e.screenX-et,r=e.movementY||e.screenY-er,et=e.screenX,er=e.screenY,(t||r||0)&&(ee=!0)}function ei(){ee=!1}var eo=e.i(43476);function ea(e){let t=T.forwardRef((t,r)=>e({...t,ref:r}));return t.displayName=e.displayName||e.name,t}function es(e,t){return T.memo(e,t)}function el(e,t){let r,{wrapElement:n,render:i,...o}=t,a=X(t.ref,i&&(0,T.isValidElement)(i)&&("ref"in i.props||"ref"in i)?({...i.props}).ref||i.ref:null);if(T.isValidElement(i)){let e={...i.props,ref:a};r=T.cloneElement(i,function(e,t){let r={...e};for(let n in t){if(!y(t,n))continue;if("className"===n){let n="className";r[n]=e[n]?`${e[n]} ${t[n]}`:t[n];continue}if("style"===n){let n="style";r[n]=e[n]?{...e[n],...t[n]}:t[n];continue}let i=t[n];if("function"==typeof i&&n.startsWith("on")){let t=e[n];if("function"==typeof t){r[n]=(...e)=>{i(...e),t(...e)};continue}}r[n]=i}return r}(o,e))}else r=i?i(o):(0,eo.jsx)(e,{...o});return n?n(r):r}function eu(e){let t=(t={})=>e(t);return t.displayName=e.name,t}function ec(e=[],t=[]){let r=T.createContext(void 0),n=T.createContext(void 0),i=()=>T.useContext(r),o=t=>e.reduceRight((e,r)=>(0,eo.jsx)(r,{...t,children:e}),(0,eo.jsx)(r.Provider,{...t}));return{context:r,scopedContext:n,useContext:i,useScopedContext:(e=!1)=>{let t=T.useContext(n),r=i();return e?t:t||r},useProviderContext:()=>{let e=T.useContext(n),t=i();if(!e||e!==t)return t},ContextProvider:o,ScopedContextProvider:e=>(0,eo.jsx)(o,{...e,children:t.reduceRight((t,r)=>(0,eo.jsx)(r,{...e,children:t}),(0,eo.jsx)(n.Provider,{...e}))})}}var ed=ec(),ef=ed.useContext;ed.useScopedContext,ed.useProviderContext;var eA=ec([ed.ContextProvider],[ed.ScopedContextProvider]),eh=eA.useContext;eA.useScopedContext;var em=eA.useProviderContext,ep=eA.ContextProvider,eB=eA.ScopedContextProvider,eC=(0,T.createContext)(void 0),eg=(0,T.createContext)(void 0),ev=(0,T.createContext)(!0),ey="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function eb(e){return!(!e.matches(ey)||!c(e)||e.closest("[inert]"))}function eE(e){if(!eb(e)||0>Number.parseInt(e.getAttribute("tabindex")||"0",10))return!1;if(!("form"in e)||!e.form||e.checked||"radio"!==e.type)return!0;let t=e.form.elements.namedItem(e.name);if(!t||!("length"in t))return!0;let r=o(e);return!r||r===e||!("form"in r)||r.form!==e.form||r.name!==e.name}function eM(e,t){let r=Array.from(e.querySelectorAll(ey));t&&r.unshift(e);let n=r.filter(eb);return n.forEach((e,t)=>{var r;if(!s(e))return;let i=null==(r=e.contentDocument)?void 0:r.body;i&&n.splice(t,1,...eM(i))}),n}function eF(e,t,r){let n=Array.from(e.querySelectorAll(ey)),i=n.filter(eE);return(t&&eE(e)&&i.unshift(e),i.forEach((e,t)=>{var n;if(!s(e))return;let o=null==(n=e.contentDocument)?void 0:n.body;if(!o)return;let a=eF(o,!1,r);i.splice(t,1,...a)}),!i.length&&r)?n:i}function eS(e,t){var r;let n,i,a,s;return r=document.body,n=o(r),a=(i=eM(r,!1)).indexOf(n),(s=i.slice(a+1)).find(eE)||(e?i.find(eE):null)||(t?s[0]:null)||null}function eR(e,t){var r;let n,i,a,s;return r=document.body,n=o(r),a=(i=eM(r,!1).reverse()).indexOf(n),(s=i.slice(a+1)).find(eE)||(e?i.find(eE):null)||(t?s[0]:null)||null}function eI(e){let t=o(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&r===e.id}function eT(e){let t=o(e);if(!t)return!1;if(a(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&"id"in e&&(r===e.id||!!e.querySelector(`#${CSS.escape(r)}`))}function eG(e){!eT(e)&&eb(e)&&e.focus()}var ex=w(),eD=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],ew=Symbol("safariFocusAncestor");function eL(e){return"input"===e.tagName.toLowerCase()&&!!e.type&&("radio"===e.type||"checkbox"===e.type)}function e_(e,t){return Q(r=>{null==e||e(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var eO=!1,eH=!0;function eP(e){let t=e.target;t&&"hasAttribute"in t&&!t.hasAttribute("data-focus-visible")&&(eH=!1)}function eJ(e){e.metaKey||e.ctrlKey||e.altKey||(eH=!0)}var eU=eu(function({focusable:e=!0,accessibleWhenDisabled:t,autoFocus:r,onFocusVisible:n,...i}){var o,a,s,u,c;let d=(0,T.useRef)(null);(0,T.useEffect)(()=>{!e||eO||(U("mousedown",eP,!0),U("keydown",eJ,!0),eO=!0)},[e]),ex&&(0,T.useEffect)(()=>{if(!e)return;let t=d.current;if(!t||!eL(t))return;let r="labels"in t?t.labels:null;if(!r)return;let n=()=>queueMicrotask(()=>t.focus());for(let e of r)e.addEventListener("mouseup",n);return()=>{for(let e of r)e.removeEventListener("mouseup",n)}},[e]);let f=e&&S(i),A=!!f&&!t,[h,m]=(0,T.useState)(!1);(0,T.useEffect)(()=>{e&&A&&h&&m(!1)},[e,A,h]),(0,T.useEffect)(()=>{if(!e||!h)return;let t=d.current;if(!t||"u"{eb(t)||m(!1)});return r.observe(t),()=>r.disconnect()},[e,h]);let p=e_(i.onKeyPressCapture,f),B=e_(i.onMouseDownCapture,f),C=e_(i.onClickCapture,f),g=i.onMouseDown,v=Q(t=>{if(null==g||g(t),t.defaultPrevented||!e)return;let r=t.currentTarget;if(!ex||L(t)||!l(r)&&!eL(r))return;let n=!1,i=()=>{n=!0};r.addEventListener("focusin",i,{capture:!0,once:!0});let o=function(e){for(;e&&!eb(e);)e=e.closest(ey);return e||null}(r.parentElement);o&&(o[ew]=!0),J(r,"mouseup",()=>{r.removeEventListener("focusin",i,!0),o&&(o[ew]=!1),n||eG(r)})}),y=(t,r)=>{if(r&&(t.currentTarget=r),!e)return;let i=t.currentTarget;i&&eI(i)&&(null==n||n(t),t.defaultPrevented||(i.dataset.focusVisible="true",m(!0)))},b=i.onKeyDownCapture,E=Q(t=>{if(null==b||b(t),t.defaultPrevented||!e||h||t.metaKey||t.altKey||t.ctrlKey||!_(t))return;let r=t.currentTarget;J(r,"focusout",()=>y(t,r))}),M=i.onFocusCapture,F=Q(t=>{if(null==M||M(t),t.defaultPrevented||!e)return;if(!_(t))return void m(!1);let r=t.currentTarget;eH||function(e){let{tagName:t,readOnly:r,type:n}=e;return"TEXTAREA"===t&&!r||"SELECT"===t&&!r||("INPUT"!==t||r?!!e.isContentEditable||"combobox"===e.getAttribute("role")&&!!e.dataset.name:eD.includes(n))}(t.target)?J(t.target,"focusout",()=>y(t,r)):m(!1)}),I=i.onBlur,G=Q(t=>{null==I||I(t),!e||P(t)&&(t.currentTarget.removeAttribute("data-focus-visible"),m(!1))}),x=(0,T.useContext)(ev),D=Q(t=>{e&&r&&t&&x&&queueMicrotask(()=>{eI(t)||eb(t)&&t.focus()})}),w=function(e,t){let r=e=>{if("string"==typeof e)return e},[n,i]=(0,T.useState)(()=>r(void 0));return j(()=>{let t=e&&"current"in e?e.current:e;i((null==t?void 0:t.tagName.toLowerCase())||r(void 0))},[e,void 0]),n}(d),O=e&&(!w||"button"===w||"summary"===w||"input"===w||"select"===w||"textarea"===w||"a"===w),H=e&&(!w||"button"===w||"input"===w||"select"===w||"textarea"===w),N=i.style,k=(0,T.useMemo)(()=>A?{pointerEvents:"none",...N}:N,[A,N]);return i={"data-focus-visible":e&&h||void 0,"data-autofocus":r||void 0,"aria-disabled":f||void 0,...i,ref:X(d,D,i.ref),style:k,tabIndex:(o=e,a=A,s=O,u=H,c=i.tabIndex,o?a?s&&!u?-1:void 0:s?c:c||0:c),disabled:!!H&&!!A||void 0,contentEditable:f?void 0:i.contentEditable,onKeyPressCapture:p,onClickCapture:C,onMouseDownCapture:B,onMouseDown:v,onKeyDownCapture:E,onFocusCapture:F,onBlur:G},R(i)});function eN(e){let t=[];for(let r of e)t.push(...r);return t}function ek(e){return e.slice().reverse()}function eK(e,t,r){return Q(n=>{var i;let o,a;if(null==t||t(n),n.defaultPrevented||n.isPropagationStopped()||!_(n)||"Shift"===n.key||"Control"===n.key||"Alt"===n.key||"Meta"===n.key||(!(o=n.target)||d(o))&&1===n.key.length&&!n.ctrlKey&&!n.metaKey)return;let s=e.getState(),l=null==(i=B(e,s.activeId))?void 0:i.element;if(!l)return;let{view:u,...c}=n;l!==(null==r?void 0:r.current)&&l.focus(),a=new KeyboardEvent(n.type,c),l.dispatchEvent(a)||n.preventDefault(),n.currentTarget.contains(l)&&n.stopPropagation()})}ea(function(e){return el("div",eU(e))});var ej=eu(function({store:e,composite:t=!0,focusOnMove:r=t,moveOnKeyPress:n=!0,...i}){let a=em();M(e=e||a,!1);let s=(0,T.useRef)(null),l=(0,T.useRef)(null),u=function(e){let[t,r]=(0,T.useState)(!1),n=(0,T.useCallback)(()=>r(!0),[]),i=e.useState(t=>B(e,t.activeId));return(0,T.useEffect)(()=>{let e=null==i?void 0:i.element;!t||e&&(r(!1),e.focus({preventScroll:!0}))},[i,t]),n}(e),c=e.useState("moves"),[,f]=function(e){let[t,r]=(0,T.useState)(null);return j(()=>{if(null==t||!e)return;let r=null;return e(e=>(r=e,t)),()=>{e(r)}},[t,e]),[t,r]}(t?e.setBaseElement:null);(0,T.useEffect)(()=>{var n;if(!e||!c||!t||!r)return;let{activeId:i}=e.getState(),o=null==(n=B(e,i))?void 0:n.element;o&&("scrollIntoView"in o?(o.focus({preventScroll:!0}),o.scrollIntoView({block:"nearest",inline:"nearest",...void 0})):o.focus())},[e,c,t,r]),j(()=>{if(!e||!c||!t)return;let{baseElement:r,activeId:n}=e.getState();if(null!==n||!r)return;let i=l.current;l.current=null,i&&O(i,{relatedTarget:r}),eI(r)||r.focus()},[e,c,t]);let A=e.useState("activeId"),h=e.useState("virtualFocus");j(()=>{var r;if(!e||!t||!h)return;let n=l.current;if(l.current=null,!n)return;let i=(null==(r=B(e,A))?void 0:r.element)||o(n);i!==n&&O(n,{relatedTarget:i})},[e,A,h,t]);let m=eK(e,i.onKeyDownCapture,l),p=eK(e,i.onKeyUpCapture,l),v=i.onFocusCapture,y=Q(t=>{var r;let n;if(null==v||v(t),t.defaultPrevented||!e)return;let{virtualFocus:i}=e.getState();if(!i)return;let o=t.relatedTarget,a=(n=(r=t.currentTarget)[C],delete r[C],n);_(t)&&a&&(t.stopPropagation(),l.current=o)}),b=i.onFocus,E=Q(r=>{if(null==b||b(r),r.defaultPrevented||!t||!e)return;let{relatedTarget:n}=r,{virtualFocus:i}=e.getState();i?_(r)&&!g(e,n)&&queueMicrotask(u):_(r)&&e.setActiveId(null)}),F=i.onBlurCapture,S=Q(t=>{var r;if(null==F||F(t),t.defaultPrevented||!e)return;let{virtualFocus:n,activeId:i}=e.getState();if(!n)return;let o=null==(r=B(e,i))?void 0:r.element,a=t.relatedTarget,s=g(e,a),u=l.current;l.current=null,_(t)&&s?(a===o?u&&u!==a&&O(u,t):o?O(o,t):u&&O(u,t),t.stopPropagation()):!g(e,t.target)&&o&&O(o,t)}),R=i.onKeyDown,I=Y(n),G=Q(t=>{var r;if(null==R||R(t),t.nativeEvent.isComposing||t.defaultPrevented||!e||!_(t))return;let{orientation:n,renderedItems:i,activeId:o}=e.getState(),a=B(e,o);if(null==(r=null==a?void 0:a.element)?void 0:r.isConnected)return;let s="horizontal"!==n,l="vertical"!==n,u=i.some(e=>!!e.rowId);if(("ArrowLeft"===t.key||"ArrowRight"===t.key||"Home"===t.key||"End"===t.key)&&d(t.currentTarget))return;let c={ArrowUp:(u||s)&&(()=>{if(u){let e=eN(ek(function(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}(i))).find(e=>!e.disabled);return null==e?void 0:e.id}return null==e?void 0:e.last()}),ArrowRight:(u||l)&&e.first,ArrowDown:(u||s)&&e.first,ArrowLeft:(u||l)&&e.last,Home:e.first,End:e.last,PageUp:e.first,PageDown:e.last}[t.key];if(c){let r=c();if(void 0!==r){if(!I(t))return;t.preventDefault(),e.move(r)}}});return i=Z(i,t=>(0,eo.jsx)(ep,{value:e,children:t}),[e]),i={"aria-activedescendant":e.useState(r=>{var n;if(e&&t&&r.virtualFocus)return null==(n=B(e,r.activeId))?void 0:n.id}),...i,ref:X(s,f,i.ref),onKeyDownCapture:m,onKeyUpCapture:p,onFocusCapture:y,onFocus:E,onBlurCapture:S,onKeyDown:G},i=eU({focusable:e.useState(e=>t&&(e.virtualFocus||null===e.activeId)),...i})});ea(function(e){return el("div",ej(e))});var eQ=ec();eQ.useContext,eQ.useScopedContext;var eX=eQ.useProviderContext,eV=ec([eQ.ContextProvider],[eQ.ScopedContextProvider]);eV.useContext,eV.useScopedContext;var eq=eV.useProviderContext,eW=eV.ContextProvider,eY=eV.ScopedContextProvider,eZ=(0,T.createContext)(void 0),ez=(0,T.createContext)(void 0),e$=ec([eW],[eY]);e$.useContext,e$.useScopedContext;var e0=e$.useProviderContext,e1=e$.ContextProvider,e9=e$.ScopedContextProvider,e8=eu(function({store:e,...t}){let r=e0();return e=e||r,t={...t,ref:X(null==e?void 0:e.setAnchorElement,t.ref)}});ea(function(e){return el("div",e8(e))});var e2=(0,T.createContext)(void 0),e3=ec([e1,ep],[e9,eB]),e6=e3.useContext,e4=e3.useScopedContext,e7=e3.useProviderContext,e5=e3.ContextProvider,te=e3.ScopedContextProvider,tt=(0,T.createContext)(void 0),tr=(0,T.createContext)(!1);function tn(e,t){let r=e.__unstableInternals;return M(r,"Invalid store"),r[t]}function ti(e,...t){let r=e,n=r,i=Symbol(),o=v,a=new Set,s=new Set,l=new Set,u=new Set,c=new Set,d=new WeakMap,f=new WeakMap,A=(e,t,r=u)=>(r.add(t),f.set(t,e),()=>{var e;null==(e=d.get(t))||e(),d.delete(t),f.delete(t),r.delete(t)}),h=(e,o,a=!1)=>{var l,A;if(!y(r,e))return;let h=(A=r[e],"function"==typeof o?o("function"==typeof A?A():A):o);if(h===r[e])return;if(!a)for(let r of t)null==(l=null==r?void 0:r.setState)||l.call(r,e,h);let m=r;r={...r,[e]:h};let p=Symbol();i=p,s.add(e);let B=(t,n,i)=>{var o;let a=f.get(t);(!a||a.some(t=>i?i.has(t):t===e))&&(null==(o=d.get(t))||o(),d.set(t,t(r,n)))};for(let e of u)B(e,m);queueMicrotask(()=>{if(i!==p)return;let e=r;for(let e of c)B(e,n,s);n=e,s.clear()})},m={getState:()=>r,setState:h,__unstableInternals:{setup:e=>(l.add(e),()=>l.delete(e)),init:()=>{let e=a.size,n=Symbol();a.add(n);let i=()=>{a.delete(n),a.size||o()};if(e)return i;let s=Object.keys(r).map(e=>b(...t.map(t=>{var r;let n=null==(r=null==t?void 0:t.getState)?void 0:r.call(t);if(n&&y(n,e))return tl(t,[e],t=>{h(e,t[e],!0)})}))),u=[];for(let e of l)u.push(e());return o=b(...s,...u,...t.map(ta)),i},subscribe:(e,t)=>A(e,t),sync:(e,t)=>(d.set(t,t(r,r)),A(e,t)),batch:(e,t)=>(d.set(t,t(r,n)),A(e,t,c)),pick:e=>ti(function(e,t){let r={};for(let n of t)y(e,n)&&(r[n]=e[n]);return r}(r,e),m),omit:e=>ti(function(e,t){let r={...e};for(let e of t)y(r,e)&&delete r[e];return r}(r,e),m)}};return m}function to(e,...t){if(e)return tn(e,"setup")(...t)}function ta(e,...t){if(e)return tn(e,"init")(...t)}function ts(e,...t){if(e)return tn(e,"subscribe")(...t)}function tl(e,...t){if(e)return tn(e,"sync")(...t)}function tu(e,...t){if(e)return tn(e,"batch")(...t)}function tc(e,...t){if(e)return tn(e,"omit")(...t)}function td(...e){var t;let r={};for(let n of e){let e=null==(t=null==n?void 0:n.getState)?void 0:t.call(n);e&&Object.assign(r,e)}let n=ti(r,...e);return Object.assign({},...e,n)}function tf(e,t){}function tA(e,t,r){if(!r)return!1;let n=e.find(e=>!e.disabled&&e.value);return(null==n?void 0:n.value)===t}function th(e,t){return!!t&&null!=e&&(e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,""),t.length>e.length&&0===t.toLowerCase().indexOf(e.toLowerCase()))}var tm=eu(function({store:e,focusable:t=!0,autoSelect:r=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:o=0,showOnChange:a,showOnMouseDown:s,showOnClick:l=s,showOnKeyDown:u,showOnKeyPress:c=u,blurActiveItemOnClick:d,setValueOnClick:f=!0,moveOnKeyPress:B=!0,autoComplete:C="list",...g}){var y;let b,E=e7();M(e=e||E,!1);let S=(0,T.useRef)(null),[R,I]=W(),G=(0,T.useRef)(!1),x=(0,T.useRef)(!1),D=e.useState(e=>e.virtualFocus&&r),w="inline"===C||"both"===C,[L,_]=(0,T.useState)(w);y=[w],b=(0,T.useRef)(!1),j(()=>{if(b.current)return(()=>{w&&_(!0)})();b.current=!0},y),j(()=>()=>{b.current=!1},[]);let O=e.useState("value"),H=(0,T.useRef)(void 0);(0,T.useEffect)(()=>tl(e,["selectedValue","activeId"],(e,t)=>{H.current=t.selectedValue}),[]);let U=e.useState(e=>{var t;if(w&&L){if(e.activeValue&&Array.isArray(e.selectedValue)&&(e.selectedValue.includes(e.activeValue)||(null==(t=H.current)?void 0:t.includes(e.activeValue))))return;return e.activeValue}}),N=e.useState("renderedItems"),k=e.useState("open"),K=e.useState("contentElement"),Z=(0,T.useMemo)(()=>{if(!w||!L)return O;if(tA(N,U,D)){if(th(O,U)){let e=(null==U?void 0:U.slice(O.length))||"";return O+e}return O}return U||O},[w,L,N,U,D,O]);(0,T.useEffect)(()=>{let e=S.current;if(!e)return;let t=()=>_(!0);return e.addEventListener("combobox-item-move",t),()=>{e.removeEventListener("combobox-item-move",t)}},[]),(0,T.useEffect)(()=>{if(!w||!L||!U||!tA(N,U,D)||!th(O,U))return;let e=v;return queueMicrotask(()=>{let t=S.current;if(!t)return;let{start:r,end:n}=A(t),i=O.length,o=U.length;p(t,i,o),e=()=>{if(!eI(t))return;let{start:e,end:a}=A(t);e!==i||a===o&&p(t,r,n)}}),()=>e()},[R,w,L,U,N,D,O]);let z=(0,T.useRef)(null),$=Q(n),ee=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(!k||!K)return;let t=m(K);if(!t)return;z.current=t;let r=()=>{G.current=!1},n=()=>{if(!e||!G.current)return;let{activeId:t}=e.getState();null===t||t!==ee.current&&(G.current=!1)},i={passive:!0,capture:!0};return t.addEventListener("wheel",r,i),t.addEventListener("touchmove",r,i),t.addEventListener("scroll",n,i),()=>{t.removeEventListener("wheel",r,!0),t.removeEventListener("touchmove",r,!0),t.removeEventListener("scroll",n,!0)}},[k,K,e]),j(()=>{!O||x.current||(G.current=!0)},[O]),j(()=>{"always"!==D&&k||(G.current=k)},[D,k]);let et=e.useState("resetValueOnSelect");q(()=>{var t,r;let n=G.current;if(!e||!k||!n&&!et)return;let{baseElement:i,contentElement:o,activeId:a}=e.getState();if(!i||eI(i)){if(null==o?void 0:o.hasAttribute("data-placing")){let e=new MutationObserver(I);return e.observe(o,{attributeFilter:["data-placing"]}),()=>e.disconnect()}if(D&&n){let r,n=$(N),i=void 0!==n?n:null!=(t=null==(r=N.find(e=>{var t;return!e.disabled&&(null==(t=e.element)?void 0:t.getAttribute("role"))!=="tab"}))?void 0:r.id)?t:e.first();ee.current=i,e.move(null!=i?i:null)}else{let t=null==(r=e.item(a||e.first()))?void 0:r.element;t&&"scrollIntoView"in t&&t.scrollIntoView({block:"nearest",inline:"nearest"})}}},[e,k,R,O,D,et,$,N]),(0,T.useEffect)(()=>{if(!w)return;let t=S.current;if(!t)return;let r=[t,K].filter(e=>!!e),n=t=>{r.every(e=>P(t,e))&&(null==e||e.setValue(Z))};for(let e of r)e.addEventListener("focusout",n);return()=>{for(let e of r)e.removeEventListener("focusout",n)}},[w,K,e,Z]);let er=e=>e.currentTarget.value.length>=o,en=g.onChange,ei=Y(null!=a?a:er),eo=Y(null!=i?i:!e.tag),ea=Q(t=>{if(null==en||en(t),t.defaultPrevented||!e)return;let r=t.currentTarget,{value:n,selectionStart:i,selectionEnd:o}=r,a=t.nativeEvent;if(G.current=!0,"input"===a.type&&(a.isComposing&&(G.current=!1,x.current=!0),w)){let e="insertText"===a.inputType||"insertCompositionText"===a.inputType,t=i===n.length;_(e&&t)}if(eo(t)){let t=n===e.getState().value;e.setValue(n),queueMicrotask(()=>{p(r,i,o)}),w&&D&&t&&I()}ei(t)&&e.show(),D&&G.current||e.setActiveId(null)}),es=g.onCompositionEnd,el=Q(e=>{G.current=!0,x.current=!1,null==es||es(e),e.defaultPrevented||D&&I()}),eu=g.onMouseDown,ec=Y(null!=d?d:()=>!!(null==e?void 0:e.getState().includesBaseElement)),ed=Y(f),ef=Y(null!=l?l:er),eA=Q(t=>{null==eu||eu(t),t.defaultPrevented||t.button||t.ctrlKey||e&&(ec(t)&&e.setActiveId(null),ed(t)&&e.setValue(Z),ef(t)&&J(t.currentTarget,"mouseup",e.show))}),eh=g.onKeyDown,em=Y(null!=c?c:er),ep=Q(t=>{if(null==eh||eh(t),t.repeat||(G.current=!1),t.defaultPrevented||t.ctrlKey||t.altKey||t.shiftKey||t.metaKey||!e)return;let{open:r}=e.getState();!r&&("ArrowUp"===t.key||"ArrowDown"===t.key)&&em(t)&&(t.preventDefault(),e.show())}),eB=g.onBlur,eC=Q(e=>{if(G.current=!1,null==eB||eB(e),e.defaultPrevented)return}),eg=V(g.id),ev=e.useState(e=>null===e.activeId);return g={id:eg,role:"combobox","aria-autocomplete":"inline"===C||"list"===C||"both"===C||"none"===C?C:void 0,"aria-haspopup":h(K,"listbox"),"aria-expanded":k,"aria-controls":null==K?void 0:K.id,"data-active-item":ev||void 0,value:Z,...g,ref:X(S,g.ref),onChange:ea,onCompositionEnd:el,onMouseDown:eA,onKeyDown:ep,onBlur:eC},g=ej({store:e,focusable:t,...g,moveOnKeyPress:e=>!F(B,e)&&(w&&_(!0),!0)}),{autoComplete:"off",...g=e8({store:e,...g})}}),tp=ea(function(e){return el("input",tm(e))});function tB(e){let t=e.relatedTarget;return(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE?t:null}e.s(["Combobox",()=>tp],11889);var tC=Symbol("composite-hover"),tg=eu(function({store:e,focusOnHover:t=!0,blurOnHoverEnd:r=!!t,...n}){let i=eh();M(e=e||i,!1);let o=((0,T.useEffect)(()=>{$||(U("mousemove",en,!0),U("mousedown",ei,!0),U("mouseup",ei,!0),U("keydown",ei,!0),U("scroll",ei,!0),$=!0)},[]),Q(()=>ee)),s=n.onMouseMove,l=Y(t),u=Q(t=>{if((null==s||s(t),!t.defaultPrevented&&o())&&l(t)){if(!eT(t.currentTarget)){let t=null==e?void 0:e.getState().baseElement;t&&!eI(t)&&t.focus()}null==e||e.setActiveId(t.currentTarget.id)}}),c=n.onMouseLeave,d=Y(r),f=Q(t=>{var r;let n;null==c||c(t),!t.defaultPrevented&&o()&&((n=tB(t))&&a(t.currentTarget,n)||function(e){let t=tB(e);if(!t)return!1;do{if(y(t,tC)&&t[tC])return!0;t=t.parentElement}while(t)return!1}(t)||!l(t)||d(t)&&(null==e||e.setActiveId(null),null==(r=null==e?void 0:e.getState().baseElement)||r.focus()))}),A=(0,T.useCallback)(e=>{e&&(e[tC]=!0)},[]);return R(n={...n,ref:X(A,n.ref),onMouseMove:u,onMouseLeave:f})});es(ea(function(e){return el("div",tg(e))}));var tv=eu(function({store:e,shouldRegisterItem:t=!0,getItem:r=E,element:n,...i}){let o=ef();e=e||o;let a=V(i.id),s=(0,T.useRef)(n);return(0,T.useEffect)(()=>{let n=s.current;if(!a||!n||!t)return;let i=r({id:a,element:n});return null==e?void 0:e.renderItem(i)},[a,t,r,e]),R(i={...i,ref:X(s,i.ref)})});function ty(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return"Enter"===e.key?l(t)||"SUMMARY"===t.tagName||"A"===t.tagName:" "===e.key&&(l(t)||"SUMMARY"===t.tagName||"INPUT"===t.tagName||"SELECT"===t.tagName)}ea(function(e){return el("div",tv(e))});var tb=Symbol("command"),tE=eu(function({clickOnEnter:e=!0,clickOnSpace:t=!0,...n}){let i,o,a=(0,T.useRef)(null),[s,u]=(0,T.useState)(!1);(0,T.useEffect)(()=>{a.current&&u(l(a.current))},[]);let[c,f]=(0,T.useState)(!1),A=(0,T.useRef)(!1),h=S(n),[m,p]=(i=n.onLoadedMetadataCapture,o=(0,T.useMemo)(()=>Object.assign(()=>{},{...i,[tb]:!0}),[i,tb,!0]),[null==i?void 0:i[tb],{onLoadedMetadataCapture:o}]),B=n.onKeyDown,C=Q(n=>{null==B||B(n);let i=n.currentTarget;if(n.defaultPrevented||m||h||!_(n)||d(i)||i.isContentEditable)return;let o=e&&"Enter"===n.key,a=t&&" "===n.key,s="Enter"===n.key&&!e,l=" "===n.key&&!t;if(s||l)return void n.preventDefault();if(o||a){let e=ty(n);if(o){if(!e){n.preventDefault();let{view:e,...t}=n,o=()=>H(i,t);r&&/firefox\//i.test(navigator.userAgent)?J(i,"keyup",o):queueMicrotask(o)}}else a&&(A.current=!0,e||(n.preventDefault(),f(!0)))}}),g=n.onKeyUp,v=Q(e=>{if(null==g||g(e),e.defaultPrevented||m||h||e.metaKey)return;let r=t&&" "===e.key;if(A.current&&r&&(A.current=!1,!ty(e))){e.preventDefault(),f(!1);let t=e.currentTarget,{view:r,...n}=e;queueMicrotask(()=>H(t,n))}});return eU(n={"data-active":c||void 0,type:s?"button":void 0,...p,...n,ref:X(a,n.ref),onKeyDown:C,onKeyUp:v})});ea(function(e){return el("button",tE(e))});var{useSyncExternalStore:tM}=e.i(2239).default,tF=()=>()=>{};function tS(e,t=E){let r=T.useCallback(t=>e?ts(e,null,t):tF(),[e]),n=()=>{let r="string"==typeof t?t:null,n="function"==typeof t?t:null,i=null==e?void 0:e.getState();return n?n(i):i&&r&&y(i,r)?i[r]:void 0};return tM(r,n,n)}function tR(e,t){let r=T.useRef({}),n=T.useCallback(t=>e?ts(e,null,t):tF(),[e]),i=()=>{let n=null==e?void 0:e.getState(),i=!1,o=r.current;for(let e in t){let r=t[e];if("function"==typeof r){let t=r(n);t!==o[e]&&(o[e]=t,i=!0)}if("string"==typeof r){if(!n||!y(n,r))continue;let t=n[r];t!==o[e]&&(o[e]=t,i=!0)}}return i&&(r.current={...o}),r.current};return tM(n,i,i)}function tI(e,t,r,n){var i;let o,a=y(t,r)?t[r]:void 0,s=(i={value:a,setValue:n?t[n]:void 0},o=(0,T.useRef)(i),j(()=>{o.current=i}),o);j(()=>tl(e,[r],(e,t)=>{let{value:n,setValue:i}=s.current;i&&e[r]!==t[r]&&e[r]!==n&&i(e[r])}),[e,r]),j(()=>{if(void 0!==a)return e.setState(r,a),tu(e,[r],()=>{void 0!==a&&e.setState(r,a)})})}function tT(e,t){let[r,n]=T.useState(()=>e(t));j(()=>ta(r),[r]);let i=T.useCallback(e=>tS(r,e),[r]);return[T.useMemo(()=>({...r,useState:i}),[r,i]),Q(()=>{n(r=>e({...t,...r.getState()}))})]}function tG(e,t,r,n=!1){var i;let o,a;if(!t||!r)return;let{renderedItems:s}=t.getState(),l=m(e);if(!l)return;let u=function(e,t=!1){let r=e.clientHeight,{top:n}=e.getBoundingClientRect(),i=1.5*Math.max(.875*r,r-40),o=t?r-i+n:i+n;return"HTML"===e.tagName?o+e.scrollTop:o}(l,n);for(let e=0;e=0){void 0!==a&&at||(e&&(null==B?void 0:B.baseElement)&&B.baseElement===e.baseElement?B.id:void 0),baseElement:e=>(null==e?void 0:e.baseElement)||void 0,isActiveItem:e=>!!e&&e.activeId===m,ariaSetSize:e=>null!=s?s:e&&(null==B?void 0:B.ariaSetSize)&&B.baseElement===e.baseElement?B.ariaSetSize:void 0,ariaPosInSet(e){if(null!=u)return u;if(!e||!(null==B?void 0:B.ariaPosInSet)||B.baseElement!==e.baseElement)return;let t=e.renderedItems.filter(e=>e.rowId===y);return B.ariaPosInSet+t.findIndex(e=>e.id===m)},isTabbable(t){if(!(null==t?void 0:t.renderedItems.length))return!0;if(t.virtualFocus)return!1;if(o)return!0;if(null===t.activeId)return!1;let r=null==e?void 0:e.item(t.activeId);return null!=r&&!!r.disabled||null==r||!r.element||t.activeId===m}}),G=(0,T.useCallback)(e=>{var t;let r={...e,id:m||e.id,rowId:y,disabled:!!v,children:null==(t=e.element)?void 0:t.textContent};return a?a(r):r},[m,y,v,a]),x=c.onFocus,D=(0,T.useRef)(!1),O=Q(t=>{var r,i;if(null==x||x(t),t.defaultPrevented||L(t)||!m||!e||(r=e,!_(t)&&g(r,t.target)))return;let{virtualFocus:o,baseElement:a}=e.getState();e.setActiveId(m),f(t.currentTarget)&&function(e,t=!1){if(d(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=n(e).getSelection();null==r||r.selectAllChildren(e),t&&(null==r||r.collapseToEnd())}}(t.currentTarget),!o||!_(t)||!f(i=t.currentTarget)&&("INPUT"!==i.tagName||l(i))&&(null==a?void 0:a.isConnected)&&((w()&&t.currentTarget.hasAttribute("data-autofocus")&&t.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),D.current=!0,t.relatedTarget===a||g(e,t.relatedTarget))?(a[C]=!0,a.focus({preventScroll:!0})):a.focus())}),H=c.onBlurCapture,P=Q(t=>{if(null==H||H(t),t.defaultPrevented)return;let r=null==e?void 0:e.getState();(null==r?void 0:r.virtualFocus)&&D.current&&(D.current=!1,t.preventDefault(),t.stopPropagation())}),J=c.onKeyDown,U=Y(r),N=Y(i),k=Q(t=>{if(null==J||J(t),t.defaultPrevented||!_(t)||!e)return;let{currentTarget:r}=t,i=e.getState(),o=e.item(m),a=!!(null==o?void 0:o.rowId),s="horizontal"!==i.orientation,l="vertical"!==i.orientation,u=()=>!(!a&&!l&&i.baseElement&&d(i.baseElement)),c={ArrowUp:(a||s)&&e.up,ArrowRight:(a||l)&&e.next,ArrowDown:(a||s)&&e.down,ArrowLeft:(a||l)&&e.previous,Home:()=>{if(u())return!a||t.ctrlKey?null==e?void 0:e.first():null==e?void 0:e.previous(-1)},End:()=>{if(u())return!a||t.ctrlKey?null==e?void 0:e.last():null==e?void 0:e.next(-1)},PageUp:()=>tG(r,e,null==e?void 0:e.up,!0),PageDown:()=>tG(r,e,null==e?void 0:e.down)}[t.key];if(c){if(f(r)){let e=A(r),i=l&&"ArrowLeft"===t.key,o=l&&"ArrowRight"===t.key,a=s&&"ArrowUp"===t.key,u=s&&"ArrowDown"===t.key;if(o||u){let{length:t}=function(e){if(d(e))return e.value;if(e.isContentEditable){let t=n(e).createRange();return t.selectNodeContents(e),t.toString()}return""}(r);if(e.end!==t)return}else if((i||a)&&0!==e.start)return}let i=c();if(U(t)||void 0!==i){if(!N(t))return;t.preventDefault(),e.move(i)}}}),K=(0,T.useMemo)(()=>({id:m,baseElement:b}),[m,b]);return c={id:m,"data-active-item":E||void 0,...c=Z(c,e=>(0,eo.jsx)(eC.Provider,{value:K,children:e}),[K]),ref:X(p,c.ref),tabIndex:I?c.tabIndex:-1,onFocus:O,onBlurCapture:P,onKeyDown:k},c=tE(c),R({...c=tv({store:e,...c,getItem:G,shouldRegisterItem:!!m&&c.shouldRegisterItem}),"aria-setsize":M,"aria-posinset":F})});es(ea(function(e){return el("button",tx(e))}));var tD=eu(function({store:e,value:t,hideOnClick:r,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:o,focusOnHover:a=!1,moveOnKeyPress:s=!0,getItem:l,...u}){var c,f;let A=e4();M(e=e||A,!1);let{resetValueOnSelectState:h,multiSelectable:m,selected:p}=tR(e,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable:e=>Array.isArray(e.selectedValue),selected:e=>(function(e,t){if(null!=t)return null!=e&&(Array.isArray(e)?e.includes(t):e===t)})(e.selectedValue,t)}),B=(0,T.useCallback)(e=>{let r={...e,value:t};return l?l(r):r},[t,l]);n=null!=n?n:!m,r=null!=r?r:null!=t&&!m;let C=u.onClick,g=Y(n),v=Y(i),y=Y(null!=(c=null!=o?o:h)?c:m),b=Y(r),E=Q(r=>{null==C||C(r),r.defaultPrevented||function(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return!!e.altKey&&("a"===r||"button"===r&&"submit"===t.type||"input"===r&&"submit"===t.type)}(r)||!function(e){let t=e.currentTarget;if(!t)return!1;let r=D();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let n=t.tagName.toLowerCase();return"a"===n||"button"===n&&"submit"===t.type||"input"===n&&"submit"===t.type}(r)&&(null!=t&&(v(r)&&(y(r)&&(null==e||e.resetValue()),null==e||e.setSelectedValue(e=>Array.isArray(e)?e.includes(t)?e.filter(e=>e!==t):[...e,t]:t)),g(r)&&(null==e||e.setValue(t))),b(r)&&(null==e||e.hide()))}),F=u.onKeyDown,S=Q(t=>{if(null==F||F(t),t.defaultPrevented)return;let r=null==e?void 0:e.getState().baseElement;!r||eI(r)||(1===t.key.length||"Backspace"===t.key||"Delete"===t.key)&&(queueMicrotask(()=>r.focus()),d(r)&&(null==e||e.setValue(r.value)))});m&&null!=p&&(u={"aria-selected":p,...u}),u=Z(u,e=>(0,eo.jsx)(tt.Provider,{value:t,children:(0,eo.jsx)(tr.Provider,{value:null!=p&&p,children:e})}),[t,p]),u={role:null!=(f=({menu:"menuitem",listbox:"option",tree:"treeitem"})[(0,T.useContext)(e2)])?f:"option",children:t,...u,onClick:E,onKeyDown:S};let R=Y(s);return u=tx({store:e,...u,getItem:B,moveOnKeyPress:t=>{if(!R(t))return!1;let r=new Event("combobox-item-move"),n=null==e?void 0:e.getState().baseElement;return null==n||n.dispatchEvent(r),!0}}),u=tg({store:e,focusOnHover:a,...u})}),tw=es(ea(function(e){return el("div",tD(e))}));e.s(["ComboboxItem",()=>tw],56373);var tL=e.i(74080);function t_(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function tO(...e){return e.join(", ").split(", ").reduce((e,t)=>{let r=t.endsWith("ms")?1:1e3,n=Number.parseFloat(t||"0s")*r;return n>e?n:e},0)}function tH(e,t,r){return!r&&!1!==t&&(!e||!!t)}var tP=eu(function({store:e,alwaysVisible:t,...r}){let n=eX();M(e=e||n,!1);let i=(0,T.useRef)(null),o=V(r.id),[a,s]=(0,T.useState)(null),l=e.useState("open"),u=e.useState("mounted"),c=e.useState("animated"),d=e.useState("contentElement"),f=tS(e.disclosure,"contentElement");j(()=>{i.current&&(null==e||e.setContentElement(i.current))},[e]),j(()=>{let t;return null==e||e.setState("animated",e=>(t=e,!0)),()=>{void 0!==t&&(null==e||e.setState("animated",t))}},[e]),j(()=>{if(c){var e;let t;return(null==d?void 0:d.isConnected)?(e=()=>{s(l?"enter":u?"leave":null)},t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)}),()=>cancelAnimationFrame(t)):void s(null)}},[c,d,l,u]),j(()=>{if(!e||!c||!a||!d)return;let t=()=>null==e?void 0:e.setState("animating",!1),r=()=>(0,tL.flushSync)(t);if("leave"===a&&l||"enter"===a&&!l)return;if("number"==typeof c)return t_(c,r);let{transitionDuration:n,animationDuration:i,transitionDelay:o,animationDelay:s}=getComputedStyle(d),{transitionDuration:u="0",animationDuration:A="0",transitionDelay:h="0",animationDelay:m="0"}=f?getComputedStyle(f):{},p=tO(o,s,h,m)+tO(n,i,u,A);if(!p){"enter"===a&&e.setState("animated",!1),t();return}return t_(Math.max(p-1e3/60,0),r)},[e,c,d,f,l,a]);let A=tH(u,(r=Z(r,t=>(0,eo.jsx)(eY,{value:e,children:t}),[e])).hidden,t),h=r.style,m=(0,T.useMemo)(()=>A?{...h,display:"none"}:h,[A,h]);return R(r={id:o,"data-open":l||void 0,"data-enter":"enter"===a||void 0,"data-leave":"leave"===a||void 0,hidden:A,...r,ref:X(o?e.setContentElement:null,i,r.ref),style:m})}),tJ=ea(function(e){return el("div",tP(e))});ea(function({unmountOnHide:e,...t}){let r=eX();return!1===tS(t.store||r,t=>!e||(null==t?void 0:t.mounted))?null:(0,eo.jsx)(tJ,{...t})});var tU=eu(function({store:e,alwaysVisible:t,...r}){let n=e4(!0),i=e6(),o=!!(e=e||i)&&e===n;M(e,!1);let a=(0,T.useRef)(null),s=V(r.id),l=e.useState("mounted"),u=tH(l,r.hidden,t),c=u?{...r.style,display:"none"}:r.style,d=e.useState(e=>Array.isArray(e.selectedValue)),f=function(e,t,r){let n=function(e){let[t]=(0,T.useState)(e);return t}(r),[i,o]=(0,T.useState)(n);return(0,T.useEffect)(()=>{let r=e&&"current"in e?e.current:e;if(!r)return;let i=()=>{let e=r.getAttribute(t);o(null==e?n:e)},a=new MutationObserver(i);return a.observe(r,{attributeFilter:[t]}),i(),()=>a.disconnect()},[e,t,n]),i}(a,"role",r.role),A="listbox"===f||"tree"===f||"grid"===f,[h,m]=(0,T.useState)(!1),p=e.useState("contentElement");j(()=>{if(!l)return;let e=a.current;if(!e||p!==e)return;let t=()=>{m(!!e.querySelector("[role='listbox']"))},r=new MutationObserver(t);return r.observe(e,{subtree:!0,childList:!0,attributeFilter:["role"]}),t(),()=>r.disconnect()},[l,p]),h||(r={role:"listbox","aria-multiselectable":A&&d||void 0,...r}),r=Z(r,t=>(0,eo.jsx)(te,{value:e,children:(0,eo.jsx)(e2.Provider,{value:f,children:t})}),[e,f]);let B=!s||n&&o?null:e.setContentElement;return R(r={id:s,hidden:u,...r,ref:X(B,a,r.ref),style:c})}),tN=ea(function(e){return el("div",tU(e))});e.s(["ComboboxList",()=>tN,"useComboboxList",()=>tU],86447);var tk=(0,T.createContext)(null),tK=eu(function(e){return{...e,style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px",...e.style}}});ea(function(e){return el("span",tK(e))});var tj=eu(function(e){return tK(e={"data-focus-trap":"",tabIndex:0,"aria-hidden":!0,...e,style:{position:"fixed",top:0,left:0,...e.style}})}),tQ=ea(function(e){return el("span",tj(e))});function tX(e){queueMicrotask(()=>{null==e||e.focus()})}var tV=eu(function({preserveTabOrder:e,preserveTabOrderAnchor:t,portalElement:r,portalRef:i,portal:o=!0,...a}){let s=(0,T.useRef)(null),l=X(s,a.ref),u=(0,T.useContext)(tk),[c,d]=(0,T.useState)(null),[f,A]=(0,T.useState)(null),h=(0,T.useRef)(null),m=(0,T.useRef)(null),p=(0,T.useRef)(null),B=(0,T.useRef)(null);return j(()=>{let e=s.current;if(!e||!o)return void d(null);let t=r?"function"==typeof r?r(e):r:n(e).createElement("div");if(!t)return void d(null);let a=t.isConnected;if(a||(u||n(e).body).appendChild(t),t.id||(t.id=e.id?`portal/${e.id}`:function(e="id"){return`${e?`${e}-`:""}${Math.random().toString(36).slice(2,8)}`}()),d(t),G(i,t),!a)return()=>{t.remove(),G(i,null)}},[o,r,u,i]),j(()=>{if(!o||!e||!t)return;let r=n(t).createElement("span");return r.style.position="fixed",t.insertAdjacentElement("afterend",r),A(r),()=>{r.remove(),A(null)}},[o,e,t]),(0,T.useEffect)(()=>{if(!c||!e)return;let t=0,r=e=>{if(!P(e))return;let r="focusin"===e.type;if(cancelAnimationFrame(t),r){let e=c.querySelectorAll("[data-tabindex]"),t=e=>{let t=e.getAttribute("data-tabindex");e.removeAttribute("data-tabindex"),t?e.setAttribute("tabindex",t):e.removeAttribute("tabindex")};for(let r of(c.hasAttribute("data-tabindex")&&t(c),e))t(r);return}t=requestAnimationFrame(()=>{for(let e of eF(c,!0))!function(e){var t;let r=null!=(t=e.getAttribute("tabindex"))?t:"";e.setAttribute("data-tabindex",r),e.setAttribute("tabindex","-1")}(e)})};return c.addEventListener("focusin",r,!0),c.addEventListener("focusout",r,!0),()=>{cancelAnimationFrame(t),c.removeEventListener("focusin",r,!0),c.removeEventListener("focusout",r,!0)}},[c,e]),a={...a=Z(a,t=>{if(t=(0,eo.jsx)(tk.Provider,{value:c||u,children:t}),!o)return t;if(!c)return(0,eo.jsx)("span",{ref:l,id:a.id,style:{position:"fixed"},hidden:!0});t=(0,eo.jsxs)(eo.Fragment,{children:[e&&c&&(0,eo.jsx)(tQ,{ref:m,"data-focus-trap":a.id,className:"__focus-trap-inner-before",onFocus:e=>{P(e,c)?tX(eS()):tX(h.current)}}),t,e&&c&&(0,eo.jsx)(tQ,{ref:p,"data-focus-trap":a.id,className:"__focus-trap-inner-after",onFocus:e=>{P(e,c)?tX(eR()):tX(B.current)}})]}),c&&(t=(0,tL.createPortal)(t,c));let r=(0,eo.jsxs)(eo.Fragment,{children:[e&&c&&(0,eo.jsx)(tQ,{ref:h,"data-focus-trap":a.id,className:"__focus-trap-outer-before",onFocus:e=>{e.relatedTarget!==B.current&&P(e,c)?tX(m.current):tX(eR())}}),e&&(0,eo.jsx)("span",{"aria-owns":null==c?void 0:c.id,style:{position:"fixed"}}),e&&c&&(0,eo.jsx)(tQ,{ref:B,"data-focus-trap":a.id,className:"__focus-trap-outer-after",onFocus:e=>{if(P(e,c))tX(p.current);else{let e=eS();if(e===m.current)return void requestAnimationFrame(()=>{var e;return null==(e=eS())?void 0:e.focus()});tX(e)}}})]});return f&&e&&(r=(0,tL.createPortal)(r,f)),(0,eo.jsxs)(eo.Fragment,{children:[r,t]})},[c,u,o,a.id,e,f]),ref:l}});ea(function(e){return el("div",tV(e))});var tq=(0,T.createContext)(0);function tW({level:e,children:t}){let r=(0,T.useContext)(tq),n=Math.max(Math.min(e||r+1,6),1);return(0,eo.jsx)(tq.Provider,{value:n,children:t})}var tY=eu(function({autoFocusOnShow:e=!0,...t}){return Z(t,t=>(0,eo.jsx)(ev.Provider,{value:e,children:t}),[e])});ea(function(e){return el("div",tY(e))});var tZ=new WeakMap;function tz(e,t,r){tZ.has(e)||tZ.set(e,new Map);let n=tZ.get(e),i=n.get(t);if(!i)return n.set(t,r()),()=>{var e;null==(e=n.get(t))||e(),n.delete(t)};let o=r(),a=()=>{o(),i(),n.delete(t)};return n.set(t,a),()=>{n.get(t)===a&&(o(),n.set(t,i))}}function t$(e,t,r){return tz(e,t,()=>{let n=e.getAttribute(t);return e.setAttribute(t,r),()=>{null==n?e.removeAttribute(t):e.setAttribute(t,n)}})}function t0(e,t,r){return tz(e,t,()=>{let n=t in e,i=e[t];return e[t]=r,()=>{n?e[t]=i:delete e[t]}})}function t1(e,t){return e?tz(e,"style",()=>{let r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}):()=>{}}var t9=["SCRIPT","STYLE"];function t8(e){return`__ariakit-dialog-snapshot-${e}`}function t2(e,t,r,i){for(let o of t){if(!(null==o?void 0:o.isConnected))continue;let s=t.some(e=>!!e&&e!==o&&e.contains(o)),l=n(o),u=o;for(;o.parentElement&&o!==l.body;){if(null==i||i(o.parentElement,u),!s)for(let i of o.parentElement.children)(function(e,t,r){return!t9.includes(t.tagName)&&!!function(e,t){let r=n(t),i=t8(e);if(!r.body[i])return!0;for(;;){if(t===r.body)return!1;if(t[i])return!0;if(!t.parentElement)return!1;t=t.parentElement}}(e,t)&&!r.some(e=>e&&a(t,e))})(e,i,t)&&r(i,u);o=o.parentElement}}}function t3(e,...t){if(!e)return!1;let r=e.getAttribute("data-backdrop");return null!=r&&(""===r||"true"===r||!t.length||t.some(e=>r===e))}function t6(e="",t=!1){return`__ariakit-dialog-${t?"ancestor":"outside"}${e?`-${e}`:""}`}function t4(e,t=""){return b(t0(e,t6("",!0),!0),t0(e,t6(t,!0),!0))}function t7(e,t){if(e[t6(t,!0)])return!0;let r=t6(t);for(;;){if(e[r])return!0;if(!e.parentElement)return!1;e=e.parentElement}}function t5(e,t){let r=[],n=t.map(e=>null==e?void 0:e.id);return t2(e,t,t=>{t3(t,...n)||r.unshift(function(e,t=""){return b(t0(e,t6(),!0),t0(e,t6(t),!0))}(t,e))},(t,n)=>{n.hasAttribute("data-dialog")&&n.id!==e||r.unshift(t4(t,e))}),()=>{for(let e of r)e()}}function re({store:e,type:t,listener:r,capture:i,domReady:o}){let s=Q(r),l=tS(e,"open"),u=(0,T.useRef)(!1);j(()=>{if(!l||!o)return;let{contentElement:t}=e.getState();if(!t)return;let r=()=>{u.current=!0};return t.addEventListener("focusin",r,!0),()=>t.removeEventListener("focusin",r,!0)},[e,l,o]),(0,T.useEffect)(()=>{if(l)return U(t,t=>{let{contentElement:r,disclosureElement:i}=e.getState(),o=t.target;!r||!o||!(!("HTML"===o.tagName||a(n(o).body,o))||a(r,o)||function(e,t){if(!e)return!1;if(a(e,t))return!0;let r=t.getAttribute("aria-activedescendant");if(r){let t=n(e).getElementById(r);if(t)return a(e,t)}return!1}(i,o)||o.hasAttribute("data-focus-trap")||function(e,t){if(!("clientY"in e))return!1;let r=t.getBoundingClientRect();return 0!==r.width&&0!==r.height&&r.top<=e.clientY&&e.clientY<=r.top+r.height&&r.left<=e.clientX&&e.clientX<=r.left+r.width}(t,r))&&(!u.current||t7(o,r.id))&&(o&&o[ew]||s(t))},i)},[l,i])}function rt(e,t){return"function"==typeof e?e(t):!!e}var rr=(0,T.createContext)({});function rn(){return"inert"in HTMLElement.prototype}function ri(e,t){if(!("style"in e))return v;if(rn())return t0(e,"inert",!0);let r=eF(e,!0).map(e=>{if(null==t?void 0:t.some(t=>t&&a(t,e)))return v;let r=tz(e,"focus",()=>(e.focus=v,()=>{delete e.focus}));return b(t$(e,"tabindex","-1"),r)});return b(...r,t$(e,"aria-hidden","true"),t1(e,{pointerEvents:"none",userSelect:"none",cursor:"default"}))}function ro(e={}){let t=td(e.store,tc(e.disclosure,["contentElement","disclosureElement"]));tf(e,t);let r=null==t?void 0:t.getState(),n=I(e.open,null==r?void 0:r.open,e.defaultOpen,!1),i=I(e.animated,null==r?void 0:r.animated,!1),o=ti({open:n,animated:i,animating:!!i&&n,mounted:n,contentElement:I(null==r?void 0:r.contentElement,null),disclosureElement:I(null==r?void 0:r.disclosureElement,null)},t);return to(o,()=>tl(o,["animated","animating"],e=>{e.animated||o.setState("animating",!1)})),to(o,()=>ts(o,["open"],()=>{o.getState().animated&&o.setState("animating",!0)})),to(o,()=>tl(o,["open","animating"],e=>{o.setState("mounted",e.open||e.animating)})),{...o,disclosure:e.disclosure,setOpen:e=>o.setState("open",e),show:()=>o.setState("open",!0),hide:()=>o.setState("open",!1),toggle:()=>o.setState("open",e=>!e),stopAnimation:()=>o.setState("animating",!1),setContentElement:e=>o.setState("contentElement",e),setDisclosureElement:e=>o.setState("disclosureElement",e)}}function ra(e,t,r){return q(t,[r.store,r.disclosure]),tI(e,r,"open","setOpen"),tI(e,r,"mounted","setMounted"),tI(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}eu(function(e){return e});var rs=ea(function(e){return el("div",e)});function rl({store:e,backdrop:t,alwaysVisible:r,hidden:n}){let i=(0,T.useRef)(null),o=function(e={}){let[t,r]=tT(ro,e);return ra(t,r,e)}({disclosure:e}),a=tS(e,"contentElement");(0,T.useEffect)(()=>{let e=i.current;!e||a&&(e.style.zIndex=getComputedStyle(a).zIndex)},[a]),j(()=>{let e=null==a?void 0:a.id;if(!e)return;let t=i.current;if(t)return t4(t,e)},[a]);let s=tP({ref:i,store:o,role:"presentation","data-backdrop":(null==a?void 0:a.id)||"",alwaysVisible:r,hidden:null!=n?n:void 0,style:{position:"fixed",top:0,right:0,bottom:0,left:0}});if(!t)return null;if((0,T.isValidElement)(t))return(0,eo.jsx)(rs,{...s,render:t});let l="boolean"!=typeof t?t:"div";return(0,eo.jsx)(rs,{...s,render:(0,eo.jsx)(l,{})})}function ru(e={}){return ro(e)}Object.assign(rs,["a","button","details","dialog","div","form","h1","h2","h3","h4","h5","h6","header","img","input","label","li","nav","ol","p","section","select","span","summary","textarea","ul","svg"].reduce((e,t)=>(e[t]=ea(function(e){return el(t,e)}),e),{}));var rc=w();function rd(e,t=!1){if(!e)return null;let r="current"in e?e.current:e;return r?t?eb(r)?r:null:r:null}var rf=eu(function({store:e,open:t,onClose:s,focusable:u=!0,modal:d=!0,portal:f=!!d,backdrop:A=!!d,hideOnEscape:h=!0,hideOnInteractOutside:m=!0,getPersistentElements:p,preventBodyScroll:B=!!d,autoFocusOnShow:C=!0,autoFocusOnHide:g=!0,initialFocus:v,finalFocus:y,unmountOnHide:E,unstable_treeSnapshotKey:M,...F}){var S;let R,I,G,w=eq(),L=(0,T.useRef)(null),_=function(e={}){let[t,r]=tT(ru,e);return ra(t,r,e)}({store:e||w,open:t,setOpen(e){if(e)return;let t=L.current;if(!t)return;let r=new Event("close",{bubbles:!1,cancelable:!0});s&&t.addEventListener("close",s,{once:!0}),t.dispatchEvent(r),r.defaultPrevented&&_.setOpen(!0)}}),{portalRef:O,domReady:H}=z(f,F.portalRef),P=F.preserveTabOrder,N=tS(_,e=>P&&!d&&e.mounted),k=V(F.id),K=tS(_,"open"),q=tS(_,"mounted"),$=tS(_,"contentElement"),ee=tH(q,F.hidden,F.alwaysVisible);R=function({attribute:e,contentId:t,contentElement:r,enabled:i}){let[o,a]=W(),s=(0,T.useCallback)(()=>{if(!i||!r)return!1;let{body:o}=n(r),a=o.getAttribute(e);return!a||a===t},[o,i,r,e,t]);return(0,T.useEffect)(()=>{if(!i||!t||!r)return;let{body:o}=n(r);if(s())return o.setAttribute(e,t),()=>o.removeAttribute(e);let l=new MutationObserver(()=>(0,tL.flushSync)(a));return l.observe(o,{attributeFilter:[e]}),()=>l.disconnect()},[o,i,t,r,s,e]),s}({attribute:"data-dialog-prevent-body-scroll",contentElement:$,contentId:k,enabled:B&&!ee}),(0,T.useEffect)(()=>{var e,t;if(!R()||!$)return;let o=n($),a=i($),{documentElement:s,body:l}=o,u=s.style.getPropertyValue("--scrollbar-width"),c=u?Number.parseInt(u,10):a.innerWidth-s.clientWidth,d=Math.round(s.getBoundingClientRect().left)+s.scrollLeft?"paddingLeft":"paddingRight",f=D()&&!(r&&navigator.platform.startsWith("Mac")&&!x());return b((e="--scrollbar-width",t=`${c}px`,s?tz(s,e,()=>{let r=s.style.getPropertyValue(e);return s.style.setProperty(e,t),()=>{r?s.style.setProperty(e,r):s.style.removeProperty(e)}}):()=>{}),f?(()=>{var e,t;let{scrollX:r,scrollY:n,visualViewport:i}=a,o=null!=(e=null==i?void 0:i.offsetLeft)?e:0,s=null!=(t=null==i?void 0:i.offsetTop)?t:0,u=t1(l,{position:"fixed",overflow:"hidden",top:`${-(n-Math.floor(s))}px`,left:`${-(r-Math.floor(o))}px`,right:"0",[d]:`${c}px`});return()=>{u(),a.scrollTo({left:r,top:n,behavior:"instant"})}})():t1(l,{overflow:"hidden",[d]:`${c}px`}))},[R,$]),S=tS(_,"open"),I=(0,T.useRef)(null),(0,T.useEffect)(()=>{if(!S){I.current=null;return}return U("mousedown",e=>{I.current=e.target},!0)},[S]),re({...G={store:_,domReady:H,capture:!0},type:"click",listener:e=>{let{contentElement:t}=_.getState(),r=I.current;r&&c(r)&&t7(r,null==t?void 0:t.id)&&rt(m,e)&&_.hide()}}),re({...G,type:"focusin",listener:e=>{let{contentElement:t}=_.getState();!t||e.target===n(t)||rt(m,e)&&_.hide()}}),re({...G,type:"contextmenu",listener:e=>{rt(m,e)&&_.hide()}});let{wrapElement:et,nestedDialogs:er}=function(e){let t=(0,T.useContext)(rr),[r,n]=(0,T.useState)([]),i=(0,T.useCallback)(e=>{var r;return n(t=>[...t,e]),b(null==(r=t.add)?void 0:r.call(t,e),()=>{n(t=>t.filter(t=>t!==e))})},[t]);j(()=>tl(e,["open","contentElement"],r=>{var n;if(r.open&&r.contentElement)return null==(n=t.add)?void 0:n.call(t,e)}),[e,t]);let o=(0,T.useMemo)(()=>({store:e,add:i}),[e,i]);return{wrapElement:(0,T.useCallback)(e=>(0,eo.jsx)(rr.Provider,{value:o,children:e}),[o]),nestedDialogs:r}}(_);F=Z(F,et,[et]),j(()=>{if(!K)return;let e=L.current,t=o(e,!0);!t||"BODY"===t.tagName||e&&a(e,t)||_.setDisclosureElement(t)},[_,K]),rc&&(0,T.useEffect)(()=>{if(!q)return;let{disclosureElement:e}=_.getState();if(!e||!l(e))return;let t=()=>{let t=!1,r=()=>{t=!0};e.addEventListener("focusin",r,{capture:!0,once:!0}),J(e,"mouseup",()=>{e.removeEventListener("focusin",r,!0),t||eG(e)})};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}},[_,q]),(0,T.useEffect)(()=>{if(!q||!H)return;let e=L.current;if(!e)return;let t=i(e),r=t.visualViewport||t,n=()=>{var r,n;let i=null!=(n=null==(r=t.visualViewport)?void 0:r.height)?n:t.innerHeight;e.style.setProperty("--dialog-viewport-height",`${i}px`)};return n(),r.addEventListener("resize",n),()=>{r.removeEventListener("resize",n)}},[q,H]),(0,T.useEffect)(()=>{if(!d||!q||!H)return;let e=L.current;if(e&&!e.querySelector("[data-dialog-dismiss]")){var t;let r;return t=_.hide,(r=n(e).createElement("button")).type="button",r.tabIndex=-1,r.textContent="Dismiss popup",Object.assign(r.style,{border:"0px",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute",whiteSpace:"nowrap",width:"1px"}),r.addEventListener("click",t),e.prepend(r),()=>{r.removeEventListener("click",t),r.remove()}}},[_,d,q,H]),j(()=>{if(!rn()||K||!q||!H)return;let e=L.current;if(e)return ri(e)},[K,q,H]);let en=K&&H;j(()=>{if(k&&en)return function(e,t){let{body:r}=n(t[0]),i=[];return t2(e,t,t=>{i.push(t0(t,t8(e),!0))}),b(t0(r,t8(e),!0),()=>{for(let e of i)e()})}(k,[L.current])},[k,en,M]);let ei=Q(p);j(()=>{if(!k||!en)return;let{disclosureElement:e}=_.getState(),t=[L.current,...ei()||[],...er.map(e=>e.getState().contentElement)];if(d){let e,r;return b(t5(k,t),(e=[],r=t.map(e=>null==e?void 0:e.id),t2(k,t,n=>{t3(n,...r)||!function(e,...t){if(!e)return!1;let r=e.getAttribute("data-focus-trap");return null!=r&&(!t.length||""!==r&&t.some(e=>r===e))}(n,...r)&&e.unshift(ri(n,t))},r=>{!r.hasAttribute("role")||t.some(e=>e&&a(e,r))||e.unshift(t$(r,"role","none"))}),()=>{for(let t of e)t()}))}return t5(k,[e,...t])},[k,_,en,ei,er,d,M]);let ea=!!C,es=Y(C),[el,eu]=(0,T.useState)(!1);(0,T.useEffect)(()=>{if(!K||!ea||!H||!(null==$?void 0:$.isConnected))return;let e=rd(v,!0)||$.querySelector("[data-autofocus=true],[autofocus]")||function(e,t,r){let[n]=eF(e,t,r);return n||null}($,!0,f&&N)||$,t=eb(e);es(t?e:null)&&(eu(!0),queueMicrotask(()=>{e.focus(),!rc||t&&e.scrollIntoView({block:"nearest",inline:"nearest"})}))},[K,ea,H,$,v,f,N,es]);let ec=!!g,ed=Y(g),[ef,eA]=(0,T.useState)(!1);(0,T.useEffect)(()=>{if(K)return eA(!0),()=>eA(!1)},[K]);let eh=(0,T.useCallback)((e,t=!0)=>{let r,{disclosureElement:i}=_.getState();if(!(!(r=o())||e&&a(e,r))&&eb(r))return;let s=rd(y)||i;if(null==s?void 0:s.id){let e=n(s),t=`[aria-activedescendant="${s.id}"]`,r=e.querySelector(t);r&&(s=r)}if(s&&!eb(s)){let e=s.closest("[data-dialog]");if(null==e?void 0:e.id){let t=n(e),r=`[aria-controls~="${e.id}"]`,i=t.querySelector(r);i&&(s=i)}}let l=s&&eb(s);!l&&t?requestAnimationFrame(()=>eh(e,!1)):!ed(l?s:null)||l&&(null==s||s.focus({preventScroll:!0}))},[_,y,ed]),em=(0,T.useRef)(!1);j(()=>{if(K||!ef||!ec)return;let e=L.current;em.current=!0,eh(e)},[K,ef,H,ec,eh]),(0,T.useEffect)(()=>{if(!ef||!ec)return;let e=L.current;return()=>{if(em.current){em.current=!1;return}eh(e)}},[ef,ec,eh]);let ep=Y(h);(0,T.useEffect)(()=>{if(H&&q)return U("keydown",e=>{if("Escape"!==e.key||e.defaultPrevented)return;let t=L.current;if(!t||t7(t))return;let r=e.target;if(!r)return;let{disclosureElement:n}=_.getState();!("BODY"===r.tagName||a(t,r)||!n||a(n,r))||ep(e)&&_.hide()},!0)},[_,H,q,ep]);let eB=(F=Z(F,e=>(0,eo.jsx)(tW,{level:d?1:void 0,children:e}),[d])).hidden,eC=F.alwaysVisible;F=Z(F,e=>A?(0,eo.jsxs)(eo.Fragment,{children:[(0,eo.jsx)(rl,{store:_,backdrop:A,hidden:eB,alwaysVisible:eC}),e]}):e,[_,A,eB,eC]);let[eg,ev]=(0,T.useState)(),[ey,eE]=(0,T.useState)();return F=tY({...F={id:k,"data-dialog":"",role:"dialog",tabIndex:u?-1:void 0,"aria-labelledby":eg,"aria-describedby":ey,...F=Z(F,e=>(0,eo.jsx)(eY,{value:_,children:(0,eo.jsx)(eZ.Provider,{value:ev,children:(0,eo.jsx)(ez.Provider,{value:eE,children:e})})}),[_]),ref:X(L,F.ref)},autoFocusOnShow:el}),F=tV({portal:f,...F=eU({...F=tP({store:_,...F}),focusable:u}),portalRef:O,preserveTabOrder:N})});function rA(e,t=eq){return ea(function(r){let n=t();return tS(r.store||n,e=>!r.unmountOnHide||(null==e?void 0:e.mounted)||!!r.open)?(0,eo.jsx)(e,{...r}):null})}rA(ea(function(e){return el("div",rf(e))}),eq);let rh=Math.min,rm=Math.max,rp=Math.round,rB=Math.floor,rC=e=>({x:e,y:e}),rg={left:"right",right:"left",bottom:"top",top:"bottom"},rv={start:"end",end:"start"};function ry(e,t){return"function"==typeof e?e(t):e}function rb(e){return e.split("-")[0]}function rE(e){return e.split("-")[1]}function rM(e){return"x"===e?"y":"x"}function rF(e){return"y"===e?"height":"width"}let rS=new Set(["top","bottom"]);function rR(e){return rS.has(rb(e))?"y":"x"}function rI(e){return e.replace(/start|end/g,e=>rv[e])}let rT=["left","right"],rG=["right","left"],rx=["top","bottom"],rD=["bottom","top"];function rw(e){return e.replace(/left|right|bottom|top/g,e=>rg[e])}function rL(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function r_(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function rO(e,t,r){let n,{reference:i,floating:o}=e,a=rR(t),s=rM(rR(t)),l=rF(s),u=rb(t),c="y"===a,d=i.x+i.width/2-o.width/2,f=i.y+i.height/2-o.height/2,A=i[l]/2-o[l]/2;switch(u){case"top":n={x:d,y:i.y-o.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:f};break;case"left":n={x:i.x-o.width,y:f};break;default:n={x:i.x,y:i.y}}switch(rE(t)){case"start":n[s]-=A*(r&&c?-1:1);break;case"end":n[s]+=A*(r&&c?-1:1)}return n}async function rH(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:o,rects:a,elements:s,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:f=!1,padding:A=0}=ry(t,e),h=rL(A),m=s[f?"floating"===d?"reference":"floating":d],p=r_(await o.getClippingRect({element:null==(r=await (null==o.isElement?void 0:o.isElement(m)))||r?m:m.contextElement||await (null==o.getDocumentElement?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:c,strategy:l})),B="floating"===d?{x:n,y:i,width:a.floating.width,height:a.floating.height}:a.reference,C=await (null==o.getOffsetParent?void 0:o.getOffsetParent(s.floating)),g=await (null==o.isElement?void 0:o.isElement(C))&&await (null==o.getScale?void 0:o.getScale(C))||{x:1,y:1},v=r_(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:B,offsetParent:C,strategy:l}):B);return{top:(p.top-v.top+h.top)/g.y,bottom:(v.bottom-p.bottom+h.bottom)/g.y,left:(p.left-v.left+h.left)/g.x,right:(v.right-p.right+h.right)/g.x}}let rP=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:o=[],platform:a}=r,s=o.filter(Boolean),l=await (null==a.isRTL?void 0:a.isRTL(t)),u=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:d}=rO(u,n,l),f=n,A={},h=0;for(let r=0;rtypeof window}function rk(e){return rQ(e)?(e.nodeName||"").toLowerCase():"#document"}function rK(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function rj(e){var t;return null==(t=(rQ(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function rQ(e){return!!rN()&&(e instanceof Node||e instanceof rK(e).Node)}function rX(e){return!!rN()&&(e instanceof Element||e instanceof rK(e).Element)}function rV(e){return!!rN()&&(e instanceof HTMLElement||e instanceof rK(e).HTMLElement)}function rq(e){return!(!rN()||"u"{try{return e.matches(t)}catch(e){return!1}})}let r0=["transform","translate","scale","rotate","perspective"],r1=["transform","translate","scale","rotate","perspective","filter"],r9=["paint","layout","strict","content"];function r8(e){let t=r2(),r=rX(e)?r4(e):e;return r0.some(e=>!!r[e]&&"none"!==r[e])||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||r1.some(e=>(r.willChange||"").includes(e))||r9.some(e=>(r.contain||"").includes(e))}function r2(){return!("u"rX(e)&&"body"!==rk(e)),i=null,o="fixed"===r4(e).position,a=o?r5(e):e;for(;rX(a)&&!r6(a);){let t=r4(a),r=r8(a);r||"fixed"!==t.position||(i=null),(o?!r&&!i:!r&&"static"===t.position&&!!i&&nc.has(i.position)||rY(a)&&!r&&function e(t,r){let n=r5(t);return!(n===r||!rX(n)||r6(n))&&("fixed"===r4(n).position||e(n,r))}(e,a))?n=n.filter(e=>e!==a):i=t,a=r5(a)}return t.set(e,n),n}(t,this._c):[].concat(r),n],a=o[0],s=o.reduce((e,r)=>{let n=nd(t,r,i);return e.top=rm(n.top,e.top),e.right=rh(n.right,e.right),e.bottom=rh(n.bottom,e.bottom),e.left=rm(n.left,e.left),e},nd(t,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:nh,getElementRects:nm,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=nr(e);return{width:t,height:r}},getScale:ni,isElement:rX,isRTL:function(e){return"rtl"===r4(e).direction}};function nB(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function nC(e=0,t=0,r=0,n=0){if("function"==typeof DOMRect)return new DOMRect(e,t,r,n);let i={x:e,y:t,width:r,height:n,top:t,right:e+r,bottom:t+n,left:e};return{...i,toJSON:()=>i}}function ng(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}function nv(e){let t=window.devicePixelRatio||1;return Math.round(e*t)/t}var ny=eu(function({store:e,modal:t=!1,portal:r=!!t,preserveTabOrder:n=!0,autoFocusOnShow:i=!0,wrapperProps:o,fixed:a=!1,flip:s=!0,shift:l=0,slide:u=!0,overlap:c=!1,sameWidth:d=!1,fitViewport:f=!1,gutter:A,arrowPadding:h=4,overflowPadding:m=8,getAnchorRect:p,updatePosition:B,...C}){let g=e0();M(e=e||g,!1);let v=e.useState("arrowElement"),y=e.useState("anchorElement"),b=e.useState("disclosureElement"),E=e.useState("popoverElement"),F=e.useState("contentElement"),S=e.useState("placement"),R=e.useState("mounted"),I=e.useState("rendered"),G=(0,T.useRef)(null),[x,D]=(0,T.useState)(!1),{portalRef:w,domReady:L}=z(r,C.portalRef),_=Q(p),O=Q(B),H=!!B;j(()=>{if(!(null==E?void 0:E.isConnected))return;E.style.setProperty("--popover-overflow-padding",`${m}px`);let t={contextElement:y||void 0,getBoundingClientRect:()=>{let e=null==_?void 0:_(y);return e||!y?function(e){if(!e)return nC();let{x:t,y:r,width:n,height:i}=e;return nC(t,r,n,i)}(e):y.getBoundingClientRect()}},r=async()=>{var r,n,i,o,p;let B,C,g;if(!R)return;v||(G.current=G.current||document.createElement("div"));let y=v||G.current,b=[(r={gutter:A,shift:l},void 0===(n=({placement:e})=>{var t;let n=((null==y?void 0:y.clientHeight)||0)/2,i="number"==typeof r.gutter?r.gutter+n:null!=(t=r.gutter)?t:n;return{crossAxis:e.split("-")[1]?void 0:r.shift,mainAxis:i,alignmentAxis:r.shift}})&&(n=0),{name:"offset",options:n,async fn(e){var t,r;let{x:i,y:o,placement:a,middlewareData:s}=e,l=await rU(e,n);return a===(null==(t=s.offset)?void 0:t.placement)&&null!=(r=s.arrow)&&r.alignmentOffset?{}:{x:i+l.x,y:o+l.y,data:{...l,placement:a}}}}),function(e){var t;if(!1===e.flip)return;let r="string"==typeof e.flip?e.flip.split(" "):void 0;return M(!r||r.every(ng),!1),{name:"flip",options:t={padding:e.overflowPadding,fallbackPlacements:r},async fn(e){var r,n,i,o,a,s,l,u;let c,d,f,{placement:A,middlewareData:h,rects:m,initialPlacement:p,platform:B,elements:C}=e,{mainAxis:g=!0,crossAxis:v=!0,fallbackPlacements:y,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:E="none",flipAlignment:M=!0,...F}=ry(t,e);if(null!=(r=h.arrow)&&r.alignmentOffset)return{};let S=rb(A),R=rR(p),I=rb(p)===p,T=await (null==B.isRTL?void 0:B.isRTL(C.floating)),G=y||(I||!M?[rw(p)]:(c=rw(p),[rI(p),c,rI(c)])),x="none"!==E;!y&&x&&G.push(...(d=rE(p),f=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?rG:rT;return t?rT:rG;case"left":case"right":return t?rx:rD;default:return[]}}(rb(p),"start"===E,T),d&&(f=f.map(e=>e+"-"+d),M&&(f=f.concat(f.map(rI)))),f));let D=[p,...G],w=await B.detectOverflow(e,F),L=[],_=(null==(n=h.flip)?void 0:n.overflows)||[];if(g&&L.push(w[S]),v){let e,t,r,n,i=(s=A,l=m,void 0===(u=T)&&(u=!1),e=rE(s),r=rF(t=rM(rR(s))),n="x"===t?e===(u?"end":"start")?"right":"left":"start"===e?"bottom":"top",l.reference[r]>l.floating[r]&&(n=rw(n)),[n,rw(n)]);L.push(w[i[0]],w[i[1]])}if(_=[..._,{placement:A,overflows:L}],!L.every(e=>e<=0)){let e=((null==(i=h.flip)?void 0:i.index)||0)+1,t=D[e];if(t&&("alignment"!==v||R===rR(t)||_.every(e=>rR(e.placement)!==R||e.overflows[0]>0)))return{data:{index:e,overflows:_},reset:{placement:t}};let r=null==(o=_.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:o.placement;if(!r)switch(b){case"bestFit":{let e=null==(a=_.filter(e=>{if(x){let t=rR(e.placement);return t===R||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:a[0];e&&(r=e);break}case"initialPlacement":r=p}if(A!==r)return{reset:{placement:r}}}return{}}}}({flip:s,overflowPadding:m}),function(e){if(e.slide||e.overlap){var t,r;return{name:"shift",options:r={mainAxis:e.slide,crossAxis:e.overlap,padding:e.overflowPadding,limiter:(void 0===t&&(t={}),{options:t,fn(e){let{x:r,y:n,placement:i,rects:o,middlewareData:a}=e,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=ry(t,e),c={x:r,y:n},d=rR(i),f=rM(d),A=c[f],h=c[d],m=ry(s,e),p="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){let e="y"===f?"height":"width",t=o.reference[f]-o.floating[e]+p.mainAxis,r=o.reference[f]+o.reference[e]-p.mainAxis;Ar&&(A=r)}if(u){var B,C;let e="y"===f?"width":"height",t=rJ.has(rb(i)),r=o.reference[d]-o.floating[e]+(t&&(null==(B=a.offset)?void 0:B[d])||0)+(t?0:p.crossAxis),n=o.reference[d]+o.reference[e]+(t?0:(null==(C=a.offset)?void 0:C[d])||0)-(t?p.crossAxis:0);hn&&(h=n)}return{[f]:A,[d]:h}}})},async fn(e){let{x:t,y:n,placement:i,platform:o}=e,{mainAxis:a=!0,crossAxis:s=!1,limiter:l={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...u}=ry(r,e),c={x:t,y:n},d=await o.detectOverflow(e,u),f=rR(rb(i)),A=rM(f),h=c[A],m=c[f];if(a){let e="y"===A?"top":"left",t="y"===A?"bottom":"right",r=h+d[e],n=h-d[t];h=rm(r,rh(h,n))}if(s){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",r=m+d[e],n=m-d[t];m=rm(r,rh(m,n))}let p=l.fn({...e,[A]:h,[f]:m});return{...p,data:{x:p.x-t,y:p.y-n,enabled:{[A]:a,[f]:s}}}}}}}({slide:u,shift:l,overlap:c,overflowPadding:m}),function(e,t){if(e){let r;return{name:"arrow",options:r={element:e,padding:t.arrowPadding},async fn(e){let{x:t,y:n,placement:i,rects:o,platform:a,elements:s,middlewareData:l}=e,{element:u,padding:c=0}=ry(r,e)||{};if(null==u)return{};let d=rL(c),f={x:t,y:n},A=rM(rR(i)),h=rF(A),m=await a.getDimensions(u),p="y"===A,B=p?"clientHeight":"clientWidth",C=o.reference[h]+o.reference[A]-f[A]-o.floating[h],g=f[A]-o.reference[A],v=await (null==a.getOffsetParent?void 0:a.getOffsetParent(u)),y=v?v[B]:0;y&&await (null==a.isElement?void 0:a.isElement(v))||(y=s.floating[B]||o.floating[h]);let b=y/2-m[h]/2-1,E=rh(d[p?"top":"left"],b),M=rh(d[p?"bottom":"right"],b),F=y-m[h]-M,S=y/2-m[h]/2+(C/2-g/2),R=rm(E,rh(S,F)),I=!l.arrow&&null!=rE(i)&&S!==R&&o.reference[h]/2-(S{},...d}=ry(o,e),f=await l.detectOverflow(e,d),A=rb(a),h=rE(a),m="y"===rR(a),{width:p,height:B}=s.floating;"top"===A||"bottom"===A?(n=A,i=h===(await (null==l.isRTL?void 0:l.isRTL(u.floating))?"start":"end")?"left":"right"):(i=A,n="end"===h?"top":"bottom");let C=B-f.top-f.bottom,g=p-f.left-f.right,v=rh(B-f[n],C),y=rh(p-f[i],g),b=!e.middlewareData.shift,E=v,M=y;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(M=g),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(E=C),b&&!h){let e=rm(f.left,0),t=rm(f.right,0),r=rm(f.top,0),n=rm(f.bottom,0);m?M=p-2*(0!==e||0!==t?e+t:rm(f.left,f.right)):E=B-2*(0!==r||0!==n?r+n:rm(f.top,f.bottom))}await c({...e,availableWidth:M,availableHeight:E});let F=await l.getDimensions(u.floating);return p!==F.width||B!==F.height?{reset:{rects:!0}}:{}}}],F=await (p={placement:S,strategy:a?"fixed":"absolute",middleware:b},B=new Map,g={...(C={platform:np,...p}).platform,_c:B},rP(t,E,{...C,platform:g}));null==e||e.setState("currentPlacement",F.placement),D(!0);let I=nv(F.x),T=nv(F.y);if(Object.assign(E.style,{top:"0",left:"0",transform:`translate3d(${I}px,${T}px,0)`}),y&&F.middlewareData.arrow){let{x:e,y:t}=F.middlewareData.arrow,r=F.placement.split("-")[0],n=y.clientWidth/2,i=y.clientHeight/2,o=null!=e?e+n:-n,a=null!=t?t+i:-i;E.style.setProperty("--popover-transform-origin",{top:`${o}px calc(100% + ${i}px)`,bottom:`${o}px ${-i}px`,left:`calc(100% + ${n}px) ${a}px`,right:`${-n}px ${a}px`}[r]),Object.assign(y.style,{left:null!=e?`${e}px`:"",top:null!=t?`${t}px`:"",[r]:"100%"})}},n=function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:s="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:u=!1}=n,c=nn(e),d=o||a?[...c?ne(c):[],...ne(t)]:[];d.forEach(e=>{o&&e.addEventListener("scroll",r,{passive:!0}),a&&e.addEventListener("resize",r)});let f=c&&l?function(e,t){let r,n=null,i=rj(e);function o(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),o();let u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:A}=u;if(s||t(),!f||!A)return;let h={rootMargin:-rB(d)+"px "+-rB(i.clientWidth-(c+f))+"px "+-rB(i.clientHeight-(d+A))+"px "+-rB(c)+"px",threshold:rm(0,rh(1,l))||1},m=!0;function p(t){let n=t[0].intersectionRatio;if(n!==l){if(!m)return a();n?a(!1,n):r=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==n||nB(u,e.getBoundingClientRect())||a(),m=!1}try{n=new IntersectionObserver(p,{...h,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(p,h)}n.observe(e)}(!0),o}(c,r):null,A=-1,h=null;s&&(h=new ResizeObserver(e=>{let[n]=e;n&&n.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(A),A=requestAnimationFrame(()=>{var e;null==(e=h)||e.observe(t)})),r()}),c&&!u&&h.observe(c),h.observe(t));let m=u?ns(e):null;return u&&function t(){let n=ns(e);m&&!nB(m,n)&&r(),m=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{o&&e.removeEventListener("scroll",r),a&&e.removeEventListener("resize",r)}),null==f||f(),null==(e=h)||e.disconnect(),h=null,u&&cancelAnimationFrame(i)}}(t,E,async()=>{H?(await O({updatePosition:r}),D(!0)):await r()},{elementResize:"function"==typeof ResizeObserver});return()=>{D(!1),n()}},[e,I,E,v,y,E,S,R,L,a,s,l,u,c,d,f,A,h,m,_,H,O]),j(()=>{if(!R||!L||!(null==E?void 0:E.isConnected)||!(null==F?void 0:F.isConnected))return;let e=()=>{E.style.zIndex=getComputedStyle(F).zIndex};e();let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)},[R,L,E,F]);let P=a?"fixed":"absolute";return C=Z(C,t=>(0,eo.jsx)("div",{...o,style:{position:P,top:0,left:0,width:"max-content",...null==o?void 0:o.style},ref:null==e?void 0:e.setPopoverElement,children:t}),[e,P,o]),C={"data-placing":!x||void 0,...C=Z(C,t=>(0,eo.jsx)(e9,{value:e,children:t}),[e]),style:{position:"relative",...C.style}},C=rf({store:e,modal:t,portal:r,preserveTabOrder:n,preserveTabOrderAnchor:b||y,autoFocusOnShow:x&&i,...C,portalRef:w})});rA(ea(function(e){return el("div",ny(e))}),e0);var nb=eu(function({store:e,modal:t,tabIndex:r,alwaysVisible:i,autoFocusOnHide:o=!0,hideOnInteractOutside:a=!0,...s}){let l=e7();M(e=e||l,!1);let u=e.useState("baseElement"),c=(0,T.useRef)(!1),d=tS(e.tag,e=>null==e?void 0:e.renderedItems.length);return s=tU({store:e,alwaysVisible:i,...s}),s=ny({store:e,modal:t,alwaysVisible:i,backdrop:!1,autoFocusOnShow:!1,finalFocus:u,preserveTabOrderAnchor:null,unstable_treeSnapshotKey:d,...s,getPersistentElements(){var r;let i=(null==(r=s.getPersistentElements)?void 0:r.call(s))||[];if(!t||!e)return i;let{contentElement:o,baseElement:a}=e.getState();if(!a)return i;let l=n(a),u=[];if((null==o?void 0:o.id)&&u.push(`[aria-controls~="${o.id}"]`),(null==a?void 0:a.id)&&u.push(`[aria-controls~="${a.id}"]`),!u.length)return[...i,a];let c=u.join(",");return[...i,...l.querySelectorAll(c)]},autoFocusOnHide:e=>!F(o,e)&&(!c.current||(c.current=!1,!1)),hideOnInteractOutside(t){var r,n;let i=null==e?void 0:e.getState(),o=null==(r=null==i?void 0:i.contentElement)?void 0:r.id,s=null==(n=null==i?void 0:i.baseElement)?void 0:n.id;if(function(e,...t){if(!e)return!1;if("id"in e){let r=t.filter(Boolean).map(e=>`[aria-controls~="${e}"]`).join(", ");return!!r&&e.matches(r)}return!1}(t.target,o,s))return!1;let l="function"==typeof a?a(t):a;return l&&(c.current="click"===t.type),l}})}),nE=rA(ea(function(e){return el("div",nb(e))}),e7);e.s(["ComboboxPopover",()=>nE],1559),(0,T.createContext)(null),(0,T.createContext)(null);var nM=ec([ep],[eB]),nF=nM.useContext;nM.useScopedContext,nM.useProviderContext,nM.ContextProvider,nM.ScopedContextProvider;var nS={id:null};function nR(e,t){return e.find(e=>t?!e.disabled&&e.id!==t:!e.disabled)}function nI(e,t){return e.filter(e=>e.rowId===t)}function nT(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}function nG(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}var nx=w()&&x();function nD({tag:e,...t}={}){let r=td(t.store,function(e,...t){if(e)return tn(e,"pick")(...t)}(e,["value","rtl"]));tf(t,r);let i=null==e?void 0:e.getState(),o=null==r?void 0:r.getState(),a=I(t.activeId,null==o?void 0:o.activeId,t.defaultActiveId,null),s=function(e={}){var t;let r=null==(t=e.store)?void 0:t.getState(),i=function(e={}){var t,r;tf(e,e.store);let i=null==(t=e.store)?void 0:t.getState(),o=I(e.items,null==i?void 0:i.items,e.defaultItems,[]),a=new Map(o.map(e=>[e.id,e])),s={items:o,renderedItems:I(null==i?void 0:i.renderedItems,[])},l=null==(r=e.store)?void 0:r.__unstablePrivateStore,u=ti({items:o,renderedItems:s.renderedItems},l),c=ti(s,e.store),d=e=>{var t;let r,n,i=(t=e=>e.element,r=e.map((e,t)=>[t,e]),n=!1,(r.sort(([e,r],[i,o])=>{var a;let s=t(r),l=t(o);return s!==l&&s&&l?(a=s,l.compareDocumentPosition(a)&Node.DOCUMENT_POSITION_PRECEDING)?(e>i&&(n=!0),-1):(et):e);u.setState("renderedItems",i),c.setState("renderedItems",i)};to(c,()=>ta(u)),to(u,()=>tu(u,["items"],e=>{c.setState("items",e.items)})),to(u,()=>tu(u,["renderedItems"],e=>{let t=!0,r=requestAnimationFrame(()=>{let{renderedItems:t}=c.getState();e.renderedItems!==t&&d(e.renderedItems)});if("function"!=typeof IntersectionObserver)return()=>cancelAnimationFrame(r);let i=new IntersectionObserver(()=>{if(t){t=!1;return}cancelAnimationFrame(r),r=requestAnimationFrame(()=>d(e.renderedItems))},{root:function(e){var t;let r=e.find(e=>!!e.element),i=[...e].reverse().find(e=>!!e.element),o=null==(t=null==r?void 0:r.element)?void 0:t.parentElement;for(;o&&(null==i?void 0:i.element);){let e=o;if(i&&e.contains(i.element))return o;o=o.parentElement}return n(o).body}(e.renderedItems)});for(let t of e.renderedItems)t.element&&i.observe(t.element);return()=>{cancelAnimationFrame(r),i.disconnect()}}));let f=(e,t,r=!1)=>{let n;return t(t=>{let r=t.findIndex(({id:t})=>t===e.id),i=t.slice();if(-1!==r){let o={...n=t[r],...e};i[r]=o,a.set(e.id,o)}else i.push(e),a.set(e.id,e);return i}),()=>{t(t=>{if(!n)return r&&a.delete(e.id),t.filter(({id:t})=>t!==e.id);let i=t.findIndex(({id:t})=>t===e.id);if(-1===i)return t;let o=t.slice();return o[i]=n,a.set(e.id,n),o})}},A=e=>f(e,e=>u.setState("items",e),!0);return{...c,registerItem:A,renderItem:e=>b(A(e),f(e,e=>u.setState("renderedItems",e))),item:e=>{if(!e)return null;let t=a.get(e);if(!t){let{items:r}=u.getState();(t=r.find(t=>t.id===e))&&a.set(e,t)}return t||null},__unstablePrivateStore:u}}(e),o=I(e.activeId,null==r?void 0:r.activeId,e.defaultActiveId),a=ti({...i.getState(),id:I(e.id,null==r?void 0:r.id,`id-${Math.random().toString(36).slice(2,8)}`),activeId:o,baseElement:I(null==r?void 0:r.baseElement,null),includesBaseElement:I(e.includesBaseElement,null==r?void 0:r.includesBaseElement,null===o),moves:I(null==r?void 0:r.moves,0),orientation:I(e.orientation,null==r?void 0:r.orientation,"both"),rtl:I(e.rtl,null==r?void 0:r.rtl,!1),virtualFocus:I(e.virtualFocus,null==r?void 0:r.virtualFocus,!1),focusLoop:I(e.focusLoop,null==r?void 0:r.focusLoop,!1),focusWrap:I(e.focusWrap,null==r?void 0:r.focusWrap,!1),focusShift:I(e.focusShift,null==r?void 0:r.focusShift,!1)},i,e.store);to(a,()=>tl(a,["renderedItems","activeId"],e=>{a.setState("activeId",t=>{var r;return void 0!==t?t:null==(r=nR(e.renderedItems))?void 0:r.id})}));let s=(e="next",t={})=>{var r,n;let i=a.getState(),{skip:o=0,activeId:s=i.activeId,focusShift:l=i.focusShift,focusLoop:u=i.focusLoop,focusWrap:c=i.focusWrap,includesBaseElement:d=i.includesBaseElement,renderedItems:f=i.renderedItems,rtl:A=i.rtl}=t,h="up"===e||"down"===e,m="next"===e||"down"===e,p=h?eN(function(e,t,r){let n=nG(e);for(let i of e)for(let e=0;ee.id===s);if(!B)return null==(n=nR(p))?void 0:n.id;let C=p.some(e=>e.rowId),g=p.indexOf(B),v=p.slice(g+1),y=nI(v,B.rowId);if(o){let e=y.filter(e=>s?!e.disabled&&e.id!==s:!e.disabled),t=e.slice(o)[0]||e[e.length-1];return null==t?void 0:t.id}let b=u&&(h?"horizontal"!==u:"vertical"!==u),E=C&&c&&(h?"horizontal"!==c:"vertical"!==c),M=m?(!C||h)&&b&&d:!!h&&d;if(b){let e=nR(function(e,t,r=!1){let n=e.findIndex(e=>e.id===t);return[...e.slice(n+1),...r?[nS]:[],...e.slice(0,n)]}(E&&!M?p:nI(p,B.rowId),s,M),s);return null==e?void 0:e.id}if(E){let e=nR(M?y:v,s);return M?(null==e?void 0:e.id)||null:null==e?void 0:e.id}let F=nR(y,s);return!F&&M?null:null==F?void 0:F.id};return{...i,...a,setBaseElement:e=>a.setState("baseElement",e),setActiveId:e=>a.setState("activeId",e),move:e=>{void 0!==e&&(a.setState("activeId",e),a.setState("moves",e=>e+1))},first:()=>{var e;return null==(e=nR(a.getState().renderedItems))?void 0:e.id},last:()=>{var e;return null==(e=nR(ek(a.getState().renderedItems)))?void 0:e.id},next:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("next",e)),previous:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("previous",e)),down:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("down",e)),up:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("up",e))}}({...t,activeId:a,includesBaseElement:I(t.includesBaseElement,null==o?void 0:o.includesBaseElement,!0),orientation:I(t.orientation,null==o?void 0:o.orientation,"vertical"),focusLoop:I(t.focusLoop,null==o?void 0:o.focusLoop,!0),focusWrap:I(t.focusWrap,null==o?void 0:o.focusWrap,!0),virtualFocus:I(t.virtualFocus,null==o?void 0:o.virtualFocus,!0)}),l=function({popover:e,...t}={}){let r=td(t.store,tc(e,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));tf(t,r);let n=null==r?void 0:r.getState(),i=ru({...t,store:r}),o=I(t.placement,null==n?void 0:n.placement,"bottom"),a=ti({...i.getState(),placement:o,currentPlacement:o,anchorElement:I(null==n?void 0:n.anchorElement,null),popoverElement:I(null==n?void 0:n.popoverElement,null),arrowElement:I(null==n?void 0:n.arrowElement,null),rendered:Symbol("rendered")},i,r);return{...i,...a,setAnchorElement:e=>a.setState("anchorElement",e),setPopoverElement:e=>a.setState("popoverElement",e),setArrowElement:e=>a.setState("arrowElement",e),render:()=>a.setState("rendered",Symbol("rendered"))}}({...t,placement:I(t.placement,null==o?void 0:o.placement,"bottom-start")}),u=I(t.value,null==o?void 0:o.value,t.defaultValue,""),c=I(t.selectedValue,null==o?void 0:o.selectedValue,null==i?void 0:i.values,t.defaultSelectedValue,""),d=Array.isArray(c),f={...s.getState(),...l.getState(),value:u,selectedValue:c,resetValueOnSelect:I(t.resetValueOnSelect,null==o?void 0:o.resetValueOnSelect,d),resetValueOnHide:I(t.resetValueOnHide,null==o?void 0:o.resetValueOnHide,d&&!e),activeValue:null==o?void 0:o.activeValue},A=ti(f,s,l,r);return nx&&to(A,()=>tl(A,["virtualFocus"],()=>{A.setState("virtualFocus",!1)})),to(A,()=>{if(e)return b(tl(A,["selectedValue"],t=>{Array.isArray(t.selectedValue)&&e.setValues(t.selectedValue)}),tl(e,["values"],e=>{A.setState("selectedValue",e.values)}))}),to(A,()=>tl(A,["resetValueOnHide","mounted"],e=>{!e.resetValueOnHide||e.mounted||A.setState("value",u)})),to(A,()=>tl(A,["open"],e=>{e.open||(A.setState("activeId",a),A.setState("moves",0))})),to(A,()=>tl(A,["moves","activeId"],(e,t)=>{e.moves===t.moves&&A.setState("activeValue",void 0)})),to(A,()=>tu(A,["moves","renderedItems"],(e,t)=>{if(e.moves===t.moves)return;let{activeId:r}=A.getState(),n=s.item(r);A.setState("activeValue",null==n?void 0:n.value)})),{...l,...s,...A,tag:e,setValue:e=>A.setState("value",e),resetValue:()=>A.setState("value",f.value),setSelectedValue:e=>A.setState("selectedValue",e)}}function nw(e={}){var t,r,n,i,o,a,s,l;let u;t=e,u=nF();let[c,d]=tT(nD,e={id:V((r=t={...t,tag:void 0!==t.tag?t.tag:u}).id),...r});return q(d,[(n=e).tag]),tI(c,n,"value","setValue"),tI(c,n,"selectedValue","setSelectedValue"),tI(c,n,"resetValueOnHide"),tI(c,n,"resetValueOnSelect"),Object.assign((a=c,q(s=d,[(l=n).popover]),tI(a,l,"placement"),i=ra(a,s,l),o=i,q(d,[n.store]),tI(o,n,"items","setItems"),tI(i=o,n,"activeId","setActiveId"),tI(i,n,"includesBaseElement"),tI(i,n,"virtualFocus"),tI(i,n,"orientation"),tI(i,n,"rtl"),tI(i,n,"focusLoop"),tI(i,n,"focusWrap"),tI(i,n,"focusShift"),i),{tag:n.tag})}function nL(e={}){let t=nw(e);return(0,eo.jsx)(e5,{value:t,children:e.children})}e.s(["useComboboxStore",()=>nw],18364),e.s(["ComboboxProvider",()=>nL],78440);var n_=(0,T.createContext)(void 0),nO=eu(function(e){let[t,r]=(0,T.useState)();return R(e={role:"group","aria-labelledby":t,...e=Z(e,e=>(0,eo.jsx)(n_.Provider,{value:r,children:e}),[])})});ea(function(e){return el("div",nO(e))});var nH=eu(function({store:e,...t}){return nO(t)});ea(function(e){return el("div",nH(e))});var nP=eu(function({store:e,...t}){let r=e4();return M(e=e||r,!1),"grid"===h(e.useState("contentElement"))&&(t={role:"rowgroup",...t}),t=nH({store:e,...t})}),nJ=ea(function(e){return el("div",nP(e))});e.s(["ComboboxGroup",()=>nJ],59129);var nU=eu(function(e){let t=(0,T.useContext)(n_),r=V(e.id);return j(()=>(null==t||t(r),()=>null==t?void 0:t(void 0)),[t,r]),R(e={id:r,"aria-hidden":!0,...e})});ea(function(e){return el("div",nU(e))});var nN=eu(function({store:e,...t}){return nU(t)});ea(function(e){return el("div",nN(e))});var nk=eu(function(e){return nN(e)}),nK=ea(function(e){return el("div",nk(e))});e.s(["ComboboxGroupLabel",()=>nK],25998);var nj=e.i(38360);let nQ={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0},nX=(e,t)=>String(e.rankedValue).localeCompare(String(t.rankedValue));function nV(e,t,r={}){let{keys:n,threshold:i=nQ.MATCHES,baseSort:o=nX,sorter:a=e=>e.sort((e,t)=>(function(e,t,r){let{rank:n,keyIndex:i}=e,{rank:o,keyIndex:a}=t;return n!==o?n>o?-1:1:i===a?r(e,t):i{let s=nq(i,u,c),l=t,{minRanking:d,maxRanking:f,threshold:A}=o;return s=nQ.MATCHES?s=d:s>f&&(s=f),s>e&&(e=s,r=a,n=A,l=i),{rankedValue:l,rank:e,keyIndex:r,keyThreshold:n}},{rankedValue:s,rank:nQ.NO_MATCH,keyIndex:-1,keyThreshold:c.threshold}):{rankedValue:s,rank:nq(s,u,c),keyIndex:-1,keyThreshold:c.threshold}),{rank:f,keyThreshold:A=i}=d;return f>=A&&e.push({...d,item:o,index:a}),e},[])).map(({item:e})=>e)}function nq(e,t,r){if(e=nW(e,r),(t=nW(t,r)).length>e.length)return nQ.NO_MATCH;if(e===t)return nQ.CASE_SENSITIVE_EQUAL;let n=function*(e,t){let r=-1;for(;(r=e.indexOf(t,r+1))>-1;)yield r;return -1}(e=e.toLowerCase(),t=t.toLowerCase()),i=n.next(),o=i.value;if(e.length===t.length&&0===o)return nQ.EQUAL;if(0===o)return nQ.STARTS_WITH;let a=i;for(;!a.done;){if(a.value>0&&" "===e[a.value-1])return nQ.WORD_STARTS_WITH;a=n.next()}return o>0?nQ.CONTAINS:1===t.length?nQ.NO_MATCH:(function(e){let t="",r=" ";for(let n=0;n-1))return nQ.NO_MATCH;return r=o-s,n=i/t.length,nQ.MATCHES+1/r*n}(e,t)}function nW(e,{keepDiacritics:t}){return e=`${e}`,t||(e=(0,nj.default)(e)),e}nV.rankings=nQ;let nY={maxRanking:1/0,minRanking:-1/0};e.s(["matchSorter",()=>nV],70238)},29402,(e,t,r)=>{var n,i,o,a,s="__lodash_hash_undefined__",l=1/0,u="[object Arguments]",c="[object Array]",d="[object Boolean]",f="[object Date]",A="[object Error]",h="[object Function]",m="[object Map]",p="[object Number]",B="[object Object]",C="[object Promise]",g="[object RegExp]",v="[object Set]",y="[object String]",b="[object Symbol]",E="[object WeakMap]",M="[object ArrayBuffer]",F="[object DataView]",S=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,R=/^\w*$/,I=/^\./,T=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,G=/\\(\\)?/g,x=/^\[object .+?Constructor\]$/,D=/^(?:0|[1-9]\d*)$/,w={};w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w[u]=w[c]=w[M]=w[d]=w[F]=w[f]=w[A]=w[h]=w[m]=w[p]=w[B]=w[g]=w[v]=w[y]=w[E]=!1;var L=e.g&&e.g.Object===Object&&e.g,_="object"==typeof self&&self&&self.Object===Object&&self,O=L||_||Function("return this")(),H=r&&!r.nodeType&&r,P=H&&t&&!t.nodeType&&t,J=P&&P.exports===H&&L.process,U=function(){try{return J&&J.binding("util")}catch(e){}}(),N=U&&U.isTypedArray;function k(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r-1},eb.prototype.set=function(e,t){var r=this.__data__,n=eS(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},eE.prototype.clear=function(){this.__data__={hash:new ey,map:new(el||eb),string:new ey}},eE.prototype.delete=function(e){return eL(this,e).delete(e)},eE.prototype.get=function(e){return eL(this,e).get(e)},eE.prototype.has=function(e){return eL(this,e).has(e)},eE.prototype.set=function(e,t){return eL(this,e).set(e,t),this},eM.prototype.add=eM.prototype.push=function(e){return this.__data__.set(e,s),this},eM.prototype.has=function(e){return this.__data__.has(e)},eF.prototype.clear=function(){this.__data__=new eb},eF.prototype.delete=function(e){return this.__data__.delete(e)},eF.prototype.get=function(e){return this.__data__.get(e)},eF.prototype.has=function(e){return this.__data__.has(e)},eF.prototype.set=function(e,t){var r=this.__data__;if(r instanceof eb){var n=r.__data__;if(!el||n.length<199)return n.push([e,t]),this;r=this.__data__=new eE(n)}return r.set(e,t),this};var eR=(n=function(e,t){return e&&eI(e,t,e0)},function(e,t){if(null==e)return e;if(!eV(e))return n(e,t);for(var r=e.length,i=-1,o=Object(e);++is))return!1;var u=o.get(e);if(u&&o.get(t))return u==t;var c=-1,d=!0,f=1&i?new eM:void 0;for(o.set(e,t),o.set(t,e);++c-1&&e%1==0&&e-1&&e%1==0&&e<=0x1fffffffffffff}function eY(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function eZ(e){return!!e&&"object"==typeof e}function ez(e){return"symbol"==typeof e||eZ(e)&&ee.call(e)==b}var e$=N?K(N):function(e){return eZ(e)&&eW(e.length)&&!!w[ee.call(e)]};function e0(e){return eV(e)?function(e,t){var r=eX(e)||eQ(e)?function(e,t){for(var r=-1,n=Array(e);++rt||o&&a&&l&&!s&&!u||n&&a&&l||!r&&l||!i)return 1;if(!n&&!o&&!u&&e=s)return l;return l*("desc"==r[n]?-1:1)}}return e.index-t.index}(e,t,r)});l--;)s[l]=s[l].value;return s}(e,t,r))}},97442,e=>{e.v({Group:"MissionSelect-module__N_AIjG__Group",GroupLabel:"MissionSelect-module__N_AIjG__GroupLabel",Input:"MissionSelect-module__N_AIjG__Input",InputWrapper:"MissionSelect-module__N_AIjG__InputWrapper",Item:"MissionSelect-module__N_AIjG__Item",ItemHeader:"MissionSelect-module__N_AIjG__ItemHeader",ItemMissionName:"MissionSelect-module__N_AIjG__ItemMissionName",ItemName:"MissionSelect-module__N_AIjG__ItemName",ItemType:"MissionSelect-module__N_AIjG__ItemType",ItemTypes:"MissionSelect-module__N_AIjG__ItemTypes",List:"MissionSelect-module__N_AIjG__List",NoResults:"MissionSelect-module__N_AIjG__NoResults",Popover:"MissionSelect-module__N_AIjG__Popover",SelectedName:"MissionSelect-module__N_AIjG__SelectedName",SelectedValue:"MissionSelect-module__N_AIjG__SelectedValue",Shortcut:"MissionSelect-module__N_AIjG__Shortcut"})},38847,e=>{"use strict";var t=e.i(80902),r=e.i(22289),n=e.i(71645);function i(e,t,n){try{return e(t)}catch(e){return(0,r.l)("[nuqs] Error while parsing value `%s`: %O"+(n?" (for key `%s`)":""),t,e,n),null}}function o(e){function t(t){if(void 0===t)return null;let r="";if(Array.isArray(t)){if(void 0===t[0])return null;r=t[0]}return"string"==typeof t&&(r=t),i(e.parse,r)}return{type:"single",eq:(e,t)=>e===t,...e,parseServerSide:t,withDefault(e){return{...this,defaultValue:e,parseServerSide:r=>t(r)??e}},withOptions(e){return{...this,...e}}}}o({parse:e=>e,serialize:String}),o({parse:e=>{let t=parseInt(e);return t==t?t:null},serialize:e=>""+Math.round(e)}),o({parse:e=>{let t=parseInt(e);return t==t?t-1:null},serialize:e=>""+Math.round(e+1)}),o({parse:e=>{let t=parseInt(e,16);return t==t?t:null},serialize:e=>{let t=Math.round(e).toString(16);return(1&t.length?"0":"")+t}}),o({parse:e=>{let t=parseFloat(e);return t==t?t:null},serialize:String});let a=o({parse:e=>"true"===e.toLowerCase(),serialize:String});function s(e,t){return e.valueOf()===t.valueOf()}o({parse:e=>{let t=parseInt(e);return t==t?new Date(t):null},serialize:e=>""+e.valueOf(),eq:s}),o({parse:e=>{let t=new Date(e);return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString(),eq:s}),o({parse:e=>{let t=new Date(e.slice(0,10));return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString().slice(0,10),eq:s});let l=(0,t.r)(),u={};function c(e,r,n,o,a,s){let l=!1,u=Object.entries(e).reduce((e,[u,c])=>{var d;let f=r?.[u]??u,A=o[f],h="multi"===c.type?[]:null,m=void 0===A?("multi"===c.type?n?.getAll(f):n?.get(f))??h:A;return a&&s&&((d=a[f]??h)===m||null!==d&&null!==m&&"string"!=typeof d&&"string"!=typeof m&&d.length===m.length&&d.every((e,t)=>e===m[t]))?e[u]=s[u]??null:(l=!0,e[u]=((0,t.i)(m)?null:i(c.parse,m,f))??null,a&&(a[f]=m)),e},{});if(!l){let t=Object.keys(e),r=Object.keys(s??{});l=t.length!==r.length||t.some(e=>!r.includes(e))}return{state:u,hasChanged:l}}function d(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,e[r]??t[r]??null]))}function f(e,i={}){let{parse:o,type:a,serialize:s,eq:A,defaultValue:h,...m}=i,[{[e]:p},B]=function(e,i={}){let o=(0,n.useId)(),a=(0,r.i)(),s=(0,r.a)(),{history:f="replace",scroll:A=a?.scroll??!1,shallow:h=a?.shallow??!0,throttleMs:m=t.s.timeMs,limitUrlUpdates:p=a?.limitUrlUpdates,clearOnDefault:B=a?.clearOnDefault??!0,startTransition:C,urlKeys:g=u}=i,v=Object.keys(e).join(","),y=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(e=>[e,g[e]??e])),[v,JSON.stringify(g)]),b=(0,r.r)(Object.values(y)),E=b.searchParams,M=(0,n.useRef)({}),F=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(t=>[t,e[t].defaultValue??null])),[Object.values(e).map(({defaultValue:e})=>e).join(",")]),S=t.t.useQueuedQueries(Object.values(y)),[R,I]=(0,n.useState)(()=>c(e,g,E??new URLSearchParams,S).state),T=(0,n.useRef)(R);if((0,r.c)("[nuq+ %s `%s`] render - state: %O, iSP: %s",o,v,R,E),Object.keys(M.current).join("&")!==Object.values(y).join("&")){let{state:t,hasChanged:n}=c(e,g,E,S,M.current,T.current);n&&((0,r.c)("[nuq+ %s `%s`] State changed: %O",o,v,{state:t,initialSearchParams:E,queuedQueries:S,queryRef:M.current,stateRef:T.current}),T.current=t,I(t)),M.current=Object.fromEntries(Object.entries(y).map(([t,r])=>[r,e[t]?.type==="multi"?E?.getAll(r):E?.get(r)??null]))}(0,n.useEffect)(()=>{let{state:t,hasChanged:n}=c(e,g,E,S,M.current,T.current);n&&((0,r.c)("[nuq+ %s `%s`] State changed: %O",o,v,{state:t,initialSearchParams:E,queuedQueries:S,queryRef:M.current,stateRef:T.current}),T.current=t,I(t))},[Object.values(y).map(e=>`${e}=${E?.getAll(e)}`).join("&"),JSON.stringify(S)]),(0,n.useEffect)(()=>{let t=Object.keys(e).reduce((t,n)=>(t[n]=({state:t,query:i})=>{I(a=>{let{defaultValue:s}=e[n],l=y[n],u=t??s??null;return Object.is(a[n]??s??null,u)?((0,r.c)("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). no change, skipping, resolved: %O",o,v,l,t,s,T.current),a):(T.current={...T.current,[n]:u},M.current[l]=i,(0,r.c)("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). updateInternalState, resolved: %O",o,v,l,t,s,T.current),T.current)})},t),{});for(let n of Object.keys(e)){let e=y[n];(0,r.c)("[nuq+ %s `%s`] Subscribing to sync for `%s`",o,e,v),l.on(e,t[n])}return()=>{for(let n of Object.keys(e)){let e=y[n];(0,r.c)("[nuq+ %s `%s`] Unsubscribing to sync for `%s`",o,e,v),l.off(e,t[n])}}},[v,y]);let G=(0,n.useCallback)((n,i={})=>{let a,u=Object.fromEntries(Object.keys(e).map(e=>[e,null])),c="function"==typeof n?n(d(T.current,F))??u:n??u;(0,r.c)("[nuq+ %s `%s`] setState: %O",o,v,c);let g=0,E=!1,M=[];for(let[n,o]of Object.entries(c)){let u=e[n],c=y[n];if(!u||void 0===o)continue;(i.clearOnDefault??u.clearOnDefault??B)&&null!==o&&void 0!==u.defaultValue&&(u.eq??((e,t)=>e===t))(o,u.defaultValue)&&(o=null);let d=null===o?null:(u.serialize??String)(o);l.emit(c,{state:o,query:d});let v={key:c,query:d,options:{history:i.history??u.history??f,shallow:i.shallow??u.shallow??h,scroll:i.scroll??u.scroll??A,startTransition:i.startTransition??u.startTransition??C}};if(i?.limitUrlUpdates?.method==="debounce"||p?.method==="debounce"||u.limitUrlUpdates?.method==="debounce"){!0===v.options.shallow&&console.warn((0,r.s)(422));let e=i?.limitUrlUpdates?.timeMs??p?.timeMs??u.limitUrlUpdates?.timeMs??t.s.timeMs,n=t.t.push(v,e,b,s);gt(e),E?t.n.flush(b,s):t.n.getPendingPromise(b));return a??S},[v,f,h,A,m,p?.method,p?.timeMs,C,y,b.updateUrl,b.getSearchParamsSnapshot,b.rateLimitFactor,s,F]);return[(0,n.useMemo)(()=>d(R,F),[R,F]),G]}({[e]:{parse:o??(e=>e),type:a,serialize:s,eq:A,defaultValue:h}},m);return[p,(0,n.useCallback)((t,r={})=>B(r=>({[e]:"function"==typeof t?t(r[e]):t}),r),[e,B])]}e.s(["createParser",()=>o,"parseAsBoolean",()=>a,"useQueryState",()=>f],38847)},32424,e=>{"use strict";var t=e.i(12979);function r(){return async e=>{let r;try{r=(0,t.getUrlForPath)(e)}catch(t){return console.warn(`Script not in manifest: ${e} (${t})`),null}try{let t=await fetch(r);if(!t.ok)return console.error(`Script fetch failed: ${e} (${t.status})`),null;return await t.text()}catch(t){return console.error(`Script fetch error: ${e}`),console.error(t),null}}}e.s(["createScriptLoader",()=>r])},7368,e=>{"use strict";e.s(["ignoreScripts",0,["scripts/admin.cs","scripts/ai.cs","scripts/aiBotProfiles.cs","scripts/aiBountyGame.cs","scripts/aiChat.cs","scripts/aiCnH.cs","scripts/aiCTF.cs","scripts/aiDeathMatch.cs","scripts/aiDebug.cs","scripts/aiDefaultTasks.cs","scripts/aiDnD.cs","scripts/aiHumanTasks.cs","scripts/aiHunters.cs","scripts/aiInventory.cs","scripts/aiObjectiveBuilder.cs","scripts/aiObjectives.cs","scripts/aiRabbit.cs","scripts/aiSiege.cs","scripts/aiTDM.cs","scripts/aiTeamHunters.cs","scripts/deathMessages.cs","scripts/graphBuild.cs","scripts/navGraph.cs","scripts/serverTasks.cs","scripts/spdialog.cs"]])}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/b238e7ff5406aa8f.css b/docs/_next/static/chunks/3e57999e46d7efb4.css similarity index 95% rename from docs/_next/static/chunks/b238e7ff5406aa8f.css rename to docs/_next/static/chunks/3e57999e46d7efb4.css index 865a728e..c2e968be 100644 --- a/docs/_next/static/chunks/b238e7ff5406aa8f.css +++ b/docs/_next/static/chunks/3e57999e46d7efb4.css @@ -6,6 +6,7 @@ .CopyCoordinatesButton-module__BxovtG__Root{}.CopyCoordinatesButton-module__BxovtG__Root[data-copied=true]{background:#0075d5e6;border-color:#fff6}.CopyCoordinatesButton-module__BxovtG__ClipboardCheck{opacity:1;display:none}.CopyCoordinatesButton-module__BxovtG__Root[data-copied=true] .CopyCoordinatesButton-module__BxovtG__ClipboardCheck{animation:.22s linear infinite CopyCoordinatesButton-module__BxovtG__showClipboardCheck;display:block}.CopyCoordinatesButton-module__BxovtG__Root[data-copied=true] .CopyCoordinatesButton-module__BxovtG__MapPin{display:none}.CopyCoordinatesButton-module__BxovtG__ButtonLabel{}@keyframes CopyCoordinatesButton-module__BxovtG__showClipboardCheck{0%{opacity:1}to{opacity:.2}} .LoadDemoButton-module__kGZaoW__Root{}.LoadDemoButton-module__kGZaoW__ButtonLabel{}.LoadDemoButton-module__kGZaoW__DemoIcon{font-size:19px} .PlayerNameplate-module__zYDm0a__Root{pointer-events:none;white-space:nowrap;flex-direction:column;align-items:center;display:inline-flex}.PlayerNameplate-module__zYDm0a__Top{padding-bottom:20px;}.PlayerNameplate-module__zYDm0a__Bottom{padding-top:20px;}.PlayerNameplate-module__zYDm0a__IffArrow{width:12px;height:12px;image-rendering:pixelated;filter:drop-shadow(0 1px 2px #000000b3)}.PlayerNameplate-module__zYDm0a__Name{color:#fff;text-shadow:0 1px 3px #000000e6,0 0 1px #000000b3;font-size:11px}.PlayerNameplate-module__zYDm0a__HealthBar{background:#00000080;border:1px solid #fff3;width:60px;height:4px;margin:2px auto 0;overflow:hidden}.PlayerNameplate-module__zYDm0a__HealthFill{background:#2ecc40;height:100%} +.FlagMarker-module__INpLba__Root{pointer-events:none;white-space:nowrap;flex-direction:column;align-items:center;gap:1px;display:inline-flex}.FlagMarker-module__INpLba__Distance{color:#fff;text-shadow:0 1px 3px #000000e6,0 0 1px #000000b3;opacity:.5;font-size:10px}.FlagMarker-module__INpLba__Icon{width:16px;height:16px;image-rendering:pixelated;opacity:.5;filter:drop-shadow(0 1px 3px #000c);-webkit-mask-image:var(--flag-icon-url);mask-image:var(--flag-icon-url);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--flag-icon-url);-webkit-mask-position:50%;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat} .DemoControls-module__PjV4fq__Root{color:#fff;z-index:2;background:#000000b3;align-items:center;gap:10px;padding:8px 12px;font-size:13px;display:flex;position:fixed;bottom:0;left:0;right:0}.DemoControls-module__PjV4fq__PlayPause{color:#fff;cursor:pointer;background:#03529399;border:1px solid #ffffff4d;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:14px;display:flex}@media (hover:hover){.DemoControls-module__PjV4fq__PlayPause:hover{background:#0062b3cc}}.DemoControls-module__PjV4fq__Time{font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.DemoControls-module__PjV4fq__Seek[type=range]{flex:1 1 0;min-width:0;max-width:none}.DemoControls-module__PjV4fq__Speed{color:#fff;background:#0009;border:1px solid #ffffff4d;border-radius:3px;flex-shrink:0;padding:2px 4px;font-size:12px} .PlayerHUD-module__-E1Scq__PlayerHUD{z-index:1;pointer-events:none;position:absolute;inset:0}.PlayerHUD-module__-E1Scq__TopRight{align-items:flex-start;gap:6px;display:flex;position:absolute;top:56px;right:8px}.PlayerHUD-module__-E1Scq__Compass{flex-shrink:0;width:64px;height:64px;position:relative}.PlayerHUD-module__-E1Scq__CompassRing{image-rendering:auto;width:100%;height:100%;position:absolute;top:0;left:0}.PlayerHUD-module__-E1Scq__CompassNSEW{width:100%;height:100%;image-rendering:pixelated;position:absolute;top:0;left:0}.PlayerHUD-module__-E1Scq__Bars{flex-direction:column;gap:3px;padding-top:10px;display:flex}.PlayerHUD-module__-E1Scq__BarTrack{background:#00000080;border:1px solid #ffffff26;width:120px;height:10px;overflow:hidden}.PlayerHUD-module__-E1Scq__BarFillHealth{background:#2ecc40;height:100%;transition:width .15s ease-out}.PlayerHUD-module__-E1Scq__BarFillEnergy{background:#0af;height:100%;transition:width .15s ease-out}.PlayerHUD-module__-E1Scq__WeaponHUD{flex-direction:column;gap:2px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.PlayerHUD-module__-E1Scq__WeaponSeparator{height:6px}.PlayerHUD-module__-E1Scq__ChatWindow{background:#00323ca6;max-width:420px;padding:4px 8px;font-size:12px;line-height:1.3;position:absolute;top:56px;left:0}.PlayerHUD-module__-E1Scq__ChatMessage{color:#2cacb5;padding:1px 0;transition:opacity .3s ease-out}.PlayerHUD-module__-E1Scq__ChatColor0{color:#2cacb5}.PlayerHUD-module__-E1Scq__ChatColor1{color:#04eb69}.PlayerHUD-module__-E1Scq__ChatColor2{color:#dbc880}.PlayerHUD-module__-E1Scq__ChatColor3{color:#4dfd5f}.PlayerHUD-module__-E1Scq__ChatColor4{color:#28e7f0}.PlayerHUD-module__-E1Scq__ChatColor5{color:#c8c832}.PlayerHUD-module__-E1Scq__ChatColor6{color:#c8c8c8}.PlayerHUD-module__-E1Scq__ChatColor7{color:#dcdc14}.PlayerHUD-module__-E1Scq__ChatColor8{color:#9696fa}.PlayerHUD-module__-E1Scq__ChatColor9{color:#3cdc96}.PlayerHUD-module__-E1Scq__TeamScores{font-family:monospace;font-size:12px;position:absolute;bottom:130px;left:0}.PlayerHUD-module__-E1Scq__TeamRow{background:#00323ca6;gap:6px;padding:2px 8px;display:flex}.PlayerHUD-module__-E1Scq__TeamRow+.PlayerHUD-module__-E1Scq__TeamRow{border-top:1px solid #80ffc826}.PlayerHUD-module__-E1Scq__TeamNameFriendly{color:#2ecc40;min-width:60px}.PlayerHUD-module__-E1Scq__TeamNameEnemy{color:#e44;min-width:60px}.PlayerHUD-module__-E1Scq__TeamScore{color:#fff;text-align:right;min-width:24px;font-weight:700}.PlayerHUD-module__-E1Scq__TeamCount{color:#9ba;text-align:right;min-width:24px}.PlayerHUD-module__-E1Scq__PackInventoryHUD{align-items:center;gap:4px;display:flex;position:absolute;bottom:100px;right:8px}.PlayerHUD-module__-E1Scq__PackInvItem{background:#00323ca6;border:1px solid #80ffc826;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:4px;display:flex}.PlayerHUD-module__-E1Scq__PackInvItemActive{border-color:#80ffc880;box-shadow:0 0 6px #80ffc84d}.PlayerHUD-module__-E1Scq__PackInvItemDim{opacity:.5}.PlayerHUD-module__-E1Scq__PackInvIcon{image-rendering:pixelated;display:block}.PlayerHUD-module__-E1Scq__PackInvCount{color:#bfe;text-align:center;min-width:12px;font-family:monospace;font-size:11px}.PlayerHUD-module__-E1Scq__PackInvInfinity{image-rendering:pixelated;opacity:.8;display:block}.PlayerHUD-module__-E1Scq__Reticle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.PlayerHUD-module__-E1Scq__ReticleImage{opacity:.85;width:64px;height:64px;image-rendering:pixelated}.PlayerHUD-module__-E1Scq__ReticleDot{background:#2ecc40b3;border-radius:50%;width:4px;height:4px;box-shadow:0 0 4px #2ecc4080} .page-module__E0kJGG__CanvasContainer{z-index:0;position:absolute;inset:0}.page-module__E0kJGG__LoadingIndicator{pointer-events:none;z-index:1;opacity:.8;flex-direction:column;align-items:center;gap:16px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.page-module__E0kJGG__LoadingIndicator[data-complete=true]{animation:.3s ease-out forwards page-module__E0kJGG__loadingComplete}.page-module__E0kJGG__Spinner{border:4px solid #fff3;border-top-color:#fff;border-radius:50%;width:48px;height:48px;animation:1s linear infinite page-module__E0kJGG__spin}.page-module__E0kJGG__Progress{background:#fff3;border-radius:2px;width:200px;height:4px;overflow:hidden}.page-module__E0kJGG__ProgressBar{background:#fff;border-radius:2px;height:100%;transition:width .1s ease-out}.page-module__E0kJGG__ProgressText{color:#ffffffb3;font-variant-numeric:tabular-nums;font-size:14px}@keyframes page-module__E0kJGG__spin{to{transform:rotate(360deg)}}@keyframes page-module__E0kJGG__loadingComplete{0%{opacity:1}to{opacity:0}} diff --git a/docs/_next/static/chunks/90c5f23d057a7dda.js b/docs/_next/static/chunks/90c5f23d057a7dda.js new file mode 100644 index 00000000..5bdde1c1 --- /dev/null +++ b/docs/_next/static/chunks/90c5f23d057a7dda.js @@ -0,0 +1,174 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31067,e=>{"use strict";function t(){return(t=Object.assign.bind()).apply(null,arguments)}e.s(["default",()=>t])},47071,99143,e=>{"use strict";var t=e.i(71645),r=e.i(90072),i=e.i(15080),s=e.i(40859);e.s(["useLoader",()=>s.G],99143);var s=s;let a=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function n(e,n){let o=(0,i.useThree)(e=>e.gl),l=(0,s.G)(r.TextureLoader,a(e)?Object.values(e):e);return(0,t.useLayoutEffect)(()=>{null==n||n(l)},[n]),(0,t.useEffect)(()=>{if("initTexture"in o){let e=[];Array.isArray(l)?e=l:l instanceof r.Texture?e=[l]:a(l)&&(e=Object.values(l)),e.forEach(e=>{e instanceof r.Texture&&o.initTexture(e)})}},[o,l]),(0,t.useMemo)(()=>{if(!a(e))return l;{let t={},r=0;for(let i in e)t[i]=l[r++];return t}},[e,l])}n.preload=e=>s.G.preload(r.TextureLoader,e),n.clear=e=>s.G.clear(r.TextureLoader,e),e.s(["useTexture",()=>n],47071)},75567,e=>{"use strict";var t=e.i(90072);let r=new t.ImageBitmapLoader,i=new Map;function s(e,s){let a=i.get(e);if(a)return s&&a.image&&s(a),a;let n=new t.Texture;return n.flipY=!1,i.set(e,n),r.load(e,e=>{n.image=e,n.needsUpdate=!0,s?.(n)}),n}function a(e){let s=i.get(e);return s?s.image?Promise.resolve(s):new Promise(e=>{let t=()=>{s.image?e(s):setTimeout(t,16)};t()}):new Promise((s,a)=>{let n=new t.Texture;n.flipY=!1,i.set(e,n),r.load(e,e=>{n.image=e,n.needsUpdate=!0,s(n)},void 0,a)})}function n(e,r={}){let{repeat:i=[1,1],disableMipmaps:s=!1}=r;return e.wrapS=e.wrapT=t.RepeatWrapping,e.colorSpace=t.SRGBColorSpace,e.repeat.set(...i),e.flipY=!1,e.anisotropy=16,s?(e.generateMipmaps=!1,e.minFilter=t.LinearFilter):(e.generateMipmaps=!0,e.minFilter=t.LinearMipmapLinearFilter),e.magFilter=t.LinearFilter,e.needsUpdate=!0,e}function o(e){let r=new t.DataTexture(e,256,256,t.RedFormat,t.UnsignedByteType);return r.colorSpace=t.NoColorSpace,r.wrapS=r.wrapT=t.RepeatWrapping,r.generateMipmaps=!1,r.minFilter=t.LinearFilter,r.magFilter=t.LinearFilter,r.needsUpdate=!0,r}e.s(["loadTexture",()=>s,"loadTextureAsync",()=>a,"setupMask",()=>o,"setupTexture",()=>n])},47021,e=>{"use strict";var t=e.i(8560);let r=` +#ifdef USE_FOG + // Check fog enabled uniform - allows toggling without shader recompilation + #ifdef USE_VOLUMETRIC_FOG + if (!fogEnabled) { + // Skip all fog calculations when disabled + } else { + #endif + + float dist = vFogDepth; + + // Discard fragments at or beyond visible distance - matches Torque's behavior + // where objects beyond visibleDistance are not rendered at all. + // This prevents fully-fogged geometry from showing as silhouettes against + // the sky's fog-to-sky gradient. + if (dist >= fogFar) { + discard; + } + + // Step 1: Calculate distance-based haze (quadratic falloff) + // Since we discard at fogFar, haze never reaches 1.0 here + float haze = 0.0; + if (dist > fogNear) { + float fogScale = 1.0 / (fogFar - fogNear); + float distFactor = (dist - fogNear) * fogScale - 1.0; + haze = 1.0 - distFactor * distFactor; + } + + // Step 2: Calculate fog volume contributions + // Note: Per-volume colors are NOT used in Tribes 2 ($specialFog defaults to false) + // All fog uses the global fogColor - see Tribes2_Fog_System.md for details + float volumeFog = 0.0; + + #ifdef USE_VOLUMETRIC_FOG + { + #ifdef USE_FOG_WORLD_POSITION + float fragmentHeight = vFogWorldPosition.y; + #else + float fragmentHeight = cameraHeight; + #endif + + float deltaY = fragmentHeight - cameraHeight; + float absDeltaY = abs(deltaY); + + // Determine if we're going up (positive) or down (negative) + if (absDeltaY > 0.01) { + // Non-horizontal ray: ray-march through fog volumes + for (int i = 0; i < 3; i++) { + int offset = i * 4; + float volVisDist = fogVolumeData[offset + 0]; + float volMinH = fogVolumeData[offset + 1]; + float volMaxH = fogVolumeData[offset + 2]; + float volPct = fogVolumeData[offset + 3]; + + // Skip inactive volumes (visibleDistance = 0) + if (volVisDist <= 0.0) continue; + + // Calculate fog factor for this volume + // From Torque: factor = (1 / (volumeVisDist * visFactor)) * percentage + // where visFactor is smVisibleDistanceMod (a user quality pref, default 1.0) + // Since we don't have quality settings, we use visFactor = 1.0 + float factor = (1.0 / volVisDist) * volPct; + + // Find ray intersection with this volume's height range + float rayMinY = min(cameraHeight, fragmentHeight); + float rayMaxY = max(cameraHeight, fragmentHeight); + + // Check if ray intersects volume height range + if (rayMinY < volMaxH && rayMaxY > volMinH) { + float intersectMin = max(rayMinY, volMinH); + float intersectMax = min(rayMaxY, volMaxH); + float intersectHeight = intersectMax - intersectMin; + + // Calculate distance traveled through this volume using similar triangles: + // subDist / dist = intersectHeight / absDeltaY + float subDist = dist * (intersectHeight / absDeltaY); + + // Accumulate fog: fog += subDist * factor + volumeFog += subDist * factor; + } + } + } else { + // Near-horizontal ray: if camera is inside a volume, apply full fog for that volume + for (int i = 0; i < 3; i++) { + int offset = i * 4; + float volVisDist = fogVolumeData[offset + 0]; + float volMinH = fogVolumeData[offset + 1]; + float volMaxH = fogVolumeData[offset + 2]; + float volPct = fogVolumeData[offset + 3]; + + if (volVisDist <= 0.0) continue; + + // If camera is inside this volume, apply fog for full distance + if (cameraHeight >= volMinH && cameraHeight <= volMaxH) { + float factor = (1.0 / volVisDist) * volPct; + volumeFog += dist * factor; + } + } + } + } + #endif + + // Step 3: Combine haze and volume fog + // Torque's clamping: if (bandPct + hazePct > 1) hazePct = 1 - bandPct + // This gives fog volumes priority over haze + float volPct = min(volumeFog, 1.0); + float hazePct = haze; + if (volPct + hazePct > 1.0) { + hazePct = 1.0 - volPct; + } + float fogFactor = hazePct + volPct; + + // Apply fog using global fogColor (per-volume colors not used in Tribes 2) + gl_FragColor.rgb = mix(gl_FragColor.rgb, fogColor, fogFactor); + + #ifdef USE_VOLUMETRIC_FOG + } // end fogEnabled check + #endif +#endif +`;function i(){t.ShaderChunk.fog_pars_fragment=` +#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif + + // Custom volumetric fog uniforms (only defined when USE_VOLUMETRIC_FOG is set) + // Format: [visDist, minH, maxH, percentage] x 3 volumes = 12 floats + #ifdef USE_VOLUMETRIC_FOG + uniform float fogVolumeData[12]; + uniform float cameraHeight; + #endif + + #ifdef USE_FOG_WORLD_POSITION + varying vec3 vFogWorldPosition; + #endif +#endif +`,t.ShaderChunk.fog_fragment=r,t.ShaderChunk.fog_pars_vertex=` +#ifdef USE_FOG + varying float vFogDepth; + #ifdef USE_FOG_WORLD_POSITION + varying vec3 vFogWorldPosition; + #endif +#endif +`,t.ShaderChunk.fog_vertex=` +#ifdef USE_FOG + // Use Euclidean distance from camera, not view-space z-depth + // This ensures fog doesn't change when rotating the camera + vFogDepth = length(mvPosition.xyz); + #ifdef USE_FOG_WORLD_POSITION + vFogWorldPosition = (modelMatrix * vec4(transformed, 1.0)).xyz; + #endif +#endif +`}function s(e,t){e.uniforms.fogVolumeData=t.fogVolumeData,e.uniforms.cameraHeight=t.cameraHeight,e.uniforms.fogEnabled=t.fogEnabled,e.vertexShader=e.vertexShader.replace("#include ",`#include +#ifdef USE_FOG + #define USE_FOG_WORLD_POSITION + #define USE_VOLUMETRIC_FOG + varying vec3 vFogWorldPosition; +#endif`),e.vertexShader=e.vertexShader.replace("#include ",`#include +#ifdef USE_FOG + vFogWorldPosition = (modelMatrix * vec4(transformed, 1.0)).xyz; +#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include +#ifdef USE_FOG + #define USE_VOLUMETRIC_FOG + uniform float fogVolumeData[12]; + uniform float cameraHeight; + uniform bool fogEnabled; + #define USE_FOG_WORLD_POSITION + varying vec3 vFogWorldPosition; +#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",r)}e.s(["fogFragmentShader",0,r,"injectCustomFog",()=>s,"installCustomFogShader",()=>i])},48066,e=>{"use strict";let t={fogVolumeData:{value:new Float32Array(12)},cameraHeight:{value:0},fogEnabled:{value:!0}};function r(e,i,s=!0){t.cameraHeight.value=e,t.fogVolumeData.value.set(i),t.fogEnabled.value=s}function i(){t.cameraHeight.value=0,t.fogVolumeData.value.fill(0),t.fogEnabled.value=!0}function s(e){let t=new Float32Array(12);for(let r=0;r<3;r++){let i=4*r,s=e[r];s&&(t[i+0]=s.visibleDistance,t[i+1]=s.minHeight,t[i+2]=s.maxHeight,t[i+3]=s.percentage)}return t}e.s(["globalFogUniforms",0,t,"packFogVolumeData",()=>s,"resetGlobalFogUniforms",()=>i,"updateGlobalFogUniforms",()=>r])},15823,e=>{"use strict";var t=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}};e.s(["Subscribable",()=>t])},19273,80166,e=>{"use strict";e.i(47167);var t={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},r=new class{#e=t;#t=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function i(e){setTimeout(e,0)}e.s(["systemSetTimeoutZero",()=>i,"timeoutManager",()=>r],80166);var s="u"=0&&e!==1/0}function l(e,t){return Math.max(e+(t||0)-Date.now(),0)}function u(e,t){return"function"==typeof e?e(t):e}function c(e,t){return"function"==typeof e?e(t):e}function h(e,t){let{type:r="all",exact:i,fetchStatus:s,predicate:a,queryKey:n,stale:o}=e;if(n){if(i){if(t.queryHash!==d(n,t.options))return!1}else if(!v(t.queryKey,n))return!1}if("all"!==r){let e=t.isActive();if("active"===r&&!e||"inactive"===r&&e)return!1}return("boolean"!=typeof o||t.isStale()===o)&&(!s||s===t.state.fetchStatus)&&(!a||!!a(t))}function f(e,t){let{exact:r,status:i,predicate:s,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(r){if(p(t.options.mutationKey)!==p(a))return!1}else if(!v(t.options.mutationKey,a))return!1}return(!i||t.state.status===i)&&(!s||!!s(t))}function d(e,t){return(t?.queryKeyHashFn||p)(e)}function p(e){return JSON.stringify(e,(e,t)=>b(t)?Object.keys(t).sort().reduce((e,r)=>(e[r]=t[r],e),{}):t)}function v(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(r=>v(e[r],t[r]))}var m=Object.prototype.hasOwnProperty;function g(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}function y(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function b(e){if(!S(e))return!1;let t=e.constructor;if(void 0===t)return!0;let r=t.prototype;return!!S(r)&&!!r.hasOwnProperty("isPrototypeOf")&&Object.getPrototypeOf(e)===Object.prototype}function S(e){return"[object Object]"===Object.prototype.toString.call(e)}function O(e){return new Promise(t=>{r.setTimeout(t,e)})}function T(e,t,r){return"function"==typeof r.structuralSharing?r.structuralSharing(e,t):!1!==r.structuralSharing?function e(t,r,i=0){if(t===r)return t;if(i>500)return r;let s=y(t)&&y(r);if(!s&&!(b(t)&&b(r)))return r;let a=(s?t:Object.keys(t)).length,n=s?r:Object.keys(r),o=n.length,l=s?Array(o):{},u=0;for(let c=0;cr?i.slice(1):i}function R(e,t,r=0){let i=[t,...e];return r&&i.length>r?i.slice(0,-1):i}var E=Symbol();function w(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==E?e.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`))}function C(e,t){return"function"==typeof e?e(...t):!!e}function D(e,t,r){let i,s=!1;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),s||(s=!0,i.aborted?r():i.addEventListener("abort",r,{once:!0})),i)}),e}e.s(["addConsumeAwareSignal",()=>D,"addToEnd",()=>F,"addToStart",()=>R,"ensureQueryFn",()=>w,"functionalUpdate",()=>n,"hashKey",()=>p,"hashQueryKeyByOptions",()=>d,"isServer",()=>s,"isValidTimeout",()=>o,"matchMutation",()=>f,"matchQuery",()=>h,"noop",()=>a,"partialMatchKey",()=>v,"replaceData",()=>T,"resolveEnabled",()=>c,"resolveStaleTime",()=>u,"shallowEqualObjects",()=>g,"shouldThrowError",()=>C,"skipToken",()=>E,"sleep",()=>O,"timeUntilStale",()=>l],19273)},75555,e=>{"use strict";var t=e.i(15823),r=e.i(19273),i=new class extends t.Subscribable{#r;#i;#s;constructor(){super(),this.#s=e=>{if(!r.isServer&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#i||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#i?.(),this.#i=void 0)}setEventListener(e){this.#s=e,this.#i?.(),this.#i=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){this.#r!==e&&(this.#r=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#r?this.#r:globalThis.document?.visibilityState!=="hidden"}};e.s(["focusManager",()=>i])},40143,e=>{"use strict";let t,r,i,s,a,n;var o=e.i(80166).systemSetTimeoutZero,l=(t=[],r=0,i=e=>{e()},s=e=>{e()},a=o,{batch:e=>{let n;r++;try{n=e()}finally{let e;--r||(e=t,t=[],e.length&&a(()=>{s(()=>{e.forEach(e=>{i(e)})})}))}return n},batchCalls:e=>(...t)=>{n(()=>{e(...t)})},schedule:n=e=>{r?t.push(e):a(()=>{i(e)})},setNotifyFunction:e=>{i=e},setBatchNotifyFunction:e=>{s=e},setScheduler:e=>{a=e}});e.s(["notifyManager",()=>l])},86491,14448,93803,36553,88587,e=>{"use strict";e.i(47167);var t=e.i(19273),r=e.i(40143),i=e.i(75555),s=e.i(15823),a=new class extends s.Subscribable{#a=!0;#i;#s;constructor(){super(),this.#s=e=>{if(!t.isServer&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#i||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#i?.(),this.#i=void 0)}setEventListener(e){this.#s=e,this.#i?.(),this.#i=e(this.setOnline.bind(this))}setOnline(e){this.#a!==e&&(this.#a=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#a}};function n(){let e,t,r=new Promise((r,i)=>{e=r,t=i});function i(e){Object.assign(r,e),delete r.resolve,delete r.reject}return r.status="pending",r.catch(()=>{}),r.resolve=t=>{i({status:"fulfilled",value:t}),e(t)},r.reject=e=>{i({status:"rejected",reason:e}),t(e)},r}function o(e){return Math.min(1e3*2**e,3e4)}function l(e){return(e??"online")!=="online"||a.isOnline()}e.s(["onlineManager",()=>a],14448),e.s(["pendingThenable",()=>n],93803);var u=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function c(e){let r,s=!1,c=0,h=n(),f=()=>i.focusManager.isFocused()&&("always"===e.networkMode||a.isOnline())&&e.canRun(),d=()=>l(e.networkMode)&&e.canRun(),p=e=>{"pending"===h.status&&(r?.(),h.resolve(e))},v=e=>{"pending"===h.status&&(r?.(),h.reject(e))},m=()=>new Promise(t=>{r=e=>{("pending"!==h.status||f())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,"pending"===h.status&&e.onContinue?.()}),g=()=>{let r;if("pending"!==h.status)return;let i=0===c?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(p).catch(r=>{if("pending"!==h.status)return;let i=e.retry??3*!t.isServer,a=e.retryDelay??o,n="function"==typeof a?a(c,r):a,l=!0===i||"number"==typeof i&&cf()?void 0:m()).then(()=>{s?v(r):g()}))})};return{promise:h,status:()=>h.status,cancel:t=>{if("pending"===h.status){let r=new u(t);v(r),e.onCancel?.(r)}},continue:()=>(r?.(),h),cancelRetry:()=>{s=!0},continueRetry:()=>{s=!1},canStart:d,start:()=>(d()?g():m().then(g),h)}}e.s(["CancelledError",()=>u,"canFetch",()=>l,"createRetryer",()=>c],36553);var h=e.i(80166),f=class{#n;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,t.isValidTimeout)(this.gcTime)&&(this.#n=h.timeoutManager.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(t.isServer?1/0:3e5))}clearGcTimeout(){this.#n&&(h.timeoutManager.clearTimeout(this.#n),this.#n=void 0)}};e.s(["Removable",()=>f],88587);var d=class extends f{#o;#l;#u;#c;#h;#f;#d;constructor(e){super(),this.#d=!1,this.#f=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#c=e.client,this.#u=this.#c.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#o=m(this.options),this.state=e.state??this.#o,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#h?.promise}setOptions(e){if(this.options={...this.#f,...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=m(this.options);void 0!==e.data&&(this.setState(v(e.data,e.dataUpdatedAt)),this.#o=e)}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#u.remove(this)}setData(e,r){let i=(0,t.replaceData)(this.state.data,e,this.options);return this.#p({data:i,type:"success",dataUpdatedAt:r?.updatedAt,manual:r?.manual}),i}setState(e,t){this.#p({type:"setState",state:e,setStateOptions:t})}cancel(e){let r=this.#h?.promise;return this.#h?.cancel(e),r?r.then(t.noop).catch(t.noop):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#o)}isActive(){return this.observers.some(e=>!1!==(0,t.resolveEnabled)(e.options.enabled,this))}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===t.skipToken||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===(0,t.resolveStaleTime)(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(e=0){return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!(0,t.timeUntilStale)(this.state.dataUpdatedAt,e))}onFocus(){let e=this.observers.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#h?.continue()}onOnline(){let e=this.observers.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#h?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#u.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#h&&(this.#d?this.#h.cancel({revert:!0}):this.#h.cancelRetry()),this.scheduleGc()),this.#u.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#p({type:"invalidate"})}async fetch(e,r){let i;if("idle"!==this.state.fetchStatus&&this.#h?.status()!=="rejected"){if(void 0!==this.state.data&&r?.cancelRefetch)this.cancel({silent:!0});else if(this.#h)return this.#h.continueRetry(),this.#h.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let s=new AbortController,a=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#d=!0,s.signal)})},n=()=>{let e,i=(0,t.ensureQueryFn)(this.options,r),s=(a(e={client:this.#c,queryKey:this.queryKey,meta:this.meta}),e);return(this.#d=!1,this.options.persister)?this.options.persister(i,s,this):i(s)},o=(a(i={fetchOptions:r,options:this.options,queryKey:this.queryKey,client:this.#c,state:this.state,fetchFn:n}),i);this.options.behavior?.onFetch(o,this),this.#l=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==o.fetchOptions?.meta)&&this.#p({type:"fetch",meta:o.fetchOptions?.meta}),this.#h=c({initialPromise:r?.initialPromise,fn:o.fetchFn,onCancel:e=>{e instanceof u&&e.revert&&this.setState({...this.#l,fetchStatus:"idle"}),s.abort()},onFail:(e,t)=>{this.#p({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#p({type:"pause"})},onContinue:()=>{this.#p({type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0});try{let e=await this.#h.start();if(void 0===e)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#u.config.onSuccess?.(e,this),this.#u.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof u){if(e.silent)return this.#h.promise;else if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw this.#p({type:"error",error:e}),this.#u.config.onError?.(e,this),this.#u.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#p(e){let t=t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...p(t.data,this.options),fetchMeta:e.meta??null};case"success":let r={...t,...v(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#l=e.manual?r:void 0,r;case"error":let i=e.error;return{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}};this.state=t(this.state),r.notifyManager.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#u.notify({query:this,type:"updated",action:e})})}};function p(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:l(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}function v(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function m(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,i=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?i??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}e.s(["Query",()=>d,"fetchState",()=>p],86491)},69230,e=>{"use strict";var t=e.i(75555),r=e.i(40143),i=e.i(86491),s=e.i(15823),a=e.i(93803),n=e.i(19273),o=e.i(80166),l=class extends s.Subscribable{constructor(e,t){super(),this.options=t,this.#c=e,this.#v=null,this.#m=(0,a.pendingThenable)(),this.bindMethods(),this.setOptions(t)}#c;#g=void 0;#y=void 0;#b=void 0;#S;#O;#m;#v;#T;#F;#R;#E;#w;#C;#D=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#g.addObserver(this),u(this.#g,this.options)?this.#I():this.updateResult(),this.#U())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return c(this.#g,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return c(this.#g,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#P(),this.#x(),this.#g.removeObserver(this)}setOptions(e){let t=this.options,r=this.#g;if(this.options=this.#c.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof(0,n.resolveEnabled)(this.options.enabled,this.#g))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#M(),this.#g.setOptions(this.options),t._defaulted&&!(0,n.shallowEqualObjects)(this.options,t)&&this.#c.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#g,observer:this});let i=this.hasListeners();i&&h(this.#g,r,this.options,t)&&this.#I(),this.updateResult(),i&&(this.#g!==r||(0,n.resolveEnabled)(this.options.enabled,this.#g)!==(0,n.resolveEnabled)(t.enabled,this.#g)||(0,n.resolveStaleTime)(this.options.staleTime,this.#g)!==(0,n.resolveStaleTime)(t.staleTime,this.#g))&&this.#_();let s=this.#Q();i&&(this.#g!==r||(0,n.resolveEnabled)(this.options.enabled,this.#g)!==(0,n.resolveEnabled)(t.enabled,this.#g)||s!==this.#C)&&this.#k(s)}getOptimisticResult(e){var t,r;let i=this.#c.getQueryCache().build(this.#c,e),s=this.createResult(i,e);return t=this,r=s,(0,n.shallowEqualObjects)(t.getCurrentResult(),r)||(this.#b=s,this.#O=this.options,this.#S=this.#g.state),s}getCurrentResult(){return this.#b}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),t?.(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==this.#m.status||this.#m.reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){this.#D.add(e)}getCurrentQuery(){return this.#g}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#c.defaultQueryOptions(e),r=this.#c.getQueryCache().build(this.#c,t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return this.#I({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#b))}#I(e){this.#M();let t=this.#g.fetch(this.options,e);return e?.throwOnError||(t=t.catch(n.noop)),t}#_(){this.#P();let e=(0,n.resolveStaleTime)(this.options.staleTime,this.#g);if(n.isServer||this.#b.isStale||!(0,n.isValidTimeout)(e))return;let t=(0,n.timeUntilStale)(this.#b.dataUpdatedAt,e);this.#E=o.timeoutManager.setTimeout(()=>{this.#b.isStale||this.updateResult()},t+1)}#Q(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#g):this.options.refetchInterval)??!1}#k(e){this.#x(),this.#C=e,!n.isServer&&!1!==(0,n.resolveEnabled)(this.options.enabled,this.#g)&&(0,n.isValidTimeout)(this.#C)&&0!==this.#C&&(this.#w=o.timeoutManager.setInterval(()=>{(this.options.refetchIntervalInBackground||t.focusManager.isFocused())&&this.#I()},this.#C))}#U(){this.#_(),this.#k(this.#Q())}#P(){this.#E&&(o.timeoutManager.clearTimeout(this.#E),this.#E=void 0)}#x(){this.#w&&(o.timeoutManager.clearInterval(this.#w),this.#w=void 0)}createResult(e,t){let r,s=this.#g,o=this.options,l=this.#b,c=this.#S,d=this.#O,p=e!==s?e.state:this.#y,{state:v}=e,m={...v},g=!1;if(t._optimisticResults){let r=this.hasListeners(),a=!r&&u(e,t),n=r&&h(e,s,t,o);(a||n)&&(m={...m,...(0,i.fetchState)(v.data,e.options)}),"isRestoring"===t._optimisticResults&&(m.fetchStatus="idle")}let{error:y,errorUpdatedAt:b,status:S}=m;r=m.data;let O=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===S){let e;l?.isPlaceholderData&&t.placeholderData===d?.placeholderData?(e=l.data,O=!0):e="function"==typeof t.placeholderData?t.placeholderData(this.#R?.state.data,this.#R):t.placeholderData,void 0!==e&&(S="success",r=(0,n.replaceData)(l?.data,e,t),g=!0)}if(t.select&&void 0!==r&&!O)if(l&&r===c?.data&&t.select===this.#T)r=this.#F;else try{this.#T=t.select,r=t.select(r),r=(0,n.replaceData)(l?.data,r,t),this.#F=r,this.#v=null}catch(e){this.#v=e}this.#v&&(y=this.#v,r=this.#F,b=Date.now(),S="error");let T="fetching"===m.fetchStatus,F="pending"===S,R="error"===S,E=F&&T,w=void 0!==r,C={status:S,fetchStatus:m.fetchStatus,isPending:F,isSuccess:"success"===S,isError:R,isInitialLoading:E,isLoading:E,data:r,dataUpdatedAt:m.dataUpdatedAt,error:y,errorUpdatedAt:b,failureCount:m.fetchFailureCount,failureReason:m.fetchFailureReason,errorUpdateCount:m.errorUpdateCount,isFetched:m.dataUpdateCount>0||m.errorUpdateCount>0,isFetchedAfterMount:m.dataUpdateCount>p.dataUpdateCount||m.errorUpdateCount>p.errorUpdateCount,isFetching:T,isRefetching:T&&!F,isLoadingError:R&&!w,isPaused:"paused"===m.fetchStatus,isPlaceholderData:g,isRefetchError:R&&w,isStale:f(e,t),refetch:this.refetch,promise:this.#m,isEnabled:!1!==(0,n.resolveEnabled)(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=void 0!==C.data,r="error"===C.status&&!t,i=e=>{r?e.reject(C.error):t&&e.resolve(C.data)},n=()=>{i(this.#m=C.promise=(0,a.pendingThenable)())},o=this.#m;switch(o.status){case"pending":e.queryHash===s.queryHash&&i(o);break;case"fulfilled":(r||C.data!==o.value)&&n();break;case"rejected":r&&C.error===o.reason||n()}}return C}updateResult(){let e=this.#b,t=this.createResult(this.#g,this.options);if(this.#S=this.#g.state,this.#O=this.options,void 0!==this.#S.data&&(this.#R=this.#g),(0,n.shallowEqualObjects)(t,e))return;this.#b=t;let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!this.#D.size)return!0;let i=new Set(r??this.#D);return this.options.throwOnError&&i.add("error"),Object.keys(this.#b).some(t=>this.#b[t]!==e[t]&&i.has(t))};this.#L({listeners:r()})}#M(){let e=this.#c.getQueryCache().build(this.#c,this.options);if(e===this.#g)return;let t=this.#g;this.#g=e,this.#y=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#U()}#L(e){r.notifyManager.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#b)}),this.#c.getQueryCache().notify({query:this.#g,type:"observerResultsUpdated"})})}};function u(e,t){return!1!==(0,n.resolveEnabled)(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==t.retryOnMount)||void 0!==e.state.data&&c(e,t,t.refetchOnMount)}function c(e,t,r){if(!1!==(0,n.resolveEnabled)(t.enabled,e)&&"static"!==(0,n.resolveStaleTime)(t.staleTime,e)){let i="function"==typeof r?r(e):r;return"always"===i||!1!==i&&f(e,t)}return!1}function h(e,t,r,i){return(e!==t||!1===(0,n.resolveEnabled)(i.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&f(e,r)}function f(e,t){return!1!==(0,n.resolveEnabled)(t.enabled,e)&&e.isStaleByTime((0,n.resolveStaleTime)(t.staleTime,e))}e.s(["QueryObserver",()=>l])},12598,e=>{"use strict";var t=e.i(71645),r=e.i(43476),i=t.createContext(void 0),s=e=>{let r=t.useContext(i);if(e)return e;if(!r)throw Error("No QueryClient set, use QueryClientProvider to set one");return r},a=({client:e,children:s})=>(t.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,r.jsx)(i.Provider,{value:e,children:s}));e.s(["QueryClientProvider",()=>a,"useQueryClient",()=>s])},69637,54440,e=>{"use strict";let t;e.i(47167);var r=e.i(71645),i=e.i(19273),s=e.i(40143),a=e.i(12598);e.i(43476);var n=r.createContext((t=!1,{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t})),o=r.createContext(!1);o.Provider;var l=(e,t)=>void 0===t.state.data,u=e=>{if(e.suspense){let t=e=>"static"===e?e:Math.max(e??1e3,1e3),r=e.staleTime;e.staleTime="function"==typeof r?(...e)=>t(r(...e)):t(r),"number"==typeof e.gcTime&&(e.gcTime=Math.max(e.gcTime,1e3))}},c=(e,t)=>e.isLoading&&e.isFetching&&!t,h=(e,t)=>e?.suspense&&t.isPending,f=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function d(e,t,l){let d,p=r.useContext(o),v=r.useContext(n),m=(0,a.useQueryClient)(l),g=m.defaultQueryOptions(e);m.getDefaultOptions().queries?._experimental_beforeQuery?.(g);let y=m.getQueryCache().get(g.queryHash);g._optimisticResults=p?"isRestoring":"optimistic",u(g),d=y?.state.error&&"function"==typeof g.throwOnError?(0,i.shouldThrowError)(g.throwOnError,[y.state.error,y]):g.throwOnError,(g.suspense||g.experimental_prefetchInRender||d)&&!v.isReset()&&(g.retryOnMount=!1),r.useEffect(()=>{v.clearReset()},[v]);let b=!m.getQueryCache().get(g.queryHash),[S]=r.useState(()=>new t(m,g)),O=S.getOptimisticResult(g),T=!p&&!1!==e.subscribed;if(r.useSyncExternalStore(r.useCallback(e=>{let t=T?S.subscribe(s.notifyManager.batchCalls(e)):i.noop;return S.updateResult(),t},[S,T]),()=>S.getCurrentResult(),()=>S.getCurrentResult()),r.useEffect(()=>{S.setOptions(g)},[g,S]),h(g,O))throw f(g,S,v);if((({result:e,errorResetBoundary:t,throwOnError:r,query:s,suspense:a})=>e.isError&&!t.isReset()&&!e.isFetching&&s&&(a&&void 0===e.data||(0,i.shouldThrowError)(r,[e.error,s])))({result:O,errorResetBoundary:v,throwOnError:g.throwOnError,query:y,suspense:g.suspense}))throw O.error;if(m.getDefaultOptions().queries?._experimental_afterQuery?.(g,O),g.experimental_prefetchInRender&&!i.isServer&&c(O,p)){let e=b?f(g,S,v):y?.promise;e?.catch(i.noop).finally(()=>{S.updateResult()})}return g.notifyOnChangeProps?O:S.trackResult(O)}e.s(["defaultThrowOnError",()=>l,"ensureSuspenseTimers",()=>u,"fetchOptimistic",()=>f,"shouldSuspend",()=>h,"willFetch",()=>c],54440),e.s(["useBaseQuery",()=>d],69637)},6112,e=>{"use strict";e.i(13876);var t=e.i(58647);function r(e){return(0,t.useDatablockByName)(e)}e.s(["useDatablock",()=>r])},61921,e=>{e.v(e=>Promise.resolve().then(()=>e(29055)))},25147,e=>{e.v(t=>Promise.all(["static/chunks/8c435435e00c1d09.js"].map(t=>e.l(t))).then(()=>t(63724)))},18599,e=>{e.v(t=>Promise.all(["static/chunks/13f8b467e8aa89cb.js"].map(t=>e.l(t))).then(()=>t(42585)))},84968,e=>{e.v(t=>Promise.all(["static/chunks/6e9a6efec350bf8d.js"].map(t=>e.l(t))).then(()=>t(90208)))},59197,e=>{e.v(t=>Promise.all(["static/chunks/0be79f7f5e0597a7.css","static/chunks/1cf33c843f96e1c9.js"].map(t=>e.l(t))).then(()=>t(94247)))}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/91476c9d2f29d071.js b/docs/_next/static/chunks/91476c9d2f29d071.js new file mode 100644 index 00000000..d42887d4 --- /dev/null +++ b/docs/_next/static/chunks/91476c9d2f29d071.js @@ -0,0 +1,211 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31067,e=>{"use strict";function t(){return(t=Object.assign.bind()).apply(null,arguments)}e.s(["default",()=>t])},47071,99143,e=>{"use strict";var t=e.i(71645),r=e.i(90072),i=e.i(15080),s=e.i(40859);e.s(["useLoader",()=>s.G],99143);var s=s;let n=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function a(e,a){let o=(0,i.useThree)(e=>e.gl),l=(0,s.G)(r.TextureLoader,n(e)?Object.values(e):e);return(0,t.useLayoutEffect)(()=>{null==a||a(l)},[a]),(0,t.useEffect)(()=>{if("initTexture"in o){let e=[];Array.isArray(l)?e=l:l instanceof r.Texture?e=[l]:n(l)&&(e=Object.values(l)),e.forEach(e=>{e instanceof r.Texture&&o.initTexture(e)})}},[o,l]),(0,t.useMemo)(()=>{if(!n(e))return l;{let t={},r=0;for(let i in e)t[i]=l[r++];return t}},[e,l])}a.preload=e=>s.G.preload(r.TextureLoader,e),a.clear=e=>s.G.clear(r.TextureLoader,e),e.s(["useTexture",()=>a],47071)},75567,e=>{"use strict";var t=e.i(90072);let r=new t.ImageBitmapLoader,i=new Map;function s(e,s){let n=i.get(e);if(n)return s&&n.image&&s(n),n;let a=new t.Texture;return a.flipY=!1,i.set(e,a),r.load(e,e=>{a.image=e,a.needsUpdate=!0,s?.(a)}),a}function n(e){let s=i.get(e);return s?s.image?Promise.resolve(s):new Promise(e=>{let t=()=>{s.image?e(s):setTimeout(t,16)};t()}):new Promise((s,n)=>{let a=new t.Texture;a.flipY=!1,i.set(e,a),r.load(e,e=>{a.image=e,a.needsUpdate=!0,s(a)},void 0,n)})}function a(e,r={}){let{repeat:i=[1,1],disableMipmaps:s=!1}=r;return e.wrapS=e.wrapT=t.RepeatWrapping,e.colorSpace=t.SRGBColorSpace,e.repeat.set(...i),e.flipY=!1,e.anisotropy=16,s?(e.generateMipmaps=!1,e.minFilter=t.LinearFilter):(e.generateMipmaps=!0,e.minFilter=t.LinearMipmapLinearFilter),e.magFilter=t.LinearFilter,e.needsUpdate=!0,e}function o(e){let r=new t.DataTexture(e,256,256,t.RedFormat,t.UnsignedByteType);return r.colorSpace=t.NoColorSpace,r.wrapS=r.wrapT=t.RepeatWrapping,r.generateMipmaps=!1,r.minFilter=t.LinearFilter,r.magFilter=t.LinearFilter,r.needsUpdate=!0,r}e.s(["loadTexture",()=>s,"loadTextureAsync",()=>n,"setupMask",()=>o,"setupTexture",()=>a])},47021,e=>{"use strict";var t=e.i(8560);let r=` +#ifdef USE_FOG + // Check fog enabled uniform - allows toggling without shader recompilation + #ifdef USE_VOLUMETRIC_FOG + if (!fogEnabled) { + // Skip all fog calculations when disabled + } else { + #endif + + float dist = vFogDepth; + + // Discard fragments at or beyond visible distance - matches Torque's behavior + // where objects beyond visibleDistance are not rendered at all. + // This prevents fully-fogged geometry from showing as silhouettes against + // the sky's fog-to-sky gradient. + if (dist >= fogFar) { + discard; + } + + // Step 1: Calculate distance-based haze (quadratic falloff) + // Since we discard at fogFar, haze never reaches 1.0 here + float haze = 0.0; + if (dist > fogNear) { + float fogScale = 1.0 / (fogFar - fogNear); + float distFactor = (dist - fogNear) * fogScale - 1.0; + haze = 1.0 - distFactor * distFactor; + } + + // Step 2: Calculate fog volume contributions + // Note: Per-volume colors are NOT used in Tribes 2 ($specialFog defaults to false) + // All fog uses the global fogColor - see Tribes2_Fog_System.md for details + float volumeFog = 0.0; + + #ifdef USE_VOLUMETRIC_FOG + { + #ifdef USE_FOG_WORLD_POSITION + float fragmentHeight = vFogWorldPosition.y; + #else + float fragmentHeight = cameraHeight; + #endif + + float deltaY = fragmentHeight - cameraHeight; + float absDeltaY = abs(deltaY); + + // Determine if we're going up (positive) or down (negative) + if (absDeltaY > 0.01) { + // Non-horizontal ray: ray-march through fog volumes + for (int i = 0; i < 3; i++) { + int offset = i * 4; + float volVisDist = fogVolumeData[offset + 0]; + float volMinH = fogVolumeData[offset + 1]; + float volMaxH = fogVolumeData[offset + 2]; + float volPct = fogVolumeData[offset + 3]; + + // Skip inactive volumes (visibleDistance = 0) + if (volVisDist <= 0.0) continue; + + // Calculate fog factor for this volume + // From Torque: factor = (1 / (volumeVisDist * visFactor)) * percentage + // where visFactor is smVisibleDistanceMod (a user quality pref, default 1.0) + // Since we don't have quality settings, we use visFactor = 1.0 + float factor = (1.0 / volVisDist) * volPct; + + // Find ray intersection with this volume's height range + float rayMinY = min(cameraHeight, fragmentHeight); + float rayMaxY = max(cameraHeight, fragmentHeight); + + // Check if ray intersects volume height range + if (rayMinY < volMaxH && rayMaxY > volMinH) { + float intersectMin = max(rayMinY, volMinH); + float intersectMax = min(rayMaxY, volMaxH); + float intersectHeight = intersectMax - intersectMin; + + // Calculate distance traveled through this volume using similar triangles: + // subDist / dist = intersectHeight / absDeltaY + float subDist = dist * (intersectHeight / absDeltaY); + + // Accumulate fog: fog += subDist * factor + volumeFog += subDist * factor; + } + } + } else { + // Near-horizontal ray: if camera is inside a volume, apply full fog for that volume + for (int i = 0; i < 3; i++) { + int offset = i * 4; + float volVisDist = fogVolumeData[offset + 0]; + float volMinH = fogVolumeData[offset + 1]; + float volMaxH = fogVolumeData[offset + 2]; + float volPct = fogVolumeData[offset + 3]; + + if (volVisDist <= 0.0) continue; + + // If camera is inside this volume, apply fog for full distance + if (cameraHeight >= volMinH && cameraHeight <= volMaxH) { + float factor = (1.0 / volVisDist) * volPct; + volumeFog += dist * factor; + } + } + } + } + #endif + + // Step 3: Combine haze and volume fog + // Torque's clamping: if (bandPct + hazePct > 1) hazePct = 1 - bandPct + // This gives fog volumes priority over haze + float volPct = min(volumeFog, 1.0); + float hazePct = haze; + if (volPct + hazePct > 1.0) { + hazePct = 1.0 - volPct; + } + float fogFactor = hazePct + volPct; + + // Apply fog using global fogColor (per-volume colors not used in Tribes 2) + gl_FragColor.rgb = mix(gl_FragColor.rgb, fogColor, fogFactor); + + #ifdef USE_VOLUMETRIC_FOG + } // end fogEnabled check + #endif +#endif +`;function i(){t.ShaderChunk.fog_pars_fragment=` +#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif + + // Custom volumetric fog uniforms (only defined when USE_VOLUMETRIC_FOG is set) + // Format: [visDist, minH, maxH, percentage] x 3 volumes = 12 floats + #ifdef USE_VOLUMETRIC_FOG + uniform float fogVolumeData[12]; + uniform float cameraHeight; + #endif + + #ifdef USE_FOG_WORLD_POSITION + varying vec3 vFogWorldPosition; + #endif +#endif +`,t.ShaderChunk.fog_fragment=r,t.ShaderChunk.fog_pars_vertex=` +#ifdef USE_FOG + varying float vFogDepth; + #ifdef USE_FOG_WORLD_POSITION + varying vec3 vFogWorldPosition; + #endif +#endif +`,t.ShaderChunk.fog_vertex=` +#ifdef USE_FOG + // Use Euclidean distance from camera, not view-space z-depth + // This ensures fog doesn't change when rotating the camera + vFogDepth = length(mvPosition.xyz); + #ifdef USE_FOG_WORLD_POSITION + vFogWorldPosition = (modelMatrix * vec4(transformed, 1.0)).xyz; + #endif +#endif +`}function s(e,t){e.uniforms.fogVolumeData=t.fogVolumeData,e.uniforms.cameraHeight=t.cameraHeight,e.uniforms.fogEnabled=t.fogEnabled,e.vertexShader=e.vertexShader.replace("#include ",`#include +#ifdef USE_FOG + #define USE_FOG_WORLD_POSITION + #define USE_VOLUMETRIC_FOG + varying vec3 vFogWorldPosition; +#endif`),e.vertexShader=e.vertexShader.replace("#include ",`#include +#ifdef USE_FOG + vFogWorldPosition = (modelMatrix * vec4(transformed, 1.0)).xyz; +#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include +#ifdef USE_FOG + #define USE_VOLUMETRIC_FOG + uniform float fogVolumeData[12]; + uniform float cameraHeight; + uniform bool fogEnabled; + #define USE_FOG_WORLD_POSITION + varying vec3 vFogWorldPosition; +#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",r)}e.s(["fogFragmentShader",0,r,"injectCustomFog",()=>s,"installCustomFogShader",()=>i])},48066,e=>{"use strict";let t={fogVolumeData:{value:new Float32Array(12)},cameraHeight:{value:0},fogEnabled:{value:!0}};function r(e,i,s=!0){t.cameraHeight.value=e,t.fogVolumeData.value.set(i),t.fogEnabled.value=s}function i(){t.cameraHeight.value=0,t.fogVolumeData.value.fill(0),t.fogEnabled.value=!0}function s(e){let t=new Float32Array(12);for(let r=0;r<3;r++){let i=4*r,s=e[r];s&&(t[i+0]=s.visibleDistance,t[i+1]=s.minHeight,t[i+2]=s.maxHeight,t[i+3]=s.percentage)}return t}e.s(["globalFogUniforms",0,t,"packFogVolumeData",()=>s,"resetGlobalFogUniforms",()=>i,"updateGlobalFogUniforms",()=>r])},13876,79473,43595,58647,e=>{"use strict";var t=e.i(932),r=e.i(8155);let i=e=>(t,r,i)=>{let s=i.subscribe;return i.subscribe=(e,t,r)=>{let n=e;if(t){let s=(null==r?void 0:r.equalityFn)||Object.is,a=e(i.getState());n=r=>{let i=e(r);if(!s(a,i)){let e=a;t(a=i,e)}},(null==r?void 0:r.fireImmediately)&&t(a,a)}return s(n)},e(t,r,i)};e.s(["subscribeWithSelector",()=>i],79473);var s=e.i(66748);function n(e){let t=new Map;for(let r of e.state.datablocks.values()){if("tsshapeconstructor"!==r._class)continue;let e=r.baseshape;if("string"!=typeof e)continue;let i=e.toLowerCase(),s=i.replace(/\.dts$/i,"")+"_",n=new Map;for(let e=0;e<=127;e++){let t=r[`sequence${e}`];if("string"!=typeof t)continue;let i=t.indexOf(" ");if(-1===i)continue;let a=t.slice(0,i).toLowerCase(),o=t.slice(i+1).trim().toLowerCase();if(!o||!a.startsWith(s)||!a.endsWith(".dsq"))continue;let l=a.slice(s.length,-4);l&&n.set(o,l)}n.size>0&&t.set(i,n)}return t}function a(e,t,r){let i=new Map;for(let r of e){let e=t.clipAction(r);i.set(r.name.toLowerCase(),e)}if(r)for(let[e,t]of r){let r=i.get(t);r&&!i.has(e)&&i.set(e,r)}return i}function o(e){return e.toLowerCase()}function l(e){let t=o(e.trim());return t.startsWith("$")?t.slice(1):t}e.s(["buildSequenceAliasMap",()=>n,"getAliasedActions",()=>a],43595);let u={runtime:{runtime:null,sequenceAliases:new Map,objectVersionById:{},globalVersionByName:{},objectIdsByName:{},datablockIdsByName:{},lastRuntimeTick:0},playback:{recording:null,status:"stopped",timeMs:0,rate:1,durationMs:0,streamSnapshot:null}},c=(0,r.createStore)()(i(e=>({...u,setRuntime(t){let r=function(e){let t={},r={},i={},s={};for(let r of e.state.objectsById.values())t[r._id]=0,r._name&&(i[o(r._name)]=r._id,r._isDatablock&&(s[o(r._name)]=r._id));for(let t of e.state.globals.keys())r[l(t)]=0;return{objectVersionById:t,globalVersionByName:r,objectIdsByName:i,datablockIdsByName:s}}(t),i=n(t);e(e=>({...e,runtime:{runtime:t,sequenceAliases:i,objectVersionById:r.objectVersionById,globalVersionByName:r.globalVersionByName,objectIdsByName:r.objectIdsByName,datablockIdsByName:r.datablockIdsByName,lastRuntimeTick:0}}))},clearRuntime(){e(e=>({...e,runtime:{runtime:null,sequenceAliases:new Map,objectVersionById:{},globalVersionByName:{},objectIdsByName:{},datablockIdsByName:{},lastRuntimeTick:0}}))},applyRuntimeBatch(t,r){0!==t.length&&e(e=>{let i={...e.runtime.objectVersionById},s={...e.runtime.globalVersionByName},n={...e.runtime.objectIdsByName},a={...e.runtime.datablockIdsByName},u=e=>{null!=e&&(i[e]=(i[e]??0)+1)};for(let e of t){if("object.created"===e.type){let t=e.object;if(u(e.objectId),t._name){let r=o(t._name);n[r]=e.objectId,t._isDatablock&&(a[r]=e.objectId)}u(t._parent?._id);continue}if("object.deleted"===e.type){let t=e.object;if(delete i[e.objectId],t?._name){let e=o(t._name);delete n[e],t._isDatablock&&delete a[e]}u(t?._parent?._id);continue}if("field.changed"===e.type){u(e.objectId);continue}if("global.changed"===e.type){let t=l(e.name);s[t]=(s[t]??0)+1;continue}}let c=r?.tick??(e.runtime.lastRuntimeTick>0?e.runtime.lastRuntimeTick+1:1);return{...e,runtime:{...e.runtime,objectVersionById:i,globalVersionByName:s,objectIdsByName:n,datablockIdsByName:a,lastRuntimeTick:c}}})},setDemoRecording(t){let r=Math.max(0,(t?.duration??0)*1e3);e(e=>({...e,playback:{recording:t,status:"stopped",timeMs:0,rate:1,durationMs:r,streamSnapshot:null}}))},setPlaybackTime(t){e(e=>{var r,i,s;let n=(r=t,i=0,s=e.playback.durationMs,r<0?0:r>s?s:r);return{...e,playback:{...e.playback,timeMs:n}}})},setPlaybackStatus(t){e(e=>({...e,playback:{...e.playback,status:t}}))},setPlaybackRate(t){var r,i,s;let n=Number.isFinite(t)?(i=.01,s=16,(r=t)<.01?.01:r>16?16:r):1;e(e=>({...e,playback:{...e.playback,rate:n}}))},setPlaybackStreamSnapshot(t){e(e=>({...e,playback:{...e.playback,streamSnapshot:t}}))}}))),h=0;function d(){return h}function f(e,t){h+=e*t*1e3}function p(){return c}function m(e,t){return(0,s.useStoreWithEqualityFn)(c,e,t)}function y(e){let r,i,s,n=(0,t.c)(7),a=m(v);n[0]!==e?(r=t=>null==e?-1:t.runtime.objectVersionById[e]??-1,n[0]=e,n[1]=r):r=n[1];let o=m(r);if(null==e||!a||-1===o)return;n[2]!==e||n[3]!==a.state.objectsById?(i=a.state.objectsById.get(e),n[2]=e,n[3]=a.state.objectsById,n[4]=i):i=n[4];let l=i;return n[5]!==l?(s=l?{...l}:void 0,n[5]=l,n[6]=s):s=n[6],s}function v(e){return e.runtime.runtime}function g(e){let r,i,s,n,a,l=(0,t.c)(11),u=m(b);l[0]!==e?(r=e?o(e):"",l[0]=e,l[1]=r):r=l[1];let c=r;l[2]!==c?(i=e=>c?e.runtime.objectIdsByName[c]:void 0,l[2]=c,l[3]=i):i=l[3];let h=m(i);l[4]!==h?(s=e=>null==h?-1:e.runtime.objectVersionById[h]??-1,l[4]=h,l[5]=s):s=l[5];let d=m(s);if(!u||!c||null==h||-1===d)return;l[6]!==h||l[7]!==u.state.objectsById?(n=u.state.objectsById.get(h),l[6]=h,l[7]=u.state.objectsById,l[8]=n):n=l[8];let f=n;return l[9]!==f?(a=f?{...f}:void 0,l[9]=f,l[10]=a):a=l[10],a}function b(e){return e.runtime.runtime}function S(e){let r,i,s,n,a,l=(0,t.c)(11),u=m(R);l[0]!==e?(r=e?o(e):"",l[0]=e,l[1]=r):r=l[1];let c=r;l[2]!==c?(i=e=>c?e.runtime.datablockIdsByName[c]:void 0,l[2]=c,l[3]=i):i=l[3];let h=m(i);l[4]!==h?(s=e=>null==h?-1:e.runtime.objectVersionById[h]??-1,l[4]=h,l[5]=s):s=l[5];let d=m(s);if(!u||!c||null==h||-1===d)return;l[6]!==h||l[7]!==u.state.objectsById?(n=u.state.objectsById.get(h),l[6]=h,l[7]=u.state.objectsById,l[8]=n):n=l[8];let f=n;return l[9]!==f?(a=f?{...f}:void 0,l[9]=f,l[10]=a):a=l[10],a}function R(e){return e.runtime.runtime}function T(e,r){let i,s,n,a,o=(0,t.c)(13);o[0]!==r?(i=void 0===r?[]:r,o[0]=r,o[1]=i):i=o[1];let l=i,u=m(w);o[2]!==e?(s=t=>null==e?-1:t.runtime.objectVersionById[e]??-1,o[2]=e,o[3]=s):s=o[3];let c=m(s);if(null==e){let e;return o[4]!==l?(e=l.map(x),o[4]=l,o[5]=e):e=o[5],e}if(!u||-1===c){let e;return o[6]!==l?(e=l.map(O),o[6]=l,o[7]=e):e=o[7],e}let h=u.state.objectsById;if(o[8]!==e||o[9]!==u.state.objectsById){a=Symbol.for("react.early_return_sentinel");e:{let t=h.get(e);if(!t?._children){let e;o[12]===Symbol.for("react.memo_cache_sentinel")?(e=[],o[12]=e):e=o[12],a=e;break e}n=t._children.map(F)}o[8]=e,o[9]=u.state.objectsById,o[10]=n,o[11]=a}else n=o[10],a=o[11];return a!==Symbol.for("react.early_return_sentinel")?a:n}function F(e){return e._id}function O(e){return e._id}function x(e){return e._id}function w(e){return e.runtime.runtime}c.subscribe(e=>e.playback.status,e=>{"stopped"===e&&(h=0)}),e.s(["advanceEffectClock",()=>f,"demoEffectNow",()=>d,"engineStore",0,c,"useDatablockByName",()=>S,"useEngineSelector",()=>m,"useEngineStoreApi",()=>p,"useRuntimeChildIds",()=>T,"useRuntimeObjectById",()=>y,"useRuntimeObjectByName",()=>g],58647),e.s([],13876)},67191,e=>{e.v({Label:"FloatingLabel-module__8y09Ka__Label"})},89887,60099,e=>{"use strict";let t,r;var i=e.i(43476),s=e.i(932),n=e.i(71645),a=e.i(90072),o=e.i(71753),l=e.i(31067),u=e.i(88014),c=e.i(15080);let h=new a.Vector3,d=new a.Vector3,f=new a.Vector3,p=new a.Vector2;function m(e,t,r){let i=h.setFromMatrixPosition(e.matrixWorld);i.project(t);let s=r.width/2,n=r.height/2;return[i.x*s+s,-(i.y*n)+n]}let y=e=>1e-10>Math.abs(e)?0:e;function v(e,t,r=""){let i="matrix3d(";for(let r=0;16!==r;r++)i+=y(t[r]*e.elements[r])+(15!==r?",":")");return r+i}let g=(t=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>v(e,t)),b=(r=e=>[1/e,1/e,1/e,1,-1/e,-1/e,-1/e,-1,1/e,1/e,1/e,1,1,1,1,1],(e,t)=>v(e,r(t),"translate(-50%,-50%)")),S=n.forwardRef(({children:e,eps:t=.001,style:r,className:i,prepend:s,center:v,fullscreen:S,portal:R,distanceFactor:T,sprite:F=!1,transform:O=!1,occlude:x,onOcclude:w,castShadow:E,receiveShadow:I,material:M,geometry:C,zIndexRange:_=[0x1000037,0],calculatePosition:P=m,as:D="div",wrapperClass:j,pointerEvents:k="auto",...U},Q)=>{let{gl:L,camera:V,scene:B,size:A,raycaster:H,events:W,viewport:q}=(0,c.useThree)(),[N]=n.useState(()=>document.createElement(D)),G=n.useRef(null),z=n.useRef(null),$=n.useRef(0),K=n.useRef([0,0]),Y=n.useRef(null),Z=n.useRef(null),J=(null==R?void 0:R.current)||W.connected||L.domElement.parentNode,X=n.useRef(null),ee=n.useRef(!1),et=n.useMemo(()=>{var e;return x&&"blending"!==x||Array.isArray(x)&&x.length&&(e=x[0])&&"object"==typeof e&&"current"in e},[x]);n.useLayoutEffect(()=>{let e=L.domElement;x&&"blending"===x?(e.style.zIndex=`${Math.floor(_[0]/2)}`,e.style.position="absolute",e.style.pointerEvents="none"):(e.style.zIndex=null,e.style.position=null,e.style.pointerEvents=null)},[x]),n.useLayoutEffect(()=>{if(z.current){let e=G.current=u.createRoot(N);if(B.updateMatrixWorld(),O)N.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{let e=P(z.current,V,A);N.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return J&&(s?J.prepend(N):J.appendChild(N)),()=>{J&&J.removeChild(N),e.unmount()}}},[J,O]),n.useLayoutEffect(()=>{j&&(N.className=j)},[j]);let er=n.useMemo(()=>O?{position:"absolute",top:0,left:0,width:A.width,height:A.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:v?"translate3d(-50%,-50%,0)":"none",...S&&{top:-A.height/2,left:-A.width/2,width:A.width,height:A.height},...r},[r,v,S,A,O]),ei=n.useMemo(()=>({position:"absolute",pointerEvents:k}),[k]);n.useLayoutEffect(()=>{var t,s;ee.current=!1,O?null==(t=G.current)||t.render(n.createElement("div",{ref:Y,style:er},n.createElement("div",{ref:Z,style:ei},n.createElement("div",{ref:Q,className:i,style:r,children:e})))):null==(s=G.current)||s.render(n.createElement("div",{ref:Q,style:er,className:i,children:e}))});let es=n.useRef(!0);(0,o.useFrame)(e=>{if(z.current){V.updateMatrixWorld(),z.current.updateWorldMatrix(!0,!1);let e=O?K.current:P(z.current,V,A);if(O||Math.abs($.current-V.zoom)>t||Math.abs(K.current[0]-e[0])>t||Math.abs(K.current[1]-e[1])>t){var r;let t,i,s,n,o=(r=z.current,t=h.setFromMatrixPosition(r.matrixWorld),i=d.setFromMatrixPosition(V.matrixWorld),s=t.sub(i),n=V.getWorldDirection(f),s.angleTo(n)>Math.PI/2),l=!1;et&&(Array.isArray(x)?l=x.map(e=>e.current):"blending"!==x&&(l=[B]));let u=es.current;l?es.current=function(e,t,r,i){let s=h.setFromMatrixPosition(e.matrixWorld),n=s.clone();n.project(t),p.set(n.x,n.y),r.setFromCamera(p,t);let a=r.intersectObjects(i,!0);if(a.length){let e=a[0].distance;return s.distanceTo(r.ray.origin)({vertexShader:O?void 0:` + /* + This shader is from the THREE's SpriteMaterial. + We need to turn the backing plane into a Sprite + (make it always face the camera) if "transfrom" + is false. + */ + #include + + void main() { + vec2 center = vec2(0., 1.); + float rotation = 0.0; + + // This is somewhat arbitrary, but it seems to work well + // Need to figure out how to derive this dynamically if it even matters + float size = 0.03; + + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + + gl_Position = projectionMatrix * mvPosition; + } + `,fragmentShader:` + void main() { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}),[O]);return n.createElement("group",(0,l.default)({},U,{ref:z}),x&&!et&&n.createElement("mesh",{castShadow:E,receiveShadow:I,ref:X},C||n.createElement("planeGeometry",null),M||n.createElement("shaderMaterial",{side:a.DoubleSide,vertexShader:en.vertexShader,fragmentShader:en.fragmentShader})))});e.s(["Html",()=>S],60099);var R=e.i(67191);let T=[0,0,0],F=new a.Vector3,O=(0,n.memo)(function(e){let t,r,a,l=(0,s.c)(11),{children:u,color:c,position:h,opacity:d}=e,f=void 0===c?"white":c,p=void 0===h?T:h,m=void 0===d?"fadeWithDistance":d,y="fadeWithDistance"===m,v=(0,n.useRef)(null),[g,b]=(0,n.useState)(0!==m),O=(0,n.useRef)(null);return l[0]!==y||l[1]!==g||l[2]!==m?(t=e=>{var t,r,i;let s,{camera:n}=e,a=v.current;if(!a)return;a.getWorldPosition(F);let o=(t=F.x,r=F.y,i=F.z,-((t-(s=n.matrixWorld.elements)[12])*s[8])+-((r-s[13])*s[9])+-((i-s[14])*s[10])<0);if(y){let e=o?1/0:n.position.distanceTo(F),t=e<200;if(g!==t&&b(t),O.current&&t){let t=Math.max(0,Math.min(1,1-e/200));O.current.style.opacity=t.toString()}}else{let e=!o&&0!==m;g!==e&&b(e),O.current&&(O.current.style.opacity=m.toString())}},l[0]=y,l[1]=g,l[2]=m,l[3]=t):t=l[3],(0,o.useFrame)(t),l[4]!==u||l[5]!==f||l[6]!==g||l[7]!==p?(r=g?(0,i.jsx)(S,{position:p,center:!0,children:(0,i.jsx)("div",{ref:O,className:R.default.Label,style:{color:f},children:u})}):null,l[4]=u,l[5]=f,l[6]=g,l[7]=p,l[8]=r):r=l[8],l[9]!==r?(a=(0,i.jsx)("group",{ref:v,children:r}),l[9]=r,l[10]=a):a=l[10],a});e.s(["FloatingLabel",0,O],89887)},19273,80166,e=>{"use strict";e.i(47167);var t={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},r=new class{#e=t;#t=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function i(e){setTimeout(e,0)}e.s(["systemSetTimeoutZero",()=>i,"timeoutManager",()=>r],80166);var s="u"=0&&e!==1/0}function l(e,t){return Math.max(e+(t||0)-Date.now(),0)}function u(e,t){return"function"==typeof e?e(t):e}function c(e,t){return"function"==typeof e?e(t):e}function h(e,t){let{type:r="all",exact:i,fetchStatus:s,predicate:n,queryKey:a,stale:o}=e;if(a){if(i){if(t.queryHash!==f(a,t.options))return!1}else if(!m(t.queryKey,a))return!1}if("all"!==r){let e=t.isActive();if("active"===r&&!e||"inactive"===r&&e)return!1}return("boolean"!=typeof o||t.isStale()===o)&&(!s||s===t.state.fetchStatus)&&(!n||!!n(t))}function d(e,t){let{exact:r,status:i,predicate:s,mutationKey:n}=e;if(n){if(!t.options.mutationKey)return!1;if(r){if(p(t.options.mutationKey)!==p(n))return!1}else if(!m(t.options.mutationKey,n))return!1}return(!i||t.state.status===i)&&(!s||!!s(t))}function f(e,t){return(t?.queryKeyHashFn||p)(e)}function p(e){return JSON.stringify(e,(e,t)=>b(t)?Object.keys(t).sort().reduce((e,r)=>(e[r]=t[r],e),{}):t)}function m(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(r=>m(e[r],t[r]))}var y=Object.prototype.hasOwnProperty;function v(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}function g(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function b(e){if(!S(e))return!1;let t=e.constructor;if(void 0===t)return!0;let r=t.prototype;return!!S(r)&&!!r.hasOwnProperty("isPrototypeOf")&&Object.getPrototypeOf(e)===Object.prototype}function S(e){return"[object Object]"===Object.prototype.toString.call(e)}function R(e){return new Promise(t=>{r.setTimeout(t,e)})}function T(e,t,r){return"function"==typeof r.structuralSharing?r.structuralSharing(e,t):!1!==r.structuralSharing?function e(t,r,i=0){if(t===r)return t;if(i>500)return r;let s=g(t)&&g(r);if(!s&&!(b(t)&&b(r)))return r;let n=(s?t:Object.keys(t)).length,a=s?r:Object.keys(r),o=a.length,l=s?Array(o):{},u=0;for(let c=0;cr?i.slice(1):i}function O(e,t,r=0){let i=[t,...e];return r&&i.length>r?i.slice(0,-1):i}var x=Symbol();function w(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==x?e.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`))}function E(e,t){return"function"==typeof e?e(...t):!!e}function I(e,t,r){let i,s=!1;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),s||(s=!0,i.aborted?r():i.addEventListener("abort",r,{once:!0})),i)}),e}e.s(["addConsumeAwareSignal",()=>I,"addToEnd",()=>F,"addToStart",()=>O,"ensureQueryFn",()=>w,"functionalUpdate",()=>a,"hashKey",()=>p,"hashQueryKeyByOptions",()=>f,"isServer",()=>s,"isValidTimeout",()=>o,"matchMutation",()=>d,"matchQuery",()=>h,"noop",()=>n,"partialMatchKey",()=>m,"replaceData",()=>T,"resolveEnabled",()=>c,"resolveStaleTime",()=>u,"shallowEqualObjects",()=>v,"shouldThrowError",()=>E,"skipToken",()=>x,"sleep",()=>R,"timeUntilStale",()=>l],19273)},40143,e=>{"use strict";let t,r,i,s,n,a;var o=e.i(80166).systemSetTimeoutZero,l=(t=[],r=0,i=e=>{e()},s=e=>{e()},n=o,{batch:e=>{let a;r++;try{a=e()}finally{let e;--r||(e=t,t=[],e.length&&n(()=>{s(()=>{e.forEach(e=>{i(e)})})}))}return a},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a=e=>{r?t.push(e):n(()=>{i(e)})},setNotifyFunction:e=>{i=e},setBatchNotifyFunction:e=>{s=e},setScheduler:e=>{n=e}});e.s(["notifyManager",()=>l])},15823,e=>{"use strict";var t=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}};e.s(["Subscribable",()=>t])},75555,e=>{"use strict";var t=e.i(15823),r=e.i(19273),i=new class extends t.Subscribable{#r;#i;#s;constructor(){super(),this.#s=e=>{if(!r.isServer&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#i||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#i?.(),this.#i=void 0)}setEventListener(e){this.#s=e,this.#i?.(),this.#i=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){this.#r!==e&&(this.#r=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#r?this.#r:globalThis.document?.visibilityState!=="hidden"}};e.s(["focusManager",()=>i])},86491,14448,93803,36553,88587,e=>{"use strict";e.i(47167);var t=e.i(19273),r=e.i(40143),i=e.i(75555),s=e.i(15823),n=new class extends s.Subscribable{#n=!0;#i;#s;constructor(){super(),this.#s=e=>{if(!t.isServer&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#i||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#i?.(),this.#i=void 0)}setEventListener(e){this.#s=e,this.#i?.(),this.#i=e(this.setOnline.bind(this))}setOnline(e){this.#n!==e&&(this.#n=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#n}};function a(){let e,t,r=new Promise((r,i)=>{e=r,t=i});function i(e){Object.assign(r,e),delete r.resolve,delete r.reject}return r.status="pending",r.catch(()=>{}),r.resolve=t=>{i({status:"fulfilled",value:t}),e(t)},r.reject=e=>{i({status:"rejected",reason:e}),t(e)},r}function o(e){return Math.min(1e3*2**e,3e4)}function l(e){return(e??"online")!=="online"||n.isOnline()}e.s(["onlineManager",()=>n],14448),e.s(["pendingThenable",()=>a],93803);var u=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function c(e){let r,s=!1,c=0,h=a(),d=()=>i.focusManager.isFocused()&&("always"===e.networkMode||n.isOnline())&&e.canRun(),f=()=>l(e.networkMode)&&e.canRun(),p=e=>{"pending"===h.status&&(r?.(),h.resolve(e))},m=e=>{"pending"===h.status&&(r?.(),h.reject(e))},y=()=>new Promise(t=>{r=e=>{("pending"!==h.status||d())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,"pending"===h.status&&e.onContinue?.()}),v=()=>{let r;if("pending"!==h.status)return;let i=0===c?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(p).catch(r=>{if("pending"!==h.status)return;let i=e.retry??3*!t.isServer,n=e.retryDelay??o,a="function"==typeof n?n(c,r):n,l=!0===i||"number"==typeof i&&cd()?void 0:y()).then(()=>{s?m(r):v()}))})};return{promise:h,status:()=>h.status,cancel:t=>{if("pending"===h.status){let r=new u(t);m(r),e.onCancel?.(r)}},continue:()=>(r?.(),h),cancelRetry:()=>{s=!0},continueRetry:()=>{s=!1},canStart:f,start:()=>(f()?v():y().then(v),h)}}e.s(["CancelledError",()=>u,"canFetch",()=>l,"createRetryer",()=>c],36553);var h=e.i(80166),d=class{#a;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,t.isValidTimeout)(this.gcTime)&&(this.#a=h.timeoutManager.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(t.isServer?1/0:3e5))}clearGcTimeout(){this.#a&&(h.timeoutManager.clearTimeout(this.#a),this.#a=void 0)}};e.s(["Removable",()=>d],88587);var f=class extends d{#o;#l;#u;#c;#h;#d;#f;constructor(e){super(),this.#f=!1,this.#d=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#c=e.client,this.#u=this.#c.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#o=y(this.options),this.state=e.state??this.#o,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#h?.promise}setOptions(e){if(this.options={...this.#d,...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=y(this.options);void 0!==e.data&&(this.setState(m(e.data,e.dataUpdatedAt)),this.#o=e)}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#u.remove(this)}setData(e,r){let i=(0,t.replaceData)(this.state.data,e,this.options);return this.#p({data:i,type:"success",dataUpdatedAt:r?.updatedAt,manual:r?.manual}),i}setState(e,t){this.#p({type:"setState",state:e,setStateOptions:t})}cancel(e){let r=this.#h?.promise;return this.#h?.cancel(e),r?r.then(t.noop).catch(t.noop):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#o)}isActive(){return this.observers.some(e=>!1!==(0,t.resolveEnabled)(e.options.enabled,this))}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===t.skipToken||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===(0,t.resolveStaleTime)(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(e=0){return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!(0,t.timeUntilStale)(this.state.dataUpdatedAt,e))}onFocus(){let e=this.observers.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#h?.continue()}onOnline(){let e=this.observers.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#h?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#u.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#h&&(this.#f?this.#h.cancel({revert:!0}):this.#h.cancelRetry()),this.scheduleGc()),this.#u.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#p({type:"invalidate"})}async fetch(e,r){let i;if("idle"!==this.state.fetchStatus&&this.#h?.status()!=="rejected"){if(void 0!==this.state.data&&r?.cancelRefetch)this.cancel({silent:!0});else if(this.#h)return this.#h.continueRetry(),this.#h.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let s=new AbortController,n=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#f=!0,s.signal)})},a=()=>{let e,i=(0,t.ensureQueryFn)(this.options,r),s=(n(e={client:this.#c,queryKey:this.queryKey,meta:this.meta}),e);return(this.#f=!1,this.options.persister)?this.options.persister(i,s,this):i(s)},o=(n(i={fetchOptions:r,options:this.options,queryKey:this.queryKey,client:this.#c,state:this.state,fetchFn:a}),i);this.options.behavior?.onFetch(o,this),this.#l=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==o.fetchOptions?.meta)&&this.#p({type:"fetch",meta:o.fetchOptions?.meta}),this.#h=c({initialPromise:r?.initialPromise,fn:o.fetchFn,onCancel:e=>{e instanceof u&&e.revert&&this.setState({...this.#l,fetchStatus:"idle"}),s.abort()},onFail:(e,t)=>{this.#p({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#p({type:"pause"})},onContinue:()=>{this.#p({type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0});try{let e=await this.#h.start();if(void 0===e)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#u.config.onSuccess?.(e,this),this.#u.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof u){if(e.silent)return this.#h.promise;else if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw this.#p({type:"error",error:e}),this.#u.config.onError?.(e,this),this.#u.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#p(e){let t=t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...p(t.data,this.options),fetchMeta:e.meta??null};case"success":let r={...t,...m(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#l=e.manual?r:void 0,r;case"error":let i=e.error;return{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}};this.state=t(this.state),r.notifyManager.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#u.notify({query:this,type:"updated",action:e})})}};function p(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:l(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}function m(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function y(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,i=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?i??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}e.s(["Query",()=>f,"fetchState",()=>p],86491)},12598,e=>{"use strict";var t=e.i(71645),r=e.i(43476),i=t.createContext(void 0),s=e=>{let r=t.useContext(i);if(e)return e;if(!r)throw Error("No QueryClient set, use QueryClientProvider to set one");return r},n=({client:e,children:s})=>(t.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,r.jsx)(i.Provider,{value:e,children:s}));e.s(["QueryClientProvider",()=>n,"useQueryClient",()=>s])},69230,e=>{"use strict";var t=e.i(75555),r=e.i(40143),i=e.i(86491),s=e.i(15823),n=e.i(93803),a=e.i(19273),o=e.i(80166),l=class extends s.Subscribable{constructor(e,t){super(),this.options=t,this.#c=e,this.#m=null,this.#y=(0,n.pendingThenable)(),this.bindMethods(),this.setOptions(t)}#c;#v=void 0;#g=void 0;#b=void 0;#S;#R;#y;#m;#T;#F;#O;#x;#w;#E;#I=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#v.addObserver(this),u(this.#v,this.options)?this.#M():this.updateResult(),this.#C())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return c(this.#v,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return c(this.#v,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#_(),this.#P(),this.#v.removeObserver(this)}setOptions(e){let t=this.options,r=this.#v;if(this.options=this.#c.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof(0,a.resolveEnabled)(this.options.enabled,this.#v))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#D(),this.#v.setOptions(this.options),t._defaulted&&!(0,a.shallowEqualObjects)(this.options,t)&&this.#c.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#v,observer:this});let i=this.hasListeners();i&&h(this.#v,r,this.options,t)&&this.#M(),this.updateResult(),i&&(this.#v!==r||(0,a.resolveEnabled)(this.options.enabled,this.#v)!==(0,a.resolveEnabled)(t.enabled,this.#v)||(0,a.resolveStaleTime)(this.options.staleTime,this.#v)!==(0,a.resolveStaleTime)(t.staleTime,this.#v))&&this.#j();let s=this.#k();i&&(this.#v!==r||(0,a.resolveEnabled)(this.options.enabled,this.#v)!==(0,a.resolveEnabled)(t.enabled,this.#v)||s!==this.#E)&&this.#U(s)}getOptimisticResult(e){var t,r;let i=this.#c.getQueryCache().build(this.#c,e),s=this.createResult(i,e);return t=this,r=s,(0,a.shallowEqualObjects)(t.getCurrentResult(),r)||(this.#b=s,this.#R=this.options,this.#S=this.#v.state),s}getCurrentResult(){return this.#b}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),t?.(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==this.#y.status||this.#y.reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){this.#I.add(e)}getCurrentQuery(){return this.#v}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#c.defaultQueryOptions(e),r=this.#c.getQueryCache().build(this.#c,t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return this.#M({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#b))}#M(e){this.#D();let t=this.#v.fetch(this.options,e);return e?.throwOnError||(t=t.catch(a.noop)),t}#j(){this.#_();let e=(0,a.resolveStaleTime)(this.options.staleTime,this.#v);if(a.isServer||this.#b.isStale||!(0,a.isValidTimeout)(e))return;let t=(0,a.timeUntilStale)(this.#b.dataUpdatedAt,e);this.#x=o.timeoutManager.setTimeout(()=>{this.#b.isStale||this.updateResult()},t+1)}#k(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#v):this.options.refetchInterval)??!1}#U(e){this.#P(),this.#E=e,!a.isServer&&!1!==(0,a.resolveEnabled)(this.options.enabled,this.#v)&&(0,a.isValidTimeout)(this.#E)&&0!==this.#E&&(this.#w=o.timeoutManager.setInterval(()=>{(this.options.refetchIntervalInBackground||t.focusManager.isFocused())&&this.#M()},this.#E))}#C(){this.#j(),this.#U(this.#k())}#_(){this.#x&&(o.timeoutManager.clearTimeout(this.#x),this.#x=void 0)}#P(){this.#w&&(o.timeoutManager.clearInterval(this.#w),this.#w=void 0)}createResult(e,t){let r,s=this.#v,o=this.options,l=this.#b,c=this.#S,f=this.#R,p=e!==s?e.state:this.#g,{state:m}=e,y={...m},v=!1;if(t._optimisticResults){let r=this.hasListeners(),n=!r&&u(e,t),a=r&&h(e,s,t,o);(n||a)&&(y={...y,...(0,i.fetchState)(m.data,e.options)}),"isRestoring"===t._optimisticResults&&(y.fetchStatus="idle")}let{error:g,errorUpdatedAt:b,status:S}=y;r=y.data;let R=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===S){let e;l?.isPlaceholderData&&t.placeholderData===f?.placeholderData?(e=l.data,R=!0):e="function"==typeof t.placeholderData?t.placeholderData(this.#O?.state.data,this.#O):t.placeholderData,void 0!==e&&(S="success",r=(0,a.replaceData)(l?.data,e,t),v=!0)}if(t.select&&void 0!==r&&!R)if(l&&r===c?.data&&t.select===this.#T)r=this.#F;else try{this.#T=t.select,r=t.select(r),r=(0,a.replaceData)(l?.data,r,t),this.#F=r,this.#m=null}catch(e){this.#m=e}this.#m&&(g=this.#m,r=this.#F,b=Date.now(),S="error");let T="fetching"===y.fetchStatus,F="pending"===S,O="error"===S,x=F&&T,w=void 0!==r,E={status:S,fetchStatus:y.fetchStatus,isPending:F,isSuccess:"success"===S,isError:O,isInitialLoading:x,isLoading:x,data:r,dataUpdatedAt:y.dataUpdatedAt,error:g,errorUpdatedAt:b,failureCount:y.fetchFailureCount,failureReason:y.fetchFailureReason,errorUpdateCount:y.errorUpdateCount,isFetched:y.dataUpdateCount>0||y.errorUpdateCount>0,isFetchedAfterMount:y.dataUpdateCount>p.dataUpdateCount||y.errorUpdateCount>p.errorUpdateCount,isFetching:T,isRefetching:T&&!F,isLoadingError:O&&!w,isPaused:"paused"===y.fetchStatus,isPlaceholderData:v,isRefetchError:O&&w,isStale:d(e,t),refetch:this.refetch,promise:this.#y,isEnabled:!1!==(0,a.resolveEnabled)(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=void 0!==E.data,r="error"===E.status&&!t,i=e=>{r?e.reject(E.error):t&&e.resolve(E.data)},a=()=>{i(this.#y=E.promise=(0,n.pendingThenable)())},o=this.#y;switch(o.status){case"pending":e.queryHash===s.queryHash&&i(o);break;case"fulfilled":(r||E.data!==o.value)&&a();break;case"rejected":r&&E.error===o.reason||a()}}return E}updateResult(){let e=this.#b,t=this.createResult(this.#v,this.options);if(this.#S=this.#v.state,this.#R=this.options,void 0!==this.#S.data&&(this.#O=this.#v),(0,a.shallowEqualObjects)(t,e))return;this.#b=t;let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!this.#I.size)return!0;let i=new Set(r??this.#I);return this.options.throwOnError&&i.add("error"),Object.keys(this.#b).some(t=>this.#b[t]!==e[t]&&i.has(t))};this.#Q({listeners:r()})}#D(){let e=this.#c.getQueryCache().build(this.#c,this.options);if(e===this.#v)return;let t=this.#v;this.#v=e,this.#g=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#C()}#Q(e){r.notifyManager.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#b)}),this.#c.getQueryCache().notify({query:this.#v,type:"observerResultsUpdated"})})}};function u(e,t){return!1!==(0,a.resolveEnabled)(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==t.retryOnMount)||void 0!==e.state.data&&c(e,t,t.refetchOnMount)}function c(e,t,r){if(!1!==(0,a.resolveEnabled)(t.enabled,e)&&"static"!==(0,a.resolveStaleTime)(t.staleTime,e)){let i="function"==typeof r?r(e):r;return"always"===i||!1!==i&&d(e,t)}return!1}function h(e,t,r,i){return(e!==t||!1===(0,a.resolveEnabled)(i.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&d(e,r)}function d(e,t){return!1!==(0,a.resolveEnabled)(t.enabled,e)&&e.isStaleByTime((0,a.resolveStaleTime)(t.staleTime,e))}e.s(["QueryObserver",()=>l])},69637,54440,e=>{"use strict";let t;e.i(47167);var r=e.i(71645),i=e.i(19273),s=e.i(40143),n=e.i(12598);e.i(43476);var a=r.createContext((t=!1,{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t})),o=r.createContext(!1);o.Provider;var l=(e,t)=>void 0===t.state.data,u=e=>{if(e.suspense){let t=e=>"static"===e?e:Math.max(e??1e3,1e3),r=e.staleTime;e.staleTime="function"==typeof r?(...e)=>t(r(...e)):t(r),"number"==typeof e.gcTime&&(e.gcTime=Math.max(e.gcTime,1e3))}},c=(e,t)=>e.isLoading&&e.isFetching&&!t,h=(e,t)=>e?.suspense&&t.isPending,d=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function f(e,t,l){let f,p=r.useContext(o),m=r.useContext(a),y=(0,n.useQueryClient)(l),v=y.defaultQueryOptions(e);y.getDefaultOptions().queries?._experimental_beforeQuery?.(v);let g=y.getQueryCache().get(v.queryHash);v._optimisticResults=p?"isRestoring":"optimistic",u(v),f=g?.state.error&&"function"==typeof v.throwOnError?(0,i.shouldThrowError)(v.throwOnError,[g.state.error,g]):v.throwOnError,(v.suspense||v.experimental_prefetchInRender||f)&&!m.isReset()&&(v.retryOnMount=!1),r.useEffect(()=>{m.clearReset()},[m]);let b=!y.getQueryCache().get(v.queryHash),[S]=r.useState(()=>new t(y,v)),R=S.getOptimisticResult(v),T=!p&&!1!==e.subscribed;if(r.useSyncExternalStore(r.useCallback(e=>{let t=T?S.subscribe(s.notifyManager.batchCalls(e)):i.noop;return S.updateResult(),t},[S,T]),()=>S.getCurrentResult(),()=>S.getCurrentResult()),r.useEffect(()=>{S.setOptions(v)},[v,S]),h(v,R))throw d(v,S,m);if((({result:e,errorResetBoundary:t,throwOnError:r,query:s,suspense:n})=>e.isError&&!t.isReset()&&!e.isFetching&&s&&(n&&void 0===e.data||(0,i.shouldThrowError)(r,[e.error,s])))({result:R,errorResetBoundary:m,throwOnError:v.throwOnError,query:g,suspense:v.suspense}))throw R.error;if(y.getDefaultOptions().queries?._experimental_afterQuery?.(v,R),v.experimental_prefetchInRender&&!i.isServer&&c(R,p)){let e=b?d(v,S,m):g?.promise;e?.catch(i.noop).finally(()=>{S.updateResult()})}return v.notifyOnChangeProps?R:S.trackResult(R)}e.s(["defaultThrowOnError",()=>l,"ensureSuspenseTimers",()=>u,"fetchOptimistic",()=>d,"shouldSuspend",()=>h,"willFetch",()=>c],54440),e.s(["useBaseQuery",()=>f],69637)}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/c0475cead0a67c33.js b/docs/_next/static/chunks/c0475cead0a67c33.js new file mode 100644 index 00000000..acc05d30 --- /dev/null +++ b/docs/_next/static/chunks/c0475cead0a67c33.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,75056,e=>{"use strict";var t=e.i(40859),r=e.i(71645),n=e.i(8560),i=e.i(90072);e.s(["ACESFilmicToneMapping",()=>i.ACESFilmicToneMapping,"AddEquation",()=>i.AddEquation,"AddOperation",()=>i.AddOperation,"AdditiveAnimationBlendMode",()=>i.AdditiveAnimationBlendMode,"AdditiveBlending",()=>i.AdditiveBlending,"AgXToneMapping",()=>i.AgXToneMapping,"AlphaFormat",()=>i.AlphaFormat,"AlwaysCompare",()=>i.AlwaysCompare,"AlwaysDepth",()=>i.AlwaysDepth,"AlwaysStencilFunc",()=>i.AlwaysStencilFunc,"AmbientLight",()=>i.AmbientLight,"AnimationAction",()=>i.AnimationAction,"AnimationClip",()=>i.AnimationClip,"AnimationLoader",()=>i.AnimationLoader,"AnimationMixer",()=>i.AnimationMixer,"AnimationObjectGroup",()=>i.AnimationObjectGroup,"AnimationUtils",()=>i.AnimationUtils,"ArcCurve",()=>i.ArcCurve,"ArrayCamera",()=>i.ArrayCamera,"ArrowHelper",()=>i.ArrowHelper,"AttachedBindMode",()=>i.AttachedBindMode,"Audio",()=>i.Audio,"AudioAnalyser",()=>i.AudioAnalyser,"AudioContext",()=>i.AudioContext,"AudioListener",()=>i.AudioListener,"AudioLoader",()=>i.AudioLoader,"AxesHelper",()=>i.AxesHelper,"BackSide",()=>i.BackSide,"BasicDepthPacking",()=>i.BasicDepthPacking,"BasicShadowMap",()=>i.BasicShadowMap,"BatchedMesh",()=>i.BatchedMesh,"Bone",()=>i.Bone,"BooleanKeyframeTrack",()=>i.BooleanKeyframeTrack,"Box2",()=>i.Box2,"Box3",()=>i.Box3,"Box3Helper",()=>i.Box3Helper,"BoxGeometry",()=>i.BoxGeometry,"BoxHelper",()=>i.BoxHelper,"BufferAttribute",()=>i.BufferAttribute,"BufferGeometry",()=>i.BufferGeometry,"BufferGeometryLoader",()=>i.BufferGeometryLoader,"ByteType",()=>i.ByteType,"Cache",()=>i.Cache,"Camera",()=>i.Camera,"CameraHelper",()=>i.CameraHelper,"CanvasTexture",()=>i.CanvasTexture,"CapsuleGeometry",()=>i.CapsuleGeometry,"CatmullRomCurve3",()=>i.CatmullRomCurve3,"CineonToneMapping",()=>i.CineonToneMapping,"CircleGeometry",()=>i.CircleGeometry,"ClampToEdgeWrapping",()=>i.ClampToEdgeWrapping,"Clock",()=>i.Clock,"Color",()=>i.Color,"ColorKeyframeTrack",()=>i.ColorKeyframeTrack,"ColorManagement",()=>i.ColorManagement,"CompressedArrayTexture",()=>i.CompressedArrayTexture,"CompressedCubeTexture",()=>i.CompressedCubeTexture,"CompressedTexture",()=>i.CompressedTexture,"CompressedTextureLoader",()=>i.CompressedTextureLoader,"ConeGeometry",()=>i.ConeGeometry,"ConstantAlphaFactor",()=>i.ConstantAlphaFactor,"ConstantColorFactor",()=>i.ConstantColorFactor,"Controls",()=>i.Controls,"CubeCamera",()=>i.CubeCamera,"CubeDepthTexture",()=>i.CubeDepthTexture,"CubeReflectionMapping",()=>i.CubeReflectionMapping,"CubeRefractionMapping",()=>i.CubeRefractionMapping,"CubeTexture",()=>i.CubeTexture,"CubeTextureLoader",()=>i.CubeTextureLoader,"CubeUVReflectionMapping",()=>i.CubeUVReflectionMapping,"CubicBezierCurve",()=>i.CubicBezierCurve,"CubicBezierCurve3",()=>i.CubicBezierCurve3,"CubicInterpolant",()=>i.CubicInterpolant,"CullFaceBack",()=>i.CullFaceBack,"CullFaceFront",()=>i.CullFaceFront,"CullFaceFrontBack",()=>i.CullFaceFrontBack,"CullFaceNone",()=>i.CullFaceNone,"Curve",()=>i.Curve,"CurvePath",()=>i.CurvePath,"CustomBlending",()=>i.CustomBlending,"CustomToneMapping",()=>i.CustomToneMapping,"CylinderGeometry",()=>i.CylinderGeometry,"Cylindrical",()=>i.Cylindrical,"Data3DTexture",()=>i.Data3DTexture,"DataArrayTexture",()=>i.DataArrayTexture,"DataTexture",()=>i.DataTexture,"DataTextureLoader",()=>i.DataTextureLoader,"DataUtils",()=>i.DataUtils,"DecrementStencilOp",()=>i.DecrementStencilOp,"DecrementWrapStencilOp",()=>i.DecrementWrapStencilOp,"DefaultLoadingManager",()=>i.DefaultLoadingManager,"DepthFormat",()=>i.DepthFormat,"DepthStencilFormat",()=>i.DepthStencilFormat,"DepthTexture",()=>i.DepthTexture,"DetachedBindMode",()=>i.DetachedBindMode,"DirectionalLight",()=>i.DirectionalLight,"DirectionalLightHelper",()=>i.DirectionalLightHelper,"DiscreteInterpolant",()=>i.DiscreteInterpolant,"DodecahedronGeometry",()=>i.DodecahedronGeometry,"DoubleSide",()=>i.DoubleSide,"DstAlphaFactor",()=>i.DstAlphaFactor,"DstColorFactor",()=>i.DstColorFactor,"DynamicCopyUsage",()=>i.DynamicCopyUsage,"DynamicDrawUsage",()=>i.DynamicDrawUsage,"DynamicReadUsage",()=>i.DynamicReadUsage,"EdgesGeometry",()=>i.EdgesGeometry,"EllipseCurve",()=>i.EllipseCurve,"EqualCompare",()=>i.EqualCompare,"EqualDepth",()=>i.EqualDepth,"EqualStencilFunc",()=>i.EqualStencilFunc,"EquirectangularReflectionMapping",()=>i.EquirectangularReflectionMapping,"EquirectangularRefractionMapping",()=>i.EquirectangularRefractionMapping,"Euler",()=>i.Euler,"EventDispatcher",()=>i.EventDispatcher,"ExternalTexture",()=>i.ExternalTexture,"ExtrudeGeometry",()=>i.ExtrudeGeometry,"FileLoader",()=>i.FileLoader,"Float16BufferAttribute",()=>i.Float16BufferAttribute,"Float32BufferAttribute",()=>i.Float32BufferAttribute,"FloatType",()=>i.FloatType,"Fog",()=>i.Fog,"FogExp2",()=>i.FogExp2,"FramebufferTexture",()=>i.FramebufferTexture,"FrontSide",()=>i.FrontSide,"Frustum",()=>i.Frustum,"FrustumArray",()=>i.FrustumArray,"GLBufferAttribute",()=>i.GLBufferAttribute,"GLSL1",()=>i.GLSL1,"GLSL3",()=>i.GLSL3,"GreaterCompare",()=>i.GreaterCompare,"GreaterDepth",()=>i.GreaterDepth,"GreaterEqualCompare",()=>i.GreaterEqualCompare,"GreaterEqualDepth",()=>i.GreaterEqualDepth,"GreaterEqualStencilFunc",()=>i.GreaterEqualStencilFunc,"GreaterStencilFunc",()=>i.GreaterStencilFunc,"GridHelper",()=>i.GridHelper,"Group",()=>i.Group,"HalfFloatType",()=>i.HalfFloatType,"HemisphereLight",()=>i.HemisphereLight,"HemisphereLightHelper",()=>i.HemisphereLightHelper,"IcosahedronGeometry",()=>i.IcosahedronGeometry,"ImageBitmapLoader",()=>i.ImageBitmapLoader,"ImageLoader",()=>i.ImageLoader,"ImageUtils",()=>i.ImageUtils,"IncrementStencilOp",()=>i.IncrementStencilOp,"IncrementWrapStencilOp",()=>i.IncrementWrapStencilOp,"InstancedBufferAttribute",()=>i.InstancedBufferAttribute,"InstancedBufferGeometry",()=>i.InstancedBufferGeometry,"InstancedInterleavedBuffer",()=>i.InstancedInterleavedBuffer,"InstancedMesh",()=>i.InstancedMesh,"Int16BufferAttribute",()=>i.Int16BufferAttribute,"Int32BufferAttribute",()=>i.Int32BufferAttribute,"Int8BufferAttribute",()=>i.Int8BufferAttribute,"IntType",()=>i.IntType,"InterleavedBuffer",()=>i.InterleavedBuffer,"InterleavedBufferAttribute",()=>i.InterleavedBufferAttribute,"Interpolant",()=>i.Interpolant,"InterpolateDiscrete",()=>i.InterpolateDiscrete,"InterpolateLinear",()=>i.InterpolateLinear,"InterpolateSmooth",()=>i.InterpolateSmooth,"InterpolationSamplingMode",()=>i.InterpolationSamplingMode,"InterpolationSamplingType",()=>i.InterpolationSamplingType,"InvertStencilOp",()=>i.InvertStencilOp,"KeepStencilOp",()=>i.KeepStencilOp,"KeyframeTrack",()=>i.KeyframeTrack,"LOD",()=>i.LOD,"LatheGeometry",()=>i.LatheGeometry,"Layers",()=>i.Layers,"LessCompare",()=>i.LessCompare,"LessDepth",()=>i.LessDepth,"LessEqualCompare",()=>i.LessEqualCompare,"LessEqualDepth",()=>i.LessEqualDepth,"LessEqualStencilFunc",()=>i.LessEqualStencilFunc,"LessStencilFunc",()=>i.LessStencilFunc,"Light",()=>i.Light,"LightProbe",()=>i.LightProbe,"Line",()=>i.Line,"Line3",()=>i.Line3,"LineBasicMaterial",()=>i.LineBasicMaterial,"LineCurve",()=>i.LineCurve,"LineCurve3",()=>i.LineCurve3,"LineDashedMaterial",()=>i.LineDashedMaterial,"LineLoop",()=>i.LineLoop,"LineSegments",()=>i.LineSegments,"LinearFilter",()=>i.LinearFilter,"LinearInterpolant",()=>i.LinearInterpolant,"LinearMipMapLinearFilter",()=>i.LinearMipMapLinearFilter,"LinearMipMapNearestFilter",()=>i.LinearMipMapNearestFilter,"LinearMipmapLinearFilter",()=>i.LinearMipmapLinearFilter,"LinearMipmapNearestFilter",()=>i.LinearMipmapNearestFilter,"LinearSRGBColorSpace",()=>i.LinearSRGBColorSpace,"LinearToneMapping",()=>i.LinearToneMapping,"LinearTransfer",()=>i.LinearTransfer,"Loader",()=>i.Loader,"LoaderUtils",()=>i.LoaderUtils,"LoadingManager",()=>i.LoadingManager,"LoopOnce",()=>i.LoopOnce,"LoopPingPong",()=>i.LoopPingPong,"LoopRepeat",()=>i.LoopRepeat,"MOUSE",()=>i.MOUSE,"Material",()=>i.Material,"MaterialLoader",()=>i.MaterialLoader,"MathUtils",()=>i.MathUtils,"Matrix2",()=>i.Matrix2,"Matrix3",()=>i.Matrix3,"Matrix4",()=>i.Matrix4,"MaxEquation",()=>i.MaxEquation,"Mesh",()=>i.Mesh,"MeshBasicMaterial",()=>i.MeshBasicMaterial,"MeshDepthMaterial",()=>i.MeshDepthMaterial,"MeshDistanceMaterial",()=>i.MeshDistanceMaterial,"MeshLambertMaterial",()=>i.MeshLambertMaterial,"MeshMatcapMaterial",()=>i.MeshMatcapMaterial,"MeshNormalMaterial",()=>i.MeshNormalMaterial,"MeshPhongMaterial",()=>i.MeshPhongMaterial,"MeshPhysicalMaterial",()=>i.MeshPhysicalMaterial,"MeshStandardMaterial",()=>i.MeshStandardMaterial,"MeshToonMaterial",()=>i.MeshToonMaterial,"MinEquation",()=>i.MinEquation,"MirroredRepeatWrapping",()=>i.MirroredRepeatWrapping,"MixOperation",()=>i.MixOperation,"MultiplyBlending",()=>i.MultiplyBlending,"MultiplyOperation",()=>i.MultiplyOperation,"NearestFilter",()=>i.NearestFilter,"NearestMipMapLinearFilter",()=>i.NearestMipMapLinearFilter,"NearestMipMapNearestFilter",()=>i.NearestMipMapNearestFilter,"NearestMipmapLinearFilter",()=>i.NearestMipmapLinearFilter,"NearestMipmapNearestFilter",()=>i.NearestMipmapNearestFilter,"NeutralToneMapping",()=>i.NeutralToneMapping,"NeverCompare",()=>i.NeverCompare,"NeverDepth",()=>i.NeverDepth,"NeverStencilFunc",()=>i.NeverStencilFunc,"NoBlending",()=>i.NoBlending,"NoColorSpace",()=>i.NoColorSpace,"NoNormalPacking",()=>i.NoNormalPacking,"NoToneMapping",()=>i.NoToneMapping,"NormalAnimationBlendMode",()=>i.NormalAnimationBlendMode,"NormalBlending",()=>i.NormalBlending,"NormalGAPacking",()=>i.NormalGAPacking,"NormalRGPacking",()=>i.NormalRGPacking,"NotEqualCompare",()=>i.NotEqualCompare,"NotEqualDepth",()=>i.NotEqualDepth,"NotEqualStencilFunc",()=>i.NotEqualStencilFunc,"NumberKeyframeTrack",()=>i.NumberKeyframeTrack,"Object3D",()=>i.Object3D,"ObjectLoader",()=>i.ObjectLoader,"ObjectSpaceNormalMap",()=>i.ObjectSpaceNormalMap,"OctahedronGeometry",()=>i.OctahedronGeometry,"OneFactor",()=>i.OneFactor,"OneMinusConstantAlphaFactor",()=>i.OneMinusConstantAlphaFactor,"OneMinusConstantColorFactor",()=>i.OneMinusConstantColorFactor,"OneMinusDstAlphaFactor",()=>i.OneMinusDstAlphaFactor,"OneMinusDstColorFactor",()=>i.OneMinusDstColorFactor,"OneMinusSrcAlphaFactor",()=>i.OneMinusSrcAlphaFactor,"OneMinusSrcColorFactor",()=>i.OneMinusSrcColorFactor,"OrthographicCamera",()=>i.OrthographicCamera,"PCFShadowMap",()=>i.PCFShadowMap,"PCFSoftShadowMap",()=>i.PCFSoftShadowMap,"PMREMGenerator",()=>n.PMREMGenerator,"Path",()=>i.Path,"PerspectiveCamera",()=>i.PerspectiveCamera,"Plane",()=>i.Plane,"PlaneGeometry",()=>i.PlaneGeometry,"PlaneHelper",()=>i.PlaneHelper,"PointLight",()=>i.PointLight,"PointLightHelper",()=>i.PointLightHelper,"Points",()=>i.Points,"PointsMaterial",()=>i.PointsMaterial,"PolarGridHelper",()=>i.PolarGridHelper,"PolyhedronGeometry",()=>i.PolyhedronGeometry,"PositionalAudio",()=>i.PositionalAudio,"PropertyBinding",()=>i.PropertyBinding,"PropertyMixer",()=>i.PropertyMixer,"QuadraticBezierCurve",()=>i.QuadraticBezierCurve,"QuadraticBezierCurve3",()=>i.QuadraticBezierCurve3,"Quaternion",()=>i.Quaternion,"QuaternionKeyframeTrack",()=>i.QuaternionKeyframeTrack,"QuaternionLinearInterpolant",()=>i.QuaternionLinearInterpolant,"R11_EAC_Format",()=>i.R11_EAC_Format,"RED_GREEN_RGTC2_Format",()=>i.RED_GREEN_RGTC2_Format,"RED_RGTC1_Format",()=>i.RED_RGTC1_Format,"REVISION",()=>i.REVISION,"RG11_EAC_Format",()=>i.RG11_EAC_Format,"RGBADepthPacking",()=>i.RGBADepthPacking,"RGBAFormat",()=>i.RGBAFormat,"RGBAIntegerFormat",()=>i.RGBAIntegerFormat,"RGBA_ASTC_10x10_Format",()=>i.RGBA_ASTC_10x10_Format,"RGBA_ASTC_10x5_Format",()=>i.RGBA_ASTC_10x5_Format,"RGBA_ASTC_10x6_Format",()=>i.RGBA_ASTC_10x6_Format,"RGBA_ASTC_10x8_Format",()=>i.RGBA_ASTC_10x8_Format,"RGBA_ASTC_12x10_Format",()=>i.RGBA_ASTC_12x10_Format,"RGBA_ASTC_12x12_Format",()=>i.RGBA_ASTC_12x12_Format,"RGBA_ASTC_4x4_Format",()=>i.RGBA_ASTC_4x4_Format,"RGBA_ASTC_5x4_Format",()=>i.RGBA_ASTC_5x4_Format,"RGBA_ASTC_5x5_Format",()=>i.RGBA_ASTC_5x5_Format,"RGBA_ASTC_6x5_Format",()=>i.RGBA_ASTC_6x5_Format,"RGBA_ASTC_6x6_Format",()=>i.RGBA_ASTC_6x6_Format,"RGBA_ASTC_8x5_Format",()=>i.RGBA_ASTC_8x5_Format,"RGBA_ASTC_8x6_Format",()=>i.RGBA_ASTC_8x6_Format,"RGBA_ASTC_8x8_Format",()=>i.RGBA_ASTC_8x8_Format,"RGBA_BPTC_Format",()=>i.RGBA_BPTC_Format,"RGBA_ETC2_EAC_Format",()=>i.RGBA_ETC2_EAC_Format,"RGBA_PVRTC_2BPPV1_Format",()=>i.RGBA_PVRTC_2BPPV1_Format,"RGBA_PVRTC_4BPPV1_Format",()=>i.RGBA_PVRTC_4BPPV1_Format,"RGBA_S3TC_DXT1_Format",()=>i.RGBA_S3TC_DXT1_Format,"RGBA_S3TC_DXT3_Format",()=>i.RGBA_S3TC_DXT3_Format,"RGBA_S3TC_DXT5_Format",()=>i.RGBA_S3TC_DXT5_Format,"RGBDepthPacking",()=>i.RGBDepthPacking,"RGBFormat",()=>i.RGBFormat,"RGBIntegerFormat",()=>i.RGBIntegerFormat,"RGB_BPTC_SIGNED_Format",()=>i.RGB_BPTC_SIGNED_Format,"RGB_BPTC_UNSIGNED_Format",()=>i.RGB_BPTC_UNSIGNED_Format,"RGB_ETC1_Format",()=>i.RGB_ETC1_Format,"RGB_ETC2_Format",()=>i.RGB_ETC2_Format,"RGB_PVRTC_2BPPV1_Format",()=>i.RGB_PVRTC_2BPPV1_Format,"RGB_PVRTC_4BPPV1_Format",()=>i.RGB_PVRTC_4BPPV1_Format,"RGB_S3TC_DXT1_Format",()=>i.RGB_S3TC_DXT1_Format,"RGDepthPacking",()=>i.RGDepthPacking,"RGFormat",()=>i.RGFormat,"RGIntegerFormat",()=>i.RGIntegerFormat,"RawShaderMaterial",()=>i.RawShaderMaterial,"Ray",()=>i.Ray,"Raycaster",()=>i.Raycaster,"RectAreaLight",()=>i.RectAreaLight,"RedFormat",()=>i.RedFormat,"RedIntegerFormat",()=>i.RedIntegerFormat,"ReinhardToneMapping",()=>i.ReinhardToneMapping,"RenderTarget",()=>i.RenderTarget,"RenderTarget3D",()=>i.RenderTarget3D,"RepeatWrapping",()=>i.RepeatWrapping,"ReplaceStencilOp",()=>i.ReplaceStencilOp,"ReverseSubtractEquation",()=>i.ReverseSubtractEquation,"RingGeometry",()=>i.RingGeometry,"SIGNED_R11_EAC_Format",()=>i.SIGNED_R11_EAC_Format,"SIGNED_RED_GREEN_RGTC2_Format",()=>i.SIGNED_RED_GREEN_RGTC2_Format,"SIGNED_RED_RGTC1_Format",()=>i.SIGNED_RED_RGTC1_Format,"SIGNED_RG11_EAC_Format",()=>i.SIGNED_RG11_EAC_Format,"SRGBColorSpace",()=>i.SRGBColorSpace,"SRGBTransfer",()=>i.SRGBTransfer,"Scene",()=>i.Scene,"ShaderChunk",()=>n.ShaderChunk,"ShaderLib",()=>n.ShaderLib,"ShaderMaterial",()=>i.ShaderMaterial,"ShadowMaterial",()=>i.ShadowMaterial,"Shape",()=>i.Shape,"ShapeGeometry",()=>i.ShapeGeometry,"ShapePath",()=>i.ShapePath,"ShapeUtils",()=>i.ShapeUtils,"ShortType",()=>i.ShortType,"Skeleton",()=>i.Skeleton,"SkeletonHelper",()=>i.SkeletonHelper,"SkinnedMesh",()=>i.SkinnedMesh,"Source",()=>i.Source,"Sphere",()=>i.Sphere,"SphereGeometry",()=>i.SphereGeometry,"Spherical",()=>i.Spherical,"SphericalHarmonics3",()=>i.SphericalHarmonics3,"SplineCurve",()=>i.SplineCurve,"SpotLight",()=>i.SpotLight,"SpotLightHelper",()=>i.SpotLightHelper,"Sprite",()=>i.Sprite,"SpriteMaterial",()=>i.SpriteMaterial,"SrcAlphaFactor",()=>i.SrcAlphaFactor,"SrcAlphaSaturateFactor",()=>i.SrcAlphaSaturateFactor,"SrcColorFactor",()=>i.SrcColorFactor,"StaticCopyUsage",()=>i.StaticCopyUsage,"StaticDrawUsage",()=>i.StaticDrawUsage,"StaticReadUsage",()=>i.StaticReadUsage,"StereoCamera",()=>i.StereoCamera,"StreamCopyUsage",()=>i.StreamCopyUsage,"StreamDrawUsage",()=>i.StreamDrawUsage,"StreamReadUsage",()=>i.StreamReadUsage,"StringKeyframeTrack",()=>i.StringKeyframeTrack,"SubtractEquation",()=>i.SubtractEquation,"SubtractiveBlending",()=>i.SubtractiveBlending,"TOUCH",()=>i.TOUCH,"TangentSpaceNormalMap",()=>i.TangentSpaceNormalMap,"TetrahedronGeometry",()=>i.TetrahedronGeometry,"Texture",()=>i.Texture,"TextureLoader",()=>i.TextureLoader,"TextureUtils",()=>i.TextureUtils,"Timer",()=>i.Timer,"TimestampQuery",()=>i.TimestampQuery,"TorusGeometry",()=>i.TorusGeometry,"TorusKnotGeometry",()=>i.TorusKnotGeometry,"Triangle",()=>i.Triangle,"TriangleFanDrawMode",()=>i.TriangleFanDrawMode,"TriangleStripDrawMode",()=>i.TriangleStripDrawMode,"TrianglesDrawMode",()=>i.TrianglesDrawMode,"TubeGeometry",()=>i.TubeGeometry,"UVMapping",()=>i.UVMapping,"Uint16BufferAttribute",()=>i.Uint16BufferAttribute,"Uint32BufferAttribute",()=>i.Uint32BufferAttribute,"Uint8BufferAttribute",()=>i.Uint8BufferAttribute,"Uint8ClampedBufferAttribute",()=>i.Uint8ClampedBufferAttribute,"Uniform",()=>i.Uniform,"UniformsGroup",()=>i.UniformsGroup,"UniformsLib",()=>n.UniformsLib,"UniformsUtils",()=>i.UniformsUtils,"UnsignedByteType",()=>i.UnsignedByteType,"UnsignedInt101111Type",()=>i.UnsignedInt101111Type,"UnsignedInt248Type",()=>i.UnsignedInt248Type,"UnsignedInt5999Type",()=>i.UnsignedInt5999Type,"UnsignedIntType",()=>i.UnsignedIntType,"UnsignedShort4444Type",()=>i.UnsignedShort4444Type,"UnsignedShort5551Type",()=>i.UnsignedShort5551Type,"UnsignedShortType",()=>i.UnsignedShortType,"VSMShadowMap",()=>i.VSMShadowMap,"Vector2",()=>i.Vector2,"Vector3",()=>i.Vector3,"Vector4",()=>i.Vector4,"VectorKeyframeTrack",()=>i.VectorKeyframeTrack,"VideoFrameTexture",()=>i.VideoFrameTexture,"VideoTexture",()=>i.VideoTexture,"WebGL3DRenderTarget",()=>i.WebGL3DRenderTarget,"WebGLArrayRenderTarget",()=>i.WebGLArrayRenderTarget,"WebGLCoordinateSystem",()=>i.WebGLCoordinateSystem,"WebGLCubeRenderTarget",()=>i.WebGLCubeRenderTarget,"WebGLRenderTarget",()=>i.WebGLRenderTarget,"WebGLRenderer",()=>n.WebGLRenderer,"WebGLUtils",()=>n.WebGLUtils,"WebGPUCoordinateSystem",()=>i.WebGPUCoordinateSystem,"WebXRController",()=>i.WebXRController,"WireframeGeometry",()=>i.WireframeGeometry,"WrapAroundEnding",()=>i.WrapAroundEnding,"ZeroCurvatureEnding",()=>i.ZeroCurvatureEnding,"ZeroFactor",()=>i.ZeroFactor,"ZeroSlopeEnding",()=>i.ZeroSlopeEnding,"ZeroStencilOp",()=>i.ZeroStencilOp,"createCanvasElement",()=>i.createCanvasElement,"error",()=>i.error,"getConsoleFunction",()=>i.getConsoleFunction,"log",()=>i.log,"setConsoleFunction",()=>i.setConsoleFunction,"warn",()=>i.warn,"warnOnce",()=>i.warnOnce],32009);var o=e.i(32009);function a(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}let s=["x","y","top","bottom","left","right","width","height"];var l=e.i(46791),u=e.i(43476);function c({ref:e,children:n,fallback:i,resize:l,style:c,gl:d,events:f=t.f,eventSource:A,eventPrefix:h,shadows:m,linear:p,flat:B,legacy:C,orthographic:g,frameloop:v,dpr:y,performance:b,raycaster:E,camera:M,scene:F,onPointerMissed:S,onCreated:R,...I}){r.useMemo(()=>(0,t.e)(o),[]);let T=(0,t.u)(),[x,G]=function({debounce:e,scroll:t,polyfill:n,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){var o,l,u;let c=n||("u"(p.current=!0,()=>void(p.current=!1)));let[B,C,g]=(0,r.useMemo)(()=>{let e=()=>{let e,t;if(!A.current.element)return;let{left:r,top:n,width:o,height:a,bottom:l,right:u,x:c,y:d}=A.current.element.getBoundingClientRect(),h={left:r,top:n,width:o,height:a,bottom:l,right:u,x:c,y:d};A.current.element instanceof HTMLElement&&i&&(h.height=A.current.element.offsetHeight,h.width=A.current.element.offsetWidth),Object.freeze(h),p.current&&(e=A.current.lastBounds,t=h,!s.every(r=>e[r]===t[r]))&&f(A.current.lastBounds=h)};return[e,m?a(e,m):e,h?a(e,h):e]},[f,i,h,m]);function v(){A.current.scrollContainers&&(A.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),A.current.scrollContainers=null),A.current.resizeObserver&&(A.current.resizeObserver.disconnect(),A.current.resizeObserver=null),A.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",A.current.orientationHandler))}function y(){A.current.element&&(A.current.resizeObserver=new c(g),A.current.resizeObserver.observe(A.current.element),t&&A.current.scrollContainers&&A.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),A.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",A.current.orientationHandler))}return o=g,l=!!t,(0,r.useEffect)(()=>{if(l)return window.addEventListener("scroll",o,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",o,!0)},[o,l]),u=C,(0,r.useEffect)(()=>(window.addEventListener("resize",u),()=>void window.removeEventListener("resize",u)),[u]),(0,r.useEffect)(()=>{v(),y()},[t,g,C]),(0,r.useEffect)(()=>v,[]),[e=>{e&&e!==A.current.element&&(v(),A.current.element=e,A.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:i,overflowY:o}=window.getComputedStyle(t);return[n,i,o].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),y())},d,B]}({scroll:!0,debounce:{scroll:50,resize:0},...l}),D=r.useRef(null),w=r.useRef(null);r.useImperativeHandle(e,()=>D.current);let L=(0,t.a)(S),[_,O]=r.useState(!1),[H,P]=r.useState(!1);if(_)throw _;if(H)throw H;let J=r.useRef(null);(0,t.b)(()=>{let e=D.current;G.width>0&&G.height>0&&e&&(J.current||(J.current=(0,t.c)(e)),async function(){await J.current.configure({gl:d,scene:F,events:f,shadows:m,linear:p,flat:B,legacy:C,orthographic:g,frameloop:v,dpr:y,performance:b,raycaster:E,camera:M,size:G,onPointerMissed:(...e)=>null==L.current?void 0:L.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(A?(0,t.i)(A)?A.current:A:w.current),h&&e.setEvents({compute:(e,t)=>{let r=e[h+"X"],n=e[h+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==R||R(e)}}),J.current.render((0,u.jsx)(T,{children:(0,u.jsx)(t.E,{set:P,children:(0,u.jsx)(r.Suspense,{fallback:(0,u.jsx)(t.B,{set:O}),children:null!=n?n:null})})}))}())}),r.useEffect(()=>{let e=D.current;if(e)return()=>(0,t.d)(e)},[]);let U=A?"none":"auto";return(0,u.jsx)("div",{ref:w,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:U,...c},...I,children:(0,u.jsx)("div",{ref:x,style:{width:"100%",height:"100%"},children:(0,u.jsx)("canvas",{ref:D,style:{display:"block"},children:i})})})}function d(e){return(0,u.jsx)(l.FiberProvider,{children:(0,u.jsx)(c,{...e})})}e.i(89499),e.s(["Canvas",()=>d],75056)},32424,e=>{"use strict";var t=e.i(12979);function r(){return async e=>{let r;try{r=(0,t.getUrlForPath)(e)}catch(t){return console.warn(`Script not in manifest: ${e} (${t})`),null}try{let t=await fetch(r);if(!t.ok)return console.error(`Script fetch failed: ${e} (${t.status})`),null;return await t.text()}catch(t){return console.error(`Script fetch error: ${e}`),console.error(t),null}}}e.s(["createScriptLoader",()=>r])},91907,8597,78140,82816,25947,51475,71505,71832,e=>{"use strict";let t;e.s(["ShapeRenderer",()=>tc,"applyShapeShaderModifications",()=>tn,"createMaterialFromFlags",()=>ti,"useStaticShape",()=>to],91907);var r=e.i(43476),n=e.i(932),i=e.i(71645),o=i;let a=(0,o.createContext)(null),s={didCatch:!1,error:null};class l extends o.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=s}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(...e){let{error:t}=this.state;null!==t&&(this.props.onReset?.({args:e,reason:"imperative-api"}),this.setState(s))}componentDidCatch(e,t){this.props.onError?.(e,t)}componentDidUpdate(e,t){let{didCatch:r}=this.state,{resetKeys:n}=this.props;r&&null!==t.error&&function(e=[],t=[]){return e.length!==t.length||e.some((e,r)=>!Object.is(e,t[r]))}(e.resetKeys,n)&&(this.props.onReset?.({next:n,prev:e.resetKeys,reason:"keys"}),this.setState(s))}render(){let{children:e,fallbackRender:t,FallbackComponent:r,fallback:n}=this.props,{didCatch:i,error:s}=this.state,l=e;if(i){let e={error:s,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)l=t(e);else if(r)l=(0,o.createElement)(r,e);else if(void 0!==n)l=n;else throw s}return(0,o.createElement)(a.Provider,{value:{didCatch:i,error:s,resetErrorBoundary:this.resetErrorBoundary}},l)}}e.s(["ErrorBoundary",()=>l],8597);var u=e.i(31067),c=e.i(90072);function d(e,t){if(t===c.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==c.TriangleFanDrawMode&&t!==c.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;etypeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r=2.0 are supported."));return}let s=new ei(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});s.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===a[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}s.setExtensions(o),s.setPlugins(a),s.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}}function B(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let C={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class g{constructor(e){this.parser=e,this.name=C.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,o)}}class w{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let o=i.extensions[t],a=n.images[o.source],s=r.textureLoader;if(a.uri){let e=r.options.manager.getHandler(a.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,o.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class L{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let o=i.extensions[t],a=n.images[o.source],s=r.textureLoader;if(a.uri){let e=r.options.manager.getHandler(a.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,o.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class _{constructor(e){this.name=C.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,o=e.count,a=e.byteStride,s=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(o,a,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(o*a);return i.decodeGltfBuffer(new Uint8Array(t),o,a,s,e.mode,e.filter),t})})}}}class O{constructor(e){this.name=C.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],o={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new c.Matrix4,r=new c.Vector3,a=new c.Quaternion,s=new c.Vector3(1,1,1),l=new c.InstancedMesh(e.geometry,e.material,n);for(let e=0;e=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},z={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete};function $(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function ee(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function et(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;ntypeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"u"{let r=this.associations.get(e);for(let[n,o]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(o,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r=2&&o.setY(t,f[e*s+1]),s>=3&&o.setZ(t,f[e*s+2]),s>=4&&o.setW(t,f[e*s+3]),s>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return o})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],o=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(o=e)}return this.loadTextureImage(e,n,o)}loadTextureImage(e,t,r){let n=this,i=this.json,o=i.textures[e],a=i.images[t],s=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[s])return this.textureCache[s];let l=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=o.name||a.name||"",""===t.name&&"string"==typeof a.uri&&!1===a.uri.startsWith("data:image/")&&(t.name=a.uri);let r=(i.samplers||{})[o.sampler]||{};return t.magFilter=V[r.magFilter]||c.LinearFilter,t.minFilter=V[r.minFilter]||c.LinearMipmapLinearFilter,t.wrapS=q[r.wrapS]||c.RepeatWrapping,t.wrapT=q[r.wrapT]||c.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=l,l}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],o=self.URL||self.webkitURL,a=i.uri||"",s=!1;if(void 0!==i.bufferView)a=this.getDependency("bufferView",i.bufferView).then(function(e){s=!0;let t=new Blob([e],{type:i.mimeType});return a=o.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(a).then(function(e){return new Promise(function(r,i){let o=r;!0===t.isImageBitmapLoader&&(o=function(e){let t=new c.Texture(e);t.needsUpdate=!0,r(t)}),t.load(c.LoaderUtils.resolveURL(e,n.path),o,void 0,i)})}).then(function(e){var t;return!0===s&&o.revokeObjectURL(a),ee(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),e});return this.sourceCache[e]=l,l}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(o){if(!o)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((o=o.clone()).channel=r.texCoord),i.extensions[C.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[C.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(o);o=i.extensions[C.KHR_TEXTURE_TRANSFORM].extendTexture(o,e),i.associations.set(o,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?h:m),"colorSpace"in o?o.colorSpace=n:o.encoding=n===h?3001:3e3),e[t]=o,o})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new c.PointsMaterial,c.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new c.LineBasicMaterial,c.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||o){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,o=n.materials[e],a={},s=o.extensions||{},l=[];if(s[C.KHR_MATERIALS_UNLIT]){let e=i[C.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),l.push(e.extendParams(a,o,r))}else{let n=o.pbrMetallicRoughness||{};if(a.color=new c.Color(1,1,1),a.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;a.color.setRGB(e[0],e[1],e[2],m),a.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(r.assignTexture(a,"map",n.baseColorTexture,h)),a.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,a.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(r.assignTexture(a,"metalnessMap",n.metallicRoughnessTexture)),l.push(r.assignTexture(a,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)})))}!0===o.doubleSided&&(a.side=c.DoubleSide);let u=o.alphaMode||"OPAQUE";if("BLEND"===u?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,"MASK"===u&&(a.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&t!==c.MeshBasicMaterial&&(l.push(r.assignTexture(a,"normalMap",o.normalTexture)),a.normalScale=new c.Vector2(1,1),void 0!==o.normalTexture.scale)){let e=o.normalTexture.scale;a.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&t!==c.MeshBasicMaterial&&(l.push(r.assignTexture(a,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(a.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&t!==c.MeshBasicMaterial){let e=o.emissiveFactor;a.emissive=new c.Color().setRGB(e[0],e[1],e[2],m)}return void 0!==o.emissiveTexture&&t!==c.MeshBasicMaterial&&l.push(r.assignTexture(a,"emissiveMap",o.emissiveTexture,h)),Promise.all(l).then(function(){let n=new t(a);return o.name&&(n.name=o.name),ee(n,o),r.associations.set(n,{materials:e}),o.extensions&&$(i,n,o),n})}createUniqueName(e){let t=c.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let o=0,a=e.length;o0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r1?new c.Group:1===t.length?t[0]:new c.Object3D)!==t[0])for(let e=0,r=t.length;e{let t=new Map;for(let[e,r]of n.associations)(e instanceof c.Material||e instanceof c.Texture)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let o,a=[],s=e.name?e.name:e.uuid,l=[];switch(Z[i.path]===Z.weights?e.traverse(function(e){e.morphTargetInfluences&&l.push(e.name?e.name:e.uuid)}):l.push(s),Z[i.path]){case Z.weights:o=c.NumberKeyframeTrack;break;case Z.rotation:o=c.QuaternionKeyframeTrack;break;case Z.position:case Z.scale:o=c.VectorKeyframeTrack;break;default:o=1===r.itemSize?c.NumberKeyframeTrack:c.VectorKeyframeTrack}let u=void 0!==n.interpolation?z[n.interpolation]:c.InterpolateLinear,d=this._getArrayFromAccessor(r);for(let e=0,r=l.length;e{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(es.has(e)){let t=es.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(i,o).then(n=>(r=n,new Promise((n,o)=>{r._callbacks[i]={resolve:n,reject:o},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return a.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),es.set(e,{key:n,promise:a}),a}_createGeometry(e){let t=new ea.BufferGeometry;e.index&&t.setIndex(new ea.BufferAttribute(e.index.array,1));for(let r=0;r{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=eu.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,r=new t.Decoder,a=new t.DecoderBuffer;a.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){var i,o,a;let s,l,u,c,d,f,A=n.attributeIDs,h=n.attributeTypes,m=t.GetEncodedGeometryType(r);if(m===e.TRIANGULAR_MESH)d=new e.Mesh,f=t.DecodeBufferToMesh(r,d);else if(m===e.POINT_CLOUD)d=new e.PointCloud,f=t.DecodeBufferToPointCloud(r,d);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!f.ok()||0===d.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+f.error_msg());let p={index:null,attributes:[]};for(let r in A){let i,o,a=self[h[r]];if(n.useUniqueIDs)o=A[r],i=t.GetAttributeByUniqueId(d,o);else{if(-1===(o=t.GetAttributeId(d,e[A[r]])))continue;i=t.GetAttribute(d,o)}p.attributes.push(function(e,t,r,n,i,o){let a=o.num_components(),s=r.num_points()*a,l=s*i.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),c=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,o,u,l,c);let d=new i(e.HEAPF32.buffer,c,s).slice();return e._free(c),{name:n,array:d,itemSize:a}}(e,t,d,r,a,i))}return m===e.TRIANGULAR_MESH&&(i=e,o=t,a=d,s=3*a.num_faces(),l=4*s,u=i._malloc(l),o.GetTrianglesUInt32Array(a,l,u),c=new Uint32Array(i.HEAPF32.buffer,u,s).slice(),i._free(u),p.index={array:c,itemSize:1}),e.destroy(d),p}(t,r,a,o),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(a),t.destroy(r)}})}}}var ec=e.i(99143);let ed=function(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;i{let A={keys:l,deep:n,inject:s,castShadow:o,receiveShadow:a};if(Array.isArray(t=i.useMemo(()=>{if(!1===e&&!Array.isArray(t)){let e=!1;if(t.traverse(t=>{t.isSkinnedMesh&&(e=!0)}),e)return ed(t)}return t},[t,e])))return i.createElement("group",(0,u.default)({},d,{ref:f}),t.map(e=>i.createElement(ef,(0,u.default)({key:e.uuid,object:e},A))),r);let{children:h,...m}=function(e,{keys:t=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData","bindMode","bindMatrix","bindMatrixInverse","skeleton"],deep:r,inject:n,castShadow:o,receiveShadow:a}){let s={};for(let r of t)s[r]=e[r];return r&&(s.geometry&&"materialsOnly"!==r&&(s.geometry=s.geometry.clone()),s.material&&"geometriesOnly"!==r&&(s.material=s.material.clone())),n&&(s="function"==typeof n?{...s,children:n(e)}:i.isValidElement(n)?{...s,children:n}:{...s,...n}),e instanceof c.Mesh&&(o&&(s.castShadow=!0),a&&(s.receiveShadow=!0)),s}(t,A),p=t.type[0].toLowerCase()+t.type.slice(1);return i.createElement(p,(0,u.default)({},m,d,{ref:f}),t.children.map(e=>"Bone"===e.type?i.createElement("primitive",(0,u.default)({key:e.uuid,object:e},A)):i.createElement(ef,(0,u.default)({key:e.uuid,object:e},A,{isChild:!0}))),r,h)}),eA=null,eh="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function em(e=!0,r=!0,n){return i=>{n&&n(i),e&&(eA||(eA=new el),eA.setDecoderPath("string"==typeof e?e:eh),i.setDRACOLoader(eA)),r&&i.setMeshoptDecoder((()=>{let e;if(t)return t;let r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="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";WebAssembly.validate(r)&&(i="B9h9z9tFBBBFiI9gBB9gLaaaaaFa9gEaaaB9gFaFaEMcBBFBFFGGGEILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBOn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBNI9z9iqlBVc+N9IcIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMk8lLbaE97F9+FaL978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAeDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAeDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBReCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBH8ZCFD9tA8ZAPD9OD9hD9RH8ZDQBTFtGmEYIPLdKeOnHpAIAQJDBIBHyCFD9tAyAPD9OD9hD9RHyAIASJDBIBH8cCFD9tA8cAPD9OD9hD9RH8cDQBTFtGmEYIPLdKeOnH8dDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAeD9uHeDyBjGBAEAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeApA8dDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNiV8ZcpMyS8cQ8df8eb8fHdAyA8cDQNiV8ZcpMyS8cQ8df8eb8fH8ZDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/dLEK97FaF97GXGXAGCI9HQBAF9FQFCBRGEXABABDBBBHECiD+rFCiD+sFD/6FHIAECND+rFCiD+sFD/6FAID/gFAECTD+rFCiD+sFD/6FHLD/gFD/kFD/lFHKCBDtD+2FHOAICUUUU94DtHND9OD9RD/kFHI9DBB/+hDYAIAID/mFAKAKD/mFALAOALAND9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHLD/mF9DBBX9LDYHOD/kFCgFDtD9OAECUUU94DtD9OD9QAIALD/mFAOD/kFCND+rFCU/+EDtD9OD9QAKALD/mFAOD/kFCTD+rFCUU/8ODtD9OD9QDMBBABCTJRBAGCIJHGAF9JQBSGMMAF9FQBCBRGEXABCTJHVAVDBBBHECBDtHOCUU98D8cFCUU98D8cEHND9OABDBBBHKAEDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAKAEDQBFGENVcMTtmYi8ZpyHECTD+sFD/6FHID/gFAECTD+rFCTD+sFD/6FHLD/gFD/kFD/lFHE9DB/+g6DYALAEAOD+2FHOALCUUUU94DtHcD9OD9RD/kFHLALD/mFAEAED/mFAIAOAIAcD9OD9RD/kFHEAED/mFD/kFD/kFD/jFD/nFHID/mF9DBBX9LDYHOD/kFCTD+rFALAID/mFAOD/kFCggEDtD9OD9QHLAEAID/mFAOD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHEDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAKAND9OALAEDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM/hEIGaF97FaL978jUUUUBCTlREGXAF9FQBCBRIEXAEABDBBBHLABCTJHKDBBBHODQILKOSQfbPden8c8d8e8fHNCTD+sFHVCID+rFDMIBAB9DBBU8/DY9D/zI818/DYAVCEDtD9QD/6FD/nFHVALAODQBFGENVcMTtmYi8ZpyHLCTD+rFCTD+sFD/6FD/mFHOAOD/mFAVALCTD+sFD/6FD/mFHcAcD/mFAVANCTD+rFCTD+sFD/6FD/mFHNAND/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHVD/mF9DBBX9LDYHLD/kFCggEDtHMD9OAcAVD/mFALD/kFCTD+rFD9QHcANAVD/mFALD/kFCTD+rFAOAVD/mFALD/kFAMD9OD9QHVDQBFTtGEmYILPdKOenHLD8dBAEDBIBDyB+t+J83EBABCNJALD8dFAEDBIBDyF+t+J83EBAKAcAVDQNVi8ZcMpySQ8c8dfb8e8fHVD8dBAEDBIBDyG+t+J83EBABCiJAVD8dFAEDBIBDyE+t+J83EBABCAJRBAICIJHIAF9JQBMMM9jFF97GXAGCGrAF9sHG9FQBCBRFEXABABDBBBHECND+rFCND+sFD/6FAECiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBABCTJRBAFCIJHFAG9JQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB");let o=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let r=0;for(let i=0;i{(e=t.instance).exports.__wasm_call_ctors()});function a(t,r,n,i,o,a){let s=e.exports.sbrk,l=n+3&-4,u=s(l*i),c=s(o.length),d=new Uint8Array(e.exports.memory.buffer);d.set(o,c);let f=t(u,n,i,c,o.length);if(0===f&&a&&a(u,l,i),r.set(d.subarray(u,u+n*i)),s(u-s(0)),0!==f)throw Error(`Malformed buffer data: ${f}`)}let s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return t={ready:o,supported:!0,decodeVertexBuffer(t,r,n,i,o){a(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[s[o]])},decodeIndexBuffer(t,r,n,i){a(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){a(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,o,u){a(e.exports[l[o]],t,r,n,i,e.exports[s[u]])}}})())}}let ep=(e,t,r,n)=>(0,ec.useLoader)(p,e,em(t,r,n));ep.preload=(e,t,r,n)=>ec.useLoader.preload(p,e,em(t,r,n)),ep.clear=e=>ec.useLoader.clear(p,e),ep.setDecoderPath=e=>{eh=e},e.s(["useGLTF",()=>ep],78140);var eB=e.i(47071),eC=e.i(71753),eg=e.i(12979);function ev(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;iev],82816);var ey=e.i(75567),eb=e.i(79123);let eE=/borg|xorg|porg|dorg|plant|tree|bush|fern|vine|grass|leaf|flower|frond|palm|foliage/i;function eM(e){return eE.test(e)}let eF=(0,i.createContext)(null);function eS(){let e=(0,i.useContext)(eF);if(!e)throw Error("useShapeInfo must be used within ShapeInfoProvider");return e}function eR(e){let t,i,o,a=(0,n.c)(10),{children:s,object:l,shapeName:u,type:c}=e;a[0]!==u?(t=eM(u),a[0]=u,a[1]=t):t=a[1];let d=t;a[2]!==d||a[3]!==l||a[4]!==u||a[5]!==c?(i={object:l,shapeName:u,type:c,isOrganic:d},a[2]=d,a[3]=l,a[4]=u,a[5]=c,a[6]=i):i=a[6];let f=i;return a[7]!==s||a[8]!==f?(o=(0,r.jsx)(eF.Provider,{value:f,children:s}),a[7]=s,a[8]=f,a[9]=o):o=a[9],o}e.s(["ShapeInfoProvider",()=>eR,"isOrganicShape",()=>eM,"useShapeInfo",()=>eS],25947),e.i(13876);var eI=e.i(58647),eT=e.i(89887);e.i(47167);var ex=e.i(69230),eG=e.i(69637),eD=e.i(54440);let ew=(0,i.createContext)(null);function eL({children:e}){let t=(0,i.useRef)(void 0),n=(0,i.useRef)(0),o=(0,i.useRef)(0);(0,eC.useFrame)((e,r)=>{for(n.current+=r;n.current>=.03125;)if(n.current-=.03125,o.current++,t.current)for(let e of t.current)e(o.current)});let a=(0,i.useCallback)(e=>(t.current??=new Set,t.current.add(e),()=>{t.current.delete(e)}),[]),s=(0,i.useCallback)(()=>o.current,[]),l=(0,i.useMemo)(()=>({subscribe:a,getTick:s}),[a,s]);return(0,r.jsx)(ew.Provider,{value:l,children:e})}function e_(e){let t=(0,i.useContext)(ew);if(!t)throw Error("useTick must be used within a TickProvider");let r=(0,i.useRef)(e);r.current=e,(0,i.useEffect)(()=>t.subscribe(e=>r.current(e)),[t])}e.s(["TICK_RATE",0,32,"TickProvider",()=>eL,"useTick",()=>e_],51475);let eO=1/30,eH=new Map;function eP(e){let t=e[0].image,r=t.width,n=t.height,i=e.length,o=Math.ceil(Math.sqrt(i)),a=Math.ceil(i/o),s=document.createElement("canvas");s.width=r*o,s.height=n*a;let l=s.getContext("2d");e.forEach((e,t)=>{let i=Math.floor(t/o);l.drawImage(e.image,t%o*r,i*n)});let u=new c.CanvasTexture(s);return u.colorSpace=c.SRGBColorSpace,u.generateMipmaps=!1,u.minFilter=c.NearestFilter,u.magFilter=c.NearestFilter,u.wrapS=c.ClampToEdgeWrapping,u.wrapT=c.ClampToEdgeWrapping,u.repeat.set(1/o,1/a),{texture:u,columns:o,rows:a,frameCount:i,frameOffsetSeconds:[],totalDurationSeconds:0,lastFrame:-1}}function eJ(e,t){let r=0;e.frameOffsetSeconds=t.map(e=>r+=e.frameCount*eO),e.totalDurationSeconds=r}function eU(e,t){if(t===e.lastFrame)return;e.lastFrame=t;let r=t%e.columns,n=e.rows-1-Math.floor(t/e.columns);e.texture.offset.set(r/e.columns,n/e.rows)}function eN(e,t){let r=e.totalDurationSeconds;if(r<=0)return 0;let n=t;n>r&&(n-=r*Math.floor(n/r));for(let t=0;t(0,eg.iflTextureToUrl)(t.name,e)),i=eP(await Promise.all(n.map(ey.loadTextureAsync)));return eJ(i,r),eH.set(e,i),i}function eK(e){var t;let r,i,o,a,s=(0,n.c)(14),{animationEnabled:l}=(0,eb.useSettings)();s[0]!==e?(r={queryKey:["ifl",e],queryFn:()=>(0,eg.loadImageFrameList)(e)},s[0]=e,s[1]=r):r=s[1];let{data:u}=(t=r,(0,eG.useBaseQuery)({...t,enabled:!0,suspense:!0,throwOnError:eD.defaultThrowOnError,placeholderData:void 0},ex.QueryObserver,void 0));if(s[2]!==u||s[3]!==e){let t;s[5]!==e?(t=t=>(0,eg.iflTextureToUrl)(t.name,e),s[5]=e,s[6]=t):t=s[6],i=u.map(t),s[2]=u,s[3]=e,s[4]=i}else i=s[4];let c=i,d=(0,eB.useTexture)(c);s[7]!==u||s[8]!==e||s[9]!==d?((o=eH.get(e))||(o=eP(d),eH.set(e,o)),eJ(o,u),s[7]=u,s[8]=e,s[9]=d,s[10]=o):o=s[10];let f=o;return s[11]!==l||s[12]!==f?(a=e=>{let t=l?eN(f,e/32):0;eU(f,t)},s[11]=l,s[12]=f,s[13]=a):a=s[13],e_(a),f.texture}e.s(["getFrameIndexForTime",()=>eN,"loadIflAtlas",()=>ek,"updateAtlasFrame",()=>eU,"useIflTexture",()=>eK],71505);var ej=e.i(47021),eQ=e.i(48066);e.s(["ANIM_TRANSITION_TIME",()=>eV,"DEFAULT_EYE_HEIGHT",()=>eX,"STREAM_TICK_SEC",()=>eq,"_r90",()=>e$,"_r90inv",()=>e0,"buildStreamDemoEntity",()=>te,"entityTypeColor",()=>tt,"getKeyframeAtTime",()=>e3,"getPosedNodeTransform",()=>e6,"processShapeScene",()=>e5,"replaceWithShapeMaterial",()=>e4,"setQuaternionFromDir",()=>e2,"setupEffectTexture",()=>e9,"torqueHorizontalFovToThreeVerticalFov",()=>e1,"torqueVecToThree",()=>e8],71832);let eX=2.1,eV=.25,eq=.032,eW=new c.Vector3,eY=new c.Vector3,eZ=new c.Matrix4,ez=new c.Vector3(0,1,0),e$=new c.Quaternion().setFromAxisAngle(new c.Vector3(0,1,0),Math.PI/2),e0=e$.clone().invert();function e1(e,t){return 180*(2*Math.atan(Math.tan(Math.max(.01,Math.min(179.99,e))*Math.PI/180/2)/(Number.isFinite(t)&&t>1e-6?t:4/3)))/Math.PI}function e9(e){e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.magFilter=c.LinearFilter,e.colorSpace=c.NoColorSpace,e.flipY=!1,e.needsUpdate=!0}function e8(e,t){return t.set(e[1],e[2],e[0])}function e2(e,t){eW.crossVectors(e,ez),1e-8>eW.lengthSq()&&eW.set(-1,0,0),eW.normalize(),eY.crossVectors(eW,e).normalize(),eZ.set(eW.x,e.x,eY.x,0,eW.y,e.y,eY.y,0,eW.z,e.z,eY.z,0,0,0,0,1),t.setFromRotationMatrix(eZ)}function e3(e,t){if(0===e.length)return null;if(t<=e[0].time)return e[0];if(t>=e[e.length-1].time)return e[e.length-1];let r=0,n=e.length-1;for(;n-r>1;){let i=r+n>>1;e[i].time<=t?r=i:n=i}return e[r]}function e6(e,t,r,n){let i=e.clone(!0),o=t.find(e=>"Root"===e.name);if(o){let e=new c.AnimationMixer(i);if(e.clipAction(o).play(),n)for(let r of n){let n=t.find(e=>e.name.toLowerCase()===r.toLowerCase());if(n){let t=e.clipAction(n);t.time=n.duration/2,t.setEffectiveTimeScale(0),t.play()}}e.setTime(0)}i.updateMatrixWorld(!0);let a=null,s=null;return(i.traverse(e=>{a||e.name!==r||(a=new c.Vector3,s=new c.Quaternion,e.getWorldPosition(a),e.getWorldQuaternion(s))}),a&&s)?{position:a,quaternion:s}:null}function e4(e,t){let r=e.userData?.resource_path,n=new Set(e.userData?.flag_names??[]);if(!r){let t=new c.MeshLambertMaterial({color:e.color,side:2,reflectivity:0});return tn(t),{material:t}}if(n.has("IflMaterial")){let i=ti(e,null,n,!1,t),o=Array.isArray(i)?i[1]:i;return{material:o,initialize:(e,t)=>e7(o,r,e,t)}}let i=(0,eg.textureToUrl)(r),o=(0,ey.loadTexture)(i);(0,ey.setupTexture)(o);let a=ti(e,o,n,!1,t);return{material:Array.isArray(a)?a[1]:a}}async function e7(e,t,r,n){let i=`textures/${t}.ifl`,o=await ek(i);e.map=o.texture,e.needsUpdate=!0;let a=!1,s=r.onBeforeRender;return r.onBeforeRender=function(...e){s?.apply(this,e),a||eU(o,eN(o,n()))},()=>{a=!0,r.onBeforeRender=s??(()=>{})}}function e5(e){var t;let r,n=[],i=null;e.traverse(e=>{!i&&e.skeleton&&(i=e.skeleton)});let o=i?(t=i,r=new Set,t.bones.forEach((e,t)=>{e.name.match(/^Hulk/i)&&r.add(t)}),r):new Set;return e.traverse(e=>{if(!e.isMesh)return;if(e.name.match(/^Hulk/i)||e.material?.name==="Unassigned"){e.visible=!1;return}let t=!!e.userData?.vis_sequence;if((e.userData?.vis??1)<.01&&(e.visible=!1),e.geometry){let t=function(e,t){if(0===t.size||!e.attributes.skinIndex)return e;let r=e.attributes.skinIndex,n=e.attributes.skinWeight,i=e.index,o=Array(r.count).fill(!1);for(let e=0;e.01&&t.has(a)){o[e]=!0;break}}if(i){let t=[],r=i.array;for(let e=0;e1){let t=0,r=0,n=0;for(let o of e)t+=i[3*o],r+=i[3*o+1],n+=i[3*o+2];let o=Math.sqrt(t*t+r*r+n*n);for(let a of(o>0&&(t/=o,r/=o,n/=o),e))i[3*a]=t,i[3*a+1]=r,i[3*a+2]=n}r.needsUpdate=!0}(t=t.clone()),e.geometry=t}let r=t?1:e.userData?.vis??1;if(Array.isArray(e.material))e.material=e.material.map(t=>{let i=e4(t,r);return i.initialize&&n.push({mesh:e,initialize:i.initialize}),i.material});else if(e.material){let t=e4(e.material,r);t.initialize&&n.push({mesh:e,initialize:t.initialize}),e.material=t.material}}),n}function te(e,t,r,n,i,o,a,s,l,u,c,d,f){return{id:e,type:t,dataBlock:r,visual:n,direction:i,weaponShape:o,playerName:a,className:s,ghostIndex:l,dataBlockId:u,shapeHint:c,explosionDataBlockId:d,faceViewer:f,keyframes:[{time:0,position:[0,0,0],rotation:[0,0,0,1]}]}}function tt(e){switch(e.toLowerCase()){case"player":return"#00ff88";case"vehicle":return"#ff8800";case"projectile":return"#ff0044";case"deployable":return"#ffcc00";default:return"#8888ff"}}function tr(){return"stopped"!==eI.engineStore.getState().playback.status?(0,eI.demoEffectNow)()/1e3:performance.now()/1e3}function tn(e){e.onBeforeCompile=t=>{(0,ej.injectCustomFog)(t,eQ.globalFogUniforms),e instanceof c.MeshLambertMaterial&&(t.uniforms.shapeDirectionalFactor={value:1},t.uniforms.shapeAmbientFactor={value:1.5},t.fragmentShader=t.fragmentShader.replace("#include ",`#include +uniform float shapeDirectionalFactor; +uniform float shapeAmbientFactor; +`),t.fragmentShader=t.fragmentShader.replace("#include ",`#include + // Apply shape-specific lighting multipliers + reflectedLight.directDiffuse *= shapeDirectionalFactor; + reflectedLight.indirectDiffuse *= shapeAmbientFactor; +`))}}function ti(e,t,r,n,i=1,o=!1){let a=r.has("Translucent"),s=r.has("Additive"),l=r.has("SelfIlluminating"),u=i<1||o;if(l||s){let e=s||a||u,r=new c.MeshBasicMaterial({map:t,side:2,transparent:e,depthWrite:!e,alphaTest:0,fog:!0,...u&&{opacity:i},...s&&{blending:c.AdditiveBlending}});return tn(r),r}if(n||a){let e={map:t,transparent:u,alphaTest:.5*!u,...u&&{opacity:i,depthWrite:!1},reflectivity:0},r=new c.MeshLambertMaterial({...e,side:1,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1}),n=new c.MeshLambertMaterial({...e,side:0});return tn(r),tn(n),[r,n]}let d=new c.MeshLambertMaterial({map:t,side:2,reflectivity:0,...u&&{transparent:!0,opacity:i,depthWrite:!1}});return tn(d),d}function to(e){let t,r=(0,n.c)(2);return r[0]!==e?(t=(0,eg.shapeToUrl)(e),r[0]=e,r[1]=t):t=r[1],ep(t)}function ta(e){let t,i,o,a,s=(0,n.c)(9),{color:l,label:u}=e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("boxGeometry",{args:[10,10,10]}),s[0]=t):t=s[0],s[1]!==l?(i=(0,r.jsx)("meshStandardMaterial",{color:l,wireframe:!0}),s[1]=l,s[2]=i):i=s[2],s[3]!==l||s[4]!==u?(o=u?(0,r.jsx)(eT.FloatingLabel,{color:l,children:u}):null,s[3]=l,s[4]=u,s[5]=o):o=s[5],s[6]!==i||s[7]!==o?(a=(0,r.jsxs)("mesh",{children:[t,i,o]}),s[6]=i,s[7]=o,s[8]=a):a=s[8],a}function ts(e){let t,i=(0,n.c)(4),{color:o,label:a}=e,{debugMode:s}=(0,eb.useDebug)();return i[0]!==o||i[1]!==s||i[2]!==a?(t=s?(0,r.jsx)(ta,{color:o,label:a}):null,i[0]=o,i[1]=s,i[2]=a,i[3]=t):t=i[3],t}let tl=new Set(["octahedron.dts"]);function tu(e){let t,i,o,a,s=(0,n.c)(6),{label:l}=e,{debugMode:u}=(0,eb.useDebug)();return u?(s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("icosahedronGeometry",{args:[1,1]}),i=(0,r.jsx)("meshBasicMaterial",{color:"cyan",wireframe:!0}),s[0]=t,s[1]=i):(t=s[0],i=s[1]),s[2]!==l?(o=l?(0,r.jsx)(eT.FloatingLabel,{color:"cyan",children:l}):null,s[2]=l,s[3]=o):o=s[3],s[4]!==o?(a=(0,r.jsxs)("mesh",{children:[t,i,o]}),s[4]=o,s[5]=a):a=s[5],a):null}function tc(e){let t,o,a,s,u,c=(0,n.c)(17),{loadingColor:d,demoThreads:f,children:A}=e,h=void 0===d?"yellow":d,{object:m,shapeName:p}=eS();if(!p){let e,t=`${m._id}: `;return c[0]!==t?(e=(0,r.jsx)(ts,{color:"orange",label:t}),c[0]=t,c[1]=e):e=c[1],e}if(tl.has(p.toLowerCase())){let e,t=`${m._id}: ${p}`;return c[2]!==t?(e=(0,r.jsx)(tu,{label:t}),c[2]=t,c[3]=e):e=c[3],e}let B=`${m._id}: ${p}`;return c[4]!==B?(t=(0,r.jsx)(ts,{color:"red",label:B}),c[4]=B,c[5]=t):t=c[5],c[6]!==h?(o=(0,r.jsx)(ta,{color:h}),c[6]=h,c[7]=o):o=c[7],c[8]!==f?(a=(0,r.jsx)(tf,{demoThreads:f}),c[8]=f,c[9]=a):a=c[9],c[10]!==A||c[11]!==o||c[12]!==a?(s=(0,r.jsxs)(i.Suspense,{fallback:o,children:[a,A]}),c[10]=A,c[11]=o,c[12]=a,c[13]=s):s=c[13],c[14]!==t||c[15]!==s?(u=(0,r.jsx)(l,{fallback:t,children:s}),c[14]=t,c[15]=s,c[16]=u):u=c[16],u}let td=(0,i.memo)(function({gltf:e,demoThreads:t}){let{object:n,shapeName:o}=eS(),{debugMode:a}=(0,eb.useDebug)(),{animationEnabled:s}=(0,eb.useSettings)(),l=(0,eI.useEngineSelector)(e=>e.runtime.runtime),{clonedScene:u,mixer:d,clipsByName:f,visNodesBySequence:A,iflMeshes:h}=(0,i.useMemo)(()=>{let t=ev(e.scene),r=[];for(let{mesh:e,hasVisSequence:n}of(t.traverse(e=>{if(!e.isMesh||!e.material)return;let t=Array.isArray(e.material)?e.material[0]:e.material;if(!t?.userData)return;let n=new Set(t.userData.flag_names??[]),i=t.userData.resource_path;if(n.has("IflMaterial")&&i){let t=e.userData,n=t?.ifl_sequence?String(t.ifl_sequence).toLowerCase():void 0,o=t?.ifl_duration?Number(t.ifl_duration):void 0,a=t?.ifl_sequence?!!t.ifl_cyclic:void 0,s=t?.ifl_tool_begin!=null?Number(t.ifl_tool_begin):void 0;r.push({mesh:e,iflPath:`textures/${i}.ifl`,hasVisSequence:!!t?.vis_sequence,iflSequence:n,iflDuration:o,iflCyclic:a,iflToolBegin:s})}}),e5(t),r))n||(e.visible=!0);let n=new Map;t.traverse(e=>{if(!e.isMesh)return;let t=e.userData;if(!t)return;let r=t.vis_keyframes,i=t.vis_duration,o=(t.vis_sequence??"").toLowerCase();if(!o||!Array.isArray(r)||r.length<=1||!i||i<=0)return;let a=n.get(o);a||(a=[],n.set(o,a)),a.push({mesh:e,keyframes:r,duration:i,cyclic:!!t.vis_cyclic})});let i=new Map;for(let t of e.animations)i.set(t.name.toLowerCase(),t);let o=i.size>0?new c.AnimationMixer(t):null;return{clonedScene:t,mixer:o,clipsByName:i,visNodesBySequence:n,iflMeshes:r}},[e]),m=(0,i.useRef)(new Map),p=(0,i.useRef)(new Map),B=(0,i.useRef)([]),C=(0,i.useRef)(0),g=(0,i.useRef)(s);g.current=s;let v=(0,i.useRef)(null),y=(0,i.useRef)(t);y.current=t;let b=(0,i.useRef)(null),E=(0,i.useRef)(null),M=(0,i.useRef)(void 0);(0,i.useEffect)(()=>{for(let e of(B.current=[],p.current.clear(),h))ek(e.iflPath).then(t=>{let r=Array.isArray(e.mesh.material)?e.mesh.material[0]:e.mesh.material;r&&(r.map=t.texture,r.needsUpdate=!0),B.current.push({atlas:t,sequenceName:e.iflSequence,sequenceDuration:e.iflDuration,cyclic:e.iflCyclic,toolBegin:e.iflToolBegin}),p.current.set(e.mesh,t)}).catch(()=>{})},[h]),(0,i.useEffect)(()=>{let e=m.current;function t(e){if(e.mesh.visible=!0,e.mesh.material?.isMeshStandardMaterial){let t=e4(e.mesh.material,e.mesh.userData?.vis??0);e.mesh.material=t.material}e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.transparent=!0,e.mesh.material.depthWrite=!1);let t=p.current.get(e.mesh);t&&e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.map=t.texture,e.mesh.material.needsUpdate=!0)}function r(r,n){let o=n.toLowerCase();i(r);let a=f.get(o),s=A.get(o),l={sequence:o,startTime:tr()};if(a&&d){let e=d.clipAction(a);"deploy"===o?(e.setLoop(c.LoopOnce,1),e.clampWhenFinished=!0):e.setLoop(c.LoopRepeat,1/0),e.reset().play(),l.action=e,!g.current&&"deploy"===o&&(e.time=a.duration,d.update(0),v.current&&queueMicrotask(()=>v.current?.(r)))}if(s){for(let e of s)t(e);l.visNodes=s}e.set(r,l)}function i(t){let r=e.get(t);if(r){if(r.action&&r.action.stop(),r.visNodes)for(let e of r.visNodes)e.mesh.visible=!1,e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.opacity=e.keyframes[0]);e.delete(t)}}if(b.current=r,E.current=i,null!=y.current)return()=>{for(let t of(b.current=null,E.current=null,[...e.keys()]))i(t)};let o=f.has("deploy"),a=!!(l&&o&&n.datablock);function s(e){if(!l)return;let t=n.datablock;if(!t)return;let r=l.getObjectByName(String(t));r&&l.$.call(r,"onEndSequence",n,e)}function u(){for(let r of["ambient","power"]){let n=A.get(r);if(n){let i=tr();for(let e of n)t(e);let o=+("power"!==r);e.set(o,{sequence:r,visNodes:n,startTime:i})}let i=f.get(r);if(i&&d){let t=d.clipAction(i);t.setLoop(c.LoopRepeat,1/0),t.reset().play();let n=+("power"!==r),o=e.get(n);o?o.action=t:e.set(n,{sequence:r,action:t,startTime:tr()})}}}v.current=a?s:()=>u();let h=[],B=d?t=>{for(let[r,n]of e)if(n.action===t.action){a?s(r):u();break}}:null;return B&&d&&d.addEventListener("finished",B),l&&(h.push(l.$.onMethodCalled("ShapeBase","playThread",(e,t,i)=>{e._id===n._id&&r(Number(t),String(i))})),h.push(l.$.onMethodCalled("ShapeBase","stopThread",(e,t)=>{e._id===n._id&&i(Number(t))})),h.push(l.$.onMethodCalled("ShapeBase","pauseThread",(t,r)=>{if(t._id!==n._id)return;let i=e.get(Number(r));i?.action&&(i.action.paused=!0)}))),a?l.$.call(n,"deploy"):o?r(3,"deploy"):u(),()=>{for(let t of(B&&d&&d.removeEventListener("finished",B),h.forEach(e=>e()),v.current=null,b.current=null,E.current=null,[...e.keys()]))i(t)}},[d,f,A,n,l]);let F=(0,i.useMemo)(()=>{let t=e.scene.userData?.dts_sequence_names;if("string"==typeof t)try{return JSON.parse(t).map(e=>e.toLowerCase())}catch{}return e.animations.map(e=>e.name.toLowerCase())},[e]);return(0,eC.useFrame)((e,t)=>{let r=m.current,n=null!=y.current,i=eI.engineStore.getState().playback,o=n?"playing"===i.status?t*i.rate:0:t,a=y.current,l=M.current;if(a!==l){let e=b.current,t=E.current;if(e&&t){M.current=a;let n=[];if(a)for(let e of a)n[e.index]=e;let i=[];if(l)for(let e of l)i[e.index]=e;let o=Math.max(n.length,i.length);for(let a=0;a0)for(let e of(C.current+=o,u)){if(!s){eU(e.atlas,0);continue}if(e.sequenceName&&e.sequenceDuration){let t=0;for(let[,n]of r)if(n.sequence===e.sequenceName){let r=tr()-n.startTime,i=e.sequenceDuration;t=(e.cyclic?r/i%1:Math.min(r/i,1))*i+(e.toolBegin??0);break}eU(e.atlas,eN(e.atlas,t))}else eU(e.atlas,eN(e.atlas,C.current))}}),(0,r.jsxs)("group",{rotation:[0,Math.PI/2,0],children:[(0,r.jsx)("primitive",{object:u}),a?(0,r.jsxs)(eT.FloatingLabel,{children:[n._id,": ",o]}):null]})});function tf(e){let t,i=(0,n.c)(3),{demoThreads:o}=e,{shapeName:a}=eS(),s=to(a);return i[0]!==o||i[1]!==s?(t=(0,r.jsx)(td,{gltf:s,demoThreads:o}),i[0]=o,i[1]=s,i[2]=t):t=i[2],t}},7368,e=>{"use strict";e.s(["ignoreScripts",0,["scripts/admin.cs","scripts/ai.cs","scripts/aiBotProfiles.cs","scripts/aiBountyGame.cs","scripts/aiChat.cs","scripts/aiCnH.cs","scripts/aiCTF.cs","scripts/aiDeathMatch.cs","scripts/aiDebug.cs","scripts/aiDefaultTasks.cs","scripts/aiDnD.cs","scripts/aiHumanTasks.cs","scripts/aiHunters.cs","scripts/aiInventory.cs","scripts/aiObjectiveBuilder.cs","scripts/aiObjectives.cs","scripts/aiRabbit.cs","scripts/aiSiege.cs","scripts/aiTDM.cs","scripts/aiTeamHunters.cs","scripts/deathMessages.cs","scripts/graphBuild.cs","scripts/navGraph.cs","scripts/serverTasks.cs","scripts/spdialog.cs"]])},17751,85413,e=>{"use strict";var t=e.i(19273),r=e.i(86491),n=e.i(40143),i=e.i(15823),o=class extends i.Subscribable{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,n,i){let o=n.queryKey,a=n.queryHash??(0,t.hashQueryKeyByOptions)(o,n),s=this.get(a);return s||(s=new r.Query({client:e,queryKey:o,queryHash:a,options:e.defaultQueryOptions(n),state:i,defaultOptions:e.getQueryDefaults(o)}),this.add(s)),s}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let r={exact:!0,...e};return this.getAll().find(e=>(0,t.matchQuery)(r,e))}findAll(e={}){let r=this.getAll();return Object.keys(e).length>0?r.filter(r=>(0,t.matchQuery)(e,r)):r}notify(e){n.notifyManager.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},a=e.i(88587),s=e.i(36553),l=class extends a.Removable{#t;#r;#n;#i;constructor(e){super(),this.#t=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#r=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#r.includes(e)||(this.#r.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#r=this.#r.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#r.length||("pending"===this.state.status?this.scheduleGc():this.#n.remove(this))}continue(){return this.#i?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#o({type:"continue"})},r={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#i=(0,s.createRetryer)({fn:()=>this.options.mutationFn?this.options.mutationFn(e,r):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#o({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#o({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let n="pending"===this.state.status,i=!this.#i.canStart();try{if(n)t();else{this.#o({type:"pending",variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,r);let t=await this.options.onMutate?.(e,r);t!==this.state.context&&this.#o({type:"pending",context:t,variables:e,isPaused:i})}let o=await this.#i.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,r),await this.options.onSuccess?.(o,e,this.state.context,r),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(o,null,e,this.state.context,r),this.#o({type:"success",data:o}),o}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,r)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,r)}catch(e){Promise.reject(e)}throw this.#o({type:"error",error:t}),t}finally{this.#n.runNext(this)}}#o(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),n.notifyManager.batch(()=>{this.#r.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:"updated",action:e})})}},u=i,c=class extends u.Subscribable{constructor(e={}){super(),this.config=e,this.#a=new Set,this.#s=new Map,this.#l=0}#a;#s;#l;build(e,t,r){let n=new l({client:e,mutationCache:this,mutationId:++this.#l,options:e.defaultMutationOptions(t),state:r});return this.add(n),n}add(e){this.#a.add(e);let t=d(e);if("string"==typeof t){let r=this.#s.get(t);r?r.push(e):this.#s.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#a.delete(e)){let t=d(e);if("string"==typeof t){let r=this.#s.get(t);if(r)if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&this.#s.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=d(e);if("string"!=typeof t)return!0;{let r=this.#s.get(t),n=r?.find(e=>"pending"===e.state.status);return!n||n===e}}runNext(e){let t=d(e);if("string"!=typeof t)return Promise.resolve();{let r=this.#s.get(t)?.find(t=>t!==e&&t.state.isPaused);return r?.continue()??Promise.resolve()}}clear(){n.notifyManager.batch(()=>{this.#a.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#a.clear(),this.#s.clear()})}getAll(){return Array.from(this.#a)}find(e){let r={exact:!0,...e};return this.getAll().find(e=>(0,t.matchMutation)(r,e))}findAll(e={}){return this.getAll().filter(r=>(0,t.matchMutation)(e,r))}notify(e){n.notifyManager.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return n.notifyManager.batch(()=>Promise.all(e.map(e=>e.continue().catch(t.noop))))}};function d(e){return e.options.scope?.id}var f=e.i(75555),A=e.i(14448);function h(e){return{onFetch:(r,n)=>{let i=r.options,o=r.fetchOptions?.meta?.fetchMore?.direction,a=r.state.data?.pages||[],s=r.state.data?.pageParams||[],l={pages:[],pageParams:[]},u=0,c=async()=>{let n=!1,c=(0,t.ensureQueryFn)(r.options,r.fetchOptions),d=async(e,i,o)=>{let a;if(n)return Promise.reject();if(null==i&&e.pages.length)return Promise.resolve(e);let s=(a={client:r.client,queryKey:r.queryKey,pageParam:i,direction:o?"backward":"forward",meta:r.options.meta},(0,t.addConsumeAwareSignal)(a,()=>r.signal,()=>n=!0),a),l=await c(s),{maxPages:u}=r.options,d=o?t.addToStart:t.addToEnd;return{pages:d(e.pages,l,u),pageParams:d(e.pageParams,i,u)}};if(o&&a.length){let e="backward"===o,t={pages:a,pageParams:s},r=(e?function(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}:m)(i,t);l=await d(t,r,e)}else{let t=e??a.length;do{let e=0===u?s[0]??i.initialPageParam:m(i,l);if(u>0&&null==e)break;l=await d(l,e),u++}while(ur.options.persister?.(c,{client:r.client,queryKey:r.queryKey,meta:r.options.meta,signal:r.signal},n):r.fetchFn=c}}}function m(e,{pages:t,pageParams:r}){let n=t.length-1;return t.length>0?e.getNextPageParam(t[n],t,r[n],r):void 0}var p=class{#u;#n;#c;#d;#f;#A;#h;#m;constructor(e={}){this.#u=e.queryCache||new o,this.#n=e.mutationCache||new c,this.#c=e.defaultOptions||{},this.#d=new Map,this.#f=new Map,this.#A=0}mount(){this.#A++,1===this.#A&&(this.#h=f.focusManager.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#u.onFocus())}),this.#m=A.onlineManager.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#u.onOnline())}))}unmount(){this.#A--,0===this.#A&&(this.#h?.(),this.#h=void 0,this.#m?.(),this.#m=void 0)}isFetching(e){return this.#u.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#n.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#u.get(t.queryHash)?.state.data}ensureQueryData(e){let r=this.defaultQueryOptions(e),n=this.#u.build(this,r),i=n.state.data;return void 0===i?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime((0,t.resolveStaleTime)(r.staleTime,n))&&this.prefetchQuery(r),Promise.resolve(i))}getQueriesData(e){return this.#u.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,r,n){let i=this.defaultQueryOptions({queryKey:e}),o=this.#u.get(i.queryHash),a=o?.state.data,s=(0,t.functionalUpdate)(r,a);if(void 0!==s)return this.#u.build(this,i).setData(s,{...n,manual:!0})}setQueriesData(e,t,r){return n.notifyManager.batch(()=>this.#u.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#u.get(t.queryHash)?.state}removeQueries(e){let t=this.#u;n.notifyManager.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=this.#u;return n.notifyManager.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,r={}){let i={revert:!0,...r};return Promise.all(n.notifyManager.batch(()=>this.#u.findAll(e).map(e=>e.cancel(i)))).then(t.noop).catch(t.noop)}invalidateQueries(e,t={}){return n.notifyManager.batch(()=>(this.#u.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType==="none")?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t))}refetchQueries(e,r={}){let i={...r,cancelRefetch:r.cancelRefetch??!0};return Promise.all(n.notifyManager.batch(()=>this.#u.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let r=e.fetch(void 0,i);return i.throwOnError||(r=r.catch(t.noop)),"paused"===e.state.fetchStatus?Promise.resolve():r}))).then(t.noop)}fetchQuery(e){let r=this.defaultQueryOptions(e);void 0===r.retry&&(r.retry=!1);let n=this.#u.build(this,r);return n.isStaleByTime((0,t.resolveStaleTime)(r.staleTime,n))?n.fetch(r):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(t.noop).catch(t.noop)}fetchInfiniteQuery(e){return e.behavior=h(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(t.noop).catch(t.noop)}ensureInfiniteQueryData(e){return e.behavior=h(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return A.onlineManager.isOnline()?this.#n.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#u}getMutationCache(){return this.#n}getDefaultOptions(){return this.#c}setDefaultOptions(e){this.#c=e}setQueryDefaults(e,r){this.#d.set((0,t.hashKey)(e),{queryKey:e,defaultOptions:r})}getQueryDefaults(e){let r=[...this.#d.values()],n={};return r.forEach(r=>{(0,t.partialMatchKey)(e,r.queryKey)&&Object.assign(n,r.defaultOptions)}),n}setMutationDefaults(e,r){this.#f.set((0,t.hashKey)(e),{mutationKey:e,defaultOptions:r})}getMutationDefaults(e){let r=[...this.#f.values()],n={};return r.forEach(r=>{(0,t.partialMatchKey)(e,r.mutationKey)&&Object.assign(n,r.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let r={...this.#c.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return r.queryHash||(r.queryHash=(0,t.hashQueryKeyByOptions)(r.queryKey,r)),void 0===r.refetchOnReconnect&&(r.refetchOnReconnect="always"!==r.networkMode),void 0===r.throwOnError&&(r.throwOnError=!!r.suspense),!r.networkMode&&r.persister&&(r.networkMode="offlineFirst"),r.queryFn===t.skipToken&&(r.enabled=!1),r}defaultMutationOptions(e){return e?._defaulted?e:{...this.#c.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#u.clear(),this.#n.clear()}};e.s(["QueryClient",()=>p],17751);var B=Object.defineProperty;class C{constructor(){((e,t,r)=>{let n;return(n="symbol"!=typeof t?t+"":t)in e?B(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r})(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,n=r.length;tC],85413)},38360,(e,t,r)=>{var n={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ả:"A",Ạ:"A",Ẩ:"A",Ẫ:"A",Ậ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ẻ:"E",Ẽ:"E",Ẹ:"E",Ể:"E",Ễ:"E",Ệ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ỉ:"I",Ị:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ỏ:"O",Ọ:"O",Ổ:"O",Ỗ:"O",Ộ:"O",Ờ:"O",Ở:"O",Ỡ:"O",Ớ:"O",Ợ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ủ:"U",Ụ:"U",Ử:"U",Ữ:"U",Ự:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ả:"a",ạ:"a",ẩ:"a",ẫ:"a",ậ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ẻ:"e",ẽ:"e",ẹ:"e",ể:"e",ễ:"e",ệ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ỉ:"i",ị:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ỏ:"o",ọ:"o",ổ:"o",ỗ:"o",ộ:"o",ờ:"o",ở:"o",ỡ:"o",ớ:"o",ợ:"o",ù:"u",ú:"u",û:"u",ü:"u",ủ:"u",ụ:"u",ử:"u",ữ:"u",ự:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},i=Object.keys(n).join("|"),o=RegExp(i,"g"),a=RegExp(i,"");function s(e){return n[e]}var l=function(e){return e.replace(o,s)};t.exports=l,t.exports.has=function(e){return!!e.match(a)},t.exports.remove=l},11889,56373,86447,1559,18364,78440,59129,25998,70238,e=>{"use strict";e.i(47167);var t,r="u">typeof window&&!!(null==(t=window.document)?void 0:t.createElement);function n(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function i(e){return e?"self"in e?e.self:n(e).defaultView||window:self}function o(e,t=!1){var r;let{activeElement:i}=n(e);if(!(null==i?void 0:i.nodeName))return null;if(s(i)&&(null==(r=i.contentDocument)?void 0:r.body))return o(i.contentDocument.body,t);if(t){let e=i.getAttribute("aria-activedescendant");if(e){let t=n(i).getElementById(e);if(t)return t}}return i}function a(e,t){return e===t||e.contains(t)}function s(e){return"IFRAME"===e.tagName}function l(e){let t=e.tagName.toLowerCase();return"button"===t||"input"===t&&!!e.type&&-1!==u.indexOf(e.type)}var u=["button","color","file","image","reset","submit"];function c(e){return"function"==typeof e.checkVisibility?e.checkVisibility():e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0}function d(e){try{let t=e instanceof HTMLInputElement&&null!==e.selectionStart,r="TEXTAREA"===e.tagName;return t||r||!1}catch(e){return!1}}function f(e){return e.isContentEditable||d(e)}function A(e){let t=0,r=0;if(d(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let i=n(e).getSelection();if((null==i?void 0:i.rangeCount)&&i.anchorNode&&a(e,i.anchorNode)&&i.focusNode&&a(e,i.focusNode)){let n=i.getRangeAt(0),o=n.cloneRange();o.selectNodeContents(e),o.setEnd(n.startContainer,n.startOffset),t=o.toString().length,o.setEnd(n.endContainer,n.endOffset),r=o.toString().length}}return{start:t,end:r}}function h(e,t){let r=null==e?void 0:e.getAttribute("role");return r&&-1!==["dialog","menu","listbox","tree","grid"].indexOf(r)?r:t}function m(e){if(!e)return null;let t=e=>"auto"===e||"scroll"===e;if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return m(e.parentElement)||document.scrollingElement||document.body}function p(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function B(e,t){return t&&e.item(t)||null}var C=Symbol("FOCUS_SILENTLY");function g(e,t,r){if(!t||t===r)return!1;let n=e.item(t.id);return!!n&&(!r||n.element!==r)}function v(){}function y(e,t){return"function"==typeof Object.hasOwn?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function b(...e){return(...t)=>{for(let r of e)"function"==typeof r&&r(...t)}}function E(e){return e}function M(e,t){if(!e){if("string"!=typeof t)throw Error("Invariant failed");throw Error(t)}}function F(e,...t){let r="function"==typeof e?e(...t):e;return null!=r&&!r}function S(e){return e.disabled||!0===e["aria-disabled"]||"true"===e["aria-disabled"]}function R(e){let t={};for(let r in e)void 0!==e[r]&&(t[r]=e[r]);return t}function I(...e){for(let t of e)if(void 0!==t)return t}var T=e.i(71645);function x(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function G(){return r&&!!navigator.maxTouchPoints}function D(){return!!r&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}function w(){return r&&D()&&/apple/i.test(navigator.vendor)}function L(e){return!!(e.currentTarget&&!a(e.currentTarget,e.target))}function _(e){return e.target===e.currentTarget}function O(e,t){let r=new FocusEvent("blur",t),n=e.dispatchEvent(r),i={...t,bubbles:!0};return e.dispatchEvent(new FocusEvent("focusout",i)),n}function H(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function P(e,t){let r=t||e.currentTarget,n=e.relatedTarget;return!n||!a(r,n)}function J(e,t,r,n){let i=(e=>{if(n){let t=setTimeout(e,n);return()=>clearTimeout(t)}let t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)})(()=>{e.removeEventListener(t,o,!0),r()}),o=()=>{i(),r()};return e.addEventListener(t,o,{once:!0,capture:!0}),i}function U(e,t,r,n=window){let i=[];try{for(let o of(n.document.addEventListener(e,t,r),Array.from(n.frames)))i.push(U(e,t,r,o))}catch(e){}return()=>{try{n.document.removeEventListener(e,t,r)}catch(e){}for(let e of i)e()}}var N={...T},k=N.useId;N.useDeferredValue;var K=N.useInsertionEffect,j=r?T.useLayoutEffect:T.useEffect;function Q(e){let t=(0,T.useRef)(()=>{throw Error("Cannot call an event handler while rendering.")});return K?K(()=>{t.current=e}):t.current=e,(0,T.useCallback)((...e)=>{var r;return null==(r=t.current)?void 0:r.call(t,...e)},[])}function X(...e){return(0,T.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)x(r,t)}},e)}function V(e){if(k){let t=k();return e||t}let[t,r]=(0,T.useState)(e);return j(()=>{if(e||t)return;let n=Math.random().toString(36).slice(2,8);r(`id-${n}`)},[e,t]),e||t}function q(e,t){let r=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,T.useEffect)(()=>()=>{r.current=!1},[])}function W(){return(0,T.useReducer)(()=>[],[])}function Y(e){return Q("function"==typeof e?e:()=>e)}function Z(e,t,r=[]){let n=(0,T.useCallback)(r=>(e.wrapElement&&(r=e.wrapElement(r)),t(r)),[...r,e.wrapElement]);return{...e,wrapElement:n}}function z(e=!1,t){let[r,n]=(0,T.useState)(null);return{portalRef:X(n,t),portalNode:r,domReady:!e||r}}var $=!1,ee=!1,et=0,er=0;function en(e){let t,r;t=e.movementX||e.screenX-et,r=e.movementY||e.screenY-er,et=e.screenX,er=e.screenY,(t||r||0)&&(ee=!0)}function ei(){ee=!1}var eo=e.i(43476);function ea(e){let t=T.forwardRef((t,r)=>e({...t,ref:r}));return t.displayName=e.displayName||e.name,t}function es(e,t){return T.memo(e,t)}function el(e,t){let r,{wrapElement:n,render:i,...o}=t,a=X(t.ref,i&&(0,T.isValidElement)(i)&&("ref"in i.props||"ref"in i)?({...i.props}).ref||i.ref:null);if(T.isValidElement(i)){let e={...i.props,ref:a};r=T.cloneElement(i,function(e,t){let r={...e};for(let n in t){if(!y(t,n))continue;if("className"===n){let n="className";r[n]=e[n]?`${e[n]} ${t[n]}`:t[n];continue}if("style"===n){let n="style";r[n]=e[n]?{...e[n],...t[n]}:t[n];continue}let i=t[n];if("function"==typeof i&&n.startsWith("on")){let t=e[n];if("function"==typeof t){r[n]=(...e)=>{i(...e),t(...e)};continue}}r[n]=i}return r}(o,e))}else r=i?i(o):(0,eo.jsx)(e,{...o});return n?n(r):r}function eu(e){let t=(t={})=>e(t);return t.displayName=e.name,t}function ec(e=[],t=[]){let r=T.createContext(void 0),n=T.createContext(void 0),i=()=>T.useContext(r),o=t=>e.reduceRight((e,r)=>(0,eo.jsx)(r,{...t,children:e}),(0,eo.jsx)(r.Provider,{...t}));return{context:r,scopedContext:n,useContext:i,useScopedContext:(e=!1)=>{let t=T.useContext(n),r=i();return e?t:t||r},useProviderContext:()=>{let e=T.useContext(n),t=i();if(!e||e!==t)return t},ContextProvider:o,ScopedContextProvider:e=>(0,eo.jsx)(o,{...e,children:t.reduceRight((t,r)=>(0,eo.jsx)(r,{...e,children:t}),(0,eo.jsx)(n.Provider,{...e}))})}}var ed=ec(),ef=ed.useContext;ed.useScopedContext,ed.useProviderContext;var eA=ec([ed.ContextProvider],[ed.ScopedContextProvider]),eh=eA.useContext;eA.useScopedContext;var em=eA.useProviderContext,ep=eA.ContextProvider,eB=eA.ScopedContextProvider,eC=(0,T.createContext)(void 0),eg=(0,T.createContext)(void 0),ev=(0,T.createContext)(!0),ey="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function eb(e){return!(!e.matches(ey)||!c(e)||e.closest("[inert]"))}function eE(e){if(!eb(e)||0>Number.parseInt(e.getAttribute("tabindex")||"0",10))return!1;if(!("form"in e)||!e.form||e.checked||"radio"!==e.type)return!0;let t=e.form.elements.namedItem(e.name);if(!t||!("length"in t))return!0;let r=o(e);return!r||r===e||!("form"in r)||r.form!==e.form||r.name!==e.name}function eM(e,t){let r=Array.from(e.querySelectorAll(ey));t&&r.unshift(e);let n=r.filter(eb);return n.forEach((e,t)=>{var r;if(!s(e))return;let i=null==(r=e.contentDocument)?void 0:r.body;i&&n.splice(t,1,...eM(i))}),n}function eF(e,t,r){let n=Array.from(e.querySelectorAll(ey)),i=n.filter(eE);return(t&&eE(e)&&i.unshift(e),i.forEach((e,t)=>{var n;if(!s(e))return;let o=null==(n=e.contentDocument)?void 0:n.body;if(!o)return;let a=eF(o,!1,r);i.splice(t,1,...a)}),!i.length&&r)?n:i}function eS(e,t){var r;let n,i,a,s;return r=document.body,n=o(r),a=(i=eM(r,!1)).indexOf(n),(s=i.slice(a+1)).find(eE)||(e?i.find(eE):null)||(t?s[0]:null)||null}function eR(e,t){var r;let n,i,a,s;return r=document.body,n=o(r),a=(i=eM(r,!1).reverse()).indexOf(n),(s=i.slice(a+1)).find(eE)||(e?i.find(eE):null)||(t?s[0]:null)||null}function eI(e){let t=o(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&r===e.id}function eT(e){let t=o(e);if(!t)return!1;if(a(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&"id"in e&&(r===e.id||!!e.querySelector(`#${CSS.escape(r)}`))}function ex(e){!eT(e)&&eb(e)&&e.focus()}var eG=w(),eD=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],ew=Symbol("safariFocusAncestor");function eL(e){return"input"===e.tagName.toLowerCase()&&!!e.type&&("radio"===e.type||"checkbox"===e.type)}function e_(e,t){return Q(r=>{null==e||e(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var eO=!1,eH=!0;function eP(e){let t=e.target;t&&"hasAttribute"in t&&!t.hasAttribute("data-focus-visible")&&(eH=!1)}function eJ(e){e.metaKey||e.ctrlKey||e.altKey||(eH=!0)}var eU=eu(function({focusable:e=!0,accessibleWhenDisabled:t,autoFocus:r,onFocusVisible:n,...i}){var o,a,s,u,c;let d=(0,T.useRef)(null);(0,T.useEffect)(()=>{!e||eO||(U("mousedown",eP,!0),U("keydown",eJ,!0),eO=!0)},[e]),eG&&(0,T.useEffect)(()=>{if(!e)return;let t=d.current;if(!t||!eL(t))return;let r="labels"in t?t.labels:null;if(!r)return;let n=()=>queueMicrotask(()=>t.focus());for(let e of r)e.addEventListener("mouseup",n);return()=>{for(let e of r)e.removeEventListener("mouseup",n)}},[e]);let f=e&&S(i),A=!!f&&!t,[h,m]=(0,T.useState)(!1);(0,T.useEffect)(()=>{e&&A&&h&&m(!1)},[e,A,h]),(0,T.useEffect)(()=>{if(!e||!h)return;let t=d.current;if(!t||"u"{eb(t)||m(!1)});return r.observe(t),()=>r.disconnect()},[e,h]);let p=e_(i.onKeyPressCapture,f),B=e_(i.onMouseDownCapture,f),C=e_(i.onClickCapture,f),g=i.onMouseDown,v=Q(t=>{if(null==g||g(t),t.defaultPrevented||!e)return;let r=t.currentTarget;if(!eG||L(t)||!l(r)&&!eL(r))return;let n=!1,i=()=>{n=!0};r.addEventListener("focusin",i,{capture:!0,once:!0});let o=function(e){for(;e&&!eb(e);)e=e.closest(ey);return e||null}(r.parentElement);o&&(o[ew]=!0),J(r,"mouseup",()=>{r.removeEventListener("focusin",i,!0),o&&(o[ew]=!1),n||ex(r)})}),y=(t,r)=>{if(r&&(t.currentTarget=r),!e)return;let i=t.currentTarget;i&&eI(i)&&(null==n||n(t),t.defaultPrevented||(i.dataset.focusVisible="true",m(!0)))},b=i.onKeyDownCapture,E=Q(t=>{if(null==b||b(t),t.defaultPrevented||!e||h||t.metaKey||t.altKey||t.ctrlKey||!_(t))return;let r=t.currentTarget;J(r,"focusout",()=>y(t,r))}),M=i.onFocusCapture,F=Q(t=>{if(null==M||M(t),t.defaultPrevented||!e)return;if(!_(t))return void m(!1);let r=t.currentTarget;eH||function(e){let{tagName:t,readOnly:r,type:n}=e;return"TEXTAREA"===t&&!r||"SELECT"===t&&!r||("INPUT"!==t||r?!!e.isContentEditable||"combobox"===e.getAttribute("role")&&!!e.dataset.name:eD.includes(n))}(t.target)?J(t.target,"focusout",()=>y(t,r)):m(!1)}),I=i.onBlur,x=Q(t=>{null==I||I(t),!e||P(t)&&(t.currentTarget.removeAttribute("data-focus-visible"),m(!1))}),G=(0,T.useContext)(ev),D=Q(t=>{e&&r&&t&&G&&queueMicrotask(()=>{eI(t)||eb(t)&&t.focus()})}),w=function(e,t){let r=e=>{if("string"==typeof e)return e},[n,i]=(0,T.useState)(()=>r(void 0));return j(()=>{let t=e&&"current"in e?e.current:e;i((null==t?void 0:t.tagName.toLowerCase())||r(void 0))},[e,void 0]),n}(d),O=e&&(!w||"button"===w||"summary"===w||"input"===w||"select"===w||"textarea"===w||"a"===w),H=e&&(!w||"button"===w||"input"===w||"select"===w||"textarea"===w),N=i.style,k=(0,T.useMemo)(()=>A?{pointerEvents:"none",...N}:N,[A,N]);return i={"data-focus-visible":e&&h||void 0,"data-autofocus":r||void 0,"aria-disabled":f||void 0,...i,ref:X(d,D,i.ref),style:k,tabIndex:(o=e,a=A,s=O,u=H,c=i.tabIndex,o?a?s&&!u?-1:void 0:s?c:c||0:c),disabled:!!H&&!!A||void 0,contentEditable:f?void 0:i.contentEditable,onKeyPressCapture:p,onClickCapture:C,onMouseDownCapture:B,onMouseDown:v,onKeyDownCapture:E,onFocusCapture:F,onBlur:x},R(i)});function eN(e){let t=[];for(let r of e)t.push(...r);return t}function ek(e){return e.slice().reverse()}function eK(e,t,r){return Q(n=>{var i;let o,a;if(null==t||t(n),n.defaultPrevented||n.isPropagationStopped()||!_(n)||"Shift"===n.key||"Control"===n.key||"Alt"===n.key||"Meta"===n.key||(!(o=n.target)||d(o))&&1===n.key.length&&!n.ctrlKey&&!n.metaKey)return;let s=e.getState(),l=null==(i=B(e,s.activeId))?void 0:i.element;if(!l)return;let{view:u,...c}=n;l!==(null==r?void 0:r.current)&&l.focus(),a=new KeyboardEvent(n.type,c),l.dispatchEvent(a)||n.preventDefault(),n.currentTarget.contains(l)&&n.stopPropagation()})}ea(function(e){return el("div",eU(e))});var ej=eu(function({store:e,composite:t=!0,focusOnMove:r=t,moveOnKeyPress:n=!0,...i}){let a=em();M(e=e||a,!1);let s=(0,T.useRef)(null),l=(0,T.useRef)(null),u=function(e){let[t,r]=(0,T.useState)(!1),n=(0,T.useCallback)(()=>r(!0),[]),i=e.useState(t=>B(e,t.activeId));return(0,T.useEffect)(()=>{let e=null==i?void 0:i.element;!t||e&&(r(!1),e.focus({preventScroll:!0}))},[i,t]),n}(e),c=e.useState("moves"),[,f]=function(e){let[t,r]=(0,T.useState)(null);return j(()=>{if(null==t||!e)return;let r=null;return e(e=>(r=e,t)),()=>{e(r)}},[t,e]),[t,r]}(t?e.setBaseElement:null);(0,T.useEffect)(()=>{var n;if(!e||!c||!t||!r)return;let{activeId:i}=e.getState(),o=null==(n=B(e,i))?void 0:n.element;o&&("scrollIntoView"in o?(o.focus({preventScroll:!0}),o.scrollIntoView({block:"nearest",inline:"nearest",...void 0})):o.focus())},[e,c,t,r]),j(()=>{if(!e||!c||!t)return;let{baseElement:r,activeId:n}=e.getState();if(null!==n||!r)return;let i=l.current;l.current=null,i&&O(i,{relatedTarget:r}),eI(r)||r.focus()},[e,c,t]);let A=e.useState("activeId"),h=e.useState("virtualFocus");j(()=>{var r;if(!e||!t||!h)return;let n=l.current;if(l.current=null,!n)return;let i=(null==(r=B(e,A))?void 0:r.element)||o(n);i!==n&&O(n,{relatedTarget:i})},[e,A,h,t]);let m=eK(e,i.onKeyDownCapture,l),p=eK(e,i.onKeyUpCapture,l),v=i.onFocusCapture,y=Q(t=>{var r;let n;if(null==v||v(t),t.defaultPrevented||!e)return;let{virtualFocus:i}=e.getState();if(!i)return;let o=t.relatedTarget,a=(n=(r=t.currentTarget)[C],delete r[C],n);_(t)&&a&&(t.stopPropagation(),l.current=o)}),b=i.onFocus,E=Q(r=>{if(null==b||b(r),r.defaultPrevented||!t||!e)return;let{relatedTarget:n}=r,{virtualFocus:i}=e.getState();i?_(r)&&!g(e,n)&&queueMicrotask(u):_(r)&&e.setActiveId(null)}),F=i.onBlurCapture,S=Q(t=>{var r;if(null==F||F(t),t.defaultPrevented||!e)return;let{virtualFocus:n,activeId:i}=e.getState();if(!n)return;let o=null==(r=B(e,i))?void 0:r.element,a=t.relatedTarget,s=g(e,a),u=l.current;l.current=null,_(t)&&s?(a===o?u&&u!==a&&O(u,t):o?O(o,t):u&&O(u,t),t.stopPropagation()):!g(e,t.target)&&o&&O(o,t)}),R=i.onKeyDown,I=Y(n),x=Q(t=>{var r;if(null==R||R(t),t.nativeEvent.isComposing||t.defaultPrevented||!e||!_(t))return;let{orientation:n,renderedItems:i,activeId:o}=e.getState(),a=B(e,o);if(null==(r=null==a?void 0:a.element)?void 0:r.isConnected)return;let s="horizontal"!==n,l="vertical"!==n,u=i.some(e=>!!e.rowId);if(("ArrowLeft"===t.key||"ArrowRight"===t.key||"Home"===t.key||"End"===t.key)&&d(t.currentTarget))return;let c={ArrowUp:(u||s)&&(()=>{if(u){let e=eN(ek(function(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}(i))).find(e=>!e.disabled);return null==e?void 0:e.id}return null==e?void 0:e.last()}),ArrowRight:(u||l)&&e.first,ArrowDown:(u||s)&&e.first,ArrowLeft:(u||l)&&e.last,Home:e.first,End:e.last,PageUp:e.first,PageDown:e.last}[t.key];if(c){let r=c();if(void 0!==r){if(!I(t))return;t.preventDefault(),e.move(r)}}});return i=Z(i,t=>(0,eo.jsx)(ep,{value:e,children:t}),[e]),i={"aria-activedescendant":e.useState(r=>{var n;if(e&&t&&r.virtualFocus)return null==(n=B(e,r.activeId))?void 0:n.id}),...i,ref:X(s,f,i.ref),onKeyDownCapture:m,onKeyUpCapture:p,onFocusCapture:y,onFocus:E,onBlurCapture:S,onKeyDown:x},i=eU({focusable:e.useState(e=>t&&(e.virtualFocus||null===e.activeId)),...i})});ea(function(e){return el("div",ej(e))});var eQ=ec();eQ.useContext,eQ.useScopedContext;var eX=eQ.useProviderContext,eV=ec([eQ.ContextProvider],[eQ.ScopedContextProvider]);eV.useContext,eV.useScopedContext;var eq=eV.useProviderContext,eW=eV.ContextProvider,eY=eV.ScopedContextProvider,eZ=(0,T.createContext)(void 0),ez=(0,T.createContext)(void 0),e$=ec([eW],[eY]);e$.useContext,e$.useScopedContext;var e0=e$.useProviderContext,e1=e$.ContextProvider,e9=e$.ScopedContextProvider,e8=eu(function({store:e,...t}){let r=e0();return e=e||r,t={...t,ref:X(null==e?void 0:e.setAnchorElement,t.ref)}});ea(function(e){return el("div",e8(e))});var e2=(0,T.createContext)(void 0),e3=ec([e1,ep],[e9,eB]),e6=e3.useContext,e4=e3.useScopedContext,e7=e3.useProviderContext,e5=e3.ContextProvider,te=e3.ScopedContextProvider,tt=(0,T.createContext)(void 0),tr=(0,T.createContext)(!1);function tn(e,t){let r=e.__unstableInternals;return M(r,"Invalid store"),r[t]}function ti(e,...t){let r=e,n=r,i=Symbol(),o=v,a=new Set,s=new Set,l=new Set,u=new Set,c=new Set,d=new WeakMap,f=new WeakMap,A=(e,t,r=u)=>(r.add(t),f.set(t,e),()=>{var e;null==(e=d.get(t))||e(),d.delete(t),f.delete(t),r.delete(t)}),h=(e,o,a=!1)=>{var l,A;if(!y(r,e))return;let h=(A=r[e],"function"==typeof o?o("function"==typeof A?A():A):o);if(h===r[e])return;if(!a)for(let r of t)null==(l=null==r?void 0:r.setState)||l.call(r,e,h);let m=r;r={...r,[e]:h};let p=Symbol();i=p,s.add(e);let B=(t,n,i)=>{var o;let a=f.get(t);(!a||a.some(t=>i?i.has(t):t===e))&&(null==(o=d.get(t))||o(),d.set(t,t(r,n)))};for(let e of u)B(e,m);queueMicrotask(()=>{if(i!==p)return;let e=r;for(let e of c)B(e,n,s);n=e,s.clear()})},m={getState:()=>r,setState:h,__unstableInternals:{setup:e=>(l.add(e),()=>l.delete(e)),init:()=>{let e=a.size,n=Symbol();a.add(n);let i=()=>{a.delete(n),a.size||o()};if(e)return i;let s=Object.keys(r).map(e=>b(...t.map(t=>{var r;let n=null==(r=null==t?void 0:t.getState)?void 0:r.call(t);if(n&&y(n,e))return tl(t,[e],t=>{h(e,t[e],!0)})}))),u=[];for(let e of l)u.push(e());return o=b(...s,...u,...t.map(ta)),i},subscribe:(e,t)=>A(e,t),sync:(e,t)=>(d.set(t,t(r,r)),A(e,t)),batch:(e,t)=>(d.set(t,t(r,n)),A(e,t,c)),pick:e=>ti(function(e,t){let r={};for(let n of t)y(e,n)&&(r[n]=e[n]);return r}(r,e),m),omit:e=>ti(function(e,t){let r={...e};for(let e of t)y(r,e)&&delete r[e];return r}(r,e),m)}};return m}function to(e,...t){if(e)return tn(e,"setup")(...t)}function ta(e,...t){if(e)return tn(e,"init")(...t)}function ts(e,...t){if(e)return tn(e,"subscribe")(...t)}function tl(e,...t){if(e)return tn(e,"sync")(...t)}function tu(e,...t){if(e)return tn(e,"batch")(...t)}function tc(e,...t){if(e)return tn(e,"omit")(...t)}function td(...e){var t;let r={};for(let n of e){let e=null==(t=null==n?void 0:n.getState)?void 0:t.call(n);e&&Object.assign(r,e)}let n=ti(r,...e);return Object.assign({},...e,n)}function tf(e,t){}function tA(e,t,r){if(!r)return!1;let n=e.find(e=>!e.disabled&&e.value);return(null==n?void 0:n.value)===t}function th(e,t){return!!t&&null!=e&&(e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,""),t.length>e.length&&0===t.toLowerCase().indexOf(e.toLowerCase()))}var tm=eu(function({store:e,focusable:t=!0,autoSelect:r=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:o=0,showOnChange:a,showOnMouseDown:s,showOnClick:l=s,showOnKeyDown:u,showOnKeyPress:c=u,blurActiveItemOnClick:d,setValueOnClick:f=!0,moveOnKeyPress:B=!0,autoComplete:C="list",...g}){var y;let b,E=e7();M(e=e||E,!1);let S=(0,T.useRef)(null),[R,I]=W(),x=(0,T.useRef)(!1),G=(0,T.useRef)(!1),D=e.useState(e=>e.virtualFocus&&r),w="inline"===C||"both"===C,[L,_]=(0,T.useState)(w);y=[w],b=(0,T.useRef)(!1),j(()=>{if(b.current)return(()=>{w&&_(!0)})();b.current=!0},y),j(()=>()=>{b.current=!1},[]);let O=e.useState("value"),H=(0,T.useRef)(void 0);(0,T.useEffect)(()=>tl(e,["selectedValue","activeId"],(e,t)=>{H.current=t.selectedValue}),[]);let U=e.useState(e=>{var t;if(w&&L){if(e.activeValue&&Array.isArray(e.selectedValue)&&(e.selectedValue.includes(e.activeValue)||(null==(t=H.current)?void 0:t.includes(e.activeValue))))return;return e.activeValue}}),N=e.useState("renderedItems"),k=e.useState("open"),K=e.useState("contentElement"),Z=(0,T.useMemo)(()=>{if(!w||!L)return O;if(tA(N,U,D)){if(th(O,U)){let e=(null==U?void 0:U.slice(O.length))||"";return O+e}return O}return U||O},[w,L,N,U,D,O]);(0,T.useEffect)(()=>{let e=S.current;if(!e)return;let t=()=>_(!0);return e.addEventListener("combobox-item-move",t),()=>{e.removeEventListener("combobox-item-move",t)}},[]),(0,T.useEffect)(()=>{if(!w||!L||!U||!tA(N,U,D)||!th(O,U))return;let e=v;return queueMicrotask(()=>{let t=S.current;if(!t)return;let{start:r,end:n}=A(t),i=O.length,o=U.length;p(t,i,o),e=()=>{if(!eI(t))return;let{start:e,end:a}=A(t);e!==i||a===o&&p(t,r,n)}}),()=>e()},[R,w,L,U,N,D,O]);let z=(0,T.useRef)(null),$=Q(n),ee=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(!k||!K)return;let t=m(K);if(!t)return;z.current=t;let r=()=>{x.current=!1},n=()=>{if(!e||!x.current)return;let{activeId:t}=e.getState();null===t||t!==ee.current&&(x.current=!1)},i={passive:!0,capture:!0};return t.addEventListener("wheel",r,i),t.addEventListener("touchmove",r,i),t.addEventListener("scroll",n,i),()=>{t.removeEventListener("wheel",r,!0),t.removeEventListener("touchmove",r,!0),t.removeEventListener("scroll",n,!0)}},[k,K,e]),j(()=>{!O||G.current||(x.current=!0)},[O]),j(()=>{"always"!==D&&k||(x.current=k)},[D,k]);let et=e.useState("resetValueOnSelect");q(()=>{var t,r;let n=x.current;if(!e||!k||!n&&!et)return;let{baseElement:i,contentElement:o,activeId:a}=e.getState();if(!i||eI(i)){if(null==o?void 0:o.hasAttribute("data-placing")){let e=new MutationObserver(I);return e.observe(o,{attributeFilter:["data-placing"]}),()=>e.disconnect()}if(D&&n){let r,n=$(N),i=void 0!==n?n:null!=(t=null==(r=N.find(e=>{var t;return!e.disabled&&(null==(t=e.element)?void 0:t.getAttribute("role"))!=="tab"}))?void 0:r.id)?t:e.first();ee.current=i,e.move(null!=i?i:null)}else{let t=null==(r=e.item(a||e.first()))?void 0:r.element;t&&"scrollIntoView"in t&&t.scrollIntoView({block:"nearest",inline:"nearest"})}}},[e,k,R,O,D,et,$,N]),(0,T.useEffect)(()=>{if(!w)return;let t=S.current;if(!t)return;let r=[t,K].filter(e=>!!e),n=t=>{r.every(e=>P(t,e))&&(null==e||e.setValue(Z))};for(let e of r)e.addEventListener("focusout",n);return()=>{for(let e of r)e.removeEventListener("focusout",n)}},[w,K,e,Z]);let er=e=>e.currentTarget.value.length>=o,en=g.onChange,ei=Y(null!=a?a:er),eo=Y(null!=i?i:!e.tag),ea=Q(t=>{if(null==en||en(t),t.defaultPrevented||!e)return;let r=t.currentTarget,{value:n,selectionStart:i,selectionEnd:o}=r,a=t.nativeEvent;if(x.current=!0,"input"===a.type&&(a.isComposing&&(x.current=!1,G.current=!0),w)){let e="insertText"===a.inputType||"insertCompositionText"===a.inputType,t=i===n.length;_(e&&t)}if(eo(t)){let t=n===e.getState().value;e.setValue(n),queueMicrotask(()=>{p(r,i,o)}),w&&D&&t&&I()}ei(t)&&e.show(),D&&x.current||e.setActiveId(null)}),es=g.onCompositionEnd,el=Q(e=>{x.current=!0,G.current=!1,null==es||es(e),e.defaultPrevented||D&&I()}),eu=g.onMouseDown,ec=Y(null!=d?d:()=>!!(null==e?void 0:e.getState().includesBaseElement)),ed=Y(f),ef=Y(null!=l?l:er),eA=Q(t=>{null==eu||eu(t),t.defaultPrevented||t.button||t.ctrlKey||e&&(ec(t)&&e.setActiveId(null),ed(t)&&e.setValue(Z),ef(t)&&J(t.currentTarget,"mouseup",e.show))}),eh=g.onKeyDown,em=Y(null!=c?c:er),ep=Q(t=>{if(null==eh||eh(t),t.repeat||(x.current=!1),t.defaultPrevented||t.ctrlKey||t.altKey||t.shiftKey||t.metaKey||!e)return;let{open:r}=e.getState();!r&&("ArrowUp"===t.key||"ArrowDown"===t.key)&&em(t)&&(t.preventDefault(),e.show())}),eB=g.onBlur,eC=Q(e=>{if(x.current=!1,null==eB||eB(e),e.defaultPrevented)return}),eg=V(g.id),ev=e.useState(e=>null===e.activeId);return g={id:eg,role:"combobox","aria-autocomplete":"inline"===C||"list"===C||"both"===C||"none"===C?C:void 0,"aria-haspopup":h(K,"listbox"),"aria-expanded":k,"aria-controls":null==K?void 0:K.id,"data-active-item":ev||void 0,value:Z,...g,ref:X(S,g.ref),onChange:ea,onCompositionEnd:el,onMouseDown:eA,onKeyDown:ep,onBlur:eC},g=ej({store:e,focusable:t,...g,moveOnKeyPress:e=>!F(B,e)&&(w&&_(!0),!0)}),{autoComplete:"off",...g=e8({store:e,...g})}}),tp=ea(function(e){return el("input",tm(e))});function tB(e){let t=e.relatedTarget;return(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE?t:null}e.s(["Combobox",()=>tp],11889);var tC=Symbol("composite-hover"),tg=eu(function({store:e,focusOnHover:t=!0,blurOnHoverEnd:r=!!t,...n}){let i=eh();M(e=e||i,!1);let o=((0,T.useEffect)(()=>{$||(U("mousemove",en,!0),U("mousedown",ei,!0),U("mouseup",ei,!0),U("keydown",ei,!0),U("scroll",ei,!0),$=!0)},[]),Q(()=>ee)),s=n.onMouseMove,l=Y(t),u=Q(t=>{if((null==s||s(t),!t.defaultPrevented&&o())&&l(t)){if(!eT(t.currentTarget)){let t=null==e?void 0:e.getState().baseElement;t&&!eI(t)&&t.focus()}null==e||e.setActiveId(t.currentTarget.id)}}),c=n.onMouseLeave,d=Y(r),f=Q(t=>{var r;let n;null==c||c(t),!t.defaultPrevented&&o()&&((n=tB(t))&&a(t.currentTarget,n)||function(e){let t=tB(e);if(!t)return!1;do{if(y(t,tC)&&t[tC])return!0;t=t.parentElement}while(t)return!1}(t)||!l(t)||d(t)&&(null==e||e.setActiveId(null),null==(r=null==e?void 0:e.getState().baseElement)||r.focus()))}),A=(0,T.useCallback)(e=>{e&&(e[tC]=!0)},[]);return R(n={...n,ref:X(A,n.ref),onMouseMove:u,onMouseLeave:f})});es(ea(function(e){return el("div",tg(e))}));var tv=eu(function({store:e,shouldRegisterItem:t=!0,getItem:r=E,element:n,...i}){let o=ef();e=e||o;let a=V(i.id),s=(0,T.useRef)(n);return(0,T.useEffect)(()=>{let n=s.current;if(!a||!n||!t)return;let i=r({id:a,element:n});return null==e?void 0:e.renderItem(i)},[a,t,r,e]),R(i={...i,ref:X(s,i.ref)})});function ty(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return"Enter"===e.key?l(t)||"SUMMARY"===t.tagName||"A"===t.tagName:" "===e.key&&(l(t)||"SUMMARY"===t.tagName||"INPUT"===t.tagName||"SELECT"===t.tagName)}ea(function(e){return el("div",tv(e))});var tb=Symbol("command"),tE=eu(function({clickOnEnter:e=!0,clickOnSpace:t=!0,...n}){let i,o,a=(0,T.useRef)(null),[s,u]=(0,T.useState)(!1);(0,T.useEffect)(()=>{a.current&&u(l(a.current))},[]);let[c,f]=(0,T.useState)(!1),A=(0,T.useRef)(!1),h=S(n),[m,p]=(i=n.onLoadedMetadataCapture,o=(0,T.useMemo)(()=>Object.assign(()=>{},{...i,[tb]:!0}),[i,tb,!0]),[null==i?void 0:i[tb],{onLoadedMetadataCapture:o}]),B=n.onKeyDown,C=Q(n=>{null==B||B(n);let i=n.currentTarget;if(n.defaultPrevented||m||h||!_(n)||d(i)||i.isContentEditable)return;let o=e&&"Enter"===n.key,a=t&&" "===n.key,s="Enter"===n.key&&!e,l=" "===n.key&&!t;if(s||l)return void n.preventDefault();if(o||a){let e=ty(n);if(o){if(!e){n.preventDefault();let{view:e,...t}=n,o=()=>H(i,t);r&&/firefox\//i.test(navigator.userAgent)?J(i,"keyup",o):queueMicrotask(o)}}else a&&(A.current=!0,e||(n.preventDefault(),f(!0)))}}),g=n.onKeyUp,v=Q(e=>{if(null==g||g(e),e.defaultPrevented||m||h||e.metaKey)return;let r=t&&" "===e.key;if(A.current&&r&&(A.current=!1,!ty(e))){e.preventDefault(),f(!1);let t=e.currentTarget,{view:r,...n}=e;queueMicrotask(()=>H(t,n))}});return eU(n={"data-active":c||void 0,type:s?"button":void 0,...p,...n,ref:X(a,n.ref),onKeyDown:C,onKeyUp:v})});ea(function(e){return el("button",tE(e))});var{useSyncExternalStore:tM}=e.i(2239).default,tF=()=>()=>{};function tS(e,t=E){let r=T.useCallback(t=>e?ts(e,null,t):tF(),[e]),n=()=>{let r="string"==typeof t?t:null,n="function"==typeof t?t:null,i=null==e?void 0:e.getState();return n?n(i):i&&r&&y(i,r)?i[r]:void 0};return tM(r,n,n)}function tR(e,t){let r=T.useRef({}),n=T.useCallback(t=>e?ts(e,null,t):tF(),[e]),i=()=>{let n=null==e?void 0:e.getState(),i=!1,o=r.current;for(let e in t){let r=t[e];if("function"==typeof r){let t=r(n);t!==o[e]&&(o[e]=t,i=!0)}if("string"==typeof r){if(!n||!y(n,r))continue;let t=n[r];t!==o[e]&&(o[e]=t,i=!0)}}return i&&(r.current={...o}),r.current};return tM(n,i,i)}function tI(e,t,r,n){var i;let o,a=y(t,r)?t[r]:void 0,s=(i={value:a,setValue:n?t[n]:void 0},o=(0,T.useRef)(i),j(()=>{o.current=i}),o);j(()=>tl(e,[r],(e,t)=>{let{value:n,setValue:i}=s.current;i&&e[r]!==t[r]&&e[r]!==n&&i(e[r])}),[e,r]),j(()=>{if(void 0!==a)return e.setState(r,a),tu(e,[r],()=>{void 0!==a&&e.setState(r,a)})})}function tT(e,t){let[r,n]=T.useState(()=>e(t));j(()=>ta(r),[r]);let i=T.useCallback(e=>tS(r,e),[r]);return[T.useMemo(()=>({...r,useState:i}),[r,i]),Q(()=>{n(r=>e({...t,...r.getState()}))})]}function tx(e,t,r,n=!1){var i;let o,a;if(!t||!r)return;let{renderedItems:s}=t.getState(),l=m(e);if(!l)return;let u=function(e,t=!1){let r=e.clientHeight,{top:n}=e.getBoundingClientRect(),i=1.5*Math.max(.875*r,r-40),o=t?r-i+n:i+n;return"HTML"===e.tagName?o+e.scrollTop:o}(l,n);for(let e=0;e=0){void 0!==a&&at||(e&&(null==B?void 0:B.baseElement)&&B.baseElement===e.baseElement?B.id:void 0),baseElement:e=>(null==e?void 0:e.baseElement)||void 0,isActiveItem:e=>!!e&&e.activeId===m,ariaSetSize:e=>null!=s?s:e&&(null==B?void 0:B.ariaSetSize)&&B.baseElement===e.baseElement?B.ariaSetSize:void 0,ariaPosInSet(e){if(null!=u)return u;if(!e||!(null==B?void 0:B.ariaPosInSet)||B.baseElement!==e.baseElement)return;let t=e.renderedItems.filter(e=>e.rowId===y);return B.ariaPosInSet+t.findIndex(e=>e.id===m)},isTabbable(t){if(!(null==t?void 0:t.renderedItems.length))return!0;if(t.virtualFocus)return!1;if(o)return!0;if(null===t.activeId)return!1;let r=null==e?void 0:e.item(t.activeId);return null!=r&&!!r.disabled||null==r||!r.element||t.activeId===m}}),x=(0,T.useCallback)(e=>{var t;let r={...e,id:m||e.id,rowId:y,disabled:!!v,children:null==(t=e.element)?void 0:t.textContent};return a?a(r):r},[m,y,v,a]),G=c.onFocus,D=(0,T.useRef)(!1),O=Q(t=>{var r,i;if(null==G||G(t),t.defaultPrevented||L(t)||!m||!e||(r=e,!_(t)&&g(r,t.target)))return;let{virtualFocus:o,baseElement:a}=e.getState();e.setActiveId(m),f(t.currentTarget)&&function(e,t=!1){if(d(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=n(e).getSelection();null==r||r.selectAllChildren(e),t&&(null==r||r.collapseToEnd())}}(t.currentTarget),!o||!_(t)||!f(i=t.currentTarget)&&("INPUT"!==i.tagName||l(i))&&(null==a?void 0:a.isConnected)&&((w()&&t.currentTarget.hasAttribute("data-autofocus")&&t.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),D.current=!0,t.relatedTarget===a||g(e,t.relatedTarget))?(a[C]=!0,a.focus({preventScroll:!0})):a.focus())}),H=c.onBlurCapture,P=Q(t=>{if(null==H||H(t),t.defaultPrevented)return;let r=null==e?void 0:e.getState();(null==r?void 0:r.virtualFocus)&&D.current&&(D.current=!1,t.preventDefault(),t.stopPropagation())}),J=c.onKeyDown,U=Y(r),N=Y(i),k=Q(t=>{if(null==J||J(t),t.defaultPrevented||!_(t)||!e)return;let{currentTarget:r}=t,i=e.getState(),o=e.item(m),a=!!(null==o?void 0:o.rowId),s="horizontal"!==i.orientation,l="vertical"!==i.orientation,u=()=>!(!a&&!l&&i.baseElement&&d(i.baseElement)),c={ArrowUp:(a||s)&&e.up,ArrowRight:(a||l)&&e.next,ArrowDown:(a||s)&&e.down,ArrowLeft:(a||l)&&e.previous,Home:()=>{if(u())return!a||t.ctrlKey?null==e?void 0:e.first():null==e?void 0:e.previous(-1)},End:()=>{if(u())return!a||t.ctrlKey?null==e?void 0:e.last():null==e?void 0:e.next(-1)},PageUp:()=>tx(r,e,null==e?void 0:e.up,!0),PageDown:()=>tx(r,e,null==e?void 0:e.down)}[t.key];if(c){if(f(r)){let e=A(r),i=l&&"ArrowLeft"===t.key,o=l&&"ArrowRight"===t.key,a=s&&"ArrowUp"===t.key,u=s&&"ArrowDown"===t.key;if(o||u){let{length:t}=function(e){if(d(e))return e.value;if(e.isContentEditable){let t=n(e).createRange();return t.selectNodeContents(e),t.toString()}return""}(r);if(e.end!==t)return}else if((i||a)&&0!==e.start)return}let i=c();if(U(t)||void 0!==i){if(!N(t))return;t.preventDefault(),e.move(i)}}}),K=(0,T.useMemo)(()=>({id:m,baseElement:b}),[m,b]);return c={id:m,"data-active-item":E||void 0,...c=Z(c,e=>(0,eo.jsx)(eC.Provider,{value:K,children:e}),[K]),ref:X(p,c.ref),tabIndex:I?c.tabIndex:-1,onFocus:O,onBlurCapture:P,onKeyDown:k},c=tE(c),R({...c=tv({store:e,...c,getItem:x,shouldRegisterItem:!!m&&c.shouldRegisterItem}),"aria-setsize":M,"aria-posinset":F})});es(ea(function(e){return el("button",tG(e))}));var tD=eu(function({store:e,value:t,hideOnClick:r,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:o,focusOnHover:a=!1,moveOnKeyPress:s=!0,getItem:l,...u}){var c,f;let A=e4();M(e=e||A,!1);let{resetValueOnSelectState:h,multiSelectable:m,selected:p}=tR(e,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable:e=>Array.isArray(e.selectedValue),selected:e=>(function(e,t){if(null!=t)return null!=e&&(Array.isArray(e)?e.includes(t):e===t)})(e.selectedValue,t)}),B=(0,T.useCallback)(e=>{let r={...e,value:t};return l?l(r):r},[t,l]);n=null!=n?n:!m,r=null!=r?r:null!=t&&!m;let C=u.onClick,g=Y(n),v=Y(i),y=Y(null!=(c=null!=o?o:h)?c:m),b=Y(r),E=Q(r=>{null==C||C(r),r.defaultPrevented||function(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return!!e.altKey&&("a"===r||"button"===r&&"submit"===t.type||"input"===r&&"submit"===t.type)}(r)||!function(e){let t=e.currentTarget;if(!t)return!1;let r=D();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let n=t.tagName.toLowerCase();return"a"===n||"button"===n&&"submit"===t.type||"input"===n&&"submit"===t.type}(r)&&(null!=t&&(v(r)&&(y(r)&&(null==e||e.resetValue()),null==e||e.setSelectedValue(e=>Array.isArray(e)?e.includes(t)?e.filter(e=>e!==t):[...e,t]:t)),g(r)&&(null==e||e.setValue(t))),b(r)&&(null==e||e.hide()))}),F=u.onKeyDown,S=Q(t=>{if(null==F||F(t),t.defaultPrevented)return;let r=null==e?void 0:e.getState().baseElement;!r||eI(r)||(1===t.key.length||"Backspace"===t.key||"Delete"===t.key)&&(queueMicrotask(()=>r.focus()),d(r)&&(null==e||e.setValue(r.value)))});m&&null!=p&&(u={"aria-selected":p,...u}),u=Z(u,e=>(0,eo.jsx)(tt.Provider,{value:t,children:(0,eo.jsx)(tr.Provider,{value:null!=p&&p,children:e})}),[t,p]),u={role:null!=(f=({menu:"menuitem",listbox:"option",tree:"treeitem"})[(0,T.useContext)(e2)])?f:"option",children:t,...u,onClick:E,onKeyDown:S};let R=Y(s);return u=tG({store:e,...u,getItem:B,moveOnKeyPress:t=>{if(!R(t))return!1;let r=new Event("combobox-item-move"),n=null==e?void 0:e.getState().baseElement;return null==n||n.dispatchEvent(r),!0}}),u=tg({store:e,focusOnHover:a,...u})}),tw=es(ea(function(e){return el("div",tD(e))}));e.s(["ComboboxItem",()=>tw],56373);var tL=e.i(74080);function t_(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function tO(...e){return e.join(", ").split(", ").reduce((e,t)=>{let r=t.endsWith("ms")?1:1e3,n=Number.parseFloat(t||"0s")*r;return n>e?n:e},0)}function tH(e,t,r){return!r&&!1!==t&&(!e||!!t)}var tP=eu(function({store:e,alwaysVisible:t,...r}){let n=eX();M(e=e||n,!1);let i=(0,T.useRef)(null),o=V(r.id),[a,s]=(0,T.useState)(null),l=e.useState("open"),u=e.useState("mounted"),c=e.useState("animated"),d=e.useState("contentElement"),f=tS(e.disclosure,"contentElement");j(()=>{i.current&&(null==e||e.setContentElement(i.current))},[e]),j(()=>{let t;return null==e||e.setState("animated",e=>(t=e,!0)),()=>{void 0!==t&&(null==e||e.setState("animated",t))}},[e]),j(()=>{if(c){var e;let t;return(null==d?void 0:d.isConnected)?(e=()=>{s(l?"enter":u?"leave":null)},t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)}),()=>cancelAnimationFrame(t)):void s(null)}},[c,d,l,u]),j(()=>{if(!e||!c||!a||!d)return;let t=()=>null==e?void 0:e.setState("animating",!1),r=()=>(0,tL.flushSync)(t);if("leave"===a&&l||"enter"===a&&!l)return;if("number"==typeof c)return t_(c,r);let{transitionDuration:n,animationDuration:i,transitionDelay:o,animationDelay:s}=getComputedStyle(d),{transitionDuration:u="0",animationDuration:A="0",transitionDelay:h="0",animationDelay:m="0"}=f?getComputedStyle(f):{},p=tO(o,s,h,m)+tO(n,i,u,A);if(!p){"enter"===a&&e.setState("animated",!1),t();return}return t_(Math.max(p-1e3/60,0),r)},[e,c,d,f,l,a]);let A=tH(u,(r=Z(r,t=>(0,eo.jsx)(eY,{value:e,children:t}),[e])).hidden,t),h=r.style,m=(0,T.useMemo)(()=>A?{...h,display:"none"}:h,[A,h]);return R(r={id:o,"data-open":l||void 0,"data-enter":"enter"===a||void 0,"data-leave":"leave"===a||void 0,hidden:A,...r,ref:X(o?e.setContentElement:null,i,r.ref),style:m})}),tJ=ea(function(e){return el("div",tP(e))});ea(function({unmountOnHide:e,...t}){let r=eX();return!1===tS(t.store||r,t=>!e||(null==t?void 0:t.mounted))?null:(0,eo.jsx)(tJ,{...t})});var tU=eu(function({store:e,alwaysVisible:t,...r}){let n=e4(!0),i=e6(),o=!!(e=e||i)&&e===n;M(e,!1);let a=(0,T.useRef)(null),s=V(r.id),l=e.useState("mounted"),u=tH(l,r.hidden,t),c=u?{...r.style,display:"none"}:r.style,d=e.useState(e=>Array.isArray(e.selectedValue)),f=function(e,t,r){let n=function(e){let[t]=(0,T.useState)(e);return t}(r),[i,o]=(0,T.useState)(n);return(0,T.useEffect)(()=>{let r=e&&"current"in e?e.current:e;if(!r)return;let i=()=>{let e=r.getAttribute(t);o(null==e?n:e)},a=new MutationObserver(i);return a.observe(r,{attributeFilter:[t]}),i(),()=>a.disconnect()},[e,t,n]),i}(a,"role",r.role),A="listbox"===f||"tree"===f||"grid"===f,[h,m]=(0,T.useState)(!1),p=e.useState("contentElement");j(()=>{if(!l)return;let e=a.current;if(!e||p!==e)return;let t=()=>{m(!!e.querySelector("[role='listbox']"))},r=new MutationObserver(t);return r.observe(e,{subtree:!0,childList:!0,attributeFilter:["role"]}),t(),()=>r.disconnect()},[l,p]),h||(r={role:"listbox","aria-multiselectable":A&&d||void 0,...r}),r=Z(r,t=>(0,eo.jsx)(te,{value:e,children:(0,eo.jsx)(e2.Provider,{value:f,children:t})}),[e,f]);let B=!s||n&&o?null:e.setContentElement;return R(r={id:s,hidden:u,...r,ref:X(B,a,r.ref),style:c})}),tN=ea(function(e){return el("div",tU(e))});e.s(["ComboboxList",()=>tN,"useComboboxList",()=>tU],86447);var tk=(0,T.createContext)(null),tK=eu(function(e){return{...e,style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px",...e.style}}});ea(function(e){return el("span",tK(e))});var tj=eu(function(e){return tK(e={"data-focus-trap":"",tabIndex:0,"aria-hidden":!0,...e,style:{position:"fixed",top:0,left:0,...e.style}})}),tQ=ea(function(e){return el("span",tj(e))});function tX(e){queueMicrotask(()=>{null==e||e.focus()})}var tV=eu(function({preserveTabOrder:e,preserveTabOrderAnchor:t,portalElement:r,portalRef:i,portal:o=!0,...a}){let s=(0,T.useRef)(null),l=X(s,a.ref),u=(0,T.useContext)(tk),[c,d]=(0,T.useState)(null),[f,A]=(0,T.useState)(null),h=(0,T.useRef)(null),m=(0,T.useRef)(null),p=(0,T.useRef)(null),B=(0,T.useRef)(null);return j(()=>{let e=s.current;if(!e||!o)return void d(null);let t=r?"function"==typeof r?r(e):r:n(e).createElement("div");if(!t)return void d(null);let a=t.isConnected;if(a||(u||n(e).body).appendChild(t),t.id||(t.id=e.id?`portal/${e.id}`:function(e="id"){return`${e?`${e}-`:""}${Math.random().toString(36).slice(2,8)}`}()),d(t),x(i,t),!a)return()=>{t.remove(),x(i,null)}},[o,r,u,i]),j(()=>{if(!o||!e||!t)return;let r=n(t).createElement("span");return r.style.position="fixed",t.insertAdjacentElement("afterend",r),A(r),()=>{r.remove(),A(null)}},[o,e,t]),(0,T.useEffect)(()=>{if(!c||!e)return;let t=0,r=e=>{if(!P(e))return;let r="focusin"===e.type;if(cancelAnimationFrame(t),r){let e=c.querySelectorAll("[data-tabindex]"),t=e=>{let t=e.getAttribute("data-tabindex");e.removeAttribute("data-tabindex"),t?e.setAttribute("tabindex",t):e.removeAttribute("tabindex")};for(let r of(c.hasAttribute("data-tabindex")&&t(c),e))t(r);return}t=requestAnimationFrame(()=>{for(let e of eF(c,!0))!function(e){var t;let r=null!=(t=e.getAttribute("tabindex"))?t:"";e.setAttribute("data-tabindex",r),e.setAttribute("tabindex","-1")}(e)})};return c.addEventListener("focusin",r,!0),c.addEventListener("focusout",r,!0),()=>{cancelAnimationFrame(t),c.removeEventListener("focusin",r,!0),c.removeEventListener("focusout",r,!0)}},[c,e]),a={...a=Z(a,t=>{if(t=(0,eo.jsx)(tk.Provider,{value:c||u,children:t}),!o)return t;if(!c)return(0,eo.jsx)("span",{ref:l,id:a.id,style:{position:"fixed"},hidden:!0});t=(0,eo.jsxs)(eo.Fragment,{children:[e&&c&&(0,eo.jsx)(tQ,{ref:m,"data-focus-trap":a.id,className:"__focus-trap-inner-before",onFocus:e=>{P(e,c)?tX(eS()):tX(h.current)}}),t,e&&c&&(0,eo.jsx)(tQ,{ref:p,"data-focus-trap":a.id,className:"__focus-trap-inner-after",onFocus:e=>{P(e,c)?tX(eR()):tX(B.current)}})]}),c&&(t=(0,tL.createPortal)(t,c));let r=(0,eo.jsxs)(eo.Fragment,{children:[e&&c&&(0,eo.jsx)(tQ,{ref:h,"data-focus-trap":a.id,className:"__focus-trap-outer-before",onFocus:e=>{e.relatedTarget!==B.current&&P(e,c)?tX(m.current):tX(eR())}}),e&&(0,eo.jsx)("span",{"aria-owns":null==c?void 0:c.id,style:{position:"fixed"}}),e&&c&&(0,eo.jsx)(tQ,{ref:B,"data-focus-trap":a.id,className:"__focus-trap-outer-after",onFocus:e=>{if(P(e,c))tX(p.current);else{let e=eS();if(e===m.current)return void requestAnimationFrame(()=>{var e;return null==(e=eS())?void 0:e.focus()});tX(e)}}})]});return f&&e&&(r=(0,tL.createPortal)(r,f)),(0,eo.jsxs)(eo.Fragment,{children:[r,t]})},[c,u,o,a.id,e,f]),ref:l}});ea(function(e){return el("div",tV(e))});var tq=(0,T.createContext)(0);function tW({level:e,children:t}){let r=(0,T.useContext)(tq),n=Math.max(Math.min(e||r+1,6),1);return(0,eo.jsx)(tq.Provider,{value:n,children:t})}var tY=eu(function({autoFocusOnShow:e=!0,...t}){return Z(t,t=>(0,eo.jsx)(ev.Provider,{value:e,children:t}),[e])});ea(function(e){return el("div",tY(e))});var tZ=new WeakMap;function tz(e,t,r){tZ.has(e)||tZ.set(e,new Map);let n=tZ.get(e),i=n.get(t);if(!i)return n.set(t,r()),()=>{var e;null==(e=n.get(t))||e(),n.delete(t)};let o=r(),a=()=>{o(),i(),n.delete(t)};return n.set(t,a),()=>{n.get(t)===a&&(o(),n.set(t,i))}}function t$(e,t,r){return tz(e,t,()=>{let n=e.getAttribute(t);return e.setAttribute(t,r),()=>{null==n?e.removeAttribute(t):e.setAttribute(t,n)}})}function t0(e,t,r){return tz(e,t,()=>{let n=t in e,i=e[t];return e[t]=r,()=>{n?e[t]=i:delete e[t]}})}function t1(e,t){return e?tz(e,"style",()=>{let r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}):()=>{}}var t9=["SCRIPT","STYLE"];function t8(e){return`__ariakit-dialog-snapshot-${e}`}function t2(e,t,r,i){for(let o of t){if(!(null==o?void 0:o.isConnected))continue;let s=t.some(e=>!!e&&e!==o&&e.contains(o)),l=n(o),u=o;for(;o.parentElement&&o!==l.body;){if(null==i||i(o.parentElement,u),!s)for(let i of o.parentElement.children)(function(e,t,r){return!t9.includes(t.tagName)&&!!function(e,t){let r=n(t),i=t8(e);if(!r.body[i])return!0;for(;;){if(t===r.body)return!1;if(t[i])return!0;if(!t.parentElement)return!1;t=t.parentElement}}(e,t)&&!r.some(e=>e&&a(t,e))})(e,i,t)&&r(i,u);o=o.parentElement}}}function t3(e,...t){if(!e)return!1;let r=e.getAttribute("data-backdrop");return null!=r&&(""===r||"true"===r||!t.length||t.some(e=>r===e))}function t6(e="",t=!1){return`__ariakit-dialog-${t?"ancestor":"outside"}${e?`-${e}`:""}`}function t4(e,t=""){return b(t0(e,t6("",!0),!0),t0(e,t6(t,!0),!0))}function t7(e,t){if(e[t6(t,!0)])return!0;let r=t6(t);for(;;){if(e[r])return!0;if(!e.parentElement)return!1;e=e.parentElement}}function t5(e,t){let r=[],n=t.map(e=>null==e?void 0:e.id);return t2(e,t,t=>{t3(t,...n)||r.unshift(function(e,t=""){return b(t0(e,t6(),!0),t0(e,t6(t),!0))}(t,e))},(t,n)=>{n.hasAttribute("data-dialog")&&n.id!==e||r.unshift(t4(t,e))}),()=>{for(let e of r)e()}}function re({store:e,type:t,listener:r,capture:i,domReady:o}){let s=Q(r),l=tS(e,"open"),u=(0,T.useRef)(!1);j(()=>{if(!l||!o)return;let{contentElement:t}=e.getState();if(!t)return;let r=()=>{u.current=!0};return t.addEventListener("focusin",r,!0),()=>t.removeEventListener("focusin",r,!0)},[e,l,o]),(0,T.useEffect)(()=>{if(l)return U(t,t=>{let{contentElement:r,disclosureElement:i}=e.getState(),o=t.target;!r||!o||!(!("HTML"===o.tagName||a(n(o).body,o))||a(r,o)||function(e,t){if(!e)return!1;if(a(e,t))return!0;let r=t.getAttribute("aria-activedescendant");if(r){let t=n(e).getElementById(r);if(t)return a(e,t)}return!1}(i,o)||o.hasAttribute("data-focus-trap")||function(e,t){if(!("clientY"in e))return!1;let r=t.getBoundingClientRect();return 0!==r.width&&0!==r.height&&r.top<=e.clientY&&e.clientY<=r.top+r.height&&r.left<=e.clientX&&e.clientX<=r.left+r.width}(t,r))&&(!u.current||t7(o,r.id))&&(o&&o[ew]||s(t))},i)},[l,i])}function rt(e,t){return"function"==typeof e?e(t):!!e}var rr=(0,T.createContext)({});function rn(){return"inert"in HTMLElement.prototype}function ri(e,t){if(!("style"in e))return v;if(rn())return t0(e,"inert",!0);let r=eF(e,!0).map(e=>{if(null==t?void 0:t.some(t=>t&&a(t,e)))return v;let r=tz(e,"focus",()=>(e.focus=v,()=>{delete e.focus}));return b(t$(e,"tabindex","-1"),r)});return b(...r,t$(e,"aria-hidden","true"),t1(e,{pointerEvents:"none",userSelect:"none",cursor:"default"}))}function ro(e={}){let t=td(e.store,tc(e.disclosure,["contentElement","disclosureElement"]));tf(e,t);let r=null==t?void 0:t.getState(),n=I(e.open,null==r?void 0:r.open,e.defaultOpen,!1),i=I(e.animated,null==r?void 0:r.animated,!1),o=ti({open:n,animated:i,animating:!!i&&n,mounted:n,contentElement:I(null==r?void 0:r.contentElement,null),disclosureElement:I(null==r?void 0:r.disclosureElement,null)},t);return to(o,()=>tl(o,["animated","animating"],e=>{e.animated||o.setState("animating",!1)})),to(o,()=>ts(o,["open"],()=>{o.getState().animated&&o.setState("animating",!0)})),to(o,()=>tl(o,["open","animating"],e=>{o.setState("mounted",e.open||e.animating)})),{...o,disclosure:e.disclosure,setOpen:e=>o.setState("open",e),show:()=>o.setState("open",!0),hide:()=>o.setState("open",!1),toggle:()=>o.setState("open",e=>!e),stopAnimation:()=>o.setState("animating",!1),setContentElement:e=>o.setState("contentElement",e),setDisclosureElement:e=>o.setState("disclosureElement",e)}}function ra(e,t,r){return q(t,[r.store,r.disclosure]),tI(e,r,"open","setOpen"),tI(e,r,"mounted","setMounted"),tI(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}eu(function(e){return e});var rs=ea(function(e){return el("div",e)});function rl({store:e,backdrop:t,alwaysVisible:r,hidden:n}){let i=(0,T.useRef)(null),o=function(e={}){let[t,r]=tT(ro,e);return ra(t,r,e)}({disclosure:e}),a=tS(e,"contentElement");(0,T.useEffect)(()=>{let e=i.current;!e||a&&(e.style.zIndex=getComputedStyle(a).zIndex)},[a]),j(()=>{let e=null==a?void 0:a.id;if(!e)return;let t=i.current;if(t)return t4(t,e)},[a]);let s=tP({ref:i,store:o,role:"presentation","data-backdrop":(null==a?void 0:a.id)||"",alwaysVisible:r,hidden:null!=n?n:void 0,style:{position:"fixed",top:0,right:0,bottom:0,left:0}});if(!t)return null;if((0,T.isValidElement)(t))return(0,eo.jsx)(rs,{...s,render:t});let l="boolean"!=typeof t?t:"div";return(0,eo.jsx)(rs,{...s,render:(0,eo.jsx)(l,{})})}function ru(e={}){return ro(e)}Object.assign(rs,["a","button","details","dialog","div","form","h1","h2","h3","h4","h5","h6","header","img","input","label","li","nav","ol","p","section","select","span","summary","textarea","ul","svg"].reduce((e,t)=>(e[t]=ea(function(e){return el(t,e)}),e),{}));var rc=w();function rd(e,t=!1){if(!e)return null;let r="current"in e?e.current:e;return r?t?eb(r)?r:null:r:null}var rf=eu(function({store:e,open:t,onClose:s,focusable:u=!0,modal:d=!0,portal:f=!!d,backdrop:A=!!d,hideOnEscape:h=!0,hideOnInteractOutside:m=!0,getPersistentElements:p,preventBodyScroll:B=!!d,autoFocusOnShow:C=!0,autoFocusOnHide:g=!0,initialFocus:v,finalFocus:y,unmountOnHide:E,unstable_treeSnapshotKey:M,...F}){var S;let R,I,x,w=eq(),L=(0,T.useRef)(null),_=function(e={}){let[t,r]=tT(ru,e);return ra(t,r,e)}({store:e||w,open:t,setOpen(e){if(e)return;let t=L.current;if(!t)return;let r=new Event("close",{bubbles:!1,cancelable:!0});s&&t.addEventListener("close",s,{once:!0}),t.dispatchEvent(r),r.defaultPrevented&&_.setOpen(!0)}}),{portalRef:O,domReady:H}=z(f,F.portalRef),P=F.preserveTabOrder,N=tS(_,e=>P&&!d&&e.mounted),k=V(F.id),K=tS(_,"open"),q=tS(_,"mounted"),$=tS(_,"contentElement"),ee=tH(q,F.hidden,F.alwaysVisible);R=function({attribute:e,contentId:t,contentElement:r,enabled:i}){let[o,a]=W(),s=(0,T.useCallback)(()=>{if(!i||!r)return!1;let{body:o}=n(r),a=o.getAttribute(e);return!a||a===t},[o,i,r,e,t]);return(0,T.useEffect)(()=>{if(!i||!t||!r)return;let{body:o}=n(r);if(s())return o.setAttribute(e,t),()=>o.removeAttribute(e);let l=new MutationObserver(()=>(0,tL.flushSync)(a));return l.observe(o,{attributeFilter:[e]}),()=>l.disconnect()},[o,i,t,r,s,e]),s}({attribute:"data-dialog-prevent-body-scroll",contentElement:$,contentId:k,enabled:B&&!ee}),(0,T.useEffect)(()=>{var e,t;if(!R()||!$)return;let o=n($),a=i($),{documentElement:s,body:l}=o,u=s.style.getPropertyValue("--scrollbar-width"),c=u?Number.parseInt(u,10):a.innerWidth-s.clientWidth,d=Math.round(s.getBoundingClientRect().left)+s.scrollLeft?"paddingLeft":"paddingRight",f=D()&&!(r&&navigator.platform.startsWith("Mac")&&!G());return b((e="--scrollbar-width",t=`${c}px`,s?tz(s,e,()=>{let r=s.style.getPropertyValue(e);return s.style.setProperty(e,t),()=>{r?s.style.setProperty(e,r):s.style.removeProperty(e)}}):()=>{}),f?(()=>{var e,t;let{scrollX:r,scrollY:n,visualViewport:i}=a,o=null!=(e=null==i?void 0:i.offsetLeft)?e:0,s=null!=(t=null==i?void 0:i.offsetTop)?t:0,u=t1(l,{position:"fixed",overflow:"hidden",top:`${-(n-Math.floor(s))}px`,left:`${-(r-Math.floor(o))}px`,right:"0",[d]:`${c}px`});return()=>{u(),a.scrollTo({left:r,top:n,behavior:"instant"})}})():t1(l,{overflow:"hidden",[d]:`${c}px`}))},[R,$]),S=tS(_,"open"),I=(0,T.useRef)(null),(0,T.useEffect)(()=>{if(!S){I.current=null;return}return U("mousedown",e=>{I.current=e.target},!0)},[S]),re({...x={store:_,domReady:H,capture:!0},type:"click",listener:e=>{let{contentElement:t}=_.getState(),r=I.current;r&&c(r)&&t7(r,null==t?void 0:t.id)&&rt(m,e)&&_.hide()}}),re({...x,type:"focusin",listener:e=>{let{contentElement:t}=_.getState();!t||e.target===n(t)||rt(m,e)&&_.hide()}}),re({...x,type:"contextmenu",listener:e=>{rt(m,e)&&_.hide()}});let{wrapElement:et,nestedDialogs:er}=function(e){let t=(0,T.useContext)(rr),[r,n]=(0,T.useState)([]),i=(0,T.useCallback)(e=>{var r;return n(t=>[...t,e]),b(null==(r=t.add)?void 0:r.call(t,e),()=>{n(t=>t.filter(t=>t!==e))})},[t]);j(()=>tl(e,["open","contentElement"],r=>{var n;if(r.open&&r.contentElement)return null==(n=t.add)?void 0:n.call(t,e)}),[e,t]);let o=(0,T.useMemo)(()=>({store:e,add:i}),[e,i]);return{wrapElement:(0,T.useCallback)(e=>(0,eo.jsx)(rr.Provider,{value:o,children:e}),[o]),nestedDialogs:r}}(_);F=Z(F,et,[et]),j(()=>{if(!K)return;let e=L.current,t=o(e,!0);!t||"BODY"===t.tagName||e&&a(e,t)||_.setDisclosureElement(t)},[_,K]),rc&&(0,T.useEffect)(()=>{if(!q)return;let{disclosureElement:e}=_.getState();if(!e||!l(e))return;let t=()=>{let t=!1,r=()=>{t=!0};e.addEventListener("focusin",r,{capture:!0,once:!0}),J(e,"mouseup",()=>{e.removeEventListener("focusin",r,!0),t||ex(e)})};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}},[_,q]),(0,T.useEffect)(()=>{if(!q||!H)return;let e=L.current;if(!e)return;let t=i(e),r=t.visualViewport||t,n=()=>{var r,n;let i=null!=(n=null==(r=t.visualViewport)?void 0:r.height)?n:t.innerHeight;e.style.setProperty("--dialog-viewport-height",`${i}px`)};return n(),r.addEventListener("resize",n),()=>{r.removeEventListener("resize",n)}},[q,H]),(0,T.useEffect)(()=>{if(!d||!q||!H)return;let e=L.current;if(e&&!e.querySelector("[data-dialog-dismiss]")){var t;let r;return t=_.hide,(r=n(e).createElement("button")).type="button",r.tabIndex=-1,r.textContent="Dismiss popup",Object.assign(r.style,{border:"0px",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute",whiteSpace:"nowrap",width:"1px"}),r.addEventListener("click",t),e.prepend(r),()=>{r.removeEventListener("click",t),r.remove()}}},[_,d,q,H]),j(()=>{if(!rn()||K||!q||!H)return;let e=L.current;if(e)return ri(e)},[K,q,H]);let en=K&&H;j(()=>{if(k&&en)return function(e,t){let{body:r}=n(t[0]),i=[];return t2(e,t,t=>{i.push(t0(t,t8(e),!0))}),b(t0(r,t8(e),!0),()=>{for(let e of i)e()})}(k,[L.current])},[k,en,M]);let ei=Q(p);j(()=>{if(!k||!en)return;let{disclosureElement:e}=_.getState(),t=[L.current,...ei()||[],...er.map(e=>e.getState().contentElement)];if(d){let e,r;return b(t5(k,t),(e=[],r=t.map(e=>null==e?void 0:e.id),t2(k,t,n=>{t3(n,...r)||!function(e,...t){if(!e)return!1;let r=e.getAttribute("data-focus-trap");return null!=r&&(!t.length||""!==r&&t.some(e=>r===e))}(n,...r)&&e.unshift(ri(n,t))},r=>{!r.hasAttribute("role")||t.some(e=>e&&a(e,r))||e.unshift(t$(r,"role","none"))}),()=>{for(let t of e)t()}))}return t5(k,[e,...t])},[k,_,en,ei,er,d,M]);let ea=!!C,es=Y(C),[el,eu]=(0,T.useState)(!1);(0,T.useEffect)(()=>{if(!K||!ea||!H||!(null==$?void 0:$.isConnected))return;let e=rd(v,!0)||$.querySelector("[data-autofocus=true],[autofocus]")||function(e,t,r){let[n]=eF(e,t,r);return n||null}($,!0,f&&N)||$,t=eb(e);es(t?e:null)&&(eu(!0),queueMicrotask(()=>{e.focus(),!rc||t&&e.scrollIntoView({block:"nearest",inline:"nearest"})}))},[K,ea,H,$,v,f,N,es]);let ec=!!g,ed=Y(g),[ef,eA]=(0,T.useState)(!1);(0,T.useEffect)(()=>{if(K)return eA(!0),()=>eA(!1)},[K]);let eh=(0,T.useCallback)((e,t=!0)=>{let r,{disclosureElement:i}=_.getState();if(!(!(r=o())||e&&a(e,r))&&eb(r))return;let s=rd(y)||i;if(null==s?void 0:s.id){let e=n(s),t=`[aria-activedescendant="${s.id}"]`,r=e.querySelector(t);r&&(s=r)}if(s&&!eb(s)){let e=s.closest("[data-dialog]");if(null==e?void 0:e.id){let t=n(e),r=`[aria-controls~="${e.id}"]`,i=t.querySelector(r);i&&(s=i)}}let l=s&&eb(s);!l&&t?requestAnimationFrame(()=>eh(e,!1)):!ed(l?s:null)||l&&(null==s||s.focus({preventScroll:!0}))},[_,y,ed]),em=(0,T.useRef)(!1);j(()=>{if(K||!ef||!ec)return;let e=L.current;em.current=!0,eh(e)},[K,ef,H,ec,eh]),(0,T.useEffect)(()=>{if(!ef||!ec)return;let e=L.current;return()=>{if(em.current){em.current=!1;return}eh(e)}},[ef,ec,eh]);let ep=Y(h);(0,T.useEffect)(()=>{if(H&&q)return U("keydown",e=>{if("Escape"!==e.key||e.defaultPrevented)return;let t=L.current;if(!t||t7(t))return;let r=e.target;if(!r)return;let{disclosureElement:n}=_.getState();!("BODY"===r.tagName||a(t,r)||!n||a(n,r))||ep(e)&&_.hide()},!0)},[_,H,q,ep]);let eB=(F=Z(F,e=>(0,eo.jsx)(tW,{level:d?1:void 0,children:e}),[d])).hidden,eC=F.alwaysVisible;F=Z(F,e=>A?(0,eo.jsxs)(eo.Fragment,{children:[(0,eo.jsx)(rl,{store:_,backdrop:A,hidden:eB,alwaysVisible:eC}),e]}):e,[_,A,eB,eC]);let[eg,ev]=(0,T.useState)(),[ey,eE]=(0,T.useState)();return F=tY({...F={id:k,"data-dialog":"",role:"dialog",tabIndex:u?-1:void 0,"aria-labelledby":eg,"aria-describedby":ey,...F=Z(F,e=>(0,eo.jsx)(eY,{value:_,children:(0,eo.jsx)(eZ.Provider,{value:ev,children:(0,eo.jsx)(ez.Provider,{value:eE,children:e})})}),[_]),ref:X(L,F.ref)},autoFocusOnShow:el}),F=tV({portal:f,...F=eU({...F=tP({store:_,...F}),focusable:u}),portalRef:O,preserveTabOrder:N})});function rA(e,t=eq){return ea(function(r){let n=t();return tS(r.store||n,e=>!r.unmountOnHide||(null==e?void 0:e.mounted)||!!r.open)?(0,eo.jsx)(e,{...r}):null})}rA(ea(function(e){return el("div",rf(e))}),eq);let rh=Math.min,rm=Math.max,rp=Math.round,rB=Math.floor,rC=e=>({x:e,y:e}),rg={left:"right",right:"left",bottom:"top",top:"bottom"},rv={start:"end",end:"start"};function ry(e,t){return"function"==typeof e?e(t):e}function rb(e){return e.split("-")[0]}function rE(e){return e.split("-")[1]}function rM(e){return"x"===e?"y":"x"}function rF(e){return"y"===e?"height":"width"}let rS=new Set(["top","bottom"]);function rR(e){return rS.has(rb(e))?"y":"x"}function rI(e){return e.replace(/start|end/g,e=>rv[e])}let rT=["left","right"],rx=["right","left"],rG=["top","bottom"],rD=["bottom","top"];function rw(e){return e.replace(/left|right|bottom|top/g,e=>rg[e])}function rL(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function r_(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function rO(e,t,r){let n,{reference:i,floating:o}=e,a=rR(t),s=rM(rR(t)),l=rF(s),u=rb(t),c="y"===a,d=i.x+i.width/2-o.width/2,f=i.y+i.height/2-o.height/2,A=i[l]/2-o[l]/2;switch(u){case"top":n={x:d,y:i.y-o.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:f};break;case"left":n={x:i.x-o.width,y:f};break;default:n={x:i.x,y:i.y}}switch(rE(t)){case"start":n[s]-=A*(r&&c?-1:1);break;case"end":n[s]+=A*(r&&c?-1:1)}return n}async function rH(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:o,rects:a,elements:s,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:f=!1,padding:A=0}=ry(t,e),h=rL(A),m=s[f?"floating"===d?"reference":"floating":d],p=r_(await o.getClippingRect({element:null==(r=await (null==o.isElement?void 0:o.isElement(m)))||r?m:m.contextElement||await (null==o.getDocumentElement?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:c,strategy:l})),B="floating"===d?{x:n,y:i,width:a.floating.width,height:a.floating.height}:a.reference,C=await (null==o.getOffsetParent?void 0:o.getOffsetParent(s.floating)),g=await (null==o.isElement?void 0:o.isElement(C))&&await (null==o.getScale?void 0:o.getScale(C))||{x:1,y:1},v=r_(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:B,offsetParent:C,strategy:l}):B);return{top:(p.top-v.top+h.top)/g.y,bottom:(v.bottom-p.bottom+h.bottom)/g.y,left:(p.left-v.left+h.left)/g.x,right:(v.right-p.right+h.right)/g.x}}let rP=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:o=[],platform:a}=r,s=o.filter(Boolean),l=await (null==a.isRTL?void 0:a.isRTL(t)),u=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:d}=rO(u,n,l),f=n,A={},h=0;for(let r=0;rtypeof window}function rk(e){return rQ(e)?(e.nodeName||"").toLowerCase():"#document"}function rK(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function rj(e){var t;return null==(t=(rQ(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function rQ(e){return!!rN()&&(e instanceof Node||e instanceof rK(e).Node)}function rX(e){return!!rN()&&(e instanceof Element||e instanceof rK(e).Element)}function rV(e){return!!rN()&&(e instanceof HTMLElement||e instanceof rK(e).HTMLElement)}function rq(e){return!(!rN()||"u"{try{return e.matches(t)}catch(e){return!1}})}let r0=["transform","translate","scale","rotate","perspective"],r1=["transform","translate","scale","rotate","perspective","filter"],r9=["paint","layout","strict","content"];function r8(e){let t=r2(),r=rX(e)?r4(e):e;return r0.some(e=>!!r[e]&&"none"!==r[e])||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||r1.some(e=>(r.willChange||"").includes(e))||r9.some(e=>(r.contain||"").includes(e))}function r2(){return!("u"rX(e)&&"body"!==rk(e)),i=null,o="fixed"===r4(e).position,a=o?r5(e):e;for(;rX(a)&&!r6(a);){let t=r4(a),r=r8(a);r||"fixed"!==t.position||(i=null),(o?!r&&!i:!r&&"static"===t.position&&!!i&&nc.has(i.position)||rY(a)&&!r&&function e(t,r){let n=r5(t);return!(n===r||!rX(n)||r6(n))&&("fixed"===r4(n).position||e(n,r))}(e,a))?n=n.filter(e=>e!==a):i=t,a=r5(a)}return t.set(e,n),n}(t,this._c):[].concat(r),n],a=o[0],s=o.reduce((e,r)=>{let n=nd(t,r,i);return e.top=rm(n.top,e.top),e.right=rh(n.right,e.right),e.bottom=rh(n.bottom,e.bottom),e.left=rm(n.left,e.left),e},nd(t,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:nh,getElementRects:nm,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=nr(e);return{width:t,height:r}},getScale:ni,isElement:rX,isRTL:function(e){return"rtl"===r4(e).direction}};function nB(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function nC(e=0,t=0,r=0,n=0){if("function"==typeof DOMRect)return new DOMRect(e,t,r,n);let i={x:e,y:t,width:r,height:n,top:t,right:e+r,bottom:t+n,left:e};return{...i,toJSON:()=>i}}function ng(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}function nv(e){let t=window.devicePixelRatio||1;return Math.round(e*t)/t}var ny=eu(function({store:e,modal:t=!1,portal:r=!!t,preserveTabOrder:n=!0,autoFocusOnShow:i=!0,wrapperProps:o,fixed:a=!1,flip:s=!0,shift:l=0,slide:u=!0,overlap:c=!1,sameWidth:d=!1,fitViewport:f=!1,gutter:A,arrowPadding:h=4,overflowPadding:m=8,getAnchorRect:p,updatePosition:B,...C}){let g=e0();M(e=e||g,!1);let v=e.useState("arrowElement"),y=e.useState("anchorElement"),b=e.useState("disclosureElement"),E=e.useState("popoverElement"),F=e.useState("contentElement"),S=e.useState("placement"),R=e.useState("mounted"),I=e.useState("rendered"),x=(0,T.useRef)(null),[G,D]=(0,T.useState)(!1),{portalRef:w,domReady:L}=z(r,C.portalRef),_=Q(p),O=Q(B),H=!!B;j(()=>{if(!(null==E?void 0:E.isConnected))return;E.style.setProperty("--popover-overflow-padding",`${m}px`);let t={contextElement:y||void 0,getBoundingClientRect:()=>{let e=null==_?void 0:_(y);return e||!y?function(e){if(!e)return nC();let{x:t,y:r,width:n,height:i}=e;return nC(t,r,n,i)}(e):y.getBoundingClientRect()}},r=async()=>{var r,n,i,o,p;let B,C,g;if(!R)return;v||(x.current=x.current||document.createElement("div"));let y=v||x.current,b=[(r={gutter:A,shift:l},void 0===(n=({placement:e})=>{var t;let n=((null==y?void 0:y.clientHeight)||0)/2,i="number"==typeof r.gutter?r.gutter+n:null!=(t=r.gutter)?t:n;return{crossAxis:e.split("-")[1]?void 0:r.shift,mainAxis:i,alignmentAxis:r.shift}})&&(n=0),{name:"offset",options:n,async fn(e){var t,r;let{x:i,y:o,placement:a,middlewareData:s}=e,l=await rU(e,n);return a===(null==(t=s.offset)?void 0:t.placement)&&null!=(r=s.arrow)&&r.alignmentOffset?{}:{x:i+l.x,y:o+l.y,data:{...l,placement:a}}}}),function(e){var t;if(!1===e.flip)return;let r="string"==typeof e.flip?e.flip.split(" "):void 0;return M(!r||r.every(ng),!1),{name:"flip",options:t={padding:e.overflowPadding,fallbackPlacements:r},async fn(e){var r,n,i,o,a,s,l,u;let c,d,f,{placement:A,middlewareData:h,rects:m,initialPlacement:p,platform:B,elements:C}=e,{mainAxis:g=!0,crossAxis:v=!0,fallbackPlacements:y,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:E="none",flipAlignment:M=!0,...F}=ry(t,e);if(null!=(r=h.arrow)&&r.alignmentOffset)return{};let S=rb(A),R=rR(p),I=rb(p)===p,T=await (null==B.isRTL?void 0:B.isRTL(C.floating)),x=y||(I||!M?[rw(p)]:(c=rw(p),[rI(p),c,rI(c)])),G="none"!==E;!y&&G&&x.push(...(d=rE(p),f=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?rx:rT;return t?rT:rx;case"left":case"right":return t?rG:rD;default:return[]}}(rb(p),"start"===E,T),d&&(f=f.map(e=>e+"-"+d),M&&(f=f.concat(f.map(rI)))),f));let D=[p,...x],w=await B.detectOverflow(e,F),L=[],_=(null==(n=h.flip)?void 0:n.overflows)||[];if(g&&L.push(w[S]),v){let e,t,r,n,i=(s=A,l=m,void 0===(u=T)&&(u=!1),e=rE(s),r=rF(t=rM(rR(s))),n="x"===t?e===(u?"end":"start")?"right":"left":"start"===e?"bottom":"top",l.reference[r]>l.floating[r]&&(n=rw(n)),[n,rw(n)]);L.push(w[i[0]],w[i[1]])}if(_=[..._,{placement:A,overflows:L}],!L.every(e=>e<=0)){let e=((null==(i=h.flip)?void 0:i.index)||0)+1,t=D[e];if(t&&("alignment"!==v||R===rR(t)||_.every(e=>rR(e.placement)!==R||e.overflows[0]>0)))return{data:{index:e,overflows:_},reset:{placement:t}};let r=null==(o=_.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:o.placement;if(!r)switch(b){case"bestFit":{let e=null==(a=_.filter(e=>{if(G){let t=rR(e.placement);return t===R||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:a[0];e&&(r=e);break}case"initialPlacement":r=p}if(A!==r)return{reset:{placement:r}}}return{}}}}({flip:s,overflowPadding:m}),function(e){if(e.slide||e.overlap){var t,r;return{name:"shift",options:r={mainAxis:e.slide,crossAxis:e.overlap,padding:e.overflowPadding,limiter:(void 0===t&&(t={}),{options:t,fn(e){let{x:r,y:n,placement:i,rects:o,middlewareData:a}=e,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=ry(t,e),c={x:r,y:n},d=rR(i),f=rM(d),A=c[f],h=c[d],m=ry(s,e),p="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){let e="y"===f?"height":"width",t=o.reference[f]-o.floating[e]+p.mainAxis,r=o.reference[f]+o.reference[e]-p.mainAxis;Ar&&(A=r)}if(u){var B,C;let e="y"===f?"width":"height",t=rJ.has(rb(i)),r=o.reference[d]-o.floating[e]+(t&&(null==(B=a.offset)?void 0:B[d])||0)+(t?0:p.crossAxis),n=o.reference[d]+o.reference[e]+(t?0:(null==(C=a.offset)?void 0:C[d])||0)-(t?p.crossAxis:0);hn&&(h=n)}return{[f]:A,[d]:h}}})},async fn(e){let{x:t,y:n,placement:i,platform:o}=e,{mainAxis:a=!0,crossAxis:s=!1,limiter:l={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...u}=ry(r,e),c={x:t,y:n},d=await o.detectOverflow(e,u),f=rR(rb(i)),A=rM(f),h=c[A],m=c[f];if(a){let e="y"===A?"top":"left",t="y"===A?"bottom":"right",r=h+d[e],n=h-d[t];h=rm(r,rh(h,n))}if(s){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",r=m+d[e],n=m-d[t];m=rm(r,rh(m,n))}let p=l.fn({...e,[A]:h,[f]:m});return{...p,data:{x:p.x-t,y:p.y-n,enabled:{[A]:a,[f]:s}}}}}}}({slide:u,shift:l,overlap:c,overflowPadding:m}),function(e,t){if(e){let r;return{name:"arrow",options:r={element:e,padding:t.arrowPadding},async fn(e){let{x:t,y:n,placement:i,rects:o,platform:a,elements:s,middlewareData:l}=e,{element:u,padding:c=0}=ry(r,e)||{};if(null==u)return{};let d=rL(c),f={x:t,y:n},A=rM(rR(i)),h=rF(A),m=await a.getDimensions(u),p="y"===A,B=p?"clientHeight":"clientWidth",C=o.reference[h]+o.reference[A]-f[A]-o.floating[h],g=f[A]-o.reference[A],v=await (null==a.getOffsetParent?void 0:a.getOffsetParent(u)),y=v?v[B]:0;y&&await (null==a.isElement?void 0:a.isElement(v))||(y=s.floating[B]||o.floating[h]);let b=y/2-m[h]/2-1,E=rh(d[p?"top":"left"],b),M=rh(d[p?"bottom":"right"],b),F=y-m[h]-M,S=y/2-m[h]/2+(C/2-g/2),R=rm(E,rh(S,F)),I=!l.arrow&&null!=rE(i)&&S!==R&&o.reference[h]/2-(S{},...d}=ry(o,e),f=await l.detectOverflow(e,d),A=rb(a),h=rE(a),m="y"===rR(a),{width:p,height:B}=s.floating;"top"===A||"bottom"===A?(n=A,i=h===(await (null==l.isRTL?void 0:l.isRTL(u.floating))?"start":"end")?"left":"right"):(i=A,n="end"===h?"top":"bottom");let C=B-f.top-f.bottom,g=p-f.left-f.right,v=rh(B-f[n],C),y=rh(p-f[i],g),b=!e.middlewareData.shift,E=v,M=y;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(M=g),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(E=C),b&&!h){let e=rm(f.left,0),t=rm(f.right,0),r=rm(f.top,0),n=rm(f.bottom,0);m?M=p-2*(0!==e||0!==t?e+t:rm(f.left,f.right)):E=B-2*(0!==r||0!==n?r+n:rm(f.top,f.bottom))}await c({...e,availableWidth:M,availableHeight:E});let F=await l.getDimensions(u.floating);return p!==F.width||B!==F.height?{reset:{rects:!0}}:{}}}],F=await (p={placement:S,strategy:a?"fixed":"absolute",middleware:b},B=new Map,g={...(C={platform:np,...p}).platform,_c:B},rP(t,E,{...C,platform:g}));null==e||e.setState("currentPlacement",F.placement),D(!0);let I=nv(F.x),T=nv(F.y);if(Object.assign(E.style,{top:"0",left:"0",transform:`translate3d(${I}px,${T}px,0)`}),y&&F.middlewareData.arrow){let{x:e,y:t}=F.middlewareData.arrow,r=F.placement.split("-")[0],n=y.clientWidth/2,i=y.clientHeight/2,o=null!=e?e+n:-n,a=null!=t?t+i:-i;E.style.setProperty("--popover-transform-origin",{top:`${o}px calc(100% + ${i}px)`,bottom:`${o}px ${-i}px`,left:`calc(100% + ${n}px) ${a}px`,right:`${-n}px ${a}px`}[r]),Object.assign(y.style,{left:null!=e?`${e}px`:"",top:null!=t?`${t}px`:"",[r]:"100%"})}},n=function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:s="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:u=!1}=n,c=nn(e),d=o||a?[...c?ne(c):[],...ne(t)]:[];d.forEach(e=>{o&&e.addEventListener("scroll",r,{passive:!0}),a&&e.addEventListener("resize",r)});let f=c&&l?function(e,t){let r,n=null,i=rj(e);function o(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),o();let u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:A}=u;if(s||t(),!f||!A)return;let h={rootMargin:-rB(d)+"px "+-rB(i.clientWidth-(c+f))+"px "+-rB(i.clientHeight-(d+A))+"px "+-rB(c)+"px",threshold:rm(0,rh(1,l))||1},m=!0;function p(t){let n=t[0].intersectionRatio;if(n!==l){if(!m)return a();n?a(!1,n):r=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==n||nB(u,e.getBoundingClientRect())||a(),m=!1}try{n=new IntersectionObserver(p,{...h,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(p,h)}n.observe(e)}(!0),o}(c,r):null,A=-1,h=null;s&&(h=new ResizeObserver(e=>{let[n]=e;n&&n.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(A),A=requestAnimationFrame(()=>{var e;null==(e=h)||e.observe(t)})),r()}),c&&!u&&h.observe(c),h.observe(t));let m=u?ns(e):null;return u&&function t(){let n=ns(e);m&&!nB(m,n)&&r(),m=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{o&&e.removeEventListener("scroll",r),a&&e.removeEventListener("resize",r)}),null==f||f(),null==(e=h)||e.disconnect(),h=null,u&&cancelAnimationFrame(i)}}(t,E,async()=>{H?(await O({updatePosition:r}),D(!0)):await r()},{elementResize:"function"==typeof ResizeObserver});return()=>{D(!1),n()}},[e,I,E,v,y,E,S,R,L,a,s,l,u,c,d,f,A,h,m,_,H,O]),j(()=>{if(!R||!L||!(null==E?void 0:E.isConnected)||!(null==F?void 0:F.isConnected))return;let e=()=>{E.style.zIndex=getComputedStyle(F).zIndex};e();let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)},[R,L,E,F]);let P=a?"fixed":"absolute";return C=Z(C,t=>(0,eo.jsx)("div",{...o,style:{position:P,top:0,left:0,width:"max-content",...null==o?void 0:o.style},ref:null==e?void 0:e.setPopoverElement,children:t}),[e,P,o]),C={"data-placing":!G||void 0,...C=Z(C,t=>(0,eo.jsx)(e9,{value:e,children:t}),[e]),style:{position:"relative",...C.style}},C=rf({store:e,modal:t,portal:r,preserveTabOrder:n,preserveTabOrderAnchor:b||y,autoFocusOnShow:G&&i,...C,portalRef:w})});rA(ea(function(e){return el("div",ny(e))}),e0);var nb=eu(function({store:e,modal:t,tabIndex:r,alwaysVisible:i,autoFocusOnHide:o=!0,hideOnInteractOutside:a=!0,...s}){let l=e7();M(e=e||l,!1);let u=e.useState("baseElement"),c=(0,T.useRef)(!1),d=tS(e.tag,e=>null==e?void 0:e.renderedItems.length);return s=tU({store:e,alwaysVisible:i,...s}),s=ny({store:e,modal:t,alwaysVisible:i,backdrop:!1,autoFocusOnShow:!1,finalFocus:u,preserveTabOrderAnchor:null,unstable_treeSnapshotKey:d,...s,getPersistentElements(){var r;let i=(null==(r=s.getPersistentElements)?void 0:r.call(s))||[];if(!t||!e)return i;let{contentElement:o,baseElement:a}=e.getState();if(!a)return i;let l=n(a),u=[];if((null==o?void 0:o.id)&&u.push(`[aria-controls~="${o.id}"]`),(null==a?void 0:a.id)&&u.push(`[aria-controls~="${a.id}"]`),!u.length)return[...i,a];let c=u.join(",");return[...i,...l.querySelectorAll(c)]},autoFocusOnHide:e=>!F(o,e)&&(!c.current||(c.current=!1,!1)),hideOnInteractOutside(t){var r,n;let i=null==e?void 0:e.getState(),o=null==(r=null==i?void 0:i.contentElement)?void 0:r.id,s=null==(n=null==i?void 0:i.baseElement)?void 0:n.id;if(function(e,...t){if(!e)return!1;if("id"in e){let r=t.filter(Boolean).map(e=>`[aria-controls~="${e}"]`).join(", ");return!!r&&e.matches(r)}return!1}(t.target,o,s))return!1;let l="function"==typeof a?a(t):a;return l&&(c.current="click"===t.type),l}})}),nE=rA(ea(function(e){return el("div",nb(e))}),e7);e.s(["ComboboxPopover",()=>nE],1559),(0,T.createContext)(null),(0,T.createContext)(null);var nM=ec([ep],[eB]),nF=nM.useContext;nM.useScopedContext,nM.useProviderContext,nM.ContextProvider,nM.ScopedContextProvider;var nS={id:null};function nR(e,t){return e.find(e=>t?!e.disabled&&e.id!==t:!e.disabled)}function nI(e,t){return e.filter(e=>e.rowId===t)}function nT(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}function nx(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}var nG=w()&&G();function nD({tag:e,...t}={}){let r=td(t.store,function(e,...t){if(e)return tn(e,"pick")(...t)}(e,["value","rtl"]));tf(t,r);let i=null==e?void 0:e.getState(),o=null==r?void 0:r.getState(),a=I(t.activeId,null==o?void 0:o.activeId,t.defaultActiveId,null),s=function(e={}){var t;let r=null==(t=e.store)?void 0:t.getState(),i=function(e={}){var t,r;tf(e,e.store);let i=null==(t=e.store)?void 0:t.getState(),o=I(e.items,null==i?void 0:i.items,e.defaultItems,[]),a=new Map(o.map(e=>[e.id,e])),s={items:o,renderedItems:I(null==i?void 0:i.renderedItems,[])},l=null==(r=e.store)?void 0:r.__unstablePrivateStore,u=ti({items:o,renderedItems:s.renderedItems},l),c=ti(s,e.store),d=e=>{var t;let r,n,i=(t=e=>e.element,r=e.map((e,t)=>[t,e]),n=!1,(r.sort(([e,r],[i,o])=>{var a;let s=t(r),l=t(o);return s!==l&&s&&l?(a=s,l.compareDocumentPosition(a)&Node.DOCUMENT_POSITION_PRECEDING)?(e>i&&(n=!0),-1):(et):e);u.setState("renderedItems",i),c.setState("renderedItems",i)};to(c,()=>ta(u)),to(u,()=>tu(u,["items"],e=>{c.setState("items",e.items)})),to(u,()=>tu(u,["renderedItems"],e=>{let t=!0,r=requestAnimationFrame(()=>{let{renderedItems:t}=c.getState();e.renderedItems!==t&&d(e.renderedItems)});if("function"!=typeof IntersectionObserver)return()=>cancelAnimationFrame(r);let i=new IntersectionObserver(()=>{if(t){t=!1;return}cancelAnimationFrame(r),r=requestAnimationFrame(()=>d(e.renderedItems))},{root:function(e){var t;let r=e.find(e=>!!e.element),i=[...e].reverse().find(e=>!!e.element),o=null==(t=null==r?void 0:r.element)?void 0:t.parentElement;for(;o&&(null==i?void 0:i.element);){let e=o;if(i&&e.contains(i.element))return o;o=o.parentElement}return n(o).body}(e.renderedItems)});for(let t of e.renderedItems)t.element&&i.observe(t.element);return()=>{cancelAnimationFrame(r),i.disconnect()}}));let f=(e,t,r=!1)=>{let n;return t(t=>{let r=t.findIndex(({id:t})=>t===e.id),i=t.slice();if(-1!==r){let o={...n=t[r],...e};i[r]=o,a.set(e.id,o)}else i.push(e),a.set(e.id,e);return i}),()=>{t(t=>{if(!n)return r&&a.delete(e.id),t.filter(({id:t})=>t!==e.id);let i=t.findIndex(({id:t})=>t===e.id);if(-1===i)return t;let o=t.slice();return o[i]=n,a.set(e.id,n),o})}},A=e=>f(e,e=>u.setState("items",e),!0);return{...c,registerItem:A,renderItem:e=>b(A(e),f(e,e=>u.setState("renderedItems",e))),item:e=>{if(!e)return null;let t=a.get(e);if(!t){let{items:r}=u.getState();(t=r.find(t=>t.id===e))&&a.set(e,t)}return t||null},__unstablePrivateStore:u}}(e),o=I(e.activeId,null==r?void 0:r.activeId,e.defaultActiveId),a=ti({...i.getState(),id:I(e.id,null==r?void 0:r.id,`id-${Math.random().toString(36).slice(2,8)}`),activeId:o,baseElement:I(null==r?void 0:r.baseElement,null),includesBaseElement:I(e.includesBaseElement,null==r?void 0:r.includesBaseElement,null===o),moves:I(null==r?void 0:r.moves,0),orientation:I(e.orientation,null==r?void 0:r.orientation,"both"),rtl:I(e.rtl,null==r?void 0:r.rtl,!1),virtualFocus:I(e.virtualFocus,null==r?void 0:r.virtualFocus,!1),focusLoop:I(e.focusLoop,null==r?void 0:r.focusLoop,!1),focusWrap:I(e.focusWrap,null==r?void 0:r.focusWrap,!1),focusShift:I(e.focusShift,null==r?void 0:r.focusShift,!1)},i,e.store);to(a,()=>tl(a,["renderedItems","activeId"],e=>{a.setState("activeId",t=>{var r;return void 0!==t?t:null==(r=nR(e.renderedItems))?void 0:r.id})}));let s=(e="next",t={})=>{var r,n;let i=a.getState(),{skip:o=0,activeId:s=i.activeId,focusShift:l=i.focusShift,focusLoop:u=i.focusLoop,focusWrap:c=i.focusWrap,includesBaseElement:d=i.includesBaseElement,renderedItems:f=i.renderedItems,rtl:A=i.rtl}=t,h="up"===e||"down"===e,m="next"===e||"down"===e,p=h?eN(function(e,t,r){let n=nx(e);for(let i of e)for(let e=0;ee.id===s);if(!B)return null==(n=nR(p))?void 0:n.id;let C=p.some(e=>e.rowId),g=p.indexOf(B),v=p.slice(g+1),y=nI(v,B.rowId);if(o){let e=y.filter(e=>s?!e.disabled&&e.id!==s:!e.disabled),t=e.slice(o)[0]||e[e.length-1];return null==t?void 0:t.id}let b=u&&(h?"horizontal"!==u:"vertical"!==u),E=C&&c&&(h?"horizontal"!==c:"vertical"!==c),M=m?(!C||h)&&b&&d:!!h&&d;if(b){let e=nR(function(e,t,r=!1){let n=e.findIndex(e=>e.id===t);return[...e.slice(n+1),...r?[nS]:[],...e.slice(0,n)]}(E&&!M?p:nI(p,B.rowId),s,M),s);return null==e?void 0:e.id}if(E){let e=nR(M?y:v,s);return M?(null==e?void 0:e.id)||null:null==e?void 0:e.id}let F=nR(y,s);return!F&&M?null:null==F?void 0:F.id};return{...i,...a,setBaseElement:e=>a.setState("baseElement",e),setActiveId:e=>a.setState("activeId",e),move:e=>{void 0!==e&&(a.setState("activeId",e),a.setState("moves",e=>e+1))},first:()=>{var e;return null==(e=nR(a.getState().renderedItems))?void 0:e.id},last:()=>{var e;return null==(e=nR(ek(a.getState().renderedItems)))?void 0:e.id},next:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("next",e)),previous:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("previous",e)),down:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("down",e)),up:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("up",e))}}({...t,activeId:a,includesBaseElement:I(t.includesBaseElement,null==o?void 0:o.includesBaseElement,!0),orientation:I(t.orientation,null==o?void 0:o.orientation,"vertical"),focusLoop:I(t.focusLoop,null==o?void 0:o.focusLoop,!0),focusWrap:I(t.focusWrap,null==o?void 0:o.focusWrap,!0),virtualFocus:I(t.virtualFocus,null==o?void 0:o.virtualFocus,!0)}),l=function({popover:e,...t}={}){let r=td(t.store,tc(e,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));tf(t,r);let n=null==r?void 0:r.getState(),i=ru({...t,store:r}),o=I(t.placement,null==n?void 0:n.placement,"bottom"),a=ti({...i.getState(),placement:o,currentPlacement:o,anchorElement:I(null==n?void 0:n.anchorElement,null),popoverElement:I(null==n?void 0:n.popoverElement,null),arrowElement:I(null==n?void 0:n.arrowElement,null),rendered:Symbol("rendered")},i,r);return{...i,...a,setAnchorElement:e=>a.setState("anchorElement",e),setPopoverElement:e=>a.setState("popoverElement",e),setArrowElement:e=>a.setState("arrowElement",e),render:()=>a.setState("rendered",Symbol("rendered"))}}({...t,placement:I(t.placement,null==o?void 0:o.placement,"bottom-start")}),u=I(t.value,null==o?void 0:o.value,t.defaultValue,""),c=I(t.selectedValue,null==o?void 0:o.selectedValue,null==i?void 0:i.values,t.defaultSelectedValue,""),d=Array.isArray(c),f={...s.getState(),...l.getState(),value:u,selectedValue:c,resetValueOnSelect:I(t.resetValueOnSelect,null==o?void 0:o.resetValueOnSelect,d),resetValueOnHide:I(t.resetValueOnHide,null==o?void 0:o.resetValueOnHide,d&&!e),activeValue:null==o?void 0:o.activeValue},A=ti(f,s,l,r);return nG&&to(A,()=>tl(A,["virtualFocus"],()=>{A.setState("virtualFocus",!1)})),to(A,()=>{if(e)return b(tl(A,["selectedValue"],t=>{Array.isArray(t.selectedValue)&&e.setValues(t.selectedValue)}),tl(e,["values"],e=>{A.setState("selectedValue",e.values)}))}),to(A,()=>tl(A,["resetValueOnHide","mounted"],e=>{!e.resetValueOnHide||e.mounted||A.setState("value",u)})),to(A,()=>tl(A,["open"],e=>{e.open||(A.setState("activeId",a),A.setState("moves",0))})),to(A,()=>tl(A,["moves","activeId"],(e,t)=>{e.moves===t.moves&&A.setState("activeValue",void 0)})),to(A,()=>tu(A,["moves","renderedItems"],(e,t)=>{if(e.moves===t.moves)return;let{activeId:r}=A.getState(),n=s.item(r);A.setState("activeValue",null==n?void 0:n.value)})),{...l,...s,...A,tag:e,setValue:e=>A.setState("value",e),resetValue:()=>A.setState("value",f.value),setSelectedValue:e=>A.setState("selectedValue",e)}}function nw(e={}){var t,r,n,i,o,a,s,l;let u;t=e,u=nF();let[c,d]=tT(nD,e={id:V((r=t={...t,tag:void 0!==t.tag?t.tag:u}).id),...r});return q(d,[(n=e).tag]),tI(c,n,"value","setValue"),tI(c,n,"selectedValue","setSelectedValue"),tI(c,n,"resetValueOnHide"),tI(c,n,"resetValueOnSelect"),Object.assign((a=c,q(s=d,[(l=n).popover]),tI(a,l,"placement"),i=ra(a,s,l),o=i,q(d,[n.store]),tI(o,n,"items","setItems"),tI(i=o,n,"activeId","setActiveId"),tI(i,n,"includesBaseElement"),tI(i,n,"virtualFocus"),tI(i,n,"orientation"),tI(i,n,"rtl"),tI(i,n,"focusLoop"),tI(i,n,"focusWrap"),tI(i,n,"focusShift"),i),{tag:n.tag})}function nL(e={}){let t=nw(e);return(0,eo.jsx)(e5,{value:t,children:e.children})}e.s(["useComboboxStore",()=>nw],18364),e.s(["ComboboxProvider",()=>nL],78440);var n_=(0,T.createContext)(void 0),nO=eu(function(e){let[t,r]=(0,T.useState)();return R(e={role:"group","aria-labelledby":t,...e=Z(e,e=>(0,eo.jsx)(n_.Provider,{value:r,children:e}),[])})});ea(function(e){return el("div",nO(e))});var nH=eu(function({store:e,...t}){return nO(t)});ea(function(e){return el("div",nH(e))});var nP=eu(function({store:e,...t}){let r=e4();return M(e=e||r,!1),"grid"===h(e.useState("contentElement"))&&(t={role:"rowgroup",...t}),t=nH({store:e,...t})}),nJ=ea(function(e){return el("div",nP(e))});e.s(["ComboboxGroup",()=>nJ],59129);var nU=eu(function(e){let t=(0,T.useContext)(n_),r=V(e.id);return j(()=>(null==t||t(r),()=>null==t?void 0:t(void 0)),[t,r]),R(e={id:r,"aria-hidden":!0,...e})});ea(function(e){return el("div",nU(e))});var nN=eu(function({store:e,...t}){return nU(t)});ea(function(e){return el("div",nN(e))});var nk=eu(function(e){return nN(e)}),nK=ea(function(e){return el("div",nk(e))});e.s(["ComboboxGroupLabel",()=>nK],25998);var nj=e.i(38360);let nQ={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0},nX=(e,t)=>String(e.rankedValue).localeCompare(String(t.rankedValue));function nV(e,t,r={}){let{keys:n,threshold:i=nQ.MATCHES,baseSort:o=nX,sorter:a=e=>e.sort((e,t)=>(function(e,t,r){let{rank:n,keyIndex:i}=e,{rank:o,keyIndex:a}=t;return n!==o?n>o?-1:1:i===a?r(e,t):i{let s=nq(i,u,c),l=t,{minRanking:d,maxRanking:f,threshold:A}=o;return s=nQ.MATCHES?s=d:s>f&&(s=f),s>e&&(e=s,r=a,n=A,l=i),{rankedValue:l,rank:e,keyIndex:r,keyThreshold:n}},{rankedValue:s,rank:nQ.NO_MATCH,keyIndex:-1,keyThreshold:c.threshold}):{rankedValue:s,rank:nq(s,u,c),keyIndex:-1,keyThreshold:c.threshold}),{rank:f,keyThreshold:A=i}=d;return f>=A&&e.push({...d,item:o,index:a}),e},[])).map(({item:e})=>e)}function nq(e,t,r){if(e=nW(e,r),(t=nW(t,r)).length>e.length)return nQ.NO_MATCH;if(e===t)return nQ.CASE_SENSITIVE_EQUAL;let n=function*(e,t){let r=-1;for(;(r=e.indexOf(t,r+1))>-1;)yield r;return -1}(e=e.toLowerCase(),t=t.toLowerCase()),i=n.next(),o=i.value;if(e.length===t.length&&0===o)return nQ.EQUAL;if(0===o)return nQ.STARTS_WITH;let a=i;for(;!a.done;){if(a.value>0&&" "===e[a.value-1])return nQ.WORD_STARTS_WITH;a=n.next()}return o>0?nQ.CONTAINS:1===t.length?nQ.NO_MATCH:(function(e){let t="",r=" ";for(let n=0;n-1))return nQ.NO_MATCH;return r=o-s,n=i/t.length,nQ.MATCHES+1/r*n}(e,t)}function nW(e,{keepDiacritics:t}){return e=`${e}`,t||(e=(0,nj.default)(e)),e}nV.rankings=nQ;let nY={maxRanking:1/0,minRanking:-1/0};e.s(["matchSorter",()=>nV],70238)},29402,(e,t,r)=>{var n,i,o,a,s="__lodash_hash_undefined__",l=1/0,u="[object Arguments]",c="[object Array]",d="[object Boolean]",f="[object Date]",A="[object Error]",h="[object Function]",m="[object Map]",p="[object Number]",B="[object Object]",C="[object Promise]",g="[object RegExp]",v="[object Set]",y="[object String]",b="[object Symbol]",E="[object WeakMap]",M="[object ArrayBuffer]",F="[object DataView]",S=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,R=/^\w*$/,I=/^\./,T=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,x=/\\(\\)?/g,G=/^\[object .+?Constructor\]$/,D=/^(?:0|[1-9]\d*)$/,w={};w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w[u]=w[c]=w[M]=w[d]=w[F]=w[f]=w[A]=w[h]=w[m]=w[p]=w[B]=w[g]=w[v]=w[y]=w[E]=!1;var L=e.g&&e.g.Object===Object&&e.g,_="object"==typeof self&&self&&self.Object===Object&&self,O=L||_||Function("return this")(),H=r&&!r.nodeType&&r,P=H&&t&&!t.nodeType&&t,J=P&&P.exports===H&&L.process,U=function(){try{return J&&J.binding("util")}catch(e){}}(),N=U&&U.isTypedArray;function k(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r-1},eb.prototype.set=function(e,t){var r=this.__data__,n=eS(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},eE.prototype.clear=function(){this.__data__={hash:new ey,map:new(el||eb),string:new ey}},eE.prototype.delete=function(e){return eL(this,e).delete(e)},eE.prototype.get=function(e){return eL(this,e).get(e)},eE.prototype.has=function(e){return eL(this,e).has(e)},eE.prototype.set=function(e,t){return eL(this,e).set(e,t),this},eM.prototype.add=eM.prototype.push=function(e){return this.__data__.set(e,s),this},eM.prototype.has=function(e){return this.__data__.has(e)},eF.prototype.clear=function(){this.__data__=new eb},eF.prototype.delete=function(e){return this.__data__.delete(e)},eF.prototype.get=function(e){return this.__data__.get(e)},eF.prototype.has=function(e){return this.__data__.has(e)},eF.prototype.set=function(e,t){var r=this.__data__;if(r instanceof eb){var n=r.__data__;if(!el||n.length<199)return n.push([e,t]),this;r=this.__data__=new eE(n)}return r.set(e,t),this};var eR=(n=function(e,t){return e&&eI(e,t,e0)},function(e,t){if(null==e)return e;if(!eV(e))return n(e,t);for(var r=e.length,i=-1,o=Object(e);++is))return!1;var u=o.get(e);if(u&&o.get(t))return u==t;var c=-1,d=!0,f=1&i?new eM:void 0;for(o.set(e,t),o.set(t,e);++c-1&&e%1==0&&e-1&&e%1==0&&e<=0x1fffffffffffff}function eY(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function eZ(e){return!!e&&"object"==typeof e}function ez(e){return"symbol"==typeof e||eZ(e)&&ee.call(e)==b}var e$=N?K(N):function(e){return eZ(e)&&eW(e.length)&&!!w[ee.call(e)]};function e0(e){return eV(e)?function(e,t){var r=eX(e)||eQ(e)?function(e,t){for(var r=-1,n=Array(e);++rt||o&&a&&l&&!s&&!u||n&&a&&l||!r&&l||!i)return 1;if(!n&&!o&&!u&&e=s)return l;return l*("desc"==r[n]?-1:1)}}return e.index-t.index}(e,t,r)});l--;)s[l]=s[l].value;return s}(e,t,r))}},97442,e=>{e.v({Group:"MissionSelect-module__N_AIjG__Group",GroupLabel:"MissionSelect-module__N_AIjG__GroupLabel",Input:"MissionSelect-module__N_AIjG__Input",InputWrapper:"MissionSelect-module__N_AIjG__InputWrapper",Item:"MissionSelect-module__N_AIjG__Item",ItemHeader:"MissionSelect-module__N_AIjG__ItemHeader",ItemMissionName:"MissionSelect-module__N_AIjG__ItemMissionName",ItemName:"MissionSelect-module__N_AIjG__ItemName",ItemType:"MissionSelect-module__N_AIjG__ItemType",ItemTypes:"MissionSelect-module__N_AIjG__ItemTypes",List:"MissionSelect-module__N_AIjG__List",NoResults:"MissionSelect-module__N_AIjG__NoResults",Popover:"MissionSelect-module__N_AIjG__Popover",SelectedName:"MissionSelect-module__N_AIjG__SelectedName",SelectedValue:"MissionSelect-module__N_AIjG__SelectedValue",Shortcut:"MissionSelect-module__N_AIjG__Shortcut"})},81405,(e,t,r)=>{var n;e.e,(n=function(){function e(e){return i.appendChild(e.dom),e}function t(e){for(var t=0;ta+1e3&&(l.update(1e3*s/(e-a),100),a=e,s=0,c)){var t=performance.memory;c.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){o=this.end()},domElement:i,setMode:t}}).Panel=function(e,t,r){var n=1/0,i=0,o=Math.round,a=o(window.devicePixelRatio||1),s=80*a,l=48*a,u=3*a,c=2*a,d=3*a,f=15*a,A=74*a,h=30*a,m=document.createElement("canvas");m.width=s,m.height=l,m.style.cssText="width:80px;height:48px";var p=m.getContext("2d");return p.font="bold "+9*a+"px Helvetica,Arial,sans-serif",p.textBaseline="top",p.fillStyle=r,p.fillRect(0,0,s,l),p.fillStyle=t,p.fillText(e,u,c),p.fillRect(d,f,A,h),p.fillStyle=r,p.globalAlpha=.9,p.fillRect(d,f,A,h),{dom:m,update:function(l,B){n=Math.min(n,l),i=Math.max(i,l),p.fillStyle=r,p.globalAlpha=1,p.fillRect(0,0,s,f),p.fillStyle=t,p.fillText(o(l)+" "+e+" ("+o(n)+"-"+o(i)+")",u,c),p.drawImage(m,d+a,f,A-a,h,d,f,A-a,h),p.fillRect(d+A-a,f,a,h),p.fillStyle=r,p.globalAlpha=.9,p.fillRect(d+A-a,f,a,o((1-l/B)*h))}}},t.exports=n},55141,e=>{e.v({AxisLabel:"DebugElements-module__Cmeo9W__AxisLabel",StatsPanel:"DebugElements-module__Cmeo9W__StatsPanel"})},86855,e=>{"use strict";var t=e.i(43476),r=e.i(932),n=e.i(71645),i=e.i(40859),i=i,o=i,a=e.i(81405);function s(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}function l({showPanel:e=0,className:t,parent:r}){let l=function(e,t=[],r){let[i,o]=n.useState();return n.useLayoutEffect(()=>{let t=e();return o(t),s(void 0,t),()=>s(void 0,null)},t),i}(()=>new a.default,[]);return n.useEffect(()=>{if(l){let n=r&&r.current||document.body;l.showPanel(e),null==n||n.appendChild(l.dom);let a=(null!=t?t:"").split(" ").filter(e=>e);a.length&&l.dom.classList.add(...a);let s=(0,i.j)(()=>l.begin()),u=(0,o.k)(()=>l.end());return()=>{a.length&&l.dom.classList.remove(...a),null==n||n.removeChild(l.dom),s(),u()}}},[r,l,t,e]),null}var u=e.i(60099),c=e.i(79123),d=e.i(55141);function f(){let e,i,o=(0,r.c)(3),{debugMode:a}=(0,c.useDebug)(),s=(0,n.useRef)(null);return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=()=>{let e=s.current;e&&e.setColors("rgb(153, 255, 0)","rgb(0, 153, 255)","rgb(255, 153, 0)")},o[0]=e):e=o[0],(0,n.useEffect)(e),o[1]!==a?(i=a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l,{className:d.default.StatsPanel}),(0,t.jsx)("axesHelper",{ref:s,args:[70],renderOrder:999,children:(0,t.jsx)("lineBasicMaterial",{depthTest:!1,depthWrite:!1,fog:!1,vertexColors:!0})}),(0,t.jsx)(u.Html,{position:[80,0,0],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"y",children:"Y"})}),(0,t.jsx)(u.Html,{position:[0,80,0],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"z",children:"Z"})}),(0,t.jsx)(u.Html,{position:[0,0,80],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"x",children:"X"})})]}):null,o[1]=a,o[2]=i):i=o[2],i}e.s(["DebugElements",()=>f],86855)},38847,e=>{"use strict";var t=e.i(80902),r=e.i(22289),n=e.i(71645);function i(e,t,n){try{return e(t)}catch(e){return(0,r.l)("[nuqs] Error while parsing value `%s`: %O"+(n?" (for key `%s`)":""),t,e,n),null}}function o(e){function t(t){if(void 0===t)return null;let r="";if(Array.isArray(t)){if(void 0===t[0])return null;r=t[0]}return"string"==typeof t&&(r=t),i(e.parse,r)}return{type:"single",eq:(e,t)=>e===t,...e,parseServerSide:t,withDefault(e){return{...this,defaultValue:e,parseServerSide:r=>t(r)??e}},withOptions(e){return{...this,...e}}}}o({parse:e=>e,serialize:String}),o({parse:e=>{let t=parseInt(e);return t==t?t:null},serialize:e=>""+Math.round(e)}),o({parse:e=>{let t=parseInt(e);return t==t?t-1:null},serialize:e=>""+Math.round(e+1)}),o({parse:e=>{let t=parseInt(e,16);return t==t?t:null},serialize:e=>{let t=Math.round(e).toString(16);return(1&t.length?"0":"")+t}}),o({parse:e=>{let t=parseFloat(e);return t==t?t:null},serialize:String});let a=o({parse:e=>"true"===e.toLowerCase(),serialize:String});function s(e,t){return e.valueOf()===t.valueOf()}o({parse:e=>{let t=parseInt(e);return t==t?new Date(t):null},serialize:e=>""+e.valueOf(),eq:s}),o({parse:e=>{let t=new Date(e);return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString(),eq:s}),o({parse:e=>{let t=new Date(e.slice(0,10));return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString().slice(0,10),eq:s});let l=(0,t.r)(),u={};function c(e,r,n,o,a,s){let l=!1,u=Object.entries(e).reduce((e,[u,c])=>{var d;let f=r?.[u]??u,A=o[f],h="multi"===c.type?[]:null,m=void 0===A?("multi"===c.type?n?.getAll(f):n?.get(f))??h:A;return a&&s&&((d=a[f]??h)===m||null!==d&&null!==m&&"string"!=typeof d&&"string"!=typeof m&&d.length===m.length&&d.every((e,t)=>e===m[t]))?e[u]=s[u]??null:(l=!0,e[u]=((0,t.i)(m)?null:i(c.parse,m,f))??null,a&&(a[f]=m)),e},{});if(!l){let t=Object.keys(e),r=Object.keys(s??{});l=t.length!==r.length||t.some(e=>!r.includes(e))}return{state:u,hasChanged:l}}function d(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,e[r]??t[r]??null]))}function f(e,i={}){let{parse:o,type:a,serialize:s,eq:A,defaultValue:h,...m}=i,[{[e]:p},B]=function(e,i={}){let o=(0,n.useId)(),a=(0,r.i)(),s=(0,r.a)(),{history:f="replace",scroll:A=a?.scroll??!1,shallow:h=a?.shallow??!0,throttleMs:m=t.s.timeMs,limitUrlUpdates:p=a?.limitUrlUpdates,clearOnDefault:B=a?.clearOnDefault??!0,startTransition:C,urlKeys:g=u}=i,v=Object.keys(e).join(","),y=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(e=>[e,g[e]??e])),[v,JSON.stringify(g)]),b=(0,r.r)(Object.values(y)),E=b.searchParams,M=(0,n.useRef)({}),F=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(t=>[t,e[t].defaultValue??null])),[Object.values(e).map(({defaultValue:e})=>e).join(",")]),S=t.t.useQueuedQueries(Object.values(y)),[R,I]=(0,n.useState)(()=>c(e,g,E??new URLSearchParams,S).state),T=(0,n.useRef)(R);if((0,r.c)("[nuq+ %s `%s`] render - state: %O, iSP: %s",o,v,R,E),Object.keys(M.current).join("&")!==Object.values(y).join("&")){let{state:t,hasChanged:n}=c(e,g,E,S,M.current,T.current);n&&((0,r.c)("[nuq+ %s `%s`] State changed: %O",o,v,{state:t,initialSearchParams:E,queuedQueries:S,queryRef:M.current,stateRef:T.current}),T.current=t,I(t)),M.current=Object.fromEntries(Object.entries(y).map(([t,r])=>[r,e[t]?.type==="multi"?E?.getAll(r):E?.get(r)??null]))}(0,n.useEffect)(()=>{let{state:t,hasChanged:n}=c(e,g,E,S,M.current,T.current);n&&((0,r.c)("[nuq+ %s `%s`] State changed: %O",o,v,{state:t,initialSearchParams:E,queuedQueries:S,queryRef:M.current,stateRef:T.current}),T.current=t,I(t))},[Object.values(y).map(e=>`${e}=${E?.getAll(e)}`).join("&"),JSON.stringify(S)]),(0,n.useEffect)(()=>{let t=Object.keys(e).reduce((t,n)=>(t[n]=({state:t,query:i})=>{I(a=>{let{defaultValue:s}=e[n],l=y[n],u=t??s??null;return Object.is(a[n]??s??null,u)?((0,r.c)("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). no change, skipping, resolved: %O",o,v,l,t,s,T.current),a):(T.current={...T.current,[n]:u},M.current[l]=i,(0,r.c)("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). updateInternalState, resolved: %O",o,v,l,t,s,T.current),T.current)})},t),{});for(let n of Object.keys(e)){let e=y[n];(0,r.c)("[nuq+ %s `%s`] Subscribing to sync for `%s`",o,e,v),l.on(e,t[n])}return()=>{for(let n of Object.keys(e)){let e=y[n];(0,r.c)("[nuq+ %s `%s`] Unsubscribing to sync for `%s`",o,e,v),l.off(e,t[n])}}},[v,y]);let x=(0,n.useCallback)((n,i={})=>{let a,u=Object.fromEntries(Object.keys(e).map(e=>[e,null])),c="function"==typeof n?n(d(T.current,F))??u:n??u;(0,r.c)("[nuq+ %s `%s`] setState: %O",o,v,c);let g=0,E=!1,M=[];for(let[n,o]of Object.entries(c)){let u=e[n],c=y[n];if(!u||void 0===o)continue;(i.clearOnDefault??u.clearOnDefault??B)&&null!==o&&void 0!==u.defaultValue&&(u.eq??((e,t)=>e===t))(o,u.defaultValue)&&(o=null);let d=null===o?null:(u.serialize??String)(o);l.emit(c,{state:o,query:d});let v={key:c,query:d,options:{history:i.history??u.history??f,shallow:i.shallow??u.shallow??h,scroll:i.scroll??u.scroll??A,startTransition:i.startTransition??u.startTransition??C}};if(i?.limitUrlUpdates?.method==="debounce"||p?.method==="debounce"||u.limitUrlUpdates?.method==="debounce"){!0===v.options.shallow&&console.warn((0,r.s)(422));let e=i?.limitUrlUpdates?.timeMs??p?.timeMs??u.limitUrlUpdates?.timeMs??t.s.timeMs,n=t.t.push(v,e,b,s);gt(e),E?t.n.flush(b,s):t.n.getPendingPromise(b));return a??S},[v,f,h,A,m,p?.method,p?.timeMs,C,y,b.updateUrl,b.getSearchParamsSnapshot,b.rateLimitFactor,s,F]);return[(0,n.useMemo)(()=>d(R,F),[R,F]),x]}({[e]:{parse:o??(e=>e),type:a,serialize:s,eq:A,defaultValue:h}},m);return[p,(0,n.useCallback)((t,r={})=>B(r=>({[e]:"function"==typeof t?t(r[e]):t}),r),[e,B])]}e.s(["createParser",()=>o,"parseAsBoolean",()=>a,"useQueryState",()=>f],38847)}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/d96f10e4606ed566.js b/docs/_next/static/chunks/d96f10e4606ed566.js new file mode 100644 index 00000000..76a9dd5b --- /dev/null +++ b/docs/_next/static/chunks/d96f10e4606ed566.js @@ -0,0 +1,609 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,13070,e=>{e.v({Arrow:"KeyboardOverlay-module__HsRBsa__Arrow",Column:"KeyboardOverlay-module__HsRBsa__Column",Key:"KeyboardOverlay-module__HsRBsa__Key",Root:"KeyboardOverlay-module__HsRBsa__Root",Row:"KeyboardOverlay-module__HsRBsa__Row",Spacer:"KeyboardOverlay-module__HsRBsa__Spacer"})},78295,e=>{e.v({Joystick:"TouchControls-module__AkxfgW__Joystick",Left:"TouchControls-module__AkxfgW__Left TouchControls-module__AkxfgW__Joystick",Right:"TouchControls-module__AkxfgW__Right TouchControls-module__AkxfgW__Joystick"})},65883,e=>{e.v({ButtonLabel:"InspectorControls-module__gNRB6W__ButtonLabel",CheckboxField:"InspectorControls-module__gNRB6W__CheckboxField",Controls:"InspectorControls-module__gNRB6W__Controls",Dropdown:"InspectorControls-module__gNRB6W__Dropdown",Field:"InspectorControls-module__gNRB6W__Field",Group:"InspectorControls-module__gNRB6W__Group",IconButton:"InspectorControls-module__gNRB6W__IconButton",LabelledButton:"InspectorControls-module__gNRB6W__LabelledButton",MapInfoButton:"InspectorControls-module__gNRB6W__MapInfoButton InspectorControls-module__gNRB6W__IconButton InspectorControls-module__gNRB6W__LabelledButton",MissionSelectWrapper:"InspectorControls-module__gNRB6W__MissionSelectWrapper",Toggle:"InspectorControls-module__gNRB6W__Toggle InspectorControls-module__gNRB6W__IconButton"})},36679,e=>{e.v({ButtonLabel:"CopyCoordinatesButton-module__BxovtG__ButtonLabel "+e.i(65883).ButtonLabel,ClipboardCheck:"CopyCoordinatesButton-module__BxovtG__ClipboardCheck",MapPin:"CopyCoordinatesButton-module__BxovtG__MapPin",Root:"CopyCoordinatesButton-module__BxovtG__Root "+e.i(65883).IconButton+" "+e.i(65883).LabelledButton,showClipboardCheck:"CopyCoordinatesButton-module__BxovtG__showClipboardCheck"})},76775,(e,t,a)=>{function r(e,t,a,r){return Math.round(e/a)+" "+r+(t>=1.5*a?"s":"")}t.exports=function(e,t){t=t||{};var a,n,i,o,s=typeof e;if("string"===s&&e.length>0){var l=e;if(!((l=String(l)).length>100)){var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(l);if(c){var d=parseFloat(c[1]);switch((c[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*d;case"weeks":case"week":case"w":return 6048e5*d;case"days":case"day":case"d":return 864e5*d;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*d;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*d;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*d;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return d;default:break}}}return}if("number"===s&&isFinite(e)){return t.long?(n=Math.abs(a=e))>=864e5?r(a,n,864e5,"day"):n>=36e5?r(a,n,36e5,"hour"):n>=6e4?r(a,n,6e4,"minute"):n>=1e3?r(a,n,1e3,"second"):a+" ms":(o=Math.abs(i=e))>=864e5?Math.round(i/864e5)+"d":o>=36e5?Math.round(i/36e5)+"h":o>=6e4?Math.round(i/6e4)+"m":o>=1e3?Math.round(i/1e3)+"s":i+"ms"}throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},7003,(e,t,a)=>{t.exports=function(t){function a(e){let t,n,i,o=null;function s(...e){if(!s.enabled)return;let r=Number(new Date);s.diff=r-(t||r),s.prev=t,s.curr=r,t=r,e[0]=a.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let n=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,r)=>{if("%%"===t)return"%";n++;let i=a.formatters[r];if("function"==typeof i){let a=e[n];t=i.call(s,a),e.splice(n,1),n--}return t}),a.formatArgs.call(s,e),(s.log||a.log).apply(s,e)}return s.namespace=e,s.useColors=a.useColors(),s.color=a.selectColor(e),s.extend=r,s.destroy=a.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(n!==a.namespaces&&(n=a.namespaces,i=a.enabled(e)),i),set:e=>{o=e}}),"function"==typeof a.init&&a.init(s),s}function r(e,t){let r=a(this.namespace+(void 0===t?":":t)+e);return r.log=this.log,r}function n(e,t){let a=0,r=0,n=-1,i=0;for(;a"-"+e)].join(",");return a.enable(""),e},a.enable=function(e){for(let t of(a.save(e),a.namespaces=e,a.names=[],a.skips=[],("string"==typeof e?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean)))"-"===t[0]?a.skips.push(t.slice(1)):a.names.push(t)},a.enabled=function(e){for(let t of a.skips)if(n(e,t))return!1;for(let t of a.names)if(n(e,t))return!0;return!1},a.humanize=e.r(76775),a.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(t).forEach(e=>{a[e]=t[e]}),a.names=[],a.skips=[],a.formatters={},a.selectColor=function(e){let t=0;for(let a=0;a{let r;var n=e.i(47167);a.formatArgs=function(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let a="color: "+this.color;e.splice(1,0,a,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(r++,"%c"===e&&(n=r))}),e.splice(n,0,a)},a.save=function(e){try{e?a.storage.setItem("debug",e):a.storage.removeItem("debug")}catch(e){}},a.load=function(){let e;try{e=a.storage.getItem("debug")||a.storage.getItem("DEBUG")}catch(e){}return!e&&void 0!==n.default&&"env"in n.default&&(e=n.default.env.DEBUG),e},a.useColors=function(){let e;return"u">typeof window&&!!window.process&&("renderer"===window.process.type||!!window.process.__nwjs)||!("u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("u">typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"u">typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"u">typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},a.storage=function(){try{return localStorage}catch(e){}}(),r=!1,a.destroy=()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))},a.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],a.log=console.debug||console.log||(()=>{}),t.exports=e.r(7003)(a);let{formatters:i}=t.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},28903,e=>{e.v({ButtonLabel:"LoadDemoButton-module__kGZaoW__ButtonLabel "+e.i(65883).ButtonLabel,DemoIcon:"LoadDemoButton-module__kGZaoW__DemoIcon",Root:"LoadDemoButton-module__kGZaoW__Root "+e.i(65883).IconButton+" "+e.i(65883).LabelledButton})},29418,e=>{e.v({Bottom:"PlayerNameplate-module__zYDm0a__Bottom PlayerNameplate-module__zYDm0a__Root",HealthBar:"PlayerNameplate-module__zYDm0a__HealthBar",HealthFill:"PlayerNameplate-module__zYDm0a__HealthFill",IffArrow:"PlayerNameplate-module__zYDm0a__IffArrow",Name:"PlayerNameplate-module__zYDm0a__Name",Root:"PlayerNameplate-module__zYDm0a__Root",Top:"PlayerNameplate-module__zYDm0a__Top PlayerNameplate-module__zYDm0a__Root"})},78779,e=>{e.v({Distance:"FlagMarker-module__INpLba__Distance",Icon:"FlagMarker-module__INpLba__Icon",Root:"FlagMarker-module__INpLba__Root"})},21629,e=>{e.v({PlayPause:"DemoControls-module__PjV4fq__PlayPause",Root:"DemoControls-module__PjV4fq__Root",Seek:"DemoControls-module__PjV4fq__Seek",Speed:"DemoControls-module__PjV4fq__Speed",Time:"DemoControls-module__PjV4fq__Time"})},75840,e=>{e.v({BarFillEnergy:"PlayerHUD-module__-E1Scq__BarFillEnergy",BarFillHealth:"PlayerHUD-module__-E1Scq__BarFillHealth",BarTrack:"PlayerHUD-module__-E1Scq__BarTrack",Bars:"PlayerHUD-module__-E1Scq__Bars",ChatColor0:"PlayerHUD-module__-E1Scq__ChatColor0",ChatColor1:"PlayerHUD-module__-E1Scq__ChatColor1",ChatColor2:"PlayerHUD-module__-E1Scq__ChatColor2",ChatColor3:"PlayerHUD-module__-E1Scq__ChatColor3",ChatColor4:"PlayerHUD-module__-E1Scq__ChatColor4",ChatColor5:"PlayerHUD-module__-E1Scq__ChatColor5",ChatColor6:"PlayerHUD-module__-E1Scq__ChatColor6",ChatColor7:"PlayerHUD-module__-E1Scq__ChatColor7",ChatColor8:"PlayerHUD-module__-E1Scq__ChatColor8",ChatColor9:"PlayerHUD-module__-E1Scq__ChatColor9",ChatMessage:"PlayerHUD-module__-E1Scq__ChatMessage",ChatWindow:"PlayerHUD-module__-E1Scq__ChatWindow",Compass:"PlayerHUD-module__-E1Scq__Compass",CompassNSEW:"PlayerHUD-module__-E1Scq__CompassNSEW",CompassRing:"PlayerHUD-module__-E1Scq__CompassRing",PackInvCount:"PlayerHUD-module__-E1Scq__PackInvCount",PackInvIcon:"PlayerHUD-module__-E1Scq__PackInvIcon",PackInvInfinity:"PlayerHUD-module__-E1Scq__PackInvInfinity",PackInvItem:"PlayerHUD-module__-E1Scq__PackInvItem",PackInvItemActive:"PlayerHUD-module__-E1Scq__PackInvItemActive",PackInvItemDim:"PlayerHUD-module__-E1Scq__PackInvItemDim",PackInventoryHUD:"PlayerHUD-module__-E1Scq__PackInventoryHUD",PlayerHUD:"PlayerHUD-module__-E1Scq__PlayerHUD",Reticle:"PlayerHUD-module__-E1Scq__Reticle",ReticleDot:"PlayerHUD-module__-E1Scq__ReticleDot",ReticleImage:"PlayerHUD-module__-E1Scq__ReticleImage",TeamCount:"PlayerHUD-module__-E1Scq__TeamCount",TeamNameEnemy:"PlayerHUD-module__-E1Scq__TeamNameEnemy",TeamNameFriendly:"PlayerHUD-module__-E1Scq__TeamNameFriendly",TeamRow:"PlayerHUD-module__-E1Scq__TeamRow",TeamScore:"PlayerHUD-module__-E1Scq__TeamScore",TeamScores:"PlayerHUD-module__-E1Scq__TeamScores",TopRight:"PlayerHUD-module__-E1Scq__TopRight",WeaponHUD:"PlayerHUD-module__-E1Scq__WeaponHUD",WeaponSeparator:"PlayerHUD-module__-E1Scq__WeaponSeparator"})},3011,e=>{e.v({CanvasContainer:"page-module__E0kJGG__CanvasContainer",LoadingIndicator:"page-module__E0kJGG__LoadingIndicator",Progress:"page-module__E0kJGG__Progress",ProgressBar:"page-module__E0kJGG__ProgressBar",ProgressText:"page-module__E0kJGG__ProgressText",Spinner:"page-module__E0kJGG__Spinner",loadingComplete:"page-module__E0kJGG__loadingComplete",spin:"page-module__E0kJGG__spin"})},31713,e=>{"use strict";var t,a=e.i(43476),r=e.i(932),n=e.i(71645),i=e.i(75056),o=e.i(90072),s=e.i(66027),l=e.i(54970),c=e.i(12979),d=e.i(32424),u=e.i(71753),h=e.i(15080),m=e.i(62395),f=e.i(75567),g=e.i(47071);let p={value:!0},y=` +vec3 terrainLinearToSRGB(vec3 linear) { + vec3 higher = pow(linear, vec3(1.0/2.4)) * 1.055 - 0.055; + vec3 lower = linear * 12.92; + return mix(lower, higher, step(vec3(0.0031308), linear)); +} + +vec3 terrainSRGBToLinear(vec3 srgb) { + vec3 higher = pow((srgb + 0.055) / 1.055, vec3(2.4)); + vec3 lower = srgb / 12.92; + return mix(lower, higher, step(vec3(0.04045), srgb)); +} + +// Debug grid overlay using screen-space derivatives for sharp, anti-aliased lines +// Returns 1.0 on grid lines, 0.0 elsewhere +float terrainDebugGrid(vec2 uv, float gridSize, float lineWidth) { + vec2 scaledUV = uv * gridSize; + vec2 grid = abs(fract(scaledUV - 0.5) - 0.5) / fwidth(scaledUV); + float line = min(grid.x, grid.y); + return 1.0 - min(line / lineWidth, 1.0); +} +`;var v=e.i(79123),F=e.i(47021),b=e.i(48066);let S={0:32,1:32,2:32,3:32,4:32,5:32};function x({displacementMap:e,visibilityMask:t,textureNames:r,alphaTextures:i,detailTextureName:s,lightmap:l}){let{debugMode:d}=(0,v.useDebug)(),u=(0,g.useTexture)(r.map(e=>(0,c.terrainTextureToUrl)(e)),e=>{e.forEach(e=>(0,f.setupTexture)(e))}),h=s?(0,c.textureToUrl)(s):null,m=(0,g.useTexture)(h??c.FALLBACK_TEXTURE_URL,e=>{(0,f.setupTexture)(e)}),x=(0,n.useCallback)(e=>{!function({shader:e,baseTextures:t,alphaTextures:a,visibilityMask:r,tiling:n,detailTexture:i=null,lightmap:o=null}){e.uniforms.sunLightPointsDown=p;let s=t.length;if(t.forEach((t,a)=>{e.uniforms[`albedo${a}`]={value:t}}),a.forEach((t,a)=>{e.uniforms[`mask${a}`]={value:t}}),r&&(e.uniforms.visibilityMask={value:r}),t.forEach((t,a)=>{e.uniforms[`tiling${a}`]={value:n[a]??32}}),o&&(e.uniforms.terrainLightmap={value:o}),i&&(e.uniforms.detailTexture={value:i},e.uniforms.detailTiling={value:64},e.uniforms.detailFadeDistance={value:150},e.vertexShader=e.vertexShader.replace("#include ",`#include +varying vec3 vTerrainWorldPos;`),e.vertexShader=e.vertexShader.replace("#include ",`#include +vTerrainWorldPos = (modelMatrix * vec4(transformed, 1.0)).xyz;`)),e.fragmentShader=` +uniform sampler2D albedo0; +uniform sampler2D albedo1; +uniform sampler2D albedo2; +uniform sampler2D albedo3; +uniform sampler2D albedo4; +uniform sampler2D albedo5; +uniform sampler2D mask0; +uniform sampler2D mask1; +uniform sampler2D mask2; +uniform sampler2D mask3; +uniform sampler2D mask4; +uniform sampler2D mask5; +uniform float tiling0; +uniform float tiling1; +uniform float tiling2; +uniform float tiling3; +uniform float tiling4; +uniform float tiling5; +${r?"uniform sampler2D visibilityMask;":""} +${o?"uniform sampler2D terrainLightmap;":""} +uniform bool sunLightPointsDown; +${i?`uniform sampler2D detailTexture; +uniform float detailTiling; +uniform float detailFadeDistance; +varying vec3 vTerrainWorldPos;`:""} + +${y} + +// Global variable to store shadow factor from RE_Direct for use in output calculation +float terrainShadowFactor = 1.0; +`+e.fragmentShader,r){let t="#include ";e.fragmentShader=e.fragmentShader.replace(t,`${t} + // Early discard for invisible areas (before fog/lighting) + float visibility = texture2D(visibilityMask, vMapUv).r; + if (visibility < 0.5) { + discard; + } + `)}e.fragmentShader=e.fragmentShader.replace("#include ",` + // Sample base albedo layers (sRGB textures auto-decoded to linear by Three.js) + vec2 baseUv = vMapUv; + vec3 c0 = texture2D(albedo0, baseUv * vec2(tiling0)).rgb; + ${s>1?"vec3 c1 = texture2D(albedo1, baseUv * vec2(tiling1)).rgb;":""} + ${s>2?"vec3 c2 = texture2D(albedo2, baseUv * vec2(tiling2)).rgb;":""} + ${s>3?"vec3 c3 = texture2D(albedo3, baseUv * vec2(tiling3)).rgb;":""} + ${s>4?"vec3 c4 = texture2D(albedo4, baseUv * vec2(tiling4)).rgb;":""} + ${s>5?"vec3 c5 = texture2D(albedo5, baseUv * vec2(tiling5)).rgb;":""} + + // Sample alpha masks for all layers (use R channel) + // Add +0.5 texel offset: Torque samples alpha at grid corners (integer indices), + // but GPU linear filtering samples at texel centers. This offset aligns them. + vec2 alphaUv = baseUv + vec2(0.5 / 256.0); + float a0 = texture2D(mask0, alphaUv).r; + ${s>1?"float a1 = texture2D(mask1, alphaUv).r;":""} + ${s>2?"float a2 = texture2D(mask2, alphaUv).r;":""} + ${s>3?"float a3 = texture2D(mask3, alphaUv).r;":""} + ${s>4?"float a4 = texture2D(mask4, alphaUv).r;":""} + ${s>5?"float a5 = texture2D(mask5, alphaUv).r;":""} + + // Torque-style additive weighted blending (blender.cc): + // result = tex0 * alpha0 + tex1 * alpha1 + tex2 * alpha2 + ... + // Each layer's alpha map defines its contribution weight. + vec3 blended = c0 * a0; + ${s>1?"blended += c1 * a1;":""} + ${s>2?"blended += c2 * a2;":""} + ${s>3?"blended += c3 * a3;":""} + ${s>4?"blended += c4 * a4;":""} + ${s>5?"blended += c5 * a5;":""} + + // Assign to diffuseColor before lighting + vec3 textureColor = blended; + + ${i?`// Detail texture blending (Torque-style multiplicative blend) + // Sample detail texture at high frequency tiling + vec3 detailColor = texture2D(detailTexture, baseUv * detailTiling).rgb; + + // Calculate distance-based fade factor using world positions + // Torque: distFactor = (zeroDetailDistance - distance) / zeroDetailDistance + float distToCamera = distance(vTerrainWorldPos, cameraPosition); + float detailFade = clamp(1.0 - distToCamera / detailFadeDistance, 0.0, 1.0); + + // Torque blending: dst * lerp(1.0, detailTexel, fadeFactor) + // Detail textures are authored with bright values (~0.8 mean), not 0.5 gray + // Direct multiplication adds subtle darkening for surface detail + textureColor *= mix(vec3(1.0), detailColor, detailFade);`:""} + + // Store blended texture in diffuseColor (still in linear space here) + // We'll convert to sRGB in the output calculation + diffuseColor.rgb = textureColor; +`),o&&(e.fragmentShader=e.fragmentShader.replace("#include ",`#include + +// Override RE_Direct to extract shadow factor for Torque-style gamma-space lighting +#undef RE_Direct +void RE_Direct_TerrainShadow( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + // Torque lighting (terrLighting.cc): if light points up, terrain gets only ambient + // This prevents shadow acne from light hitting terrain backfaces + if (!sunLightPointsDown) { + terrainShadowFactor = 0.0; + return; + } + // directLight.color = sunColor * shadowFactor (shadow already applied by Three.js) + // Extract shadow factor by comparing to original sun color + #if ( NUM_DIR_LIGHTS > 0 ) + vec3 originalSunColor = directionalLights[0].color; + float sunMax = max(max(originalSunColor.r, originalSunColor.g), originalSunColor.b); + float shadowedMax = max(max(directLight.color.r, directLight.color.g), directLight.color.b); + terrainShadowFactor = clamp(shadowedMax / max(sunMax, 0.001), 0.0, 1.0); + #endif + // Don't add to reflectedLight - we'll compute lighting in gamma space at output +} +#define RE_Direct RE_Direct_TerrainShadow + +`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include +// Clear indirect diffuse - we'll compute ambient in gamma space +#if defined( RE_IndirectDiffuse ) + irradiance = vec3(0.0); +#endif +`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include + // Clear Three.js lighting - we compute everything in gamma space + reflectedLight.directDiffuse = vec3(0.0); + reflectedLight.indirectDiffuse = vec3(0.0); +`)),e.fragmentShader=e.fragmentShader.replace("#include ",`// Torque-style terrain lighting: output = clamp(lighting \xd7 texture, 0, 1) in sRGB space +{ + // Get texture in sRGB space (undo Three.js linear decode) + vec3 textureSRGB = terrainLinearToSRGB(diffuseColor.rgb); + + ${o?` + // Sample terrain lightmap for smooth NdotL + vec2 lightmapUv = vMapUv + vec2(0.5 / 512.0); + float lightmapNdotL = texture2D(terrainLightmap, lightmapUv).r; + + // Get sun and ambient colors from Three.js lights (these ARE sRGB values from mission file) + // Three.js interprets them as linear, but the numerical values are preserved + #if ( NUM_DIR_LIGHTS > 0 ) + vec3 sunColorSRGB = directionalLights[0].color; + #else + vec3 sunColorSRGB = vec3(0.7); + #endif + vec3 ambientColorSRGB = ambientLightColor; + + // Torque formula (terrLighting.cc:471-483): + // lighting = ambient + NdotL * shadowFactor * sunColor + // Clamp lighting to [0,1] before multiplying by texture + vec3 lightingSRGB = clamp(ambientColorSRGB + lightmapNdotL * terrainShadowFactor * sunColorSRGB, 0.0, 1.0); + `:` + // No lightmap - use simple ambient lighting + vec3 lightingSRGB = ambientLightColor; + `} + + // Torque formula: output = clamp(lighting \xd7 texture, 0, 1) in sRGB/gamma space + vec3 resultSRGB = clamp(lightingSRGB * textureSRGB, 0.0, 1.0); + + // Convert back to linear for Three.js output pipeline + outgoingLight = terrainSRGBToLinear(resultSRGB) + totalEmissiveRadiance; +} +#include `),e.fragmentShader=e.fragmentShader.replace("#include ",`#if DEBUG_MODE + // Debug mode: overlay green grid matching terrain grid squares (256x256) + float gridIntensity = terrainDebugGrid(vMapUv, 256.0, 1.5); + vec3 gridColor = vec3(0.0, 0.8, 0.4); // Green + gl_FragColor.rgb = mix(gl_FragColor.rgb, gridColor, gridIntensity * 0.1); +#endif + +#include `)}({shader:e,baseTextures:u,alphaTextures:i,visibilityMask:t,tiling:S,detailTexture:h?m:null,lightmap:l}),(0,F.injectCustomFog)(e,b.globalFogUniforms)},[u,i,t,m,h,l]),k=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=k.current;e&&(e.defines??={},e.defines.DEBUG_MODE=+!!d,e.needsUpdate=!0)},[d]);let w=`${h?"detail":"nodetail"}-${l?"lightmap":"nolightmap"}`;return(0,a.jsx)("meshLambertMaterial",{ref:k,map:e,depthWrite:!0,side:o.FrontSide,defines:{DEBUG_MODE:+!!d},onBeforeCompile:x},w)}function k(e){let t,i,o=(0,r.c)(8),{displacementMap:s,visibilityMask:l,textureNames:c,alphaTextures:d,detailTextureName:u,lightmap:h}=e;return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)("meshLambertMaterial",{color:"rgb(0, 109, 56)",wireframe:!0}),o[0]=t):t=o[0],o[1]!==d||o[2]!==u||o[3]!==s||o[4]!==h||o[5]!==c||o[6]!==l?(i=(0,a.jsx)(n.Suspense,{fallback:t,children:(0,a.jsx)(x,{displacementMap:s,visibilityMask:l,textureNames:c,alphaTextures:d,detailTextureName:u,lightmap:h})}),o[1]=d,o[2]=u,o[3]=s,o[4]=h,o[5]=c,o[6]=l,o[7]=i):i=o[7],i}let w=(0,n.memo)(function(e){let t,n,i,o=(0,r.c)(15),{tileX:s,tileZ:l,blockSize:c,basePosition:d,textureNames:u,geometry:h,displacementMap:m,visibilityMask:f,alphaTextures:g,detailTextureName:p,lightmap:y,visible:v}=e,F=void 0===v||v,b=c/2,S=d.x+s*c+b,x=d.z+l*c+b;o[0]!==S||o[1]!==x?(t=[S,0,x],o[0]=S,o[1]=x,o[2]=t):t=o[2];let w=t;return o[3]!==g||o[4]!==p||o[5]!==m||o[6]!==y||o[7]!==u||o[8]!==f?(n=(0,a.jsx)(k,{displacementMap:m,visibilityMask:f,textureNames:u,alphaTextures:g,detailTextureName:p,lightmap:y}),o[3]=g,o[4]=p,o[5]=m,o[6]=y,o[7]=u,o[8]=f,o[9]=n):n=o[9],o[10]!==h||o[11]!==w||o[12]!==n||o[13]!==F?(i=(0,a.jsx)("mesh",{position:w,geometry:h,castShadow:!0,receiveShadow:!0,visible:F,children:n}),o[10]=h,o[11]=w,o[12]=n,o[13]=F,o[14]=i):i=o[14],i});e.i(13876);var I=e.i(58647);function C(e){return(0,I.useRuntimeObjectByName)(e)}let _=null;function P(e){let t=new Uint8Array(65536);for(let a of(t.fill(255),e)){let e=255&a,r=a>>8&255,n=a>>16,i=256*r;for(let a=0;a0?n:(t[0]!==a?(e=(0,m.getFloat)(a,"visibleDistance")??600,t[0]=a,t[1]=e):e=t[1],e)}(),X=(0,h.useThree)(M),Z=-(128*W);V[6]!==Z?(d={x:Z,z:Z},V[6]=Z,V[7]=d):d=V[7];let J=d;if(V[8]!==q){let e=(0,m.getProperty)(q,"emptySquares");f=e?e.split(" ").map(T):[],V[8]=q,V[9]=f}else f=V[9];let Q=f,{data:ee}=((O=(0,r.c)(2))[0]!==H?(z={queryKey:["terrain",H],queryFn:()=>(0,c.loadTerrain)(H)},O[0]=H,O[1]=z):z=O[1],(0,s.useQuery)(z));e:{let e;if(!ee){g=null;break e}let t=256*W;V[10]!==t||V[11]!==W||V[12]!==ee.heightMap?(!function(e,t,a){let r=e.attributes.position,n=e.attributes.uv,i=e.attributes.normal,o=r.array,s=n.array,l=i.array,c=r.count,d=(e,a)=>(e=Math.max(0,Math.min(255,e)),t[256*(a=Math.max(0,Math.min(255,a)))+e]/65535*2048),u=(e,a)=>{let r=Math.floor(e=Math.max(0,Math.min(255,e))),n=Math.floor(a=Math.max(0,Math.min(255,a))),i=Math.min(r+1,255),o=Math.min(n+1,255),s=e-r,l=a-n;return(t[256*n+r]/65535*2048*(1-s)+t[256*n+i]/65535*2048*s)*(1-l)+(t[256*o+r]/65535*2048*(1-s)+t[256*o+i]/65535*2048*s)*l};for(let e=0;e0?(f/=y,g/=y,p/=y):(f=0,g=1,p=0),l[3*e]=f,l[3*e+1]=g,l[3*e+2]=p}r.needsUpdate=!0,i.needsUpdate=!0}(e=function(e,t){let a=new o.BufferGeometry,r=new Float32Array(198147),n=new Float32Array(198147),i=new Float32Array(132098),s=new Uint32Array(393216),l=0,c=e/256;for(let t=0;t<=256;t++)for(let a=0;a<=256;a++){let o=257*t+a;r[3*o]=a*c-e/2,r[3*o+1]=e/2-t*c,r[3*o+2]=0,n[3*o]=0,n[3*o+1]=0,n[3*o+2]=1,i[2*o]=a/256,i[2*o+1]=1-t/256}for(let e=0;e<256;e++)for(let t=0;t<256;t++){let a=257*e+t,r=a+1,n=(e+1)*257+t,i=n+1;((t^e)&1)==0?(s[l++]=a,s[l++]=n,s[l++]=i,s[l++]=a,s[l++]=i,s[l++]=r):(s[l++]=a,s[l++]=n,s[l++]=r,s[l++]=r,s[l++]=n,s[l++]=i)}return a.setIndex(new o.BufferAttribute(s,1)),a.setAttribute("position",new o.Float32BufferAttribute(r,3)),a.setAttribute("normal",new o.Float32BufferAttribute(n,3)),a.setAttribute("uv",new o.Float32BufferAttribute(i,2)),a.rotateX(-Math.PI/2),a.rotateY(-Math.PI/2),a}(t,0),ee.heightMap,W),V[10]=t,V[11]=W,V[12]=ee.heightMap,V[13]=e):e=V[13],g=e}let et=g;V[14]!==W||V[15]!==ee?(p=()=>{if(ee){var e;return e=ee.heightMap,_=(t,a)=>{let r=Math.max(0,Math.min(255,a/W+128)),n=Math.max(0,Math.min(255,t/W+128)),i=Math.floor(r),o=Math.floor(n),s=Math.min(i+1,255),l=Math.min(o+1,255),c=r-i,d=n-o;return((e[256*o+i]*(1-c)+e[256*o+s]*c)*(1-d)+(e[256*l+i]*(1-c)+e[256*l+s]*c)*d)/65535*2048},E}},y=[ee,W],V[14]=W,V[15]=ee,V[16]=p,V[17]=y):(p=V[16],y=V[17]),(0,n.useEffect)(p,y);let ea=C("Sun");t:{let e,t;if(!ea){let e;V[18]===Symbol.for("react.memo_cache_sentinel")?(e=new o.Vector3(.57735,-.57735,.57735),V[18]=e):e=V[18],v=e;break t}V[19]!==ea?(e=((0,m.getProperty)(ea,"direction")??"0.57735 0.57735 -0.57735").split(" ").map(B),V[19]=ea,V[20]=e):e=V[20];let[a,r,n]=e,i=Math.sqrt(a*a+n*n+r*r),s=a/i,l=n/i,c=r/i;V[21]!==s||V[22]!==l||V[23]!==c?(t=new o.Vector3(s,l,c),V[21]=s,V[22]=l,V[23]=c,V[24]=t):t=V[24],v=t}let er=v;a:{let e;if(!ee){F=null;break a}V[25]!==W||V[26]!==er||V[27]!==ee.heightMap?(e=function(e,t,a){let r=(t,a)=>{let r=Math.max(0,Math.min(255,t)),n=Math.max(0,Math.min(255,a)),i=Math.floor(r),o=Math.floor(n),s=Math.min(i+1,255),l=Math.min(o+1,255),c=r-i,d=n-o;return((e[256*o+i]/65535*(1-c)+e[256*o+s]/65535*c)*(1-d)+(e[256*l+i]/65535*(1-c)+e[256*l+s]/65535*c)*d)*2048},n=new o.Vector3(-t.x,-t.y,-t.z).normalize(),i=new Uint8Array(262144);for(let e=0;e<512;e++)for(let t=0;t<512;t++){let o=t/2+.25,s=e/2+.25,l=r(o,s),c=r(o-.5,s),d=r(o+.5,s),u=r(o,s-.5),h=-((r(o,s+.5)-u)/1),m=-((d-c)/1),f=Math.sqrt(h*h+a*a+m*m),g=Math.max(0,h/f*n.x+a/f*n.y+m/f*n.z),p=1;g>0&&(p=function(e,t,a,r,n,i){let o=r.z/n,s=r.x/n,l=r.y,c=Math.sqrt(o*o+s*s);if(c<1e-4)return 1;let d=.5/c,u=o*d,h=s*d,m=l*d,f=e,g=t,p=a+.1;for(let e=0;e<768&&(f+=u,g+=h,p+=m,!(f<0)&&!(f>=256)&&!(g<0)&&!(g>=256)&&!(p>2048));e++)if(pArray(ed).fill(null),V[38]=ed,V[39]=D):D=V[39];let[eh,em]=(0,n.useState)(D);V[40]===Symbol.for("react.memo_cache_sentinel")?(N={xStart:0,xEnd:0,zStart:0,zEnd:0},V[40]=N):N=V[40];let ef=(0,n.useRef)(N);return(V[41]!==J.x||V[42]!==J.z||V[43]!==Y||V[44]!==X.position.x||V[45]!==X.position.z||V[46]!==ed||V[47]!==K?(A=()=>{let e=X.position.x-J.x,t=X.position.z-J.z,a=Math.floor((e-K)/Y),r=Math.ceil((e+K)/Y),n=Math.floor((t-K)/Y),i=Math.ceil((t+K)/Y),o=ef.current;if(a===o.xStart&&r===o.xEnd&&n===o.zStart&&i===o.zEnd)return;o.xStart=a,o.xEnd=r,o.zStart=n,o.zEnd=i;let s=[];for(let e=a;e{let t=eh[e];return(0,a.jsx)(w,{tileX:t?.tileX??0,tileZ:t?.tileZ??0,blockSize:Y,basePosition:J,textureNames:ee.textureNames,geometry:et,displacementMap:ei,visibilityMask:es,alphaTextures:el,detailTextureName:$,lightmap:en,visible:null!==t},e)}),V[59]=J,V[60]=Y,V[61]=$,V[62]=eu,V[63]=el,V[64]=ei,V[65]=et,V[66]=ee.textureNames,V[67]=en,V[68]=eh,V[69]=U):U=V[69],V[70]!==G||V[71]!==U?(L=(0,a.jsxs)(a.Fragment,{children:[G,U]}),V[70]=G,V[71]=U,V[72]=L):L=V[72],L):null});function M(e){return e.camera}function T(e){return parseInt(e,10)}function E(){_=null}function B(e){return parseFloat(e)}function j(e){return(0,f.setupMask)(e)}function R(e,t){return t}let N=(0,n.createContext)(null);function A(){return(0,n.useContext)(N)}function G(e){return(0,a.jsx)(eM,{objectId:e},e)}var U=e.i(8597),L=e.i(78140),z=e.i(89887);let O=` +vec3 interiorLinearToSRGB(vec3 linear) { + vec3 higher = pow(linear, vec3(1.0/2.4)) * 1.055 - 0.055; + vec3 lower = linear * 12.92; + return mix(lower, higher, step(vec3(0.0031308), linear)); +} + +vec3 interiorSRGBToLinear(vec3 srgb) { + vec3 higher = pow((srgb + 0.055) / 1.055, vec3(2.4)); + vec3 lower = srgb / 12.92; + return mix(lower, higher, step(vec3(0.04045), srgb)); +} + +// Debug grid overlay function using screen-space derivatives for sharp, anti-aliased lines +// Returns 1.0 on grid lines, 0.0 elsewhere +float debugGrid(vec2 uv, float gridSize, float lineWidth) { + vec2 scaledUV = uv * gridSize; + vec2 grid = abs(fract(scaledUV - 0.5) - 0.5) / fwidth(scaledUV); + float line = min(grid.x, grid.y); + return 1.0 - min(line / lineWidth, 1.0); +} +`;function V({materialName:e,material:t,lightMap:r}){let i=(0,v.useDebug)(),s=i?.debugMode??!1,l=(0,c.textureToUrl)(e),d=(0,g.useTexture)(l,e=>(0,f.setupTexture)(e)),u=new Set(t?.userData?.flag_names??[]).has("SelfIlluminating"),h=new Set(t?.userData?.surface_flag_names??[]).has("SurfaceOutsideVisible"),m=(0,n.useCallback)(e=>{let t;(0,F.injectCustomFog)(e,b.globalFogUniforms),t=h??!1,e.uniforms.useSceneLighting={value:t},e.uniforms.interiorDebugColor={value:t?new o.Vector3(0,.4,1):new o.Vector3(1,.2,0)},e.fragmentShader=e.fragmentShader.replace("#include ",`#include +${O} +uniform bool useSceneLighting; +uniform vec3 interiorDebugColor; +`),e.fragmentShader=e.fragmentShader.replace("#include ",`// Lightmap handled in custom output calculation +#ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); +#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",`// Torque-style lighting: output = clamp(lighting \xd7 texture, 0, 1) in sRGB space +// Get texture in sRGB space (undo Three.js linear decode) +vec3 textureSRGB = interiorLinearToSRGB(diffuseColor.rgb); + +// Compute lighting in sRGB space +vec3 lightingSRGB = vec3(0.0); + +if (useSceneLighting) { + // Three.js computed: reflectedLight = lighting \xd7 texture_linear / PI + // Extract pure lighting: lighting = reflectedLight \xd7 PI / texture_linear + vec3 totalLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 safeTexLinear = max(diffuseColor.rgb, vec3(0.001)); + vec3 extractedLighting = totalLight * PI / safeTexLinear; + // NOTE: extractedLighting is ALREADY sRGB values because mission sun/ambient colors + // are sRGB values (Torque used them directly in gamma space). Three.js treats them + // as linear but the numerical values are the same. DO NOT convert to sRGB here! + // IMPORTANT: Torque clamps scene lighting to [0,1] BEFORE adding to lightmap + // (sceneLighting.cc line 1785: tmp.clamp()) + lightingSRGB = clamp(extractedLighting, 0.0, 1.0); +} + +// Add lightmap contribution (for BOTH outside and inside surfaces) +// In Torque, scene lighting is ADDED to lightmaps for outside surfaces at mission load +// (stored in .ml files). Inside surfaces only have base lightmap. Both need lightmap here. +#ifdef USE_LIGHTMAP + // Lightmap is stored as linear in Three.js (decoded from sRGB texture), convert back + lightingSRGB += interiorLinearToSRGB(lightMapTexel.rgb); +#endif +// Torque clamps the sum to [0,1] per channel (sceneLighting.cc lines 1817-1827) +lightingSRGB = clamp(lightingSRGB, 0.0, 1.0); + +// Torque formula: output = clamp(lighting \xd7 texture, 0, 1) in sRGB/gamma space +vec3 resultSRGB = clamp(lightingSRGB * textureSRGB, 0.0, 1.0); + +// Convert back to linear for Three.js output pipeline +vec3 resultLinear = interiorSRGBToLinear(resultSRGB); + +// Reassign outgoingLight before opaque_fragment consumes it +outgoingLight = resultLinear + totalEmissiveRadiance; + +#include `),e.fragmentShader=e.fragmentShader.replace("#include ",`// Debug mode: overlay colored grid on top of normal rendering +// Blue grid = SurfaceOutsideVisible (receives scene ambient light) +// Red grid = inside surface (no scene ambient light) +#if DEBUG_MODE && defined(USE_MAP) + // gridSize=4 creates 4x4 grid per UV tile, lineWidth=1.5 is ~1.5 pixels wide + float gridIntensity = debugGrid(vMapUv, 4.0, 1.5); + gl_FragColor.rgb = mix(gl_FragColor.rgb, interiorDebugColor, gridIntensity * 0.1); +#endif + +#include `)},[h]),p=(0,n.useRef)(null),y=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=p.current??y.current;e&&(e.defines??={},e.defines.DEBUG_MODE=+!!s,e.needsUpdate=!0)},[s]);let S={DEBUG_MODE:+!!s},x=`${h}`;return u?(0,a.jsx)("meshBasicMaterial",{ref:p,map:d,toneMapped:!1,defines:S,onBeforeCompile:m},x):(0,a.jsx)("meshLambertMaterial",{ref:y,map:d,lightMap:r,toneMapped:!1,defines:S,onBeforeCompile:m},x)}function q(e){if(!e)return null;let t=e.emissiveMap;return t&&(t.colorSpace=o.SRGBColorSpace),t??null}function H(e){let t,i,o,s=(0,r.c)(13),{node:l}=e;e:{let e,a;if(!l.material){let e;s[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],s[0]=e):e=s[0],t=e;break e}if(Array.isArray(l.material)){let e;s[1]!==l.material?(e=l.material.map(W),s[1]=l.material,s[2]=e):e=s[2],t=e;break e}s[3]!==l.material?(e=q(l.material),s[3]=l.material,s[4]=e):e=s[4],s[5]!==e?(a=[e],s[5]=e,s[6]=a):a=s[6],t=a}let c=t;return s[7]!==c||s[8]!==l.material?(i=l.material?(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)("meshStandardMaterial",{color:"yellow",wireframe:!0}),children:Array.isArray(l.material)?l.material.map((e,t)=>(0,a.jsx)(V,{materialName:e.userData.resource_path,material:e,lightMap:c[t]},t)):(0,a.jsx)(V,{materialName:l.material.userData.resource_path,material:l.material,lightMap:c[0]})}):null,s[7]=c,s[8]=l.material,s[9]=i):i=s[9],s[10]!==l.geometry||s[11]!==i?(o=(0,a.jsx)("mesh",{geometry:l.geometry,castShadow:!0,receiveShadow:!0,children:i}),s[10]=l.geometry,s[11]=i,s[12]=o):o=s[12],o}function W(e){return q(e)}let $=(0,n.memo)(function(e){let t,n,i,o,s,l,d,u=(0,r.c)(10),{object:h,interiorFile:m}=e,{nodes:f}=((l=(0,r.c)(2))[0]!==m?(s=(0,c.interiorToUrl)(m),l[0]=m,l[1]=s):s=l[1],d=s,(0,L.useGLTF)(d)),g=(0,v.useDebug)(),p=g?.debugMode??!1;return u[0]===Symbol.for("react.memo_cache_sentinel")?(t=[0,-Math.PI/2,0],u[0]=t):t=u[0],u[1]!==f?(n=Object.entries(f).filter(Z).map(J),u[1]=f,u[2]=n):n=u[2],u[3]!==p||u[4]!==m||u[5]!==h?(i=p?(0,a.jsxs)(z.FloatingLabel,{children:[h._id,": ",m]}):null,u[3]=p,u[4]=m,u[5]=h,u[6]=i):i=u[6],u[7]!==n||u[8]!==i?(o=(0,a.jsxs)("group",{rotation:t,children:[n,i]}),u[7]=n,u[8]=i,u[9]=o):o=u[9],o});function Y(e){let t,n,i,o,s=(0,r.c)(9),{color:l,label:c}=e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)("boxGeometry",{args:[10,10,10]}),s[0]=t):t=s[0],s[1]!==l?(n=(0,a.jsx)("meshStandardMaterial",{color:l,wireframe:!0}),s[1]=l,s[2]=n):n=s[2],s[3]!==l||s[4]!==c?(i=c?(0,a.jsx)(z.FloatingLabel,{color:l,children:c}):null,s[3]=l,s[4]=c,s[5]=i):i=s[5],s[6]!==n||s[7]!==i?(o=(0,a.jsxs)("mesh",{children:[t,n,i]}),s[6]=n,s[7]=i,s[8]=o):o=s[8],o}function K(e){let t,n=(0,r.c)(3),{label:i}=e,o=(0,v.useDebug)(),s=o?.debugMode??!1;return n[0]!==s||n[1]!==i?(t=s?(0,a.jsx)(Y,{color:"red",label:i}):null,n[0]=s,n[1]=i,n[2]=t):t=n[2],t}let X=(0,n.memo)(function(e){let t,i,o,s,l,c,d,u,h,f=(0,r.c)(22),{object:g}=e;f[0]!==g?(t=(0,m.getProperty)(g,"interiorFile"),f[0]=g,f[1]=t):t=f[1];let p=t;f[2]!==g?(i=(0,m.getPosition)(g),f[2]=g,f[3]=i):i=f[3];let y=i;f[4]!==g?(o=(0,m.getScale)(g),f[4]=g,f[5]=o):o=f[5];let v=o;f[6]!==g?(s=(0,m.getRotation)(g),f[6]=g,f[7]=s):s=f[7];let F=s,b=`${g._id}: ${p}`;return f[8]!==b?(l=(0,a.jsx)(K,{label:b}),f[8]=b,f[9]=l):l=f[9],f[10]===Symbol.for("react.memo_cache_sentinel")?(c=(0,a.jsx)(Y,{color:"orange"}),f[10]=c):c=f[10],f[11]!==p||f[12]!==g?(d=(0,a.jsx)(n.Suspense,{fallback:c,children:(0,a.jsx)($,{object:g,interiorFile:p})}),f[11]=p,f[12]=g,f[13]=d):d=f[13],f[14]!==l||f[15]!==d?(u=(0,a.jsx)(U.ErrorBoundary,{fallback:l,children:d}),f[14]=l,f[15]=d,f[16]=u):u=f[16],f[17]!==y||f[18]!==F||f[19]!==v||f[20]!==u?(h=(0,a.jsx)("group",{position:y,quaternion:F,scale:v,children:u}),f[17]=y,f[18]=F,f[19]=v,f[20]=u,f[21]=h):h=f[21],h});function Z(e){let[,t]=e;return t.isMesh}function J(e){let[t,r]=e;return(0,a.jsx)(H,{node:r},t)}var Q=e.i(99143);function ee(e,{path:t}){let[a]=(0,Q.useLoader)(o.CubeTextureLoader,[e],e=>e.setPath(t));return a}ee.preload=(e,{path:t})=>Q.useLoader.preload(o.CubeTextureLoader,[e],e=>e.setPath(t));let et=()=>{};function ea(e){return e.wrapS=o.RepeatWrapping,e.wrapT=o.RepeatWrapping,e.minFilter=o.LinearFilter,e.magFilter=o.LinearFilter,e.colorSpace=o.NoColorSpace,e.needsUpdate=!0,e}let er=` + attribute float alpha; + + uniform vec2 uvOffset; + + varying vec2 vUv; + varying float vAlpha; + + void main() { + // Apply UV offset for scrolling + vUv = uv + uvOffset; + vAlpha = alpha; + + vec4 pos = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + // Set depth to far plane so clouds are always visible and behind other geometry + gl_Position = pos.xyww; + } +`,en=` + uniform sampler2D cloudTexture; + uniform float debugMode; + uniform int layerIndex; + + varying vec2 vUv; + varying float vAlpha; + + // Debug grid using screen-space derivatives for sharp, anti-aliased lines + float debugGrid(vec2 uv, float gridSize, float lineWidth) { + vec2 scaledUV = uv * gridSize; + vec2 grid = abs(fract(scaledUV - 0.5) - 0.5) / fwidth(scaledUV); + float line = min(grid.x, grid.y); + return 1.0 - min(line / lineWidth, 1.0); + } + + void main() { + vec4 texColor = texture2D(cloudTexture, vUv); + + // Tribes 2 uses GL_MODULATE: final = texture \xd7 vertex color + // Vertex color is white with varying alpha, so: + // Final RGB = Texture RGB \xd7 1.0 = Texture RGB + // Final Alpha = Texture Alpha \xd7 Vertex Alpha + float finalAlpha = texColor.a * vAlpha; + vec3 color = texColor.rgb; + + // Debug mode: overlay R/G/B grid for layers 0/1/2 + if (debugMode > 0.5) { + float gridIntensity = debugGrid(vUv, 4.0, 1.5); + vec3 gridColor; + if (layerIndex == 0) { + gridColor = vec3(1.0, 0.0, 0.0); // Red + } else if (layerIndex == 1) { + gridColor = vec3(0.0, 1.0, 0.0); // Green + } else { + gridColor = vec3(0.0, 0.0, 1.0); // Blue + } + color = mix(color, gridColor, gridIntensity * 0.5); + } + + // Output clouds with texture color and combined alpha + gl_FragColor = vec4(color, finalAlpha); + } +`;function ei({textureUrl:e,radius:t,heightPercent:r,speed:i,windDirection:s,layerIndex:l}){let{debugMode:c}=(0,v.useDebug)(),{animationEnabled:d}=(0,v.useSettings)(),h=(0,n.useRef)(null),m=(0,g.useTexture)(e,ea),f=(0,n.useMemo)(()=>{let e=r-.05;return function(e,t,a,r){var n;let i,s,l,c,d,u,h,m,f,g,p,y,v,F,b,S,x,k=new o.BufferGeometry,w=new Float32Array(75),I=new Float32Array(50),C=[.05,.05,.05,.05,.05,.05,a,a,a,.05,.05,a,t,a,.05,.05,a,a,a,.05,.05,.05,.05,.05,.05],_=2*e/4;for(let t=0;t<5;t++)for(let a=0;a<5;a++){let r=5*t+a,n=-e+a*_,i=e-t*_,o=e*C[r];w[3*r]=n,w[3*r+1]=o,w[3*r+2]=i,I[2*r]=a,I[2*r+1]=t}n=w,i=e=>({x:n[3*e],y:n[3*e+1],z:n[3*e+2]}),s=(e,t,a,r)=>{n[3*e]=t,n[3*e+1]=a,n[3*e+2]=r},l=i(1),c=i(3),d=i(5),u=i(6),h=i(8),m=i(9),f=i(15),g=i(16),p=i(18),y=i(19),v=i(21),F=i(23),b=d.x+(l.x-d.x)*.5,S=d.y+(l.y-d.y)*.5,x=d.z+(l.z-d.z)*.5,s(0,u.x+(b-u.x)*2,u.y+(S-u.y)*2,u.z+(x-u.z)*2),b=m.x+(c.x-m.x)*.5,S=m.y+(c.y-m.y)*.5,x=m.z+(c.z-m.z)*.5,s(4,h.x+(b-h.x)*2,h.y+(S-h.y)*2,h.z+(x-h.z)*2),b=v.x+(f.x-v.x)*.5,S=v.y+(f.y-v.y)*.5,x=v.z+(f.z-v.z)*.5,s(20,g.x+(b-g.x)*2,g.y+(S-g.y)*2,g.z+(x-g.z)*2),b=F.x+(y.x-F.x)*.5,S=F.y+(y.y-F.y)*.5,x=F.z+(y.z-F.z)*.5,s(24,p.x+(b-p.x)*2,p.y+(S-p.y)*2,p.z+(x-p.z)*2);let P=function(e,t){let a=new Float32Array(25);for(let r=0;r<25;r++){let n=e[3*r],i=e[3*r+2],o=1.3-Math.sqrt(n*n+i*i)/t;o<.4?o=0:o>.8&&(o=1),a[r]=o}return a}(w,e),D=[];for(let e=0;e<4;e++)for(let t=0;t<4;t++){let a=5*e+t,r=a+1,n=a+5,i=n+1;D.push(a,n,i),D.push(a,i,r)}return k.setIndex(D),k.setAttribute("position",new o.Float32BufferAttribute(w,3)),k.setAttribute("uv",new o.Float32BufferAttribute(I,2)),k.setAttribute("alpha",new o.Float32BufferAttribute(P,1)),k.computeBoundingSphere(),k}(t,r,e,0)},[t,r]);(0,n.useEffect)(()=>()=>{f.dispose()},[f]);let p=(0,n.useMemo)(()=>new o.ShaderMaterial({uniforms:{cloudTexture:{value:m},uvOffset:{value:new o.Vector2(0,0)},debugMode:{value:+!!c},layerIndex:{value:l}},vertexShader:er,fragmentShader:en,transparent:!0,depthWrite:!1,side:o.DoubleSide}),[m,c,l]);return(0,n.useEffect)(()=>()=>{p.dispose()},[p]),(0,u.useFrame)(d?(e,t)=>{let a=1e3*t/32;h.current??=new o.Vector2(0,0),h.current.x+=s.x*i*a,h.current.y+=s.y*i*a,h.current.x-=Math.floor(h.current.x),h.current.y-=Math.floor(h.current.y),p.uniforms.uvOffset.value.copy(h.current)}:et),(0,a.jsx)("mesh",{geometry:f,frustumCulled:!1,renderOrder:10,children:(0,a.jsx)("primitive",{object:p,attach:"material"})})}function eo(e){var t;let i,l,d,h,f,g,p,y,v,F,b,S,x,k,w,I,C,_,P,D=(0,r.c)(37),{object:M}=e;D[0]!==M?(i=(0,m.getProperty)(M,"materialList"),D[0]=M,D[1]=i):i=D[1];let{data:T}=(t=i,(_=(0,r.c)(7))[0]!==t?(w=["detailMapList",t],I=()=>(0,c.loadDetailMapList)(t),_[0]=t,_[1]=w,_[2]=I):(w=_[1],I=_[2]),P=!!t,_[3]!==w||_[4]!==I||_[5]!==P?(C={queryKey:w,queryFn:I,enabled:P},_[3]=w,_[4]=I,_[5]=P,_[6]=C):C=_[6],(0,s.useQuery)(C));D[2]!==M?(l=(0,m.getFloat)(M,"visibleDistance")??500,D[2]=M,D[3]=l):l=D[3];let E=.95*l;D[4]!==M?(d=(0,m.getFloat)(M,"cloudSpeed1")??1e-4,D[4]=M,D[5]=d):d=D[5],D[6]!==M?(h=(0,m.getFloat)(M,"cloudSpeed2")??2e-4,D[6]=M,D[7]=h):h=D[7],D[8]!==M?(f=(0,m.getFloat)(M,"cloudSpeed3")??3e-4,D[8]=M,D[9]=f):f=D[9],D[10]!==d||D[11]!==h||D[12]!==f?(g=[d,h,f],D[10]=d,D[11]=h,D[12]=f,D[13]=g):g=D[13];let B=g;D[14]!==M?(p=(0,m.getFloat)(M,"cloudHeightPer1")??.35,D[14]=M,D[15]=p):p=D[15],D[16]!==M?(y=(0,m.getFloat)(M,"cloudHeightPer2")??.25,D[16]=M,D[17]=y):y=D[17],D[18]!==M?(v=(0,m.getFloat)(M,"cloudHeightPer3")??.2,D[18]=M,D[19]=v):v=D[19],D[20]!==p||D[21]!==y||D[22]!==v?(F=[p,y,v],D[20]=p,D[21]=y,D[22]=v,D[23]=F):F=D[23];let j=F;if(D[24]!==M){e:{let e,t=(0,m.getProperty)(M,"windVelocity");if(t){let[e,a]=t.split(" ").map(es);if(0!==e||0!==a){b=new o.Vector2(a,-e).normalize();break e}}D[26]===Symbol.for("react.memo_cache_sentinel")?(e=new o.Vector2(1,0),D[26]=e):e=D[26],b=e}D[24]=M,D[25]=b}else b=D[25];let R=b;t:{let e;if(!T){let e;D[27]===Symbol.for("react.memo_cache_sentinel")?(e=[],D[27]=e):e=D[27],S=e;break t}if(D[28]!==j||D[29]!==B||D[30]!==T){e=[];for(let t=0;t<3;t++){let a=T[7+t];a&&e.push({texture:a,height:j[t],speed:B[t]})}D[28]=j,D[29]=B,D[30]=T,D[31]=e}else e=D[31];S=e}let N=S,A=(0,n.useRef)(null);return(D[32]===Symbol.for("react.memo_cache_sentinel")?(x=e=>{let{camera:t}=e;A.current&&A.current.position.copy(t.position)},D[32]=x):x=D[32],(0,u.useFrame)(x),N&&0!==N.length)?(D[33]!==N||D[34]!==E||D[35]!==R?(k=(0,a.jsx)("group",{ref:A,children:N.map((e,t)=>{let r=(0,c.textureToUrl)(e.texture);return(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(ei,{textureUrl:r,radius:E,heightPercent:e.height,speed:e.speed,windDirection:R,layerIndex:t})},t)})}),D[33]=N,D[34]=E,D[35]=R,D[36]=k):k=D[36],k):null}function es(e){return parseFloat(e)}let el=!1;function ec(e){if(!e)return;let[t,a,r]=e.split(" ").map(e=>parseFloat(e));return[new o.Color().setRGB(t,a,r),new o.Color().setRGB(t,a,r).convertSRGBToLinear()]}function ed({skyBoxFiles:e,fogColor:t,fogState:r}){let{camera:i}=(0,h.useThree)(),s=ee(e,{path:""}),l=!!t,c=(0,n.useMemo)(()=>i.projectionMatrixInverse,[i]),d=(0,n.useMemo)(()=>r?(0,b.packFogVolumeData)(r.fogVolumes):new Float32Array(12),[r]),u=(0,n.useRef)({skybox:{value:s},fogColor:{value:t??new o.Color(0,0,0)},enableFog:{value:l},inverseProjectionMatrix:{value:c},cameraMatrixWorld:{value:i.matrixWorld},cameraHeight:b.globalFogUniforms.cameraHeight,fogVolumeData:{value:d},horizonFogHeight:{value:.18}}),m=(0,n.useMemo)(()=>{if(!r)return .18;let e=.95*r.visibleDistance/Math.sqrt(3);return 60/Math.sqrt(e*e+3600)},[r]);return(0,n.useEffect)(()=>{u.current.skybox.value=s,u.current.fogColor.value=t??new o.Color(0,0,0),u.current.enableFog.value=l,u.current.fogVolumeData.value=d,u.current.horizonFogHeight.value=m},[s,t,l,d,m]),(0,a.jsxs)("mesh",{renderOrder:-1e3,frustumCulled:!1,children:[(0,a.jsxs)("bufferGeometry",{children:[(0,a.jsx)("bufferAttribute",{attach:"attributes-position",array:new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),count:3,itemSize:3}),(0,a.jsx)("bufferAttribute",{attach:"attributes-uv",array:new Float32Array([0,0,2,0,0,2]),count:3,itemSize:2})]}),(0,a.jsx)("shaderMaterial",{uniforms:u.current,vertexShader:` + varying vec2 vUv; + + void main() { + vUv = uv; + gl_Position = vec4(position.xy, 0.9999, 1.0); + } + `,fragmentShader:` + uniform samplerCube skybox; + uniform vec3 fogColor; + uniform bool enableFog; + uniform mat4 inverseProjectionMatrix; + uniform mat4 cameraMatrixWorld; + uniform float cameraHeight; + uniform float fogVolumeData[12]; + uniform float horizonFogHeight; + + varying vec2 vUv; + + // Convert linear to sRGB for display + // shaderMaterial does NOT get automatic linear->sRGB output conversion + // Use proper sRGB transfer function (not simplified gamma 2.2) to match Three.js + vec3 linearToSRGB(vec3 linear) { + vec3 low = linear * 12.92; + vec3 high = 1.055 * pow(linear, vec3(1.0 / 2.4)) - 0.055; + return mix(low, high, step(vec3(0.0031308), linear)); + } + + void main() { + vec2 ndc = vUv * 2.0 - 1.0; + vec4 viewPos = inverseProjectionMatrix * vec4(ndc, 1.0, 1.0); + viewPos.xyz /= viewPos.w; + vec3 direction = normalize((cameraMatrixWorld * vec4(viewPos.xyz, 0.0)).xyz); + direction = vec3(direction.z, direction.y, -direction.x); + // Sample skybox - Three.js CubeTexture with SRGBColorSpace auto-converts to linear + vec4 skyColor = textureCube(skybox, direction); + vec3 finalColor; + + if (enableFog) { + vec3 effectiveFogColor = fogColor; + + // Calculate how much fog volume the ray passes through + // For skybox at "infinite" distance, the relevant height is how much + // of the volume is above/below camera depending on view direction + float volumeFogInfluence = 0.0; + + for (int i = 0; i < 3; i++) { + int offset = i * 4; + float volVisDist = fogVolumeData[offset + 0]; + float volMinH = fogVolumeData[offset + 1]; + float volMaxH = fogVolumeData[offset + 2]; + float volPct = fogVolumeData[offset + 3]; + + if (volVisDist <= 0.0) continue; + + // Check if camera is inside this volume + if (cameraHeight >= volMinH && cameraHeight <= volMaxH) { + // Camera is inside the fog volume + // Looking horizontally or up at shallow angles means ray travels + // through more fog before exiting the volume + float heightAboveCamera = volMaxH - cameraHeight; + float heightBelowCamera = cameraHeight - volMinH; + float volumeHeight = volMaxH - volMinH; + + // For horizontal rays (direction.y ≈ 0), maximum fog influence + // For rays going up steeply, less fog (exits volume quickly) + // For rays going down, more fog (travels through volume below) + float rayInfluence; + if (direction.y >= 0.0) { + // Looking up: influence based on how steep we're looking + // Shallow angles = long path through fog = high influence + rayInfluence = 1.0 - smoothstep(0.0, 0.3, direction.y); + } else { + // Looking down: always high fog (into the volume) + rayInfluence = 1.0; + } + + // Scale by percentage and volume depth factor + volumeFogInfluence += rayInfluence * volPct; + } + } + + // Base fog factor from view direction (for haze at horizon) + // In Torque, the fog "bans" (bands) are rendered as geometry from + // height 0 (HORIZON) to height 60 (OFFSET_HEIGHT) on the skybox. + // The skybox corner is at mSkyBoxPt.x = mRadius / sqrt(3). + // + // horizonFogHeight is the direction.y value where the fog band ends: + // horizonFogHeight = 60 / sqrt(skyBoxPt.x^2 + 60^2) + // + // For Firestorm (visDist=600): mRadius=570, skyBoxPt.x=329, horizonFogHeight≈0.18 + // + // Torque renders the fog bands as geometry with linear vertex alpha + // interpolation. We use a squared curve (t^2) to create a gentler + // falloff at the top of the gradient, matching Tribes 2's appearance. + float baseFogFactor; + if (direction.y <= 0.0) { + // Looking at or below horizon: full fog + baseFogFactor = 1.0; + } else if (direction.y >= horizonFogHeight) { + // Above fog band: no fog + baseFogFactor = 0.0; + } else { + // Within fog band: squared curve for gentler falloff at top + float t = direction.y / horizonFogHeight; + baseFogFactor = (1.0 - t) * (1.0 - t); + } + + // Combine base fog with volume fog influence + // When inside a volume, increase fog intensity + float finalFogFactor = min(1.0, baseFogFactor + volumeFogInfluence * 0.5); + + finalColor = mix(skyColor.rgb, effectiveFogColor, finalFogFactor); + } else { + finalColor = skyColor.rgb; + } + // Convert linear result to sRGB for display + gl_FragColor = vec4(linearToSRGB(finalColor), 1.0); + } + `,depthWrite:!1,depthTest:!1})]})}function eu(e){let t,n,i,o,l=(0,r.c)(6),{materialList:d,fogColor:u,fogState:h}=e,{data:m}=((o=(0,r.c)(2))[0]!==d?(i={queryKey:["detailMapList",d],queryFn:()=>(0,c.loadDetailMapList)(d)},o[0]=d,o[1]=i):i=o[1],(0,s.useQuery)(i));l[0]!==m?(t=m?[(0,c.textureToUrl)(m[1]),(0,c.textureToUrl)(m[3]),(0,c.textureToUrl)(m[4]),(0,c.textureToUrl)(m[5]),(0,c.textureToUrl)(m[0]),(0,c.textureToUrl)(m[2])]:null,l[0]=m,l[1]=t):t=l[1];let f=t;return f?(l[2]!==u||l[3]!==h||l[4]!==f?(n=(0,a.jsx)(ed,{skyBoxFiles:f,fogColor:u,fogState:h}),l[2]=u,l[3]=h,l[4]=f,l[5]=n):n=l[5],n):null}function eh({skyColor:e,fogColor:t,fogState:r}){let{camera:i}=(0,h.useThree)(),s=!!t,l=(0,n.useMemo)(()=>i.projectionMatrixInverse,[i]),c=(0,n.useMemo)(()=>r?(0,b.packFogVolumeData)(r.fogVolumes):new Float32Array(12),[r]),d=(0,n.useMemo)(()=>{if(!r)return .18;let e=.95*r.visibleDistance/Math.sqrt(3);return 60/Math.sqrt(e*e+3600)},[r]),u=(0,n.useRef)({skyColor:{value:e},fogColor:{value:t??new o.Color(0,0,0)},enableFog:{value:s},inverseProjectionMatrix:{value:l},cameraMatrixWorld:{value:i.matrixWorld},cameraHeight:b.globalFogUniforms.cameraHeight,fogVolumeData:{value:c},horizonFogHeight:{value:d}});return(0,n.useEffect)(()=>{u.current.skyColor.value=e,u.current.fogColor.value=t??new o.Color(0,0,0),u.current.enableFog.value=s,u.current.fogVolumeData.value=c,u.current.horizonFogHeight.value=d},[e,t,s,c,d]),(0,a.jsxs)("mesh",{renderOrder:-1e3,frustumCulled:!1,children:[(0,a.jsxs)("bufferGeometry",{children:[(0,a.jsx)("bufferAttribute",{attach:"attributes-position",array:new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),count:3,itemSize:3}),(0,a.jsx)("bufferAttribute",{attach:"attributes-uv",array:new Float32Array([0,0,2,0,0,2]),count:3,itemSize:2})]}),(0,a.jsx)("shaderMaterial",{uniforms:u.current,vertexShader:` + varying vec2 vUv; + + void main() { + vUv = uv; + gl_Position = vec4(position.xy, 0.9999, 1.0); + } + `,fragmentShader:` + uniform vec3 skyColor; + uniform vec3 fogColor; + uniform bool enableFog; + uniform mat4 inverseProjectionMatrix; + uniform mat4 cameraMatrixWorld; + uniform float cameraHeight; + uniform float fogVolumeData[12]; + uniform float horizonFogHeight; + + varying vec2 vUv; + + // Convert linear to sRGB for display + vec3 linearToSRGB(vec3 linear) { + vec3 low = linear * 12.92; + vec3 high = 1.055 * pow(linear, vec3(1.0 / 2.4)) - 0.055; + return mix(low, high, step(vec3(0.0031308), linear)); + } + + void main() { + vec2 ndc = vUv * 2.0 - 1.0; + vec4 viewPos = inverseProjectionMatrix * vec4(ndc, 1.0, 1.0); + viewPos.xyz /= viewPos.w; + vec3 direction = normalize((cameraMatrixWorld * vec4(viewPos.xyz, 0.0)).xyz); + direction = vec3(direction.z, direction.y, -direction.x); + + vec3 finalColor; + + if (enableFog) { + // Calculate volume fog influence (same logic as SkyBoxTexture) + float volumeFogInfluence = 0.0; + + for (int i = 0; i < 3; i++) { + int offset = i * 4; + float volVisDist = fogVolumeData[offset + 0]; + float volMinH = fogVolumeData[offset + 1]; + float volMaxH = fogVolumeData[offset + 2]; + float volPct = fogVolumeData[offset + 3]; + + if (volVisDist <= 0.0) continue; + + if (cameraHeight >= volMinH && cameraHeight <= volMaxH) { + float rayInfluence; + if (direction.y >= 0.0) { + rayInfluence = 1.0 - smoothstep(0.0, 0.3, direction.y); + } else { + rayInfluence = 1.0; + } + volumeFogInfluence += rayInfluence * volPct; + } + } + + // Base fog factor from view direction + float baseFogFactor; + if (direction.y <= 0.0) { + baseFogFactor = 1.0; + } else if (direction.y >= horizonFogHeight) { + baseFogFactor = 0.0; + } else { + float t = direction.y / horizonFogHeight; + baseFogFactor = (1.0 - t) * (1.0 - t); + } + + // Combine base fog with volume fog influence + float finalFogFactor = min(1.0, baseFogFactor + volumeFogInfluence * 0.5); + + finalColor = mix(skyColor, fogColor, finalFogFactor); + } else { + finalColor = skyColor; + } + + gl_FragColor = vec4(linearToSRGB(finalColor), 1.0); + } + `,depthWrite:!1,depthTest:!1})]})}function em(e,t){let{fogDistance:a,visibleDistance:r}=e;return[a,r]}function ef({fogState:e,enabled:t}){let{scene:a,camera:r}=(0,h.useThree)(),i=(0,n.useRef)(null),s=(0,n.useMemo)(()=>(0,b.packFogVolumeData)(e.fogVolumes),[e.fogVolumes]);return(0,n.useEffect)(()=>{el||((0,F.installCustomFogShader)(),el=!0)},[]),(0,n.useEffect)(()=>{(0,b.resetGlobalFogUniforms)();let[t,n]=em(e,r.position.y),l=new o.Fog(e.fogColor,t,n);return a.fog=l,i.current=l,(0,b.updateGlobalFogUniforms)(r.position.y,s),()=>{a.fog=null,i.current=null,(0,b.resetGlobalFogUniforms)()}},[a,r,e,s]),(0,n.useEffect)(()=>{let a=i.current;if(a)if(t){let[t,n]=em(e,r.position.y);a.near=t,a.far=n}else a.near=1e10,a.far=1e10},[t,e,r.position.y]),(0,u.useFrame)(()=>{let a=i.current;if(!a)return;let n=r.position.y;if((0,b.updateGlobalFogUniforms)(n,s,t),t){let[t,r]=em(e,n);a.near=t,a.far=r,a.color.copy(e.fogColor)}}),null}function eg(e){return parseFloat(e)}function ep(e){return parseFloat(e)}function ey(e){return parseFloat(e)}var ev=e.i(91907),eF=e.i(25947),eb=e.i(6112);let eS={1:"Storm",2:"Inferno"},ex=(0,n.createContext)(null);function ek(){let e=(0,n.useContext)(ex);if(!e)throw Error("useCameras must be used within CamerasProvider");return e}function ew({children:e}){let{camera:t}=(0,h.useThree)(),[r,i]=(0,n.useState)(-1),[s,l]=(0,n.useState)({}),[c,d]=(0,n.useState)(()=>({initialized:!1,position:null,quarternion:null})),u=(0,n.useCallback)(e=>{l(t=>({...t,[e.id]:e}))},[]),m=(0,n.useCallback)(e=>{l(t=>{let{[e.id]:a,...r}=t;return r})},[]),f=Object.keys(s).length,g=(0,n.useCallback)(e=>{if(e>=0&&e{g(f?(r+1)%f:-1)},[f,r,g]);(0,n.useEffect)(()=>{let e=()=>{let e=window.location.hash;if(e.startsWith("#c")){let[t,a]=e.slice(2).split("~"),r=t.split(",").map(e=>parseFloat(e)),n=a.split(",").map(e=>parseFloat(e));d({initialized:!0,position:new o.Vector3(...r),quarternion:new o.Quaternion(...n)})}else d({initialized:!0,position:null,quarternion:null})};return window.addEventListener("hashchange",e),e(),()=>{window.removeEventListener("hashchange",e)}},[]),(0,n.useEffect)(()=>{c.initialized&&c.position&&(t.position.copy(c.position),c.quarternion&&t.quaternion.copy(c.quarternion))},[t,c]),(0,n.useEffect)(()=>{c.initialized&&!c.position&&f>0&&-1===r&&g(0)},[f,g,r,c]);let y=(0,n.useMemo)(()=>({registerCamera:u,unregisterCamera:m,nextCamera:p,setCameraIndex:g,cameraCount:f}),[u,m,p,g,f]);return 0===f&&-1!==r&&i(-1),(0,a.jsx)(ex.Provider,{value:y,children:e})}let eI=(0,n.createContext)(null),eC=eI.Provider,e_=(0,n.lazy)(()=>e.A(61921).then(e=>({default:e.AudioEmitter}))),eP={AudioEmitter:function(e){let t,n=(0,r.c)(3),{audioEnabled:i}=(0,v.useSettings)();return n[0]!==i||n[1]!==e?(t=i?(0,a.jsx)(e_,{...e}):null,n[0]=i,n[1]=e,n[2]=t):t=n[2],t},Camera:function(e){let t,a,i,s,l,c=(0,r.c)(14),{object:d}=e,{registerCamera:u,unregisterCamera:h}=ek(),f=(0,n.useId)();c[0]!==d?(t=(0,m.getProperty)(d,"dataBlock"),c[0]=d,c[1]=t):t=c[1];let g=t;c[2]!==d?(a=(0,m.getPosition)(d),c[2]=d,c[3]=a):a=c[3];let p=a;c[4]!==d?(i=(0,m.getRotation)(d),c[4]=d,c[5]=i):i=c[5];let y=i;return c[6]!==g||c[7]!==f||c[8]!==p||c[9]!==y||c[10]!==u||c[11]!==h?(s=()=>{if("Observer"===g){let e={id:f,position:new o.Vector3(...p),rotation:y};return u(e),()=>{h(e)}}},l=[f,g,u,h,p,y],c[6]=g,c[7]=f,c[8]=p,c[9]=y,c[10]=u,c[11]=h,c[12]=s,c[13]=l):(s=c[12],l=c[13]),(0,n.useEffect)(s,l),null},ForceFieldBare:(0,n.lazy)(()=>e.A(25147).then(e=>({default:e.ForceFieldBare}))),InteriorInstance:X,Item:function(e){let t,i,o,s,l,c,d,h,f,g,p,y,F=(0,r.c)(32),{object:b}=e,S=A();F[0]!==b?(t=(0,m.getProperty)(b,"dataBlock")??"",F[0]=b,F[1]=t):t=F[1];let x=t,k=(0,eb.useDatablock)(x);F[2]!==k||F[3]!==b?(i=function(e){if("string"==typeof e){let t=e.toLowerCase();return"0"!==t&&"false"!==t&&""!==t}return!!e}((0,m.getProperty)(b,"rotate")??(0,m.getProperty)(k,"rotate")),F[2]=k,F[3]=b,F[4]=i):i=F[4];let w=i;F[5]!==b?(o=(0,m.getPosition)(b),F[5]=b,F[6]=o):o=F[6];let I=o;F[7]!==b?(s=(0,m.getScale)(b),F[7]=b,F[8]=s):s=F[8];let C=s;F[9]!==b?(l=(0,m.getRotation)(b),F[9]=b,F[10]=l):l=F[10];let _=l,{animationEnabled:P}=(0,v.useSettings)(),D=(0,n.useRef)(null);F[11]!==P||F[12]!==w?(c=()=>{if(!D.current||!w||!P)return;let e=performance.now()/1e3;D.current.rotation.y=e/3*Math.PI*2},F[11]=P,F[12]=w,F[13]=c):c=F[13],(0,u.useFrame)(c),F[14]!==k?(d=(0,m.getProperty)(k,"shapeFile"),F[14]=k,F[15]=d):d=F[15];let M=d;M||console.error(` missing shape for datablock: ${x}`);let T=x?.toLowerCase()==="flag",E=S?.team??null,B=E&&E>0?eS[E]:null,j=T&&B?`${B} Flag`:null;return F[16]!==_||F[17]!==w?(h=!w&&{quaternion:_},F[16]=_,F[17]=w,F[18]=h):h=F[18],F[19]!==j?(f=j?(0,a.jsx)(z.FloatingLabel,{opacity:.6,children:j}):null,F[19]=j,F[20]=f):f=F[20],F[21]!==f?(g=(0,a.jsx)(ev.ShapeRenderer,{loadingColor:"pink",children:f}),F[21]=f,F[22]=g):g=F[22],F[23]!==I||F[24]!==C||F[25]!==g||F[26]!==h?(p=(0,a.jsx)("group",{ref:D,position:I,...h,scale:C,children:g}),F[23]=I,F[24]=C,F[25]=g,F[26]=h,F[27]=p):p=F[27],F[28]!==b||F[29]!==M||F[30]!==p?(y=(0,a.jsx)(eF.ShapeInfoProvider,{type:"Item",object:b,shapeName:M,children:p}),F[28]=b,F[29]=M,F[30]=p,F[31]=y):y=F[31],y},SimGroup:function(e){let t,n,i,o,s=(0,r.c)(17),{object:l}=e,c=(0,I.useRuntimeObjectById)(l._id)??l,d=A();s[0]!==c._children?(t=c._children??[],s[0]=c._children,s[1]=t):t=s[1];let u=(0,I.useRuntimeChildIds)(c._id,t),h=null,m=!1;if(d&&d.hasTeams){if(m=!0,null!=d.team)h=d.team;else if(c._name){let e;if(s[2]!==c._name){let t;s[4]===Symbol.for("react.memo_cache_sentinel")?(t=/^team(\d+)$/i,s[4]=t):t=s[4],e=c._name.match(t),s[2]=c._name,s[3]=e}else e=s[3];let t=e;t&&(h=parseInt(t[1],10))}}else if(c._name){let e;s[5]!==c._name?(e=c._name.toLowerCase(),s[5]=c._name,s[6]=e):e=s[6],m="teams"===e}s[7]!==m||s[8]!==c||s[9]!==d||s[10]!==h?(n={object:c,parent:d,hasTeams:m,team:h},s[7]=m,s[8]=c,s[9]=d,s[10]=h,s[11]=n):n=s[11];let f=n;return s[12]!==u?(i=u.map(G),s[12]=u,s[13]=i):i=s[13],s[14]!==f||s[15]!==i?(o=(0,a.jsx)(N.Provider,{value:f,children:i}),s[14]=f,s[15]=i,s[16]=o):o=s[16],o},Sky:function({object:e}){let{fogEnabled:t,highQualityFog:r}=(0,v.useSettings)(),i=(0,m.getProperty)(e,"materialList"),s=(0,n.useMemo)(()=>ec((0,m.getProperty)(e,"SkySolidColor")),[e]),l=(0,m.getInt)(e,"useSkyTextures")??1,c=(0,n.useMemo)(()=>(function(e,t=!0){let a=(0,m.getFloat)(e,"fogDistance")??0,r=(0,m.getFloat)(e,"visibleDistance")??1e3,n=(0,m.getFloat)(e,"high_fogDistance"),i=(0,m.getFloat)(e,"high_visibleDistance"),s=t&&null!=n&&n>0?n:a,l=t&&null!=i&&i>0?i:r,c=function(e){if(!e)return new o.Color(.5,.5,.5);let[t,a,r]=e.split(" ").map(e=>parseFloat(e));return new o.Color().setRGB(t,a,r).convertSRGBToLinear()}((0,m.getProperty)(e,"fogColor")),d=[];for(let t=1;t<=3;t++){let a=function(e,t=1){if(!e)return null;let a=e.split(" ").map(e=>parseFloat(e));if(a.length<3)return null;let[r,n,i]=a;return r<=0||i<=n?null:{visibleDistance:r,minHeight:n,maxHeight:i,percentage:Math.max(0,Math.min(1,t))}}((0,m.getProperty)(e,`fogVolume${t}`),1);a&&d.push(a)}let u=d.reduce((e,t)=>Math.max(e,t.maxHeight),0);return{fogDistance:s,visibleDistance:l,fogColor:c,fogVolumes:d,fogLine:u,enabled:l>s}})(e,r),[e,r]),d=(0,n.useMemo)(()=>ec((0,m.getProperty)(e,"fogColor")),[e]),u=s||d,f=c.enabled&&t,g=c.fogColor,{scene:p,gl:y}=(0,h.useThree)();(0,n.useEffect)(()=>{if(f){let e=g.clone();p.background=e,y.setClearColor(e)}else if(u){let e=u[0].clone();p.background=e,y.setClearColor(e)}else p.background=null;return()=>{p.background=null}},[p,y,f,g,u]);let F=s?.[1];return(0,a.jsxs)(a.Fragment,{children:[i&&l?(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(eu,{materialList:i,fogColor:f?g:void 0,fogState:f?c:void 0},i)}):F?(0,a.jsx)(eh,{skyColor:F,fogColor:f?g:void 0,fogState:f?c:void 0}):null,(0,a.jsx)(n.Suspense,{children:(0,a.jsx)(eo,{object:e})}),c.enabled?(0,a.jsx)(ef,{fogState:c,enabled:t}):null]})},StaticShape:function(e){let t,n,i,o,s,l,c,d,u=(0,r.c)(19),{object:h}=e;u[0]!==h?(t=(0,m.getProperty)(h,"dataBlock")??"",u[0]=h,u[1]=t):t=u[1];let f=t,g=(0,eb.useDatablock)(f);u[2]!==h?(n=(0,m.getPosition)(h),u[2]=h,u[3]=n):n=u[3];let p=n;u[4]!==h?(i=(0,m.getRotation)(h),u[4]=h,u[5]=i):i=u[5];let y=i;u[6]!==h?(o=(0,m.getScale)(h),u[6]=h,u[7]=o):o=u[7];let v=o;u[8]!==g?(s=(0,m.getProperty)(g,"shapeFile"),u[8]=g,u[9]=s):s=u[9];let F=s;return F||console.error(` missing shape for datablock: ${f}`),u[10]===Symbol.for("react.memo_cache_sentinel")?(l=(0,a.jsx)(ev.ShapeRenderer,{}),u[10]=l):l=u[10],u[11]!==p||u[12]!==y||u[13]!==v?(c=(0,a.jsx)("group",{position:p,quaternion:y,scale:v,children:l}),u[11]=p,u[12]=y,u[13]=v,u[14]=c):c=u[14],u[15]!==h||u[16]!==F||u[17]!==c?(d=(0,a.jsx)(eF.ShapeInfoProvider,{type:"StaticShape",object:h,shapeName:F,children:c}),u[15]=h,u[16]=F,u[17]=c,u[18]=d):d=u[18],d},Sun:function(e){let t,i,s,l,c,d,u,h,f,g,y=(0,r.c)(25),{object:v}=e;y[0]!==v?(t=((0,m.getProperty)(v,"direction")??"0.57735 0.57735 -0.57735").split(" ").map(ey),y[0]=v,y[1]=t):t=y[1];let[F,b,S]=t,x=Math.sqrt(F*F+S*S+b*b),k=F/x,w=S/x,I=b/x;y[2]!==k||y[3]!==w||y[4]!==I?(i=new o.Vector3(k,w,I),y[2]=k,y[3]=w,y[4]=I,y[5]=i):i=y[5];let C=i,_=-(5e3*C.x),P=-(5e3*C.y),D=-(5e3*C.z);y[6]!==_||y[7]!==P||y[8]!==D?(s=new o.Vector3(_,P,D),y[6]=_,y[7]=P,y[8]=D,y[9]=s):s=y[9];let M=s;if(y[10]!==v){let[e,t,a]=((0,m.getProperty)(v,"color")??"0.7 0.7 0.7 1").split(" ").map(ep);l=new o.Color(e,t,a),y[10]=v,y[11]=l}else l=y[11];let T=l;if(y[12]!==v){let[e,t,a]=((0,m.getProperty)(v,"ambient")??"0.5 0.5 0.5 1").split(" ").map(eg);c=new o.Color(e,t,a),y[12]=v,y[13]=c}else c=y[13];let E=c,B=C.y<0;return y[14]!==B?(d=()=>{p.value=B},u=[B],y[14]=B,y[15]=d,y[16]=u):(d=y[15],u=y[16]),(0,n.useEffect)(d,u),y[17]!==T||y[18]!==M?(h=(0,a.jsx)("directionalLight",{position:M,color:T,intensity:1,castShadow:!0,"shadow-mapSize-width":8192,"shadow-mapSize-height":8192,"shadow-camera-left":-4096,"shadow-camera-right":4096,"shadow-camera-top":4096,"shadow-camera-bottom":-4096,"shadow-camera-near":100,"shadow-camera-far":12e3,"shadow-bias":-1e-5,"shadow-normalBias":.4,"shadow-radius":2}),y[17]=T,y[18]=M,y[19]=h):h=y[19],y[20]!==E?(f=(0,a.jsx)("ambientLight",{color:E,intensity:1}),y[20]=E,y[21]=f):f=y[21],y[22]!==h||y[23]!==f?(g=(0,a.jsxs)(a.Fragment,{children:[h,f]}),y[22]=h,y[23]=f,y[24]=g):g=y[24],g},TerrainBlock:D,TSStatic:function(e){let t,n,i,o,s,l,c,d=(0,r.c)(17),{object:u}=e;d[0]!==u?(t=(0,m.getProperty)(u,"shapeName"),d[0]=u,d[1]=t):t=d[1];let h=t;d[2]!==u?(n=(0,m.getPosition)(u),d[2]=u,d[3]=n):n=d[3];let f=n;d[4]!==u?(i=(0,m.getRotation)(u),d[4]=u,d[5]=i):i=d[5];let g=i;d[6]!==u?(o=(0,m.getScale)(u),d[6]=u,d[7]=o):o=d[7];let p=o;return h||console.error(" missing shapeName for object",u),d[8]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)(ev.ShapeRenderer,{}),d[8]=s):s=d[8],d[9]!==f||d[10]!==g||d[11]!==p?(l=(0,a.jsx)("group",{position:f,quaternion:g,scale:p,children:s}),d[9]=f,d[10]=g,d[11]=p,d[12]=l):l=d[12],d[13]!==u||d[14]!==h||d[15]!==l?(c=(0,a.jsx)(eF.ShapeInfoProvider,{type:"TSStatic",object:u,shapeName:h,children:l}),d[13]=u,d[14]=h,d[15]=l,d[16]=c):c=d[16],c},Turret:function(e){let t,n,i,o,s,l,c,d,u,h,f,g=(0,r.c)(27),{object:p}=e;g[0]!==p?(t=(0,m.getProperty)(p,"dataBlock")??"",g[0]=p,g[1]=t):t=g[1];let y=t;g[2]!==p?(n=(0,m.getProperty)(p,"initialBarrel"),g[2]=p,g[3]=n):n=g[3];let v=n,F=(0,eb.useDatablock)(y),b=(0,eb.useDatablock)(v);g[4]!==p?(i=(0,m.getPosition)(p),g[4]=p,g[5]=i):i=g[5];let S=i;g[6]!==p?(o=(0,m.getRotation)(p),g[6]=p,g[7]=o):o=g[7];let x=o;g[8]!==p?(s=(0,m.getScale)(p),g[8]=p,g[9]=s):s=g[9];let k=s;g[10]!==F?(l=(0,m.getProperty)(F,"shapeFile"),g[10]=F,g[11]=l):l=g[11];let w=l;g[12]!==b?(c=(0,m.getProperty)(b,"shapeFile"),g[12]=b,g[13]=c):c=g[13];let I=c;return w||console.error(` missing shape for datablock: ${y}`),v&&!I&&console.error(` missing shape for barrel datablock: ${v}`),g[14]===Symbol.for("react.memo_cache_sentinel")?(d=(0,a.jsx)(ev.ShapeRenderer,{}),g[14]=d):d=g[14],g[15]!==I||g[16]!==p?(u=I?(0,a.jsx)(eF.ShapeInfoProvider,{type:"Turret",object:p,shapeName:I,children:(0,a.jsx)("group",{position:[0,1.5,0],children:(0,a.jsx)(ev.ShapeRenderer,{})})}):null,g[15]=I,g[16]=p,g[17]=u):u=g[17],g[18]!==S||g[19]!==x||g[20]!==k||g[21]!==u?(h=(0,a.jsxs)("group",{position:S,quaternion:x,scale:k,children:[d,u]}),g[18]=S,g[19]=x,g[20]=k,g[21]=u,g[22]=h):h=g[22],g[23]!==p||g[24]!==w||g[25]!==h?(f=(0,a.jsx)(eF.ShapeInfoProvider,{type:"Turret",object:p,shapeName:w,children:h}),g[23]=p,g[24]=w,g[25]=h,g[26]=f):f=g[26],f},WaterBlock:(0,n.lazy)(()=>e.A(18599).then(e=>({default:e.WaterBlock}))),WayPoint:function(e){let t,n,i,o=(0,r.c)(7),{object:s}=e;o[0]!==s?(t=(0,m.getPosition)(s),o[0]=s,o[1]=t):t=o[1];let l=t;o[2]!==s?(n=(0,m.getProperty)(s,"name"),o[2]=s,o[3]=n):n=o[3];let c=n;return o[4]!==c||o[5]!==l?(i=c?(0,a.jsx)(z.FloatingLabel,{position:l,opacity:.6,children:c}):null,o[4]=c,o[5]=l,o[6]=i):i=o[6],i}},eD=new Set(["ForceFieldBare","Item","StaticShape","Turret"]);function eM(e){let t,i,o,s=(0,r.c)(13),{object:l,objectId:c}=e,d=(0,I.useRuntimeObjectById)(c??l?._id)??l,{missionType:u}=(0,n.useContext)(eI),h=(0,I.useEngineSelector)(eT);e:{let e,a;if(!d){t=!1;break e}s[0]!==d?(e=new Set(((0,m.getProperty)(d,"missionTypesList")??"").toLowerCase().split(/\s+/).filter(Boolean)),s[0]=d,s[1]=e):e=s[1];let r=e;s[2]!==u||s[3]!==r?(a=!r.size||r.has(u.toLowerCase()),s[2]=u,s[3]=r,s[4]=a):a=s[4],t=a}let f=t;if(!d)return null;let g=eP[d._className];s[5]!==h||s[6]!==d._className?(i=h&&eD.has(d._className),s[5]=h,s[6]=d._className,s[7]=i):i=s[7];let p=i;return s[8]!==g||s[9]!==p||s[10]!==d||s[11]!==f?(o=f&&g?(0,a.jsx)(n.Suspense,{children:!p&&(0,a.jsx)(g,{object:d})}):null,s[8]=g,s[9]=p,s[10]=d,s[11]=f,s[12]=o):o=s[12],o}function eT(e){return null!=e.playback.recording}var eE=e.i(51475);let eB=(0,n.createContext)(null);function ej(e){let t,n,i=(0,r.c)(5),{runtime:o,children:s}=e;return i[0]!==s?(t=(0,a.jsx)(eE.TickProvider,{children:s}),i[0]=s,i[1]=t):t=i[1],i[2]!==o||i[3]!==t?(n=(0,a.jsx)(eB.Provider,{value:o,children:t}),i[2]=o,i[3]=t,i[4]=n):n=i[4],n}var eR=e.i(86608),eN=e.i(38433),eA=e.i(33870),eG=e.i(91996),eU=e.i(7368);let eL=(0,d.createScriptLoader)(),ez=(0,eA.createScriptCache)(),eO={findFiles:e=>{let t=(0,l.default)(e,{nocase:!0});return(0,eG.getResourceList)().filter(e=>t(e)).map(e=>{let[,t]=(0,eG.getSourceAndPath)(e);return t})},isFile:e=>null!=(0,eG.getResourceMap)()[(0,eG.getResourceKey)(e)]};function eV(e){"batch.flushed"===e.type&&I.engineStore.getState().applyRuntimeBatch(e.events,{tick:e.tick})}function eq(e){e instanceof Error&&"AbortError"===e.name||console.error("Mission runtime failed to become ready:",e)}let eH=(0,n.memo)(function(e){let t,i,o,l,d,u,h,m,f=(0,r.c)(17),{name:g,missionType:p,onLoadingChange:y}=e,{data:v}=((m=(0,r.c)(2))[0]!==g?(h={queryKey:["parsedMission",g],queryFn:()=>(0,c.loadMission)(g)},m[0]=g,m[1]=h):h=m[1],(0,s.useQuery)(h)),{missionGroup:F,runtime:b,progress:S}=function(e,t,a){let i,o,s,l=(0,r.c)(6);l[0]===Symbol.for("react.memo_cache_sentinel")?(i={missionGroup:void 0,runtime:void 0,progress:0},l[0]=i):i=l[0];let[c,d]=(0,n.useState)(i);return l[1]!==e||l[2]!==t||l[3]!==a?(o=()=>{if(!a)return;let r=new AbortController,n=!1,i=null,o=(0,eN.createProgressTracker)(),s=()=>{d(e=>({...e,progress:o.progress}))};o.on("update",s);let{runtime:l,ready:c}=(0,eR.runServer)({missionName:e,missionType:t,runtimeOptions:{loadScript:eL,fileSystem:eO,cache:ez,signal:r.signal,progress:o,ignoreScripts:eU.ignoreScripts}});return c.then(()=>{n||r.signal.aborted||(I.engineStore.getState().setRuntime(l),d({missionGroup:l.getObjectByName("MissionGroup"),runtime:l,progress:1}))}).catch(eq),i=l.subscribeRuntimeEvents(eV),I.engineStore.getState().setRuntime(l),()=>{n=!0,o.off("update",s),r.abort(),i?.(),I.engineStore.getState().clearRuntime(),l.destroy()}},s=[e,t,a],l[1]=e,l[2]=t,l[3]=a,l[4]=o,l[5]=s):(o=l[4],s=l[5]),(0,n.useEffect)(o,s),c}(g,p,v),x=!v||!F||!b;f[0]!==F||f[1]!==p||f[2]!==v?(t={metadata:v,missionType:p,missionGroup:F},f[0]=F,f[1]=p,f[2]=v,f[3]=t):t=f[3];let k=t;return(f[4]!==x||f[5]!==y||f[6]!==S?(i=()=>{y?.(x,S)},o=[x,S,y],f[4]=x,f[5]=y,f[6]=S,f[7]=i,f[8]=o):(i=f[7],o=f[8]),(0,n.useEffect)(i,o),x)?null:(f[9]!==F?(l=(0,a.jsx)(eM,{object:F}),f[9]=F,f[10]=l):l=f[10],f[11]!==b||f[12]!==l?(d=(0,a.jsx)(ej,{runtime:b,children:l}),f[11]=b,f[12]=l,f[13]=d):d=f[13],f[14]!==k||f[15]!==d?(u=(0,a.jsx)(eC,{value:k,children:d}),f[14]=k,f[15]=d,f[16]=u):u=f[16],u)});var eW=e.i(17751),e$=e.i(12598),eY=e.i(8155);let eK=e=>{let t=(0,eY.createStore)(e),a=e=>(function(e,t=e=>e){let a=n.default.useSyncExternalStore(e.subscribe,n.default.useCallback(()=>t(e.getState()),[e,t]),n.default.useCallback(()=>t(e.getInitialState()),[e,t]));return n.default.useDebugValue(a),a})(t,e);return Object.assign(a,t),a};var eX=e.i(79473);let eZ=n.createContext(null);function eJ({map:e,children:t,onChange:a,domElement:r}){let i=e.map(e=>e.name+e.keys).join("-"),o=n.useMemo(()=>{let t;return(t=(0,eX.subscribeWithSelector)(()=>e.reduce((e,t)=>({...e,[t.name]:!1}),{})))?eK(t):eK},[i]),s=n.useMemo(()=>[o.subscribe,o.getState,o],[i]),l=o.setState;return n.useEffect(()=>{let t=e.map(({name:e,keys:t,up:r})=>({keys:t,up:r,fn:t=>{l({[e]:t}),a&&a(e,t,s[1]())}})).reduce((e,{keys:t,fn:a,up:r=!0})=>(t.forEach(t=>e[t]={fn:a,pressed:!1,up:r}),e),{}),n=({key:e,code:a})=>{let r=t[e]||t[a];if(!r)return;let{fn:n,pressed:i,up:o}=r;r.pressed=!0,(o||!i)&&n(!0)},i=({key:e,code:a})=>{let r=t[e]||t[a];if(!r)return;let{fn:n,up:i}=r;r.pressed=!1,i&&n(!1)},o=r||window;return o.addEventListener("keydown",n,{passive:!0}),o.addEventListener("keyup",i,{passive:!0}),()=>{o.removeEventListener("keydown",n),o.removeEventListener("keyup",i)}},[r,i]),n.createElement(eZ.Provider,{value:s,children:t})}function eQ(e){let[t,a,r]=n.useContext(eZ);return e?r(e):[t,a]}var e0=e.i(85413),e1=Object.defineProperty,e2=(e,t,a)=>{let r;return(r="symbol"!=typeof t?t+"":t)in e?e1(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a,a};let e3=new o.Euler(0,0,0,"YXZ"),e5=new o.Vector3,e4={type:"change"},e6={type:"lock"},e8={type:"unlock"},e7=Math.PI/2;class e9 extends e0.EventDispatcher{constructor(e,t){super(),e2(this,"camera"),e2(this,"domElement"),e2(this,"isLocked"),e2(this,"minPolarAngle"),e2(this,"maxPolarAngle"),e2(this,"pointerSpeed"),e2(this,"onMouseMove",e=>{this.domElement&&!1!==this.isLocked&&(e3.setFromQuaternion(this.camera.quaternion),e3.y-=.002*e.movementX*this.pointerSpeed,e3.x-=.002*e.movementY*this.pointerSpeed,e3.x=Math.max(e7-this.maxPolarAngle,Math.min(e7-this.minPolarAngle,e3.x)),this.camera.quaternion.setFromEuler(e3),this.dispatchEvent(e4))}),e2(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(e6),this.isLocked=!0):(this.dispatchEvent(e8),this.isLocked=!1))}),e2(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),e2(this,"connect",e=>{this.domElement=e||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),e2(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),e2(this,"dispose",()=>{this.disconnect()}),e2(this,"getObject",()=>this.camera),e2(this,"direction",new o.Vector3(0,0,-1)),e2(this,"getDirection",e=>e.copy(this.direction).applyQuaternion(this.camera.quaternion)),e2(this,"moveForward",e=>{e5.setFromMatrixColumn(this.camera.matrix,0),e5.crossVectors(this.camera.up,e5),this.camera.position.addScaledVector(e5,e)}),e2(this,"moveRight",e=>{e5.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(e5,e)}),e2(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),e2(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}}(t={}).forward="forward",t.backward="backward",t.left="left",t.right="right",t.up="up",t.down="down",t.lookUp="lookUp",t.lookDown="lookDown",t.lookLeft="lookLeft",t.lookRight="lookRight",t.camera1="camera1",t.camera2="camera2",t.camera3="camera3",t.camera4="camera4",t.camera5="camera5",t.camera6="camera6",t.camera7="camera7",t.camera8="camera8",t.camera9="camera9";let te=Math.PI/2-.01;function tt(){let e,t,a,i,s,l,c,d,m,f,g,p,y,F=(0,r.c)(26),{speedMultiplier:b,setSpeedMultiplier:S}=(0,v.useControls)(),[x,k]=eQ(),{camera:w,gl:I}=(0,h.useThree)(),{nextCamera:C,setCameraIndex:_,cameraCount:P}=ek(),D=(0,n.useRef)(null);F[0]===Symbol.for("react.memo_cache_sentinel")?(e=new o.Vector3,F[0]=e):e=F[0];let M=(0,n.useRef)(e);F[1]===Symbol.for("react.memo_cache_sentinel")?(t=new o.Vector3,F[1]=t):t=F[1];let T=(0,n.useRef)(t);F[2]===Symbol.for("react.memo_cache_sentinel")?(a=new o.Vector3,F[2]=a):a=F[2];let E=(0,n.useRef)(a);F[3]===Symbol.for("react.memo_cache_sentinel")?(i=new o.Euler(0,0,0,"YXZ"),F[3]=i):i=F[3];let B=(0,n.useRef)(i);return F[4]!==w||F[5]!==I.domElement?(s=()=>{let e=new e9(w,I.domElement);return D.current=e,()=>{e.dispose()}},l=[w,I.domElement],F[4]=w,F[5]=I.domElement,F[6]=s,F[7]=l):(s=F[6],l=F[7]),(0,n.useEffect)(s,l),F[8]!==w||F[9]!==I.domElement||F[10]!==C?(c=()=>{let e=I.domElement,t=new o.Euler(0,0,0,"YXZ"),a=!1,r=!1,n=0,i=0,s=t=>{D.current?.isLocked||t.target===e&&(a=!0,r=!1,n=t.clientX,i=t.clientY)},l=e=>{!a||!r&&3>Math.abs(e.clientX-n)&&3>Math.abs(e.clientY-i)||(r=!0,t.setFromQuaternion(w.quaternion,"YXZ"),t.y=t.y-.003*e.movementX,t.x=t.x-.003*e.movementY,t.x=Math.max(-te,Math.min(te,t.x)),w.quaternion.setFromEuler(t))},c=()=>{a=!1},d=t=>{let a=D.current;!a||a.isLocked?C():t.target!==e||r||a.lock()};return e.addEventListener("mousedown",s),document.addEventListener("mousemove",l),document.addEventListener("mouseup",c),document.addEventListener("click",d),()=>{e.removeEventListener("mousedown",s),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",c),document.removeEventListener("click",d)}},d=[w,I.domElement,C],F[8]=w,F[9]=I.domElement,F[10]=C,F[11]=c,F[12]=d):(c=F[11],d=F[12]),(0,n.useEffect)(c,d),F[13]!==P||F[14]!==_||F[15]!==x?(m=()=>{let e=["camera1","camera2","camera3","camera4","camera5","camera6","camera7","camera8","camera9"];return x(t=>{for(let a=0;a{let e=e=>{e.preventDefault();let t=e.deltaY>0?-1:1,a=Math.max(.05,Math.min(.5,Math.abs(.01*e.deltaY)))*t;S(e=>Math.max(.1,Math.min(5,Math.round((e+a)*20)/20)))},t=I.domElement;return t.addEventListener("wheel",e,{passive:!1}),()=>{t.removeEventListener("wheel",e)}},p=[I.domElement,S],F[18]=I.domElement,F[19]=S,F[20]=g,F[21]=p):(g=F[20],p=F[21]),(0,n.useEffect)(g,p),F[22]!==w||F[23]!==k||F[24]!==b?(y=(e,t)=>{let{forward:a,backward:r,left:n,right:i,up:o,down:s,lookUp:l,lookDown:c,lookLeft:d,lookRight:u}=k();if((l||c||d||u)&&(B.current.setFromQuaternion(w.quaternion,"YXZ"),d&&(B.current.y=B.current.y+ +t),u&&(B.current.y=B.current.y-t),l&&(B.current.x=B.current.x+ +t),c&&(B.current.x=B.current.x-t),B.current.x=Math.max(-te,Math.min(te,B.current.x)),w.quaternion.setFromEuler(B.current)),!a&&!r&&!n&&!i&&!o&&!s)return;let h=80*b;w.getWorldDirection(M.current),M.current.normalize(),T.current.crossVectors(w.up,M.current).normalize(),E.current.set(0,0,0),a&&E.current.add(M.current),r&&E.current.sub(M.current),n&&E.current.add(T.current),i&&E.current.sub(T.current),o&&(E.current.y=E.current.y+1),s&&(E.current.y=E.current.y-1),E.current.lengthSq()>0&&(E.current.normalize().multiplyScalar(h*t),w.position.add(E.current))},F[22]=w,F[23]=k,F[24]=b,F[25]=y):y=F[25],(0,u.useFrame)(y),null}let ta=[{name:"forward",keys:["KeyW"]},{name:"backward",keys:["KeyS"]},{name:"left",keys:["KeyA"]},{name:"right",keys:["KeyD"]},{name:"up",keys:["Space"]},{name:"down",keys:["ShiftLeft","ShiftRight"]},{name:"lookUp",keys:["ArrowUp"]},{name:"lookDown",keys:["ArrowDown"]},{name:"lookLeft",keys:["ArrowLeft"]},{name:"lookRight",keys:["ArrowRight"]},{name:"camera1",keys:["Digit1"]},{name:"camera2",keys:["Digit2"]},{name:"camera3",keys:["Digit3"]},{name:"camera4",keys:["Digit4"]},{name:"camera5",keys:["Digit5"]},{name:"camera6",keys:["Digit6"]},{name:"camera7",keys:["Digit7"]},{name:"camera8",keys:["Digit8"]},{name:"camera9",keys:["Digit9"]}];function tr(){let e,t,i=(0,r.c)(2);return i[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],i[0]=e):e=i[0],(0,n.useEffect)(tn,e),i[1]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)(tt,{}),i[1]=t):t=i[1],t}function tn(){return window.addEventListener("keydown",ti,{capture:!0}),window.addEventListener("keyup",ti,{capture:!0}),()=>{window.removeEventListener("keydown",ti,{capture:!0}),window.removeEventListener("keyup",ti,{capture:!0})}}function ti(e){(e.metaKey||e.ctrlKey)&&"k"===e.key||e.metaKey&&e.stopImmediatePropagation()}function to(e){let t,n=(0,r.c)(2),{children:i}=e;return n[0]!==i?(t=(0,a.jsx)(a.Fragment,{children:i}),n[0]=i,n[1]=t):t=n[1],t}function ts(){return(0,I.useEngineSelector)(tl)}function tl(e){return e.playback.recording}function tc(e){return"playing"===e.playback.status}function td(e){return e.playback.timeMs/1e3}function tu(e){return e.playback.durationMs/1e3}function th(e){return e.playback.rate}function tm(){let e,t,a,n,i,o,s=(0,r.c)(17),l=ts(),c=(0,I.useEngineSelector)(ty),d=(0,I.useEngineSelector)(tp),u=(0,I.useEngineSelector)(tg),h=(0,I.useEngineSelector)(tf);s[0]!==c?(e=e=>{c(e)},s[0]=c,s[1]=e):e=s[1];let m=e;s[2]!==l||s[3]!==d?(t=()=>{l&&d("playing")},s[2]=l,s[3]=d,s[4]=t):t=s[4];let f=t;s[5]!==d?(a=()=>{d("paused")},s[5]=d,s[6]=a):a=s[6];let g=a;s[7]!==u?(n=e=>{u(1e3*e)},s[7]=u,s[8]=n):n=s[8];let p=n;s[9]!==h?(i=e=>{h(e)},s[9]=h,s[10]=i):i=s[10];let y=i;return s[11]!==g||s[12]!==f||s[13]!==p||s[14]!==m||s[15]!==y?(o={setRecording:m,play:f,pause:g,seek:p,setSpeed:y},s[11]=g,s[12]=f,s[13]=p,s[14]=m,s[15]=y,s[16]=o):o=s[16],o}function tf(e){return e.setPlaybackRate}function tg(e){return e.setPlaybackTime}function tp(e){return e.setPlaybackStatus}function ty(e){return e.setDemoRecording}var tv=e.i(13070);function tF(){let e,t,n,i,o,s,l,c,d,u,h,m,f,g,p,y,v,F,b,S,x,k,w,I,C=(0,r.c)(51),_=ts(),P=eQ(tD),D=eQ(tP),M=eQ(t_),T=eQ(tC),E=eQ(tI),B=eQ(tw),j=eQ(tk),R=eQ(tx),N=eQ(tS),A=eQ(tb);return _?null:(C[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)("div",{className:tv.default.Spacer}),C[0]=e):e=C[0],C[1]!==P?(t=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":P,children:"W"}),C[1]=P,C[2]=t):t=C[2],C[3]===Symbol.for("react.memo_cache_sentinel")?(n=(0,a.jsx)("div",{className:tv.default.Spacer}),C[3]=n):n=C[3],C[4]!==t?(i=(0,a.jsxs)("div",{className:tv.default.Row,children:[e,t,n]}),C[4]=t,C[5]=i):i=C[5],C[6]!==M?(o=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":M,children:"A"}),C[6]=M,C[7]=o):o=C[7],C[8]!==D?(s=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":D,children:"S"}),C[8]=D,C[9]=s):s=C[9],C[10]!==T?(l=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":T,children:"D"}),C[10]=T,C[11]=l):l=C[11],C[12]!==o||C[13]!==s||C[14]!==l?(c=(0,a.jsxs)("div",{className:tv.default.Row,children:[o,s,l]}),C[12]=o,C[13]=s,C[14]=l,C[15]=c):c=C[15],C[16]!==i||C[17]!==c?(d=(0,a.jsxs)("div",{className:tv.default.Column,children:[i,c]}),C[16]=i,C[17]=c,C[18]=d):d=C[18],C[19]===Symbol.for("react.memo_cache_sentinel")?(u=(0,a.jsx)("span",{className:tv.default.Arrow,children:"↑"}),C[19]=u):u=C[19],C[20]!==E?(h=(0,a.jsx)("div",{className:tv.default.Row,children:(0,a.jsxs)("div",{className:tv.default.Key,"data-pressed":E,children:[u," Space"]})}),C[20]=E,C[21]=h):h=C[21],C[22]===Symbol.for("react.memo_cache_sentinel")?(m=(0,a.jsx)("span",{className:tv.default.Arrow,children:"↓"}),C[22]=m):m=C[22],C[23]!==B?(f=(0,a.jsx)("div",{className:tv.default.Row,children:(0,a.jsxs)("div",{className:tv.default.Key,"data-pressed":B,children:[m," Shift"]})}),C[23]=B,C[24]=f):f=C[24],C[25]!==h||C[26]!==f?(g=(0,a.jsxs)("div",{className:tv.default.Column,children:[h,f]}),C[25]=h,C[26]=f,C[27]=g):g=C[27],C[28]===Symbol.for("react.memo_cache_sentinel")?(p=(0,a.jsx)("div",{className:tv.default.Spacer}),C[28]=p):p=C[28],C[29]!==j?(y=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":j,children:"↑"}),C[29]=j,C[30]=y):y=C[30],C[31]===Symbol.for("react.memo_cache_sentinel")?(v=(0,a.jsx)("div",{className:tv.default.Spacer}),C[31]=v):v=C[31],C[32]!==y?(F=(0,a.jsxs)("div",{className:tv.default.Row,children:[p,y,v]}),C[32]=y,C[33]=F):F=C[33],C[34]!==N?(b=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":N,children:"←"}),C[34]=N,C[35]=b):b=C[35],C[36]!==R?(S=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":R,children:"↓"}),C[36]=R,C[37]=S):S=C[37],C[38]!==A?(x=(0,a.jsx)("div",{className:tv.default.Key,"data-pressed":A,children:"→"}),C[38]=A,C[39]=x):x=C[39],C[40]!==b||C[41]!==S||C[42]!==x?(k=(0,a.jsxs)("div",{className:tv.default.Row,children:[b,S,x]}),C[40]=b,C[41]=S,C[42]=x,C[43]=k):k=C[43],C[44]!==F||C[45]!==k?(w=(0,a.jsxs)("div",{className:tv.default.Column,children:[F,k]}),C[44]=F,C[45]=k,C[46]=w):w=C[46],C[47]!==g||C[48]!==w||C[49]!==d?(I=(0,a.jsxs)("div",{className:tv.default.Root,children:[d,g,w]}),C[47]=g,C[48]=w,C[49]=d,C[50]=I):I=C[50],I)}function tb(e){return e.lookRight}function tS(e){return e.lookLeft}function tx(e){return e.lookDown}function tk(e){return e.lookUp}function tw(e){return e.down}function tI(e){return e.up}function tC(e){return e.right}function t_(e){return e.left}function tP(e){return e.backward}function tD(e){return e.forward}var tM=e.i(78295);function tT(e){let t=e.querySelector(".back");t&&(t.style.background="rgba(3, 79, 76, 0.6)",t.style.border="1px solid rgba(0, 219, 223, 0.5)",t.style.boxShadow="inset 0 0 10px rgba(0, 0, 0, 0.7)");let a=e.querySelector(".front");a&&(a.style.background="radial-gradient(circle at 50% 50%, rgba(23, 247, 198, 0.9) 0%, rgba(9, 184, 170, 0.95) 100%)",a.style.border="2px solid rgba(255, 255, 255, 0.4)",a.style.boxShadow="0 2px 4px rgba(0, 0, 0, 0.5), 0 1px 1px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.15), inset 0 -1px 2px rgba(0, 0, 0, 0.3)")}let tE=Math.PI/2-.01;function tB({joystickState:t,joystickZone:r,lookJoystickState:i,lookJoystickZone:o}){let{touchMode:s}=(0,v.useControls)();(0,n.useEffect)(()=>{let a=r.current;if(!a)return;let n=null,i=!1;return e.A(84968).then(e=>{i||(n=e.default.create({zone:a,mode:"static",position:{left:"70px",bottom:"70px"},size:120,restOpacity:.9}),tT(a),n.on("move",(e,a)=>{t.current.angle=a.angle.radian,t.current.force=Math.min(1,a.force)}),n.on("end",()=>{t.current.force=0}))}),()=>{i=!0,n?.destroy()}},[t,r,s]),(0,n.useEffect)(()=>{if("dualStick"!==s)return;let t=o.current;if(!t)return;let a=null,r=!1;return e.A(84968).then(e=>{r||(a=e.default.create({zone:t,mode:"static",position:{right:"70px",bottom:"70px"},size:120,restOpacity:.9}),tT(t),a.on("move",(e,t)=>{i.current.angle=t.angle.radian,i.current.force=Math.min(1,t.force)}),a.on("end",()=>{i.current.force=0}))}),()=>{r=!0,a?.destroy()}},[s,i,o]);let l=()=>{document.activeElement instanceof HTMLElement&&document.activeElement.blur()};return"dualStick"===s?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{ref:r,className:tM.default.Left,onContextMenu:e=>e.preventDefault(),onTouchStart:l}),(0,a.jsx)("div",{ref:o,className:tM.default.Right,onContextMenu:e=>e.preventDefault(),onTouchStart:l})]}):(0,a.jsx)("div",{ref:r,className:tM.default.Joystick,onContextMenu:e=>e.preventDefault(),onTouchStart:l})}function tj(e){let t,a,i,s,l,c,d,m,f,g,p=(0,r.c)(25),{joystickState:y,joystickZone:F,lookJoystickState:b}=e,{speedMultiplier:S,touchMode:x}=(0,v.useControls)(),{camera:k,gl:w}=(0,h.useThree)();p[0]===Symbol.for("react.memo_cache_sentinel")?(t=new o.Euler(0,0,0,"YXZ"),p[0]=t):t=p[0];let I=(0,n.useRef)(t),C=(0,n.useRef)(null);p[1]===Symbol.for("react.memo_cache_sentinel")?(a={x:0,y:0},p[1]=a):a=p[1];let _=(0,n.useRef)(a);p[2]===Symbol.for("react.memo_cache_sentinel")?(i=new o.Vector3,p[2]=i):i=p[2];let P=(0,n.useRef)(i);p[3]===Symbol.for("react.memo_cache_sentinel")?(s=new o.Vector3,p[3]=s):s=p[3];let D=(0,n.useRef)(s);p[4]===Symbol.for("react.memo_cache_sentinel")?(l=new o.Vector3,p[4]=l):l=p[4];let M=(0,n.useRef)(l);return p[5]!==k.quaternion?(c=()=>{I.current.setFromQuaternion(k.quaternion,"YXZ")},p[5]=k.quaternion,p[6]=c):c=p[6],p[7]!==k?(d=[k],p[7]=k,p[8]=d):d=p[8],(0,n.useEffect)(c,d),p[9]!==k.quaternion||p[10]!==w.domElement||p[11]!==F||p[12]!==x?(m=()=>{if("moveLookStick"!==x)return;let e=w.domElement,t=e=>{let t=F.current;if(!t)return!1;let a=t.getBoundingClientRect();return e.clientX>=a.left&&e.clientX<=a.right&&e.clientY>=a.top&&e.clientY<=a.bottom},a=e=>{if(null===C.current)for(let a=0;a{if(null!==C.current)for(let t=0;t{for(let t=0;t{e.removeEventListener("touchstart",a),e.removeEventListener("touchmove",r),e.removeEventListener("touchend",n),e.removeEventListener("touchcancel",n),C.current=null}},p[9]=k.quaternion,p[10]=w.domElement,p[11]=F,p[12]=x,p[13]=m):m=p[13],p[14]!==k||p[15]!==w.domElement||p[16]!==F||p[17]!==x?(f=[k,w.domElement,F,x],p[14]=k,p[15]=w.domElement,p[16]=F,p[17]=x,p[18]=f):f=p[18],(0,n.useEffect)(m,f),p[19]!==k||p[20]!==y.current||p[21]!==b||p[22]!==S||p[23]!==x?(g=(e,t)=>{let{force:a,angle:r}=y.current;if("dualStick"===x){let e=b.current;if(e.force>.15){let a=(e.force-.15)/.85,r=Math.cos(e.angle),n=Math.sin(e.angle);I.current.setFromQuaternion(k.quaternion,"YXZ"),I.current.y=I.current.y-r*a*2.5*t,I.current.x=I.current.x+n*a*2.5*t,I.current.x=Math.max(-tE,Math.min(tE,I.current.x)),k.quaternion.setFromEuler(I.current)}if(a>.08){let e=80*S*((a-.08)/.92),n=Math.cos(r),i=Math.sin(r);k.getWorldDirection(P.current),P.current.normalize(),D.current.crossVectors(k.up,P.current).normalize(),M.current.set(0,0,0).addScaledVector(P.current,i).addScaledVector(D.current,-n),M.current.lengthSq()>0&&(M.current.normalize().multiplyScalar(e*t),k.position.add(M.current))}}else if("moveLookStick"===x&&a>0){let e=80*S*.5;if(k.getWorldDirection(P.current),P.current.normalize(),M.current.copy(P.current).multiplyScalar(e*t),k.position.add(M.current),a>=.15){let e=Math.cos(r),n=Math.sin(r),i=(a-.15)/.85;I.current.setFromQuaternion(k.quaternion,"YXZ"),I.current.y=I.current.y-e*i*1.25*t,I.current.x=I.current.x+n*i*1.25*t,I.current.x=Math.max(-tE,Math.min(tE,I.current.x)),k.quaternion.setFromEuler(I.current)}}},p[19]=k,p[20]=y.current,p[21]=b,p[22]=S,p[23]=x,p[24]=g):g=p[24],(0,u.useFrame)(g),null}var tR=e.i(11889),tN=e.i(56373),tA=e.i(86447),tG=e.i(1559),tU=e.i(78440),tL=e.i(59129),tz=e.i(25998),tO=e.i(18364),tV=e.i(70238),tq=e.i(29402),tH=e.i(97442);let tW=new Set(["SkiFree","SkiFree_Daily","SkiFree_Randomizer"]),t$={"missions.vl2":"Official","TR2final105-client.vl2":"Team Rabbit 2","z_mappacks/CTF/Classic_maps_v1.vl2":"Classic","z_mappacks/CTF/DynamixFinalPack.vl2":"Official","z_mappacks/CTF/KryMapPack_b3EDIT.vl2":"KryMapPack","z_mappacks/CTF/S5maps.vl2":"S5","z_mappacks/CTF/S8maps.vl2":"S8","z_mappacks/CTF/TWL-MapPack.vl2":"TWL","z_mappacks/CTF/TWL-MapPackEDIT.vl2":"TWL","z_mappacks/CTF/TWL2-MapPack.vl2":"TWL2","z_mappacks/CTF/TWL2-MapPackEDIT.vl2":"TWL2","z_mappacks/TWL_T2arenaOfficialMaps.vl2":"Arena","z_mappacks/xPack2.vl2":"xPack2","z_mappacks/z_DMP2-V0.6.vl2":"DMP2 (Discord Map Pack)","z_mappacks/zDMP-4.7.3DX.vl2":"DMP (Discord Map Pack)","z_mappacks/zDMP-4.7.3DX-ServerOnly.vl2":"DMP (Discord Map Pack)"},tY={"z_mappacks/DM":"DM","z_mappacks/LCTF":"LCTF","z_mappacks/Lak":"LakRabbit"},tK=(0,eG.getMissionList)().filter(e=>!tW.has(e)).map(e=>{let t,a=(0,eG.getMissionInfo)(e),[r]=(0,eG.getSourceAndPath)(a.resourcePath),n=(t=r.match(/^(.*)(\/[^/]+)$/))?t[1]:"",i=t$[r]??tY[n]??null;return{resourcePath:a.resourcePath,missionName:e,displayName:a.displayName,sourcePath:r,groupName:i,missionTypes:a.missionTypes}}),tX=new Map(tK.map(e=>[e.missionName,e])),tZ=function(e){let t=new Map;for(let a of e){let e=t.get(a.groupName)??[];e.push(a),t.set(a.groupName,e)}return t.forEach((e,a)=>{t.set(a,(0,tq.default)(e,[e=>(e.displayName||e.missionName).toLowerCase()],["asc"]))}),(0,tq.default)(Array.from(t.entries()),[([e])=>"Official"===e?0:null==e?2:1,([e])=>e?e.toLowerCase():""],["asc","asc"])}(tK),tJ="u">typeof navigator&&/Mac|iPhone|iPad|iPod/.test(navigator.platform);function tQ(e){let t,n,i,o,s,l=(0,r.c)(12),{mission:c}=e,d=c.displayName||c.missionName;return l[0]!==d?(t=(0,a.jsx)("span",{className:tH.default.ItemName,children:d}),l[0]=d,l[1]=t):t=l[1],l[2]!==c.missionTypes?(n=c.missionTypes.length>0&&(0,a.jsx)("span",{className:tH.default.ItemTypes,children:c.missionTypes.map(t0)}),l[2]=c.missionTypes,l[3]=n):n=l[3],l[4]!==t||l[5]!==n?(i=(0,a.jsxs)("span",{className:tH.default.ItemHeader,children:[t,n]}),l[4]=t,l[5]=n,l[6]=i):i=l[6],l[7]!==c.missionName?(o=(0,a.jsx)("span",{className:tH.default.ItemMissionName,children:c.missionName}),l[7]=c.missionName,l[8]=o):o=l[8],l[9]!==i||l[10]!==o?(s=(0,a.jsxs)(a.Fragment,{children:[i,o]}),l[9]=i,l[10]=o,l[11]=s):s=l[11],s}function t0(e){return(0,a.jsx)("span",{className:tH.default.ItemType,"data-mission-type":e,children:e},e)}function t1(e){let t,i,o,s,l,c,d,u,h,m,f,g,p,y,v,F,b,S=(0,r.c)(46),{value:x,missionType:k,onChange:w,disabled:I}=e,[C,_]=(0,n.useState)(""),P=(0,n.useRef)(null),D=(0,n.useRef)(k);S[0]===Symbol.for("react.memo_cache_sentinel")?(t=e=>{(0,n.startTransition)(()=>_(e))},S[0]=t):t=S[0];let M=(0,tO.useComboboxStore)({resetValueOnHide:!0,selectedValue:x,setSelectedValue:e=>{if(e){let t=D.current,a=(0,eG.getMissionInfo)(e).missionTypes;t&&a.includes(t)||(t=a[0]),w({missionName:e,missionType:t}),P.current?.blur()}},setValue:t});S[1]!==M?(i=()=>{let e=e=>{"k"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),P.current?.focus(),M.show())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},o=[M],S[1]=M,S[2]=i,S[3]=o):(i=S[2],o=S[3]),(0,n.useEffect)(i,o),S[4]!==x?(s=tX.get(x),S[4]=x,S[5]=s):s=S[5];let T=s;e:{let e,t;if(!C){let e;S[6]===Symbol.for("react.memo_cache_sentinel")?(e={type:"grouped",groups:tZ},S[6]=e):e=S[6],l=e;break e}S[7]!==C?(e=(0,tV.matchSorter)(tK,C,{keys:["displayName","missionName","missionTypes","groupName"]}),S[7]=C,S[8]=e):e=S[8];let a=e;S[9]!==a?(t={type:"flat",missions:a},S[9]=a,S[10]=t):t=S[10],l=t}let E=l,B=T?T.displayName||T.missionName:x,j="flat"===E.type?0===E.missions.length:0===E.groups.length,R=e=>(0,a.jsx)(tN.ComboboxItem,{value:e.missionName,className:tH.default.Item,focusOnHover:!0,onClick:t=>{if(t.target&&t.target instanceof HTMLElement){let a=t.target.dataset.missionType;a?(D.current=a,e.missionName===x&&w({missionName:e.missionName,missionType:a})):D.current=null}else D.current=null},children:(0,a.jsx)(tQ,{mission:e})},e.missionName),N=tU.ComboboxProvider;S[11]!==M?(c=()=>{try{document.exitPointerLock()}catch{}M.show()},d=e=>{"Escape"!==e.key||M.getState().open||P.current?.blur()},S[11]=M,S[12]=c,S[13]=d):(c=S[12],d=S[13]),S[14]!==I||S[15]!==B||S[16]!==c||S[17]!==d?(u=(0,a.jsx)(tR.Combobox,{ref:P,autoSelect:!0,disabled:I,placeholder:B,className:tH.default.Input,onFocus:c,onKeyDown:d}),S[14]=I,S[15]=B,S[16]=c,S[17]=d,S[18]=u):u=S[18],S[19]!==B?(h=(0,a.jsx)("span",{className:tH.default.SelectedName,children:B}),S[19]=B,S[20]=h):h=S[20],S[21]!==k?(m=k&&(0,a.jsx)("span",{className:tH.default.ItemType,"data-mission-type":k,children:k}),S[21]=k,S[22]=m):m=S[22],S[23]!==m||S[24]!==h?(f=(0,a.jsxs)("div",{className:tH.default.SelectedValue,children:[h,m]}),S[23]=m,S[24]=h,S[25]=f):f=S[25],S[26]===Symbol.for("react.memo_cache_sentinel")?(g=(0,a.jsx)("kbd",{className:tH.default.Shortcut,children:tJ?"⌘K":"^K"}),S[26]=g):g=S[26],S[27]!==f||S[28]!==u?(p=(0,a.jsxs)("div",{className:tH.default.InputWrapper,children:[u,f,g]}),S[27]=f,S[28]=u,S[29]=p):p=S[29];let A=tG.ComboboxPopover,G=tH.default,U=tA.ComboboxList,L=tH.default,z="flat"===E.type?E.missions.map(R):E.groups.map(e=>{let[t,r]=e;return t?(0,a.jsxs)(tL.ComboboxGroup,{className:tH.default.Group,children:[(0,a.jsx)(tz.ComboboxGroupLabel,{className:tH.default.GroupLabel,children:t}),r.map(R)]},t):(0,a.jsx)(n.Fragment,{children:r.map(R)},"ungrouped")});return S[30]!==j?(y=j&&(0,a.jsx)("div",{className:tH.default.NoResults,children:"No missions found"}),S[30]=j,S[31]=y):y=S[31],S[32]!==U||S[33]!==L.List||S[34]!==z||S[35]!==y?(v=(0,a.jsxs)(U,{className:L.List,children:[z,y]}),S[32]=U,S[33]=L.List,S[34]=z,S[35]=y,S[36]=v):v=S[36],S[37]!==A||S[38]!==G.Popover||S[39]!==v?(F=(0,a.jsx)(A,{gutter:4,fitViewport:!0,autoFocusOnHide:!1,className:G.Popover,children:v}),S[37]=A,S[38]=G.Popover,S[39]=v,S[40]=F):F=S[40],S[41]!==N||S[42]!==M||S[43]!==p||S[44]!==F?(b=(0,a.jsxs)(N,{store:M,children:[p,F]}),S[41]=N,S[42]=M,S[43]=p,S[44]=F,S[45]=b):b=S[45],b}var t2=e.i(11152),t3=e.i(40141);function t5(e){return(0,t3.GenIcon)({tag:"svg",attr:{viewBox:"0 0 384 512"},child:[{tag:"path",attr:{d:"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"},child:[]}]})(e)}var t4=e.i(36679);function t6(e){let t,i,o,s,l,c=(0,r.c)(11),{cameraRef:d,missionName:u,missionType:h}=e,{fogEnabled:m}=(0,v.useSettings)(),[f,g]=(0,n.useState)(!1),p=(0,n.useRef)(null);c[0]!==d||c[1]!==m||c[2]!==u||c[3]!==h?(t=async()=>{clearTimeout(p.current);let e=d.current;if(!e)return;let t=function({position:e,quaternion:t}){let a=e=>parseFloat(e.toFixed(3)),r=`${a(e.x)},${a(e.y)},${a(e.z)}`,n=`${a(t.x)},${a(t.y)},${a(t.z)},${a(t.w)}`;return`#c${r}~${n}`}(e),a=new URLSearchParams;a.set("mission",`${u}~${h}`),a.set("fog",m.toString());let r=`${window.location.pathname}?${a}${t}`,n=`${window.location.origin}${r}`;window.history.replaceState(null,"",r);try{await navigator.clipboard.writeText(n),g(!0),p.current=setTimeout(()=>{g(!1)},1100)}catch(e){console.error(e)}},c[0]=d,c[1]=m,c[2]=u,c[3]=h,c[4]=t):t=c[4];let y=t,F=f?"true":"false";return c[5]===Symbol.for("react.memo_cache_sentinel")?(i=(0,a.jsx)(t2.FaMapPin,{className:t4.default.MapPin}),o=(0,a.jsx)(t5,{className:t4.default.ClipboardCheck}),s=(0,a.jsx)("span",{className:t4.default.ButtonLabel,children:" Copy coordinates URL"}),c[5]=i,c[6]=o,c[7]=s):(i=c[5],o=c[6],s=c[7]),c[8]!==y||c[9]!==F?(l=(0,a.jsxs)("button",{type:"button",className:t4.default.Root,"aria-label":"Copy coordinates URL",title:"Copy coordinates URL",onClick:y,"data-copied":F,id:"copyCoordinatesButton",children:[i,o,s]}),c[8]=y,c[9]=F,c[10]=l):l=c[10],l}function t8(e){return(0,t3.GenIcon)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M21 3H3c-1.11 0-2 .89-2 2v12a2 2 0 0 0 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5a2 2 0 0 0-2-2zm0 14H3V5h18v12zm-5-6-7 4V7z"},child:[]}]})(e)}var t7={},t9=function(e,t,a,r,n){var i=new Worker(t7[t]||(t7[t]=URL.createObjectURL(new Blob([e+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return i.onmessage=function(e){var t=e.data,a=t.$e$;if(a){var r=Error(a[0]);r.code=a[1],r.stack=a[2],n(r,null)}else n(null,t)},i.postMessage(a,r),i},ae=Uint8Array,at=Uint16Array,aa=Int32Array,ar=new ae([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),an=new ae([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),ai=new ae([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ao=function(e,t){for(var a=new at(31),r=0;r<31;++r)a[r]=t+=1<>1|(21845&af)<<1;ag=(61680&(ag=(52428&ag)>>2|(13107&ag)<<2))>>4|(3855&ag)<<4,am[af]=((65280&ag)>>8|(255&ag)<<8)>>1}for(var ap=function(e,t,a){for(var r,n=e.length,i=0,o=new at(t);i>l]=c}else for(i=0,r=new at(n);i>15-e[i]);return r},ay=new ae(288),af=0;af<144;++af)ay[af]=8;for(var af=144;af<256;++af)ay[af]=9;for(var af=256;af<280;++af)ay[af]=7;for(var af=280;af<288;++af)ay[af]=8;for(var av=new ae(32),af=0;af<32;++af)av[af]=5;var aF=ap(ay,9,0),ab=ap(ay,9,1),aS=ap(av,5,0),ax=ap(av,5,1),ak=function(e){for(var t=e[0],a=1;at&&(t=e[a]);return t},aw=function(e,t,a){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(7&t)&a},aI=function(e,t){var a=t/8|0;return(e[a]|e[a+1]<<8|e[a+2]<<16)>>(7&t)},aC=function(e){return(e+7)/8|0},a_=function(e,t,a){return(null==t||t<0)&&(t=0),(null==a||a>e.length)&&(a=e.length),new ae(e.subarray(t,a))},aP=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],aD=function(e,t,a){var r=Error(t||aP[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,aD),!a)throw r;return r},aM=function(e,t,a,r){var n=e.length,i=r?r.length:0;if(!n||t.f&&!t.l)return a||new ae(0);var o=!a,s=o||2!=t.i,l=t.i;o&&(a=new ae(3*n));var c=function(e){var t=a.length;if(e>t){var r=new ae(Math.max(2*t,e));r.set(a),a=r}},d=t.f||0,u=t.p||0,h=t.b||0,m=t.l,f=t.d,g=t.m,p=t.n,y=8*n;do{if(!m){d=aw(e,u,1);var v=aw(e,u+1,3);if(u+=3,v)if(1==v)m=ab,f=ax,g=9,p=5;else if(2==v){var F=aw(e,u,31)+257,b=aw(e,u+10,15)+4,S=F+aw(e,u+5,31)+1;u+=14;for(var x=new ae(S),k=new ae(19),w=0;w>4;if(D<16)x[w++]=D;else{var M=0,T=0;for(16==D?(T=3+aw(e,u,3),u+=2,M=x[w-1]):17==D?(T=3+aw(e,u,7),u+=3):18==D&&(T=11+aw(e,u,127),u+=7);T--;)x[w++]=M}}var E=x.subarray(0,F),B=x.subarray(F);g=ak(E),p=ak(B),m=ap(E,g,1),f=ap(B,p,1)}else aD(1);else{var D=aC(u)+4,j=e[D-4]|e[D-3]<<8,R=D+j;if(R>n){l&&aD(0);break}s&&c(h+j),a.set(e.subarray(D,R),h),t.b=h+=j,t.p=u=8*R,t.f=d;continue}if(u>y){l&&aD(0);break}}s&&c(h+131072);for(var N=(1<>4;if((u+=15&M)>y){l&&aD(0);break}if(M||aD(2),U<256)a[h++]=U;else if(256==U){G=u,m=null;break}else{var L=U-254;if(U>264){var w=U-257,z=ar[w];L=aw(e,u,(1<>4;O||aD(3),u+=15&O;var B=au[V];if(V>3){var z=an[V];B+=aI(e,u)&(1<y){l&&aD(0);break}s&&c(h+131072);var q=h+L;if(h>8},aE=function(e,t,a){a<<=7&t;var r=t/8|0;e[r]|=a,e[r+1]|=a>>8,e[r+2]|=a>>16},aB=function(e,t){for(var a=[],r=0;rh&&(h=i[r].s);var m=new at(h+1),f=aj(a[d-1],m,0);if(f>t){var r=0,g=0,p=f-t,y=1<t)g+=y-(1<>=p;g>0;){var F=i[r].s;m[F]=0&&g;--r){var b=i[r].s;m[b]==t&&(--m[b],++g)}f=t}return{t:new ae(m),l:f}},aj=function(e,t,a){return -1==e.s?Math.max(aj(e.l,t,a+1),aj(e.r,t,a+1)):t[e.s]=a},aR=function(e){for(var t=e.length;t&&!e[--t];);for(var a=new at(++t),r=0,n=e[0],i=1,o=function(e){a[r++]=e},s=1;s<=t;++s)if(e[s]==n&&s!=t)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=e[s]}return{c:a.subarray(0,r),n:t}},aN=function(e,t){for(var a=0,r=0;r>8,e[n+2]=255^e[n],e[n+3]=255^e[n+1];for(var i=0;i4&&!M[ai[E-1]];--E);var B=c+5<<3,j=aN(n,ay)+aN(i,av)+o,R=aN(n,p)+aN(i,F)+o+14+3*E+aN(_,M)+2*_[16]+3*_[17]+7*_[18];if(l>=0&&B<=j&&B<=R)return aA(t,d,e.subarray(l,l+c));if(aT(t,d,1+(R15&&(aT(t,d,U[P]>>5&127),d+=U[P]>>12)}}else u=aF,h=ay,m=aS,f=av;for(var P=0;P255){var L=z>>18&31;aE(t,d,u[L+257]),d+=h[L+257],L>7&&(aT(t,d,z>>23&31),d+=ar[L]);var O=31&z;aE(t,d,m[O]),d+=f[O],O>3&&(aE(t,d,z>>5&8191),d+=an[O])}else aE(t,d,u[z]),d+=h[z]}return aE(t,d,u[256]),d+h[256]},aU=new aa([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),aL=new ae(0),az=function(e,t,a,r,n,i){var o=i.z||e.length,s=new ae(r+o+5*(1+Math.ceil(o/7e3))+n),l=s.subarray(r,s.length-n),c=i.l,d=7&(i.r||0);if(t){d&&(l[0]=i.r>>3);for(var u=aU[t-1],h=u>>13,m=8191&u,f=(1<7e3||C>24576)&&(E>423||!c)){d=aG(e,l,0,b,S,x,w,C,P,I-P,d),C=k=w=0,P=I;for(var B=0;B<286;++B)S[B]=0;for(var B=0;B<30;++B)x[B]=0}var j=2,R=0,N=m,A=M-T&32767;if(E>2&&D==F(I-A))for(var G=Math.min(h,E)-1,U=Math.min(32767,I),L=Math.min(258,E);A<=U&&--N&&M!=T;){if(e[I+j]==e[I+j-A]){for(var z=0;zj){if(j=z,R=A,z>G)break;for(var O=Math.min(A,z-2),V=0,B=0;BV&&(V=W,T=q)}}}T=g[M=T],A+=M-T&32767}if(R){b[C++]=0x10000000|ac[j]<<18|ah[R];var $=31&ac[j],Y=31&ah[R];w+=ar[$]+an[Y],++S[257+$],++x[Y],_=I+j,++k}else b[C++]=e[I],++S[e[I]]}}for(I=Math.max(I,_);I=o&&(l[d/8|0]=c,K=o),d=aA(l,d+1,e.subarray(I,K))}i.i=o}return a_(s,0,r+aC(d)+n)},aO=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var a=t,r=9;--r;)a=(1&a&&-0x12477ce0)^a>>>1;e[t]=a}return e}(),aV=function(){var e=-1;return{p:function(t){for(var a=e,r=0;r>>8;e=a},d:function(){return~e}}},aq=function(){var e=1,t=0;return{p:function(a){for(var r=e,n=t,i=0|a.length,o=0;o!=i;){for(var s=Math.min(o+2655,i);o>16),n=(65535&n)+15*(n>>16)}e=r,t=n},d:function(){return e%=65521,t%=65521,(255&e)<<24|(65280&e)<<8|(255&t)<<8|t>>8}}},aH=function(e,t,a,r,n){if(!n&&(n={l:1},t.dictionary)){var i=t.dictionary.subarray(-32768),o=new ae(i.length+e.length);o.set(i),o.set(e,i.length),e=o,n.w=i.length}return az(e,null==t.level?6:t.level,null==t.mem?n.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):20:12+t.mem,a,r,n)},aW=function(e,t){var a={};for(var r in e)a[r]=e[r];for(var r in t)a[r]=t[r];return a},a$=function(e,t,a){for(var r=e(),n=e.toString(),i=n.slice(n.indexOf("[")+1,n.lastIndexOf("]")).replace(/\s+/g,"").split(","),o=0;o>>0},a7=function(e,t){return a8(e,t)+0x100000000*a8(e,t+4)},a9=function(e,t,a){for(;a;++t)e[t]=a,a>>>=8},re=function(e,t){var a=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:2*(9==t.level),e[9]=3,0!=t.mtime&&a9(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),a){e[3]=8;for(var r=0;r<=a.length;++r)e[r+10]=a.charCodeAt(r)}},rt=function(e){(31!=e[0]||139!=e[1]||8!=e[2])&&aD(6,"invalid gzip data");var t=e[3],a=10;4&t&&(a+=(e[10]|e[11]<<8)+2);for(var r=(t>>3&1)+(t>>4&1);r>0;r-=!e[a++]);return a+(2&t)},ra=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},rr=function(e){return 10+(e.filename?e.filename.length+1:0)},rn=function(e,t){var a=t.level;if(e[0]=120,e[1]=(0==a?0:a<6?1:9==a?3:2)<<6|(t.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,t.dictionary){var r=aq();r.p(t.dictionary),a9(e,2,r.d())}},ri=function(e,t){return((15&e[0])!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&aD(6,"invalid zlib data"),(e[1]>>5&1)==+!t&&aD(6,"invalid zlib data: "+(32&e[1]?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function ro(e,t){return"function"==typeof e&&(t=e,e={}),this.ondata=t,e}var rs=function(){function e(e,t){if("function"==typeof e&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new ae(98304),this.o.dictionary){var a=this.o.dictionary.subarray(-32768);this.b.set(a,32768-a.length),this.s.i=32768-a.length}}return e.prototype.p=function(e,t){this.ondata(aH(e,this.o,0,0,this.s),t)},e.prototype.push=function(e,t){this.ondata||aD(5),this.s.l&&aD(4);var a=e.length+this.s.z;if(a>this.b.length){if(a>2*this.b.length-32768){var r=new ae(-32768&a);r.set(this.b.subarray(0,this.s.z)),this.b=r}var n=this.b.length-this.s.z;this.b.set(e.subarray(0,n),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(n),32768),this.s.z=e.length-n+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=1&t,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2)},e.prototype.flush=function(){this.ondata||aD(5),this.s.l&&aD(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},e}(),rl=function(e,t){a4([aJ,function(){return[a5,rs]}],this,ro.call(this,e,t),function(e){onmessage=a5(new rs(e.data))},6,1)};function rc(e,t){return aH(e,t||{},0,0)}var rd=function(){function e(e,t){"function"==typeof e&&(t=e,e={}),this.ondata=t;var a=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:a?a.length:0},this.o=new ae(32768),this.p=new ae(0),a&&this.o.set(a)}return e.prototype.e=function(e){if(this.ondata||aD(5),this.d&&aD(4),this.p.length){if(e.length){var t=new ae(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}}else this.p=e},e.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,a=aM(this.p,this.s,this.o);this.ondata(a_(a,t,this.s.b),this.d),this.o=a_(a,this.s.b-32768),this.s.b=this.o.length,this.p=a_(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),ru=function(e,t){a4([aZ,function(){return[a5,rd]}],this,ro.call(this,e,t),function(e){onmessage=a5(new rd(e.data))},7,0)};function rh(e,t){return aM(e,{i:2},t&&t.out,t&&t.dictionary)}(function(){function e(e,t){this.c=aV(),this.l=0,this.v=1,rs.call(this,e,t)}e.prototype.push=function(e,t){this.c.p(e),this.l+=e.length,rs.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){var a=aH(e,this.o,this.v&&rr(this.o),t&&8,this.s);this.v&&(re(a,this.o),this.v=0),t&&(a9(a,a.length-8,this.c.d()),a9(a,a.length-4,this.l)),this.ondata(a,t)},e.prototype.flush=function(){rs.prototype.flush.call(this)}})();var rm=function(){function e(e,t){this.v=1,this.r=0,rd.call(this,e,t)}return e.prototype.push=function(e,t){if(rd.prototype.e.call(this,e),this.r+=e.length,this.v){var a=this.p.subarray(this.v-1),r=a.length>3?rt(a):4;if(r>a.length){if(!t)return}else this.v>1&&this.onmember&&this.onmember(this.r-a.length);this.p=a.subarray(r),this.v=0}rd.prototype.c.call(this,t),!this.s.f||this.s.l||t||(this.v=aC(this.s.p)+9,this.s={i:0},this.o=new ae(0),this.push(new ae(0),t))},e}(),rf=function(e,t){var a=this;a4([aZ,aQ,function(){return[a5,rd,rm]}],this,ro.call(this,e,t),function(e){var t=new rm(e.data);t.onmember=function(e){return postMessage(e)},onmessage=a5(t)},9,0,function(e){return a.onmember&&a.onmember(e)})},rg=(function(){function e(e,t){this.c=aq(),this.v=1,rs.call(this,e,t)}e.prototype.push=function(e,t){this.c.p(e),rs.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){var a=aH(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&(rn(a,this.o),this.v=0),t&&a9(a,a.length-4,this.c.d()),this.ondata(a,t)},e.prototype.flush=function(){rs.prototype.flush.call(this)}}(),function(){function e(e,t){rd.call(this,e,t),this.v=e&&e.dictionary?2:1}return e.prototype.push=function(e,t){if(rd.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(ri(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&aD(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),rd.prototype.c.call(this,t)},e}()),rp=function(e,t){a4([aZ,a0,function(){return[a5,rd,rg]}],this,ro.call(this,e,t),function(e){onmessage=a5(new rg(e.data))},11,0)},ry=function(){function e(e,t){this.o=ro.call(this,e,t)||{},this.G=rm,this.I=rd,this.Z=rg}return e.prototype.i=function(){var e=this;this.s.ondata=function(t,a){e.ondata(t,a)}},e.prototype.push=function(e,t){if(this.ondata||aD(5),this.s)this.s.push(e,t);else{if(this.p&&this.p.length){var a=new ae(this.p.length+e.length);a.set(this.p),a.set(e,this.p.length)}else this.p=e;this.p.length>2&&(this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(this.o):(15&this.p[0])!=8||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(this.o):new this.Z(this.o),this.i(),this.s.push(this.p,t),this.p=null)}},e}();function rv(e,t){ry.call(this,e,t),this.queuedSize=0,this.G=rf,this.I=ru,this.Z=rp}rv.prototype.i=function(){var e=this;this.s.ondata=function(t,a,r){e.ondata(t,a,r)},this.s.ondrain=function(t){e.queuedSize-=t,e.ondrain&&e.ondrain(t)}},rv.prototype.push=function(e,t){this.queuedSize+=e.length,ry.prototype.push.call(this,e,t)};var rF="u">typeof TextEncoder&&new TextEncoder,rb="u">typeof TextDecoder&&new TextDecoder,rS=0;try{rb.decode(aL,{stream:!0}),rS=1}catch(e){}var rx=function(e){for(var t="",a=0;;){var r=e[a++],n=(r>127)+(r>223)+(r>239);if(a+n>e.length)return{s:t,r:a_(e,a-1)};n?3==n?t+=String.fromCharCode(55296|(r=((15&r)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536)>>10,56320|1023&r):1&n?t+=String.fromCharCode((31&r)<<6|63&e[a++]):t+=String.fromCharCode((15&r)<<12|(63&e[a++])<<6|63&e[a++]):t+=String.fromCharCode(r)}};function rk(e,t){if(t){for(var a=new ae(e.length),r=0;r>1)),o=0,s=function(e){i[o++]=e},r=0;ri.length){var l=new ae(o+8+(n-r<<1));l.set(i),i=l}var c=e.charCodeAt(r);c<128||t?s(c):(c<2048?s(192|c>>6):(c>55295&&c<57344?(s(240|(c=65536+(1047552&c)|1023&e.charCodeAt(++r))>>18),s(128|c>>12&63)):s(224|c>>12),s(128|c>>6&63)),s(128|63&c))}return a_(i,0,o)}(function(e){this.ondata=e,rS?this.t=new TextDecoder:this.p=aL}).prototype.push=function(e,t){if(this.ondata||aD(5),t=!!t,this.t){this.ondata(this.t.decode(e,{stream:!0}),t),t&&(this.t.decode().length&&aD(8),this.t=null);return}this.p||aD(4);var a=new ae(this.p.length+e.length);a.set(this.p),a.set(e,this.p.length);var r=rx(a),n=r.s,i=r.r;t?(i.length&&aD(8),this.p=null):this.p=i,this.ondata(n,t)},(function(e){this.ondata=e}).prototype.push=function(e,t){this.ondata||aD(5),this.d&&aD(4),this.ondata(rk(e),this.d=t||!1)};var rw=function(e){return 1==e?3:e<6?2:+(9==e)},rI=function(e,t){for(;1!=a6(e,t);t+=4+a6(e,t+2));return[a7(e,t+12),a7(e,t+4),a7(e,t+20)]},rC=function(e){var t=0;if(e)for(var a in e){var r=e[a].length;r>65535&&aD(9),t+=r+4}return t},r_=function(e,t,a,r,n,i,o,s){var l=r.length,c=a.extra,d=s&&s.length,u=rC(c);a9(e,t,null!=o?0x2014b50:0x4034b50),t+=4,null!=o&&(e[t++]=20,e[t++]=a.os),e[t]=20,t+=2,e[t++]=a.flag<<1|(i<0&&8),e[t++]=n&&8,e[t++]=255&a.compression,e[t++]=a.compression>>8;var h=new Date(null==a.mtime?Date.now():a.mtime),m=h.getFullYear()-1980;if((m<0||m>119)&&aD(10),a9(e,t,m<<25|h.getMonth()+1<<21|h.getDate()<<16|h.getHours()<<11|h.getMinutes()<<5|h.getSeconds()>>1),t+=4,-1!=i&&(a9(e,t,a.crc),a9(e,t+4,i<0?-i-2:i),a9(e,t+8,a.size)),a9(e,t+12,l),a9(e,t+14,u),t+=16,null!=o&&(a9(e,t,d),a9(e,t+6,a.attrs),a9(e,t+10,o),t+=14),e.set(r,t),t+=l,u)for(var f in c){var g=c[f],p=g.length;a9(e,t,+f),a9(e,t+2,p),e.set(g,t+4),t+=4+p}return d&&(e.set(s,t),t+=d),t},rP=function(e,t,a,r,n){a9(e,t,0x6054b50),a9(e,t+8,a),a9(e,t+10,a),a9(e,t+12,r),a9(e,t+16,n)},rD=function(){function e(e){this.filename=e,this.c=aV(),this.size=0,this.compression=0}return e.prototype.process=function(e,t){this.ondata(null,e,t)},e.prototype.push=function(e,t){this.ondata||aD(5),this.c.p(e),this.size+=e.length,t&&(this.crc=this.c.d()),this.process(e,t||!1)},e}();function rM(e,t){var a=this;t||(t={}),rD.call(this,e),this.d=new rs(t,function(e,t){a.ondata(null,e,t)}),this.compression=8,this.flag=rw(t.level)}function rT(e,t){var a=this;t||(t={}),rD.call(this,e),this.d=new rl(t,function(e,t,r){a.ondata(e,t,r)}),this.compression=8,this.flag=rw(t.level),this.terminate=this.d.terminate}function rE(e){this.ondata=e,this.u=[],this.d=1}rM.prototype.process=function(e,t){try{this.d.push(e,t)}catch(e){this.ondata(e,null,t)}},rM.prototype.push=function(e,t){rD.prototype.push.call(this,e,t)},rT.prototype.process=function(e,t){this.d.push(e,t)},rT.prototype.push=function(e,t){rD.prototype.push.call(this,e,t)},rE.prototype.add=function(e){var t=this;if(this.ondata||aD(5),2&this.d)this.ondata(aD(4+(1&this.d)*8,0,1),null,!1);else{var a=rk(e.filename),r=a.length,n=e.comment,i=n&&rk(n),o=r!=e.filename.length||i&&n.length!=i.length,s=r+rC(e.extra)+30;r>65535&&this.ondata(aD(11,0,1),null,!1);var l=new ae(s);r_(l,0,e,a,o,-1);var c=[l],d=function(){for(var e=0,a=c;e0){var r=Math.min(this.c,e.length),n=e.subarray(0,r);if(this.c-=r,this.d?this.d.push(n,!this.c):this.k[0].push(n),(e=e.subarray(r)).length)return this.push(e,t)}else{var i=0,o=0,s=void 0,l=void 0;this.p.length?e.length?((l=new ae(this.p.length+e.length)).set(this.p),l.set(e,this.p.length)):l=this.p:l=e;for(var c=l.length,d=this.c,u=d&&this.d,h=this;oo+30+u+m){var f,g,p=[];h.k.unshift(p),i=2;var y=a8(l,o+18),v=a8(l,o+22),F=function(e,t){if(t){for(var a="",r=0;r=0&&(b.size=y,b.originalSize=v),h.onfile(b)}return"break"}if(d){if(0x8074b50==e)return s=o+=12+(-2==d&&8),i=3,h.c=0,"break";else if(0x2014b50==e)return s=o-=4,i=3,h.c=0,"break"}}();++o);if(this.p=aL,d<0){var m=i?l.subarray(0,s-12-(-2==d&&8)-(0x8074b50==a8(l,s-16)&&4)):l.subarray(0,o);u?u.push(m,!!i):this.k[+(2==i)].push(m)}if(2&i)return this.push(l.subarray(o),t);this.p=l.subarray(o)}t&&(this.c&&aD(13),this.p=null)},rN.prototype.register=function(e){this.o[e.compression]=e},"function"==typeof queueMicrotask&&queueMicrotask;var rA=e.i(48450);let rG=[0,0,0,0,0,0,0,0,0,329,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2809,68,0,27,0,58,3,62,4,7,0,0,15,65,554,3,394,404,189,117,30,51,27,15,34,32,80,1,142,3,142,39,0,144,125,44,122,275,70,135,61,127,8,12,113,246,122,36,185,1,149,309,335,12,11,14,54,151,0,0,2,0,0,211,0,2090,344,736,993,2872,701,605,646,1552,328,305,1240,735,1533,1713,562,3,1775,1149,1469,979,407,553,59,279,31,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function rU(e){return e.node?e.node.pop:e.leaf.pop}let rL=new class{nodes=[];leaves=[];tablesBuilt=!1;buildTables(){if(this.tablesBuilt)return;this.tablesBuilt=!0,this.leaves=[];for(let t=0;t<256;t++){var e;this.leaves.push({pop:rG[t]+ +((e=t)>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122)+1,symbol:t,numBits:0,code:0})}this.nodes=[{pop:0,index0:0,index1:0}];let t=256,a=[];for(let e=0;e<256;e++)a.push({node:null,leaf:this.leaves[e]});for(;1!==t;){let e=0xfffffffe,r=0xffffffff,n=-1,i=-1;for(let o=0;oi?n:i;a[s]={node:o,leaf:null},l!==t-1&&(a[l]=a[t-1]),t--}this.nodes[0]=a[0].node,this.generateCodes(0,0,0)}determineIndex(e){return null!==e.leaf?-(this.leaves.indexOf(e.leaf)+1):this.nodes.indexOf(e.node)}generateCodes(e,t,a){if(t<0){let r=this.leaves[-(t+1)];r.code=e,r.numBits=a}else{let r=this.nodes[t];this.generateCodes(e,r.index0,a+1),this.generateCodes(e|1<=0)t=e.readFlag()?this.nodes[t].index1:this.nodes[t].index0;else{a.push(this.leaves[-(t+1)].symbol);break}}return String.fromCharCode(...a)}{let t=e.readInt(8);return String.fromCharCode(...e.readBytes(t))}}};class rz{data;bitNum;maxReadBitNum;error;stringBuffer=null;constructor(e,t=0){this.data=e,this.bitNum=t,this.maxReadBitNum=e.length<<3,this.error=!1}getCurPos(){return this.bitNum}setCurPos(e){this.bitNum=e}getBytePosition(){return this.bitNum+7>>3}isError(){return this.error}isFull(){return this.bitNum>this.maxReadBitNum}getRemainingBits(){return this.maxReadBitNum-this.bitNum}getMaxPos(){return this.maxReadBitNum}readFlag(){if(this.bitNum>=this.maxReadBitNum)return this.error=!0,!1;let e=1<<(7&this.bitNum),t=(this.data[this.bitNum>>3]&e)!=0;return this.bitNum++,t}readInt(e){if(0===e)return 0;if(this.bitNum+e>this.maxReadBitNum)return this.error=!0,0;let t=this.bitNum>>3,a=7&this.bitNum;if(this.bitNum+=e,e+a<=32){let r=0,n=e+a+7>>3;for(let e=0;e>>=a,32===e)?r>>>0:r&(1<>3;for(let e=0;e>>0:r&(1<>3,a=new Uint8Array(t),r=this.bitNum>>3,n=7&this.bitNum,i=8-n;if(0===n)a.set(this.data.subarray(r,r+t));else{let e=this.data[r];for(let o=0;o>n|t<this.maxReadBitNum)return this.error=!0,0;let e=this.bitNum>>3,t=7&this.bitNum,a=rz.f32U8;if(0===t)a[0]=this.data[e],a[1]=this.data[e+1],a[2]=this.data[e+2],a[3]=this.data[e+3];else{let r=8-t;for(let n=0;n<4;n++){let i=this.data[e+n],o=e+n+1>t|o<>>0)}getCompressionPoint(){return this.compressionPoint}getConnectionContext(){let e=this.dataBlockDataMap;return{compressionPoint:this.compressionPoint,ghostTracker:this.ghostTracker,getDataBlockParser:e=>this.registry.getDataBlockParser(e),getDataBlockData:e?t=>e.get(t):void 0,getGhostParser:e=>this.registry.getGhostParser(e)}}_setNextRecvEventSeq(e){this.nextRecvEventSeq=e>>>0}setConnectionProtocolState(e){for(this.lastSeqRecvdAtSend=e.lastSeqRecvdAtSend.slice(0,32);this.lastSeqRecvdAtSend.length<32;)this.lastSeqRecvdAtSend.push(0);this.lastSeqRecvd=e.lastSeqRecvd>>>0,this.highestAckedSeq=e.highestAckedSeq>>>0,this.lastSendSeq=e.lastSendSeq>>>0,this.recvAckMask=e.ackMask>>>0,this.connectSequence=e.connectSequence>>>0,this.lastRecvAckAck=e.lastRecvAckAck>>>0,this._connectionEstablished=e.connectionEstablished}onSendPacketTrigger(){this.lastSendSeq=this.lastSendSeq+1>>>0,this.lastSeqRecvdAtSend[31&this.lastSendSeq]=this.lastSeqRecvd>>>0}applyProtocolHeader(e){if(e.connectSeqBit!==(1&this.connectSequence)||e.ackByteCount>4||e.packetType>2)return{accepted:!1,dispatchData:!1};let t=(e.seqNumber|0xfffffe00&this.lastSeqRecvd)>>>0;if(t>>0),this.lastSeqRecvd+31>>0;if(a>>0),this.lastSendSeq>>0,0===e.packetType&&(this.recvAckMask=(1|this.recvAckMask)>>>0);for(let t=this.highestAckedSeq+1;t<=a;t++)(e.ackMask&1<<(a-t&31))!=0&&(this.lastRecvAckAck=this.lastSeqRecvdAtSend[31&t]>>>0);t-this.lastRecvAckAck>32&&(this.lastRecvAckAck=t-32),this.highestAckedSeq=a;let n=this.lastSeqRecvd!==t&&0===e.packetType;return this.lastSeqRecvd=t,{accepted:!0,dispatchData:n}}parsePacket(e){let t=new rz(e),a=this.readDnetHeader(t),r=this.applyProtocolHeader(a);if(this.packetsParsed++,!r.accepted)return this.protocolRejected++,{dnetHeader:a,rateInfo:{},gameState:this.emptyGameState(),events:[],ghosts:[]};if(!r.dispatchData)return this.protocolNoDispatch++,{dnetHeader:a,rateInfo:{},gameState:this.emptyGameState(),events:[],ghosts:[]};let n=this.readRateInfo(t);t.setStringBuffer(!0);let i=this.readGameState(t),o=void 0===i.controlObjectDataStart||void 0!==i.controlObjectData,s=o?this.readEvents(t):[],l=s[s.length-1],c=!l||l.dataBitsEnd!==l.dataBitsStart,d=o&&c?t.getCurPos():void 0,u=o&&c?this.readGhosts(t,a.seqNumber):[];return t.setStringBuffer(!1),{dnetHeader:a,rateInfo:n,gameState:i,events:s,ghosts:u,ghostSectionStart:d}}readDnetHeader(e){let t=e.readFlag(),a=e.readInt(1),r=e.readInt(9),n=e.readInt(9),i=e.readInt(2),o=e.readInt(3),s=o>0?e.readInt(8*o):0;return{gameFlag:t,connectSeqBit:a,seqNumber:r,highestAck:n,packetType:i,ackByteCount:o,ackMask:s}}readRateInfo(e){let t={};return e.readFlag()&&(t.updateDelay=e.readInt(10),t.packetSize=e.readInt(10)),e.readFlag()&&(t.maxUpdateDelay=e.readInt(10),t.maxPacketSize=e.readInt(10)),t}readGameState(e){let t,a,r,n,i,o,s,l,c,d,u,h,m,f,g,p=e.readInt(32);e.readFlag()&&(e.readFlag()&&(t=e.readFloat(7)),e.readFlag()&&(a=1.5*e.readFloat(7))),e.readFlag()&&(r=e.readFlag(),n=e.readFlag()),e.readFlag()&&((i=e.readFlag())&&(o={x:e.readF32(),y:e.readF32(),z:e.readF32()}),1===(s=e.readRangedU32(0,2))?e.readFlag()&&(l=e.readRangedU32(0,1023)):2===s&&(c={x:e.readF32(),y:e.readF32(),z:e.readF32()}));let y=e.readFlag(),v=e.readFlag();if(e.readFlag())if(e.readFlag()){let g=e.readInt(10);d=g,u=e.getCurPos();let F=e.savePos(),b=this.ghostTracker.getGhost(g),S=b?this.registry.getGhostParser(b.classId):void 0,x=this.controlParserByGhostIndex.get(g),k=this.registry.getGhostParser(25),w=this.registry.getGhostParser(4),I=[],C=new Set,_=e=>{!e?.readPacketData||C.has(e.name)||(C.add(e.name),I.push(e))};_(S),_(x),_(k),_(w);let P=!1;for(let t of I){e.restorePos(F);try{let a=this.getConnectionContext(),r=t.readPacketData(e,a);if(e.getCurPos()-u<=0||e.isError())continue;m=r,h=e.getCurPos(),this.controlParserByGhostIndex.set(g,t),a.compressionPoint!==this.compressionPoint&&(this.compressionPoint=a.compressionPoint,f=this.compressionPoint),this.controlObjectParsed++,P=!0;break}catch{}}if(!P)return e.restorePos(F),h=u,this.controlObjectFailed++,{lastMoveAck:p,damageFlash:t,whiteOut:a,selfLocked:r,selfHomed:n,seekerTracking:i,seekerTrackingPos:o,seekerMode:s,seekerObjectGhostIndex:l,targetPos:c,pinged:y,jammed:v,controlObjectGhostIndex:d,controlObjectDataStart:u,controlObjectDataEnd:h,controlObjectData:m,targetVisibility:[]}}else f={x:e.readF32(),y:e.readF32(),z:e.readF32()},this.compressionPoint=f;let F=[];for(;e.readFlag();)F.push({index:e.readInt(4),mask:e.readInt(32)});return e.readFlag()&&(g=e.readInt(8)),{lastMoveAck:p,damageFlash:t,whiteOut:a,selfLocked:r,selfHomed:n,seekerTracking:i,seekerTrackingPos:o,seekerMode:s,seekerObjectGhostIndex:l,targetPos:c,pinged:y,jammed:v,controlObjectGhostIndex:d,controlObjectDataStart:u,controlObjectDataEnd:h,controlObjectData:m,compressionPoint:f,targetVisibility:F.length>0?F:void 0,cameraFov:g}}readEvents(e){let t=[],a=!0,r=-2;for(;;){let n,i,o,s=e.readFlag();if(a&&!s){if(a=!1,!e.readFlag()){this.dispatchGuaranteedEvents(t);break}}else if(a||s){if(!s)break}else{this.dispatchGuaranteedEvents(t);break}!a&&(r=n=e.readFlag()?r+1&127:e.readInt(7),(i=n|0xffffff80&this.nextRecvEventSeq)0&&this.pendingGuaranteedEvents[0].absoluteSequenceNumber===this.nextRecvEventSeq;){let t=this.pendingGuaranteedEvents.shift();if(!t)break;this.nextRecvEventSeq=this.nextRecvEventSeq+1>>>0,e.push(t.event),t.event.parsedData&&this.applyEventSideEffects(t.event.parsedData)}}applyEventSideEffects(e){let t=e.type;if("GhostingMessageEvent"===t){let t=e.message;"number"==typeof t&&2===t&&this.ghostTracker.clear();return}if("GhostAlwaysObjectEvent"===t){let t=e.ghostIndex,a=e.classId;if("number"==typeof t&&"number"==typeof a){let e=this.registry.getGhostParser(a);this.ghostTracker.createGhost(t,a,e?.name??`unknown_${a}`)}}"SimDataBlockEvent"===t&&this.dataBlockDataMap&&e.dataBlockData&&"number"==typeof e.objectId&&this.dataBlockDataMap.set(e.objectId,e.dataBlockData)}readGhosts(e,t){let a=[];if(!e.readFlag())return a;let r=e.readInt(3)+3;for(;e.readFlag();){let n;if(e.isError())break;let i=e.readInt(r);if(e.isError())break;if(e.readFlag()){this.ghostTracker.deleteGhost(i),this.ghostDeletes++,a.push({index:i,type:"delete",updateBitsStart:e.getCurPos(),updateBitsEnd:e.getCurPos()});continue}let o=!this.ghostTracker.hasGhost(i);n=o?e.readInt(7)+0:this.ghostTracker.getGhost(i)?.classId;let s=e.getCurPos(),l=void 0!==n?this.registry.getGhostParser(n):void 0;if(o&&!l){this.ghostsTrackerDiverged++,rH("DIVERGED pkt=%d seq=%d idx=%d classId=%d bit=%d/%d trackerSize=%d (server sent UPDATE for ghost not in our tracker; 7-bit classId is actually update data)",this.packetsParsed,t,i,n,s,e.getMaxPos(),this.ghostTracker.size()),a.push({index:i,type:"create",classId:n,updateBitsStart:s,updateBitsEnd:s});break}let c=!1;if(l)try{let t=this.getConnectionContext();t.currentGhostIndex=i;let r=l.unpackUpdate(e,o,t),d=e.getCurPos();o&&void 0!==n?(this.ghostTracker.createGhost(i,n,l.name),this.ghostCreatesParsed++):this.ghostUpdatesParsed++,a.push({index:i,type:o?"create":"update",classId:n,updateBitsStart:s,updateBitsEnd:d,parsedData:r}),c=!0}catch(d){this.ghostsFailed++;let r=o?"create":"update",c=d instanceof Error?d.message:String(d);rH("FAIL pkt=%d seq=%d #%d idx=%d op=%s classId=%d parser=%s bit=%d/%d trackerSize=%d err=%s",this.packetsParsed,t,a.length,i,r,n,l.name,s,e.getMaxPos(),this.ghostTracker.size(),c)}if(!c){rH("STOP pkt=%d seq=%d idx=%d op=%s classId=%d parser=%s bit=%d/%d",this.packetsParsed,t,i,o?"create":"update",n,l?.name??"NONE",s,e.getMaxPos()),a.push({index:i,type:o?"create":"update",classId:n,updateBitsStart:s,updateBitsEnd:s});break}}return a}emptyGameState(){return{lastMoveAck:0,pinged:!1,jammed:!1}}}class r${eventParsers=new Map;ghostParsers=new Map;dataBlockParsers=new Map;eventCatalog=new Map;ghostCatalog=new Map;dataBlockCatalog=new Map;catalogEvent(e){this.eventCatalog.set(e.name,e)}catalogGhost(e){this.ghostCatalog.set(e.name,e)}catalogDataBlock(e){this.dataBlockCatalog.set(e.name,e)}bindDeterministicDataBlocks(e,t){let a=0,r=[];for(let n=0;n0&&(r.sounds=t)}if(e.readFlag()){let t=[];for(let a=0;a<4;a++)e.readFlag()&&t.push({index:a,sequence:e.readInt(5),state:e.readInt(2),forward:e.readFlag(),atEnd:e.readFlag()});t.length>0&&(r.threads=t)}let n=!1;if(e.readFlag()){let a=[];for(let r=0;r<8;r++)if(e.readFlag()){let i={index:r};e.readFlag()?i.dataBlockId=rX(e):i.dataBlockId=0,e.readFlag()&&(e.readFlag()?i.skinTagIndex=e.readInt(10):i.skinName=e.readString(),n=!0),i.triggerDown=e.readFlag(),i.loaded=e.readFlag(),i.ammo=e.readFlag(),i.wet=e.readFlag(),i.target=e.readFlag(),i.fireCount=e.readInt(3),t&&(i.imageExtraFlag=e.readFlag()),a.push(i)}a.length>0&&(r.images=a)}if(e.readFlag()){if(e.readFlag()){r.stateAEnabled=e.readFlag(),r.stateB=e.readFlag();let t=e.readFlag();r.hasInvulnerability=t,t?(r.invulnerabilityVisual=e.readFlag(),r.invulnerabilityTicks=e.readU32()):r.binaryCloak=e.readFlag()}if(e.readFlag())if(e.readFlag()){let t=e.readFlag();r.stateBMode=t,t?r.energyPackOn=!0:r.energyPackOn=!1}else r.shieldNormal=e.readNormalVector(8),r.energyPercent=e.readFloat(5);e.readFlag()&&(r.stateValue1=e.readU32(),r.stateValue2=e.readU32())}return n&&(r.imageSkinDirty=!0),e.readFlag()&&(e.readFlag()?(r.mountObject=e.readInt(10),r.mountNode=e.readInt(5)):r.mountObject=-1),r}function rQ(e,t,a){let r=rJ(e,t,a);if(e.readFlag()&&(r.impactSound=e.readInt(3)),e.readFlag()&&(r.action=e.readInt(8),r.actionHoldAtEnd=e.readFlag(),r.actionAtEnd=e.readFlag(),r.actionFirstPerson=e.readFlag(),!r.actionAtEnd&&e.readFlag()&&(r.actionAnimPos=e.readSignedFloat(6))),e.readFlag()&&(r.armAction=e.readInt(8)),e.readFlag())return r;if(e.readFlag()){if(r.actionState=e.readInt(3),e.readFlag()&&(r.recoverTicks=e.readInt(7)),r.moveFlag0=e.readFlag(),r.moveFlag1=e.readFlag(),r.position=e.readCompressedPoint(a.compressionPoint),e.readFlag()){let t=e.readInt(13)/32,a=e.readNormalVector(10);r.velocity={x:a.x*t,y:a.y*t,z:a.z*t}}else r.velocity={x:0,y:0,z:0};r.headX=e.readSignedFloat(6),r.headZ=e.readSignedFloat(6),r.rotationZ=2*e.readFloat(7)*Math.PI,r.move=rK(e),r.allowWarp=e.readFlag()}return r.energy=e.readFloat(5),r}function r0(e,t){let a={};if(a.energyLevel=e.readF32(),a.rechargeRate=e.readF32(),a.actionState=e.readInt(3),e.readFlag()&&(a.recoverTicks=e.readInt(7)),e.readFlag()&&(a.jumpDelay=e.readInt(7)),e.readFlag()){let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};a.position=r,t.compressionPoint=r,a.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},a.jumpSurfaceLastContact=e.readInt(4)}if(a.headX=e.readF32(),a.headZ=e.readF32(),a.rotationZ=e.readF32(),e.readFlag()){let r=e.readInt(10);a.controlObjectGhost=r;let n=t.ghostTracker.getGhost(r),i=n?t.getGhostParser?.(n.classId):void 0;if(i?.readPacketData){let n=t.currentGhostIndex;t.currentGhostIndex=r,a.controlObjectData=i.readPacketData(e,t),t.currentGhostIndex=n}}return a.disableMove=e.readFlag(),a.pilot=e.readFlag(),a}function r1(e,t,a){let r=rJ(e,t,a);return(r.jetting=e.readFlag(),e.readFlag())?r._controlledEarlyReturn=!0:(r.steeringYaw=e.readFloat(9),r.steeringPitch=e.readFloat(9),r.move=rK(e),r.frozen=e.readFlag(),e.readFlag()&&(r.position=e.readCompressedPoint(a.compressionPoint),r.angPosition={x:e.readF32(),y:e.readF32(),z:e.readF32(),w:e.readF32()},r.linMomentum=e.readPoint3F(),r.angMomentum=e.readPoint3F()),e.readFlag()&&(r.energy=e.readFloat(8))),r}function r2(e,t){let a={};a.energyLevel=e.readF32(),a.rechargeRate=e.readF32(),a.steering={x:e.readF32(),y:e.readF32()};let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};return a.linPosition=r,a.angPosition={x:e.readF32(),y:e.readF32(),z:e.readF32(),w:e.readF32()},a.linMomentum=e.readPoint3F(),a.angMomentum=e.readPoint3F(),a.disableMove=e.readFlag(),a.frozen=e.readFlag(),t.compressionPoint=r,a}function r3(e,t){let a=r2(e,t);a.braking=e.readFlag();let r=4,n=t.currentGhostIndex;if(void 0!==n){let e=nR.get(n);void 0!==e&&(r=e)}let i=[];for(let t=0;t64)throw Error(`Invalid Sky fogVolumeCount: ${t}`);r.fogVolumeCount=t,r.useSkyTextures=e.readBool(),r.renderBottomTexture=e.readBool(),r.skySolidColor={r:e.readF32(),g:e.readF32(),b:e.readF32()},r.windEffectPrecipitation=e.readBool();let a=[];for(let r=0;r3)throw Error(`Invalid precipitation colorCount: ${t}`);let a=[];for(let r=0;rMath.floor(e.getRemainingBits()/96))throw Error(`Invalid physicalZone point count: ${t}`);let a=[];for(let r=0;rMath.floor(e.getRemainingBits()/128))throw Error(`Invalid physicalZone plane count: ${n}`);let i=[];for(let t=0;tMath.floor(e.getRemainingBits()/128))throw Error(`Invalid physicalZone edge count: ${o}`);let s=[];for(let t=0;t0&&(a.audioData=e.readBitsBuffer(8*r)),a}function n4(e,t){return{type:"GhostingMessageEvent",sequence:e.readU32(),message:e.readInt(3),ghostCount:e.readInt(11)}}function n6(e,t){let a={type:"GhostAlwaysObjectEvent"};a.ghostIndex=e.readInt(10);let r=e.readFlag();if(a._hasObjectData=r,r){let r=e.readInt(7);a.classId=r;let n=t.getGhostParser?.(r);if(!n)throw Error(`No ghost parser for GhostAlwaysObjectEvent classId=${r}`);a.objectData=n.unpackUpdate(e,!0,t)}return a}function n8(e,t){let a={type:"PathManagerEvent"};if(e.readFlag()){a.messageType="NewPaths";let t=e.readU32(),r=[];for(let a=0;a0&&(t.hudImages=a),t}function ig(e){let t={};e.readFlag()&&(t.crc=e.readU32()),t.shapeName=e.readString(),t.mountPoint=e.readU32(),e.readFlag()||(t.offset=e.readAffineTransform()),t.firstPerson=e.readFlag(),t.mass=e.readF32(),t.usesEnergy=e.readFlag(),t.minEnergy=e.readF32(),t.hasFlash=e.readFlag(),t.projectile=il(e),t.muzzleFlash=il(e),t.isSeeker=e.readFlag(),t.isSeeker&&(t.seekerRadius=e.readF32(),t.maxSeekAngle=e.readF32(),t.seekerLockTime=e.readF32(),t.seekerFreeTime=e.readF32(),t.isTargetLockRequired=e.readFlag(),t.maxLockRange=e.readF32()),t.cloakable=e.readFlag(),t.lightType=e.readRangedU32(0,3),0!==t.lightType&&(t.lightRadius=e.readF32(),t.lightTime=e.readS32(),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7)}),t.shellExitDir={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.shellExitVariance=e.readF32(),t.shellVelocity=e.readF32(),t.casing=il(e),t.accuFire=e.readFlag();let a=[];for(let t=0;t<31;t++){if(!e.readFlag())continue;let t={};t.name=e.readString(),t.transitionOnAmmo=e.readInt(5),t.transitionOnNoAmmo=e.readInt(5),t.transitionOnTarget=e.readInt(5),t.transitionOnNoTarget=e.readInt(5),t.transitionOnWet=e.readInt(5),t.transitionOnNotWet=e.readInt(5),t.transitionOnTriggerUp=e.readInt(5),t.transitionOnTriggerDown=e.readInt(5),t.transitionOnTimeout=e.readInt(5),t.transitionGeneric0In=e.readInt(5),t.transitionGeneric0Out=e.readInt(5),e.readFlag()&&(t.timeoutValue=e.readF32()),t.waitForTimeout=e.readFlag(),t.fire=e.readFlag(),t.ejectShell=e.readFlag(),t.scaleAnimation=e.readFlag(),t.direction=e.readFlag(),t.reload=e.readFlag(),e.readFlag()&&(t.energyDrain=e.readF32()),t.loaded=e.readInt(3),t.spin=e.readInt(3),t.recoil=e.readInt(3),e.readFlag()&&(t.sequence=e.readSignedInt(16)),e.readFlag()&&(t.sequenceVis=e.readSignedInt(16)),t.flashSequence=e.readFlag(),t.ignoreLoadedForReady=e.readFlag(),t.emitter=il(e),null!==t.emitter&&(t.emitterTime=e.readF32(),t.emitterNode=e.readS32()),t.sound=il(e),a.push(t)}return t.states=a,t}function ip(e){let t=im(e);t.renderFirstPerson=e.readFlag(),t.minLookAngle=e.readF32(),t.maxLookAngle=e.readF32(),t.maxFreelookAngle=e.readF32(),t.maxTimeScale=e.readF32(),t.maxStepHeight=e.readF32(),t.runForce=e.readF32(),t.runEnergyDrain=e.readF32(),t.minRunEnergy=e.readF32(),t.maxForwardSpeed=e.readF32(),t.maxBackwardSpeed=e.readF32(),t.maxSideSpeed=e.readF32(),t.maxUnderwaterForwardSpeed=e.readF32(),t.maxUnderwaterBackwardSpeed=e.readF32(),t.maxUnderwaterSideSpeedRef=il(e),e.readFlag()&&(t.runSurfaceAngleRef=e.readInt(11)),t.runSurfaceAngle=e.readF32(),t.recoverDelay=e.readF32(),t.recoverRunForceScale=e.readF32(),t.jumpForce=e.readF32(),t.jumpEnergyDrain=e.readF32(),t.minJumpEnergy=e.readF32(),t.minJumpSpeed=e.readF32(),t.maxJumpSpeed=e.readF32(),t.jumpSurfaceAngle=e.readF32(),t.minJetEnergy=e.readF32(),t.splashVelocity=e.readF32(),t.splashAngle=e.readF32(),t.splashFreqMod=e.readF32(),t.splashVelEpsilon=e.readF32(),t.bubbleEmitTime=e.readF32(),t.medSplashSoundVel=e.readF32(),t.hardSplashSoundVel=e.readF32(),t.exitSplashSoundVel=e.readF32(),t.jumpDelay=e.readInt(7),t.horizMaxSpeed=e.readF32(),t.horizResistSpeed=e.readF32(),t.horizResistFactor=e.readF32(),t.upMaxSpeed=e.readF32(),t.upResistSpeed=e.readF32(),t.upResistFactor=e.readF32(),t.jetEnergyDrain=e.readF32(),t.canJet=e.readF32(),t.maxJetHorizontalPercentage=e.readF32(),t.maxJetForwardSpeed=e.readF32(),t.jetForce=e.readF32(),t.minJetSpeed=e.readF32(),t.maxDamage=e.readF32(),t.minImpactDamageSpeed=e.readF32(),t.impactDamageScale=e.readF32(),t.footSplashHeight=e.readF32();let a=[];for(let t=0;t<32;t++)e.readFlag()?a.push(e.readInt(11)):a.push(null);t.sounds=a,t.boxSize={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.footPuffEmitter=il(e),t.footPuffNumParts=e.readF32(),t.footPuffRadius=e.readF32(),t.decalData=il(e),t.decalOffset=e.readF32(),t.dustEmitter=il(e),t.splash=il(e);let r=[];for(let t=0;t<3;t++)r.push(il(e));return t.splashEmitters=r,t.groundImpactMinSpeed=e.readF32(),t.groundImpactShakeFreq={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.groundImpactShakeAmp={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.groundImpactShakeDuration=e.readF32(),t.groundImpactShakeFalloff=e.readF32(),t.boundingRadius=e.readF32(),t.moveBubbleSize=e.readF32(),t}function iy(e){let t=im(e);t.bodyRestitution=e.readF32(),t.bodyFriction=e.readF32();let a=[];for(let t=0;t<2;t++)a.push(il(e));t.impactSounds=a,t.minImpactSpeed=e.readF32(),t.softImpactSpeed=e.readF32(),t.hardImpactSpeed=e.readF32(),t.minRollSpeed=e.readF32(),t.maxSteeringAngle=e.readF32(),t.maxDrag=e.readF32(),t.minDrag=e.readF32(),t.cameraOffset=e.readF32(),t.cameraLag=e.readF32(),t.jetForce=e.readF32(),t.jetEnergyDrain=e.readF32(),t.minJetEnergy=e.readF32(),t.integration=e.readF32(),t.collisionTol=e.readF32(),t.massCenter=e.readF32(),t.exitSplashSoundVelocity=e.readF32(),t.softSplashSoundVelocity=e.readF32(),t.mediumSplashSoundVelocity=e.readF32(),t.hardSplashSoundVelocity=e.readF32();let r=[];for(let t=0;t<5;t++)r.push(il(e));t.waterSounds=r,t.dustEmitter=il(e);let n=[];for(let t=0;t<3;t++)n.push(il(e));t.damageEmitters=n;let i=[];for(let t=0;t<2;t++)i.push(il(e));return t.splashEmitters=i,t.damageEmitterOffset0={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.damageEmitterOffset1={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.damageLevelTolerance0=e.readF32(),t.damageLevelTolerance1=e.readF32(),t.splashFreqMod=e.readF32(),t.splashVelEpsilon=e.readF32(),t.collDamageThresholdVel=e.readF32(),t.collDamageMultiplier=e.readF32(),t}function iv(e){let t=iy(e);t.jetActivateSound=il(e),t.jetDeactivateSound=il(e);let a=[];for(let t=0;t<4;t++)a.push(il(e));return t.jetEmitters=a,t.maneuveringForce=e.readF32(),t.horizontalSurfaceForce=e.readF32(),t.verticalSurfaceForce=e.readF32(),t.autoInputDamping=e.readF32(),t.steeringForce=e.readF32(),t.steeringRollForce=e.readF32(),t.rollForce=e.readF32(),t.autoAngularForce=e.readF32(),t.rotationalDrag=e.readF32(),t.maxAutoSpeed=e.readF32(),t.autoLinearForce=e.readF32(),t.hoverHeight=e.readF32(),t.createHoverHeight=e.readF32(),t.minTrailSpeed=e.readF32(),t.vertThrustMultiple=e.readF32(),t.maxForwardSpeed=e.readF32(),t}function iF(e){let t=iy(e);t.dragForce=e.readF32(),t.mainThrustForce=e.readF32(),t.reverseThrustForce=e.readF32(),t.strafeThrustForce=e.readF32(),t.turboFactor=e.readF32(),t.stabLenMin=e.readF32(),t.stabLenMax=e.readF32(),t.stabSpringConstant=e.readF32(),t.stabDampingConstant=e.readF32(),t.gyroDrag=e.readF32(),t.normalForce=e.readF32(),t.restorativeForce=e.readF32(),t.steeringForce=e.readF32(),t.rollForce=e.readF32(),t.pitchForce=e.readF32(),t.floatingThrustFactor=e.readF32(),t.brakingForce=e.readF32(),t.dustTrailOffset={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.dustTrailFreqMod=e.readF32(),t.triggerTrailHeight=e.readF32(),t.floatSound=il(e),t.thrustSound=il(e),t.turboSound=il(e);let a=[];for(let t=0;t<3;t++)a.push(il(e));return t.jetEmitters=a,t.dustTrailEmitter=il(e),t.mainThrustEmitterFactor=e.readF32(),t.strafeThrustEmitterFactor=e.readF32(),t.reverseThrustEmitterFactor=e.readF32(),t}function ib(e){let t=iy(e);return t.tireRadius=e.readF32(),t.tireStaticFriction=e.readF32(),t.tireKineticFriction=e.readF32(),t.tireRestitution=e.readF32(),t.tireLateralForce=e.readF32(),t.tireLateralDamping=e.readF32(),t.tireLateralRelaxation=e.readF32(),t.tireLongitudinalForce=e.readF32(),t.tireLongitudinalDamping=e.readF32(),t.tireEmitter=il(e),t.jetSound=il(e),t.engineSound=il(e),t.squealSound=il(e),t.wadeSound=il(e),t.spring=e.readF32(),t.springDamping=e.readF32(),t.springLength=e.readF32(),t.brakeTorque=e.readF32(),t.engineTorque=e.readF32(),t.engineBrake=e.readF32(),t.maxWheelSpeed=e.readF32(),t.steeringAngle=e.readF32(),t.steeringReturn=e.readF32(),t.steeringDamping=e.readF32(),t.powerSteeringFactor=e.readF32(),t}function iS(e){let t=im(e);return t.noIndividualDamage=e.readFlag(),t.dynamicTypeField=e.readS32(),t}function ix(e){let t=iS(e);return t.thetaMin=e.readF32(),t.thetaMax=e.readF32(),t.thetaNull=e.readF32(),t.neverUpdateControl=e.readFlag(),t.primaryAxis=e.readRangedU32(0,3),t.maxCapacitorEnergy=e.readF32(),t.capacitorRechargeRate=e.readF32(),t}function ik(e){let t=ig(e);return t.activationMS=e.readInt(8),t.deactivateDelayMS=e.readInt(8),t.degPerSecTheta=e.readRangedU32(0,1080),t.degPerSecPhi=e.readRangedU32(0,1080),t.dontFireInsideDamageRadius=e.readFlag(),t.damageRadius=e.readF32(),t.useCapacitor=e.readFlag(),t}function iw(e){let t=im(e);return t.friction=e.readFloat(10),t.elasticity=e.readFloat(10),t.sticky=e.readFlag(),e.readFlag()&&(t.gravityMod=e.readFloat(10)),e.readFlag()&&(t.maxVelocity=e.readF32()),e.readFlag()&&(t.lightType=e.readInt(2),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7)},t.lightTime=e.readS32(),t.lightRadius=e.readF32(),t.lightOnlyStatic=e.readFlag()),t}function iI(e){let t={};t.projectileShapeName=e.readString(),t.faceViewerLinkTime=e.readS32(),t.lifetime=e.readS32(),t.faceViewer=e.readFlag(),e.readFlag()&&(t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()}),t.baseEmitter=il(e),t.delayEmitter=il(e),t.bubbleEmitter=il(e),t.explosion=il(e),t.underwaterExplosion=il(e),t.splash=il(e),t.sound=il(e),t.wetFireSound=il(e),t.fireSound=il(e);let a=[];for(let t=0;t<6;t++)a.push(il(e));return t.decals=a,e.readFlag()&&(t.lightRadius=e.readFloat(8),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7)}),e.readFlag()&&(t.underwaterLightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7)}),t.explodeOnWaterImpact=iu(e),t.depthTolerance=e.readF32(),t}function iC(e){let t=iI(e);return t.dryVelocity=e.readF32(),t.wetVelocity=e.readF32(),t.fizzleTime=e.readU32(),t.fizzleType=e.readU32(),t.hardRetarget=e.readFlag(),t.inheritedVelocityScale=e.readRangedU32(0,90),t.lifetimeMS=e.readRangedU32(0,90),t.collideWithOwnerTimeMS=e.readU32(),t.proximityRadius=e.readU32(),t.tracerProjectile=e.readFlag(),t}function i_(e){let t=iI(e);return t.armingDelayMS=e.readS32(),t.muzzleVelocity=e.readF32(),t.grenadeElasticity=e.readF32(),t.grenadeFriction=e.readF32(),t.drag=e.readF32(),t.density=e.readF32(),t.gravityMod=e.readF32(),t.lifetimeMS=e.readS32(),t}function iP(e){let t=iI(e);return t.lifetimeMS=e.readS32(),t.muzzleVelocity=e.readF32(),t.turningSpeed=e.readF32(),t.proximityRadius=e.readF32(),t.terrainAvoidanceSpeed=e.readF32(),t.terrainScanAhead=e.readF32(),t.terrainHeightFail=e.readF32(),t.terrainAvoidanceRadius=e.readF32(),t.flareDistance=e.readF32(),t.flareAngle=e.readF32(),t.useFlechette=iu(e),t.maxVelocity=e.readF32(),t.acceleration=e.readF32(),t.flechetteDelayMs=e.readS32(),t.exhaustTimeMs=e.readS32(),t.exhaustNodeName=e.readString(),t.casingShapeName=e.readString(),t.casingDebris=il(e),t.puffEmitter=il(e),t.exhaustEmitter=il(e),t}function iD(e){let t=iI(e);t.maxRifleRange=e.readF32(),t.rifleHeadMultiplier=e.readF32(),t.beamColor=id(e),t.fadeTime=e.readF32(),t.startBeamWidth=e.readF32(),t.endBeamWidth=e.readF32(),t.pulseBeamWidth=e.readF32(),t.beamFlareAngle=e.readF32(),t.minFlareSize=e.readF32(),t.maxFlareSize=e.readF32(),t.pulseSpeed=e.readF32(),t.pulseLength=e.readF32(),t.lightColor=id(e),t.lightRadius=e.readF32();let a=[];for(let t=0;t<12;t++)a.push(e.readString());return t.textures=a,t}function iM(e){let t=iI(e);t.zapDuration=e.readF32(),t.boltLength=e.readF32(),t.numParts=e.readF32(),t.lightningFreq=e.readF32(),t.lightningDensity=e.readF32(),t.lightningAmp=e.readF32(),t.lightningWidth=e.readF32(),t.shockwave=il(e);let a=[],r=[],n=[],i=[];for(let t=0;t<2;t++)a.push(e.readF32()),r.push(e.readF32()),n.push(e.readF32()),i.push(e.readF32());t.startWidth=a,t.endWidth=r,t.boltSpeed=n,t.texWrap=i;let o=[];for(let t=0;t<4;t++)o.push(e.readString());return t.textures=o,t.emitter=il(e),t}function iT(e){let t=iI(e);return t.beamRange=e.readF32(),t.beamDrainRate=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=e.readF32(),t.startWidth=e.readF32(),t.endWidth=e.readF32(),t.mainBeamTexture=e.readString(),t.innerBeamTexture=e.readString(),t.flareTexture=e.readString(),t.hitEmitter=il(e),t}function iE(e){let t=iI(e);return t.beamRange=e.readF32(),t.beamRepairRate=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=e.readF32(),t.startWidth=e.readF32(),t.endWidth=e.readF32(),t.startBeamWidth=e.readF32(),t.endBeamWidth=e.readF32(),t.mainBeamTexture=e.readString(),t.innerBeamTexture=e.readString(),t}function iB(e){let t=iI(e);t.maxRifleRange=e.readF32(),t.beamColor=id(e),t.startBeamWidth=e.readF32(),t.pulseBeamWidth=e.readF32(),t.beamFlareAngle=e.readF32(),t.minFlareSize=e.readF32(),t.maxFlareSize=e.readF32(),t.pulseSpeed=e.readF32(),t.pulseLength=e.readF32();let a=[];for(let t=0;t<4;t++)a.push(e.readString());return t.textures=a,t}function ij(e){let t=iC(e);return t.tracerLength=e.readF32(),t.tracerAlpha=e.readF32(),t.tracerMinPixels=e.readF32(),t.crossViewFraction=iu(e),t.tracerColor=id(e),t.tracerWidth=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=iu(e),t.textureName0=e.readString(),t.textureName1=e.readString(),t}function iR(e){let t=i_(e);return t.energyDrainPerSecond=e.readF32(),t.energyMinDrain=e.readF32(),t.beamWidth=e.readF32(),t.beamRange=e.readF32(),t.numSegments=e.readF32(),t.texRepeat=e.readF32(),t.beamFlareAngle=e.readF32(),t.beamTexture=e.readString(),t.flareTexture=e.readString(),t}function iN(e){let t=iC(e);return t.numFlares=e.readF32(),t.flareColor=id(e),t.flareTexture=e.readString(),t.smokeTexture=e.readString(),t.size=e.readF32(),t.flareModTexture=e.readF32(),t.smokeSize=e.readF32(),t}function iA(e){let t=i_(e);return t.smokeDist=e.readF32(),t.noSmoke=e.readF32(),t.boomTime=e.readF32(),t.casingDist=e.readF32(),t.smokeCushion=e.readF32(),t.noSmokeCounter=e.readF32(),t.smokeTexture=e.readString(),t.bombTexture=e.readString(),t}function iG(e){let t=i_(e);return t.size=e.readF32(),t.useLensFlare=iu(e),t.flareTexture=e.readString(),t.lensFlareTexture=e.readString(),t}function iU(e){let t={};t.dtsFileName=e.readString(),t.soundProfile=il(e),t.particleEmitter=il(e),t.particleDensity=e.readInt(14),t.particleRadius=e.readF32(),t.faceViewer=e.readFlag(),e.readFlag()&&(t.explosionScale={x:e.readInt(16),y:e.readInt(16),z:e.readInt(16)}),t.playSpeed=e.readInt(14),t.debrisThetaMin=e.readRangedU32(0,180),t.debrisThetaMax=e.readRangedU32(0,180),t.debrisPhiMin=e.readRangedU32(0,360),t.debrisPhiMax=e.readRangedU32(0,360),t.debrisMinVelocity=e.readRangedU32(0,1e3),t.debrisMaxVelocity=e.readRangedU32(0,1e3),t.debrisNum=e.readInt(14),t.debrisVariance=e.readRangedU32(0,1e4),t.delayMS=e.readInt(16),t.delayVariance=e.readInt(16),t.lifetimeMS=e.readInt(16),t.lifetimeVariance=e.readInt(16),t.offset=e.readF32(),t.shakeCamera=e.readFlag(),t.hasLight=e.readFlag(),t.camShakeFreq={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.camShakeAmp={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.camShakeDuration=e.readF32(),t.camShakeRadius=e.readF32(),t.camShakeFalloff=e.readF32(),t.shockwave=il(e),t.debris=il(e);let a=[];for(let t=0;t<4;t++)a.push(il(e));t.emitters=a;let r=[];for(let t=0;t<5;t++)r.push(il(e));t.subExplosions=r;let n=e.readRangedU32(0,4),i=[];for(let t=0;t0&&oi("DataBlock binding: %d/%d bound, missing parsers: %s",t,rO.length,a.join(", "));const{bound:r,missing:n}=this.registry.bindDeterministicGhosts(rV,0);n.length>0&&oi("Ghost binding: %d/%d bound, missing parsers: %s",r,rV.length,n.join(", "));const{bound:i,missing:o}=this.registry.bindDeterministicEvents(rq,255);o.length>0&&oi("Event binding: %d/%d bound, missing parsers: %s",i,rq.length,o.join(", ")),this.packetParser=new rW(this.registry,this.ghostTracker)}getRegistry(){return this.registry}getGhostTracker(){return this.ghostTracker}getPacketParser(){return this.packetParser}get loaded(){return this._loaded}get header(){if(!this._loaded)throw Error("must call load() first");return this._header}get initialBlock(){if(!this._loaded)throw Error("must call load() first");return this._initialBlock}get blockCount(){if(!this._loaded)throw Error("must call load() first");if(void 0===this._blockCount){let e=this._decompressedData,t=this._decompressedView,a=0,r=0;for(;r+2<=e.length;){let n=4095&t.getUint16(r,!0);if((r+=2+n)>e.length)break;a++}this._blockCount=a}return this._blockCount}get blockCursor(){if(!this._loaded)throw Error("must call load() first");return this._blockCursor}async load(){if(this._loaded)return{header:this._header,initialBlock:this._initialBlock};let e=this.readHeader();oi('header: "%s" version=0x%s length=%dms (%smin) initialBlockSize=%d',e.identString,e.protocolVersion.toString(16),e.demoLengthMs,(e.demoLengthMs/1e3/60).toFixed(1),e.initialBlockSize);let t=this.buffer.subarray(this.offset,this.offset+e.initialBlockSize),a=this.readInitialBlock(t);this.offset+=e.initialBlockSize;let r=this.buffer.subarray(this.offset);oi("compressed block stream: %d bytes",r.length);let n=await new Promise((e,t)=>{var a,n;a=(a,r)=>{a?t(a):e(r)},n||(n=a,a={}),"function"!=typeof n&&aD(7),a3(r,a,[aZ],function(e){return a1(rh(e.data[0],a2(e.data[1])))},1,n)});return oi("decompressed block stream: %d bytes",n.length),this._decompressedData=n,this._decompressedView=new DataView(n.buffer,n.byteOffset,n.byteLength),this.setupPacketParser(a),this._header=e,this._initialBlock=a,this._blockStreamOffset=0,this._blockCursor=0,this._loaded=!0,{header:e,initialBlock:a}}nextBlock(){if(!this._loaded)throw Error("must call load() first");let e=this._decompressedData,t=this._decompressedView,a=this._blockStreamOffset;if(a+2>e.length)return;let r=t.getUint16(a,!0),n=r>>12,i=4095&r;if(a+2+i>e.length)return void os("block %d: size %d would exceed decompressed data (offset=%d remaining=%d), stopping",this._blockCursor,i,a+2,e.length-a-2);let o=e.subarray(a+2,a+2+i);this._blockStreamOffset=a+2+i;let s={index:this._blockCursor,type:n,size:i,data:o};if(this._blockCursor++,0===n)try{s.parsed=this.packetParser.parsePacket(o)}catch{}else if(1===n)this.packetParser.onSendPacketTrigger();else if(2===n&&64===i)try{s.parsed=this.readRawMove(o)}catch{}else if(3===n&&8===i)try{s.parsed=this.readInfoBlock(o)}catch{}return s}reset(){if(!this._loaded)throw Error("must call load() first");this._blockStreamOffset=0,this._blockCursor=0,this._blockCount=void 0,this.setupPacketParser(this._initialBlock)}processBlocks(e){if(!this._loaded)throw Error("must call load() first");let t=0;for(let a=0;a=128&&t<128+rO.length?rO[t-128]:`unknown(${t})`;throw Error(`No parser for DataBlock classId ${t} (${e}) at bit ${i}`)}}oi("all %d/%d DataBlocks parsed (%d payloads), bit position after DataBlocks: %d",l,i,s.size,r.getCurPos());let c=r.readU8(),d=[];for(let e=0;e<6;e++)d.push(r.readU32());let u=[];for(let e=0;e<16;e++)u.push(r.readU32());let h=r.readU32(),m=[];for(let e=0;e>3<<3),this.readSimpleTargetManager(r),this.readSimpleTargetManager(r),oo('after sequential tail bit=%d mission="%s" CRC=0x%s',r.getCurPos(),M,T.toString(16))}catch(e){a=e instanceof Error?e.message:String(e)}finally{this.ghostTracker=w}let E=x-r.getCurPos(),B=M.length>0?M.split("").filter(e=>{let t=e.charCodeAt(0);return t>=32&&t<=126}).length/M.length:1,j=M.length>0&&B>=.8&&void 0===a;return oi('initial block: events=%d ghosts=%d ghostingSeq=%d controlObj=%d mission="%s" CRC=0x%s valid=%s%s',I.length,P.length,_,D,M,T.toString(16),j,a?` error=${a}`:""),{taggedStrings:n,dataBlockHeaders:o,dataBlockCount:l,dataBlocks:s,demoSetting:c,connectionFields:d,stateArray:u,scoreEntries:m,demoValues:f,sensorGroupColors:g,targetEntries:p,connectionState:y,roundTripTime:v,packetLoss:F,pathManager:b,notifyCount:S,nextRecvEventSeq:C,ghostingSequence:_,initialGhosts:P,initialEvents:I,controlObjectGhostIndex:D,controlObjectData:t,missionName:M,missionCRC:T,phase2TrailingBits:E,phase2Valid:j,phase2Error:a}}readScoreEntry(e){let t=e.readFlag()?e.readInt(16):0,a=e.readFlag()?e.readInt(16):0,r=e.readFlag()?e.readInt(16):0,n=e.readInt(6),i=e.readInt(6),o=e.readInt(6),s=e.readFlag(),l=[];for(let t=0;t<6;t++)l.push(e.readFlag());return{clientId:t,teamId:a,score:r,field0:n,field1:i,field2:o,isBot:s,triggerFlags:l}}readDemoValues(e){let t=[];for(;e.readFlag();)t.push(e.readString());return t}readComplexTargetManager(e){e.readU8(),e.readU8(),e.readU8(),e.readU8();let t=[];for(let a=0;a<32;a++)for(let r=0;r<32;r++)e.readFlag()&&t.push({group:a,targetGroup:r,r:e.readU8(),g:e.readU8(),b:e.readU8(),a:e.readU8()});let a=[];for(let t=0;t<512;t++){if(!e.readFlag())continue;let r={targetId:t,sensorGroup:0,targetData:0,damageLevel:0};e.readFlag()&&(r.sensorData=e.readU32()),e.readFlag()&&(r.voiceMapData=e.readU32()),e.readFlag()&&(r.name=e.readString()),e.readFlag()&&(r.skin=e.readString()),e.readFlag()&&(r.skinPref=e.readString()),e.readFlag()&&(r.voice=e.readString()),e.readFlag()&&(r.typeDescription=e.readString()),r.sensorGroup=e.readInt(5),r.targetData=e.readInt(9),t>=32&&e.readFlag()&&(r.dataBlockRef=e.readInt(11)),r.damageLevel=e.readFloat(7),a.push(r)}return{sensorGroupColors:t,targets:a}}readPathManager(e){let t=[],a=e.readU32();for(let r=0;rthis.registry.getDataBlockParser(e)};t=i.unpack(e,a)}catch{a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:n});break}else{a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:n});break}a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:e.getCurPos(),parsedData:t}),oo(" event classId=%d bits=%d",r,e.getCurPos()-n)}return{nextRecvEventSeq:t,events:a}}readGhostStartBlock(e,t){let a=e.readU32(),r=[];oo("ghost block: seq=%d bit=%d",a,e.getCurPos());let n=this.registry.getGhostCatalog(),i=8*e.getBuffer().length,o=new Map;for(let[e,a]of t)o.set(e,a.data);for(;e.readFlag()&&!e.isError();){let a=e.readInt(10),s=e.readInt(7)+0,l=e.getCurPos(),c=[],d=new Set,{entry:u}=this.identifyGhostViaDataBlock(e,t,n),h=this.registry.getGhostParser(s);h&&(c.push({entry:h,method:"registry"}),d.add(h)),u&&!d.has(u)&&(c.push({entry:u,method:"datablock"}),d.add(u));let m={getDataBlockData:e=>o.get(e),getDataBlockParser:e=>this.registry.getDataBlockParser(e)},f=!1;for(let{entry:t,method:n}of c){let o="registry"===n,c=this.tryGhostParser(e,t,l,i,!1,m,o);if(!1!==c){this.ghostTracker.createGhost(a,s,t.name),oo(" ghost idx=%d classId=%d parser=%s bits=%d via=%s",a,s,t.name,e.getCurPos()-l,n),r.push({index:a,type:"create",classId:s,updateBitsStart:l,updateBitsEnd:e.getCurPos(),parsedData:c}),f=!0;break}}if(!f){oo(" ghost idx=%d classId=%d NO PARSER (stopping at bit=%d, remaining=%d)",a,s,l,i-l);break}}return oo("ghost loop ended at bit=%d remaining=%d count=%d",e.getCurPos(),i-e.getCurPos(),r.length),{ghostingSequence:a,ghosts:r}}tryGhostParser(e,t,a,r,n=!1,i,o=!1){let s=e.savePos();n||oo(" try %s: startBit=%d",t.name,a);try{let l=t.unpackUpdate(e,!0,{compressionPoint:{x:0,y:0,z:0},ghostTracker:this.ghostTracker,...i}),c=e.getCurPos()-a,d=r-e.getCurPos();if(e.isError()||!o&&c<3)return n||oo(" reject %s: bits=%d isError=%s",t.name,c,e.isError()),e.restorePos(s),!1;if(d>1e3){let a=e.getCurPos(),r=e.readFlag();if(e.setCurPos(a),!r)return n||oo(" reject %s: bits=%d misaligned (remaining=%d)",t.name,c,d),e.restorePos(s),!1}return l??{}}catch(a){return n||oo(" reject %s: error at bit=%d: %s",t.name,e.getCurPos(),a instanceof Error?a.message:String(a)),e.restorePos(s),!1}}identifyGhostViaDataBlock(e,t,a){let r;if(!t)return{entry:void 0,dbFlag:!1};let n=e.savePos(),i=!1;try{if(i=e.readFlag()){let n=e.readInt(11),i=t.get(n);if(i){let e=i.className.replace(/Data$/,"");(r=a.get(e))||oo(" identifyGhostViaDataBlock: dbId=%d className=%s ghostName=%s (no ghost parser)",n,i.className,e)}else oo(" identifyGhostViaDataBlock: dbId=%d (no DataBlock found)",n)}else oo(" identifyGhostViaDataBlock: DataBlock flag=0")}catch{}return e.restorePos(n),{entry:r,dbFlag:i}}readRawMove(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),a=t.getInt32(0,!0),r=t.getInt32(4,!0),n=t.getInt32(8,!0),i=t.getUint32(12,!0),o=t.getUint32(16,!0),s=t.getUint32(20,!0),l=t.getFloat32(24,!0),c=t.getFloat32(28,!0),d=t.getFloat32(32,!0),u=t.getFloat32(36,!0),h=t.getFloat32(40,!0),m=t.getFloat32(44,!0),f=t.getUint32(48,!0),g=t.getUint32(52,!0),p=0!==e[56],y=[];for(let t=0;t<6;t++)y.push(0!==e[57+t]);return{px:a,py:r,pz:n,pyaw:i,ppitch:o,proll:s,x:l,y:c,z:d,yaw:u,pitch:h,roll:m,id:f,sendCount:g,freeLook:p,trigger:y}}readInfoBlock(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength);return{value1:t.getUint32(0,!0),value2:t.getFloat32(4,!0)}}}let oc=Object.freeze({r:0,g:255,b:0}),od=Object.freeze({r:255,g:0,b:0}),ou=new Set(["FlyingVehicle","HoverVehicle","WheeledVehicle"]),oh=new Set(["BombProjectile","EnergyProjectile","FlareProjectile","GrenadeProjectile","LinearFlareProjectile","LinearProjectile","Projectile","SeekerProjectile","TracerProjectile"]),om=new Set(["LinearProjectile","TracerProjectile","LinearFlareProjectile","Projectile"]),of=new Set(["GrenadeProjectile","EnergyProjectile","FlareProjectile","BombProjectile"]),og=new Set(["SeekerProjectile"]),op=new Set(["StaticShape","ScopeAlwaysShape","Turret","BeaconObject","ForceFieldBare"]),oy=new Set(["TSStatic","InteriorInstance","TerrainBlock","Sky","Sun","MissionArea","PhysicalZone","MissionMarker","SpawnSphere","VehicleBlocker","Camera"]),ov=.494*Math.PI,oF=new o.Matrix4,ob=new o.Quaternion,oS=new Map([["gui/hud_new_packammo",0],["gui/hud_new_packcloak",1],["gui/hud_new_packenergy",2],["gui/hud_new_packrepair",3],["gui/hud_new_packsatchel",4],["gui/hud_new_packshield",5],["gui/hud_new_packinventory",6],["gui/hud_new_packmotionsens",7],["gui/hud_new_packradar",8],["gui/hud_new_packturretout",9],["gui/hud_new_packturretin",10],["gui/hud_new_packsensjam",11],["gui/hud_new_packturret",12],["gui/hud_satchel_unarmed",18]]);function ox(e){return null!=e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)}function ok(e,t,a){return ea?a:e}function ow(e){let t=-e/2;return[0,Math.sin(t),0,Math.cos(t)]}function oI(e){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(e.z)||!Number.isFinite(e.w))return null;let t=-e.y,a=-e.z,r=-e.x,n=e.w,i=t*t+a*a+r*r+n*n;if(i<=1e-12)return null;let o=1/Math.sqrt(i);return[t*o,a*o,r*o,n*o]}function oC(e){let t="";for(let a=0;a=32&&(t+=e[a]);return t}let o_={2:0,3:1,4:2,5:3,6:4,7:5,8:6,11:7,12:8,14:9};function oP(e){for(let t=0;t=32)break}}function oD(e){let t=e.indexOf("~w");return -1===t?{text:e,wavPath:null}:{text:e.substring(0,t),wavPath:e.substring(t+2)}}function oM(e){return"Player"===e?"Player":ou.has(e)?"Vehicle":"Item"===e?"Item":oh.has(e)?"Projectile":op.has(e)?"Deployable":"Ghost"}function oT(e,t){return"Player"===e?`player_${t}`:ou.has(e)?`vehicle_${t}`:"Item"===e?`item_${t}`:oh.has(e)?`projectile_${t}`:op.has(e)?`deployable_${t}`:`ghost_${t}`}function oE(e){return!!e&&"object"==typeof e&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z&&"number"==typeof e.w}function oB(e){return!!e&&"object"==typeof e&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z}function oj(e){if(e){for(let t of[e.shapeName,e.projectileShapeName,e.shapeFileName,e.shapeFile,e.model])if("string"==typeof t&&t.length>0)return t}}function oR(e,t){if(e)for(let a of t){let t=e[a];if("number"==typeof t&&Number.isFinite(t))return t}}function oN(e,t){if(e)for(let a of t){let t=e[a];if("string"==typeof t&&t.length>0)return t}}function oA(e){return e?"number"==typeof e.cameraMode?"camera":"number"==typeof e.rotationZ?"player":null:null}class oG{parser;initialBlock;registry;netStrings=new Map;targetNames=new Map;targetTeams=new Map;targetRenderFlags=new Map;sensorGroupColors=new Map;state;_teamScoresGen=0;_rosterGen=0;_weaponsHudGen=0;_inventoryHudGen=0;_cachedSnapshot=null;_cachedSnapshotTick=-1;_snap=null;constructor(e){this.parser=e,this.registry=e.getRegistry();const t=e.initialBlock;this.initialBlock={dataBlocks:t.dataBlocks,initialGhosts:t.initialGhosts,controlObjectGhostIndex:t.controlObjectGhostIndex,controlObjectData:t.controlObjectData,targetEntries:t.targetEntries,sensorGroupColors:t.sensorGroupColors,taggedStrings:t.taggedStrings,initialEvents:t.initialEvents,demoValues:t.demoValues},this.state={moveTicks:0,absoluteYaw:0,absolutePitch:0,lastAbsYaw:0,lastAbsPitch:0,lastControlType:"player",isPiloting:!1,lastOrbitDistance:void 0,exhausted:!1,latestFov:100,latestControl:{ghostIndex:t.controlObjectGhostIndex,data:t.controlObjectData,position:ox(t.controlObjectData?.position)?t.controlObjectData?.position:void 0},camera:null,entitiesById:new Map,entityIdByGhostIndex:new Map,lastStatus:{health:1,energy:1},nextExplosionId:0,playerSensorGroup:0,chatMessages:[],pendingAudioEvents:[],weaponsHud:{slots:new Map,activeIndex:-1},backpackHud:{packIndex:-1,active:!1,text:""},inventoryHud:{slots:new Map,activeSlot:-1},teamScores:[],playerRoster:new Map},this.reset()}reset(){for(let[e,t]of(this.parser.reset(),this._cachedSnapshot=null,this._cachedSnapshotTick=-1,this._snap=null,this.netStrings.clear(),this.targetNames.clear(),this.targetTeams.clear(),this.targetRenderFlags.clear(),this.sensorGroupColors.clear(),this.state.entitiesById.clear(),this.state.entityIdByGhostIndex.clear(),this.initialBlock.taggedStrings))this.netStrings.set(e,t);for(let e of this.initialBlock.targetEntries)e.name&&this.targetNames.set(e.targetId,oC(e.name)),this.targetTeams.set(e.targetId,e.sensorGroup),this.targetRenderFlags.set(e.targetId,e.targetData);for(let e of this.initialBlock.sensorGroupColors){let t=this.sensorGroupColors.get(e.group);t||(t=new Map,this.sensorGroupColors.set(e.group,t)),t.set(e.targetGroup,{r:e.r,g:e.g,b:e.b})}if(this.state.playerSensorGroup=0,this.state.chatMessages=[],this.state.pendingAudioEvents=[],this.state.weaponsHud={slots:new Map,activeIndex:-1},this.state.backpackHud={packIndex:-1,active:!1,text:""},this.state.inventoryHud={slots:new Map,activeSlot:-1},this.state.teamScores=[],this.state.playerRoster=new Map,this.state.moveTicks=0,this.state.absoluteYaw=0,this.state.absolutePitch=0,this.state.lastAbsYaw=0,this.state.lastAbsPitch=0,this.state.lastControlType=oA(this.initialBlock.controlObjectData)??"player",this.state.isPiloting="player"===this.state.lastControlType&&!!(this.initialBlock.controlObjectData?.pilot||this.initialBlock.controlObjectData?.controlObjectGhost!=null),this.state.lastCameraMode="camera"===this.state.lastControlType&&"number"==typeof this.initialBlock.controlObjectData?.cameraMode?this.initialBlock.controlObjectData.cameraMode:void 0,this.state.lastOrbitGhostIndex="camera"===this.state.lastControlType&&"number"==typeof this.initialBlock.controlObjectData?.orbitObjectGhostIndex?this.initialBlock.controlObjectData.orbitObjectGhostIndex:void 0,"camera"===this.state.lastControlType){let e=this.initialBlock.controlObjectData?.minOrbitDist,t=this.initialBlock.controlObjectData?.maxOrbitDist,a=this.initialBlock.controlObjectData?.curOrbitDist;"number"==typeof e&&"number"==typeof t&&Number.isFinite(e)&&Number.isFinite(t)?this.state.lastOrbitDistance=Math.max(0,t-e):"number"==typeof a&&Number.isFinite(a)?this.state.lastOrbitDistance=Math.max(0,a):this.state.lastOrbitDistance=void 0}else this.state.lastOrbitDistance=void 0;let e=this.getAbsoluteRotation(this.initialBlock.controlObjectData);for(let t of(e&&(this.state.absoluteYaw=e.yaw,this.state.absolutePitch=e.pitch,this.state.lastAbsYaw=e.yaw,this.state.lastAbsPitch=e.pitch),this.state.exhausted=!1,this.state.latestFov=100,this.state.latestControl={ghostIndex:this.initialBlock.controlObjectGhostIndex,data:this.initialBlock.controlObjectData,position:ox(this.initialBlock.controlObjectData?.position)?this.initialBlock.controlObjectData?.position:void 0},this.state.controlPlayerGhostId="player"===this.state.lastControlType&&this.initialBlock.controlObjectGhostIndex>=0?`player_${this.initialBlock.controlObjectGhostIndex}`:void 0,this.state.camera=null,this.state.lastStatus={health:1,energy:1},this.state.nextExplosionId=0,this.initialBlock.initialGhosts)){if("create"!==t.type||null==t.classId)continue;let e=this.registry.getGhostParser(t.classId)?.name??`ghost_${t.classId}`,a=oT(e,t.index),r={id:a,ghostIndex:t.index,className:e,spawnTick:0,type:oM(e),rotation:[0,0,0,1]};this.applyGhostData(r,t.parsedData),this.state.entitiesById.set(a,r),this.state.entityIdByGhostIndex.set(t.index,a)}if(0===this.state.playerSensorGroup&&"player"===this.state.lastControlType&&this.state.latestControl.ghostIndex>=0){let e=this.state.entityIdByGhostIndex.get(this.state.latestControl.ghostIndex),t=e?this.state.entitiesById.get(e):void 0;t?.sensorGroup!=null&&t.sensorGroup>0&&(this.state.playerSensorGroup=t.sensorGroup)}for(let e of this.initialBlock.initialEvents){let t=this.registry.getEventParser(e.classId)?.name;if("SetSensorGroupEvent"===t&&e.parsedData){let t=e.parsedData.sensorGroup;null!=t&&(this.state.playerSensorGroup=t)}else if("RemoteCommandEvent"===t&&e.parsedData){let t=this.resolveNetString(e.parsedData.funcName),a=e.parsedData.args;"ServerMessage"===t&&this.handleServerMessage(a),this.handleHudRemoteCommand(t,a)}}let t=function(e){let t={weaponsHud:null,backpackHud:null,inventoryHud:null,teamScores:[],playerRoster:new Map,chatMessages:[],gravity:-20};if(!e.length)return t;let a=0,r=()=>{let t=e[a++];return""===t?"":t??""};if(r(),a>=e.length)return t;let n=parseInt(r(),10)||0,i=new Map;for(let e=0;e0&&i.set(o,(i.get(o)??0)+1)}if(a>=e.length||(r(),a>=e.length))return t;{let e=r().split(" "),a=e[0]??"",n="1"===e[1]||"true"===e[1],i=e[2]??"",o="1"===e[4]||"true"===e[4];n&&a&&(t.backpackHud={packIndex:function(e){let t=e.toLowerCase();for(let[e,a]of oS)if(e===t)return a;return -1}(a),active:o,text:i})}if(a>=e.length)return t;let o=r().split(" "),s=parseInt(o[4],10)||0,l=parseInt(o[5],10)||0,c=parseInt(o[6],10);for(let e=0;e=e.length)return t;let u=r().split(" "),h=parseInt(u[4],10)||0,m=parseInt(u[5],10)||0,f=parseInt(u[6],10);for(let e=0;e0)||e.set(a,n)}e.size>0&&(t.inventoryHud={slots:e,activeSlot:isNaN(f)?-1:f})}if(a>=e.length)return t;let g=r().split(" "),p=g[1]??"",y=parseInt(g[2],10)||0,v=[];for(let e=0;e=8)for(let e=0;e<2;e++){let a=4*e,r=e+1;t.teamScores.push({teamId:r,name:v[a]??"",score:parseInt(v[a+1],10)||0,playerCount:i.get(r)??0})}else if("TR2Game"===p&&y>=4)for(let e=0;e<2;e++){let a=2*e,r=e+1;t.teamScores.push({teamId:r,name:v[a+1]??"",score:parseInt(v[a],10)||0,playerCount:i.get(r)??0})}if(a>=e.length)return t;r();for(let n=0;n<10&&!(a>=e.length);n++){let e=r();e&&t.chatMessages.push(e)}if(a=32&&(r+=e[i]);continue}let s=o_[o];void 0!==s?(r&&(t.push({text:r,colorCode:a}),r=""),a=s):15===o?(r&&(t.push({text:r,colorCode:a}),r=""),a=0):o>=32&&(r+=e[i])}return r&&t.push({text:r,colorCode:a}),t}(e);if(!t.length)continue;let a=t.map(e=>e.text).join("");if(!a.trim())continue;let r=t[0].colorCode;if(t.some(e=>3===e.colorCode||4===e.colorCode)&&a.includes(": ")){let e=a.indexOf(": ");this.state.chatMessages.push({timeSec:0,sender:a.slice(0,e),text:a.slice(e+2),kind:"chat",colorCode:r,segments:t})}else this.state.chatMessages.push({timeSec:0,sender:"",text:a,kind:"server",colorCode:r,segments:t})}this.updateCameraAndHud()}getSnapshot(){if(this._cachedSnapshot&&this._cachedSnapshotTick===this.state.moveTicks)return this._cachedSnapshot;let e=this.buildSnapshot();return this._cachedSnapshot=e,this._cachedSnapshotTick=this.state.moveTicks,e}getEffectShapes(){let e=new Set,t=t=>{let a=t.dtsFileName;a&&e.add(a);let r=t.subExplosions;if(Array.isArray(r))for(let t of r){if(null==t)continue;let a=this.getDataBlockData(t);a?.dtsFileName&&e.add(a.dtsFileName)}};for(let[,e]of this.initialBlock.dataBlocks){let a=e.data?.explosion;if(null==a)continue;let r=this.getDataBlockData(a);r&&t(r)}return[...e]}stepToTime(e,t=1/0){let a=Math.floor(1e3*(Number.isFinite(e)?Math.max(0,e):0)/32),r=!1;a0&&(this.state.playerSensorGroup=t.sensorGroup)}if(a){let e=oA(a);if(e&&(this.state.lastControlType=e),"player"===this.state.lastControlType)this.state.isPiloting=!!(a.pilot||null!=a.controlObjectGhost);else if(this.state.isPiloting=!1,"number"==typeof a.cameraMode)if(this.state.lastCameraMode=a.cameraMode,3===a.cameraMode){"number"==typeof a.orbitObjectGhostIndex&&(this.state.lastOrbitGhostIndex=a.orbitObjectGhostIndex);let e=a.minOrbitDist,t=a.maxOrbitDist,r=a.curOrbitDist;"number"==typeof e&&"number"==typeof t&&Number.isFinite(e)&&Number.isFinite(t)?this.state.lastOrbitDistance=Math.max(0,t-e):"number"==typeof r&&Number.isFinite(r)&&(this.state.lastOrbitDistance=Math.max(0,r))}else this.state.lastOrbitGhostIndex=void 0,this.state.lastOrbitDistance=void 0;let t=this.getAbsoluteRotation(a);t&&(this.state.absoluteYaw=t.yaw,this.state.absolutePitch=t.pitch,this.state.lastAbsYaw=t.yaw,this.state.lastAbsPitch=t.pitch)}for(let e of t.events){let t=this.registry.getEventParser(e.classId)?.name;if("NetStringEvent"===t&&e.parsedData){let t=e.parsedData.id,a=e.parsedData.value;null!=t&&"string"==typeof a&&this.netStrings.set(t,a);continue}if("TargetInfoEvent"===t&&e.parsedData){let t=e.parsedData.targetId,a=e.parsedData.nameTag;if(null!=t&&null!=a){let e=this.netStrings.get(a);e&&this.targetNames.set(t,oC(e))}let r=e.parsedData.sensorGroup;null!=t&&null!=r&&this.targetTeams.set(t,r);let n=e.parsedData.renderFlags;if(null!=t&&null!=n)for(let e of(this.targetRenderFlags.set(t,n),this.state.entitiesById.values()))e.targetId===t&&(e.targetRenderFlags=n)}else if("SetSensorGroupEvent"===t&&e.parsedData){let t=e.parsedData.sensorGroup;null!=t&&(this.state.playerSensorGroup=t)}else if("SensorGroupColorEvent"===t&&e.parsedData){let t=e.parsedData.sensorGroup,a=e.parsedData.colors;if(a){let e=this.sensorGroupColors.get(t);for(let r of(e||(e=new Map,this.sensorGroupColors.set(t,e)),a))r.default?e.delete(r.index):e.set(r.index,{r:r.r??0,g:r.g??0,b:r.b??0})}}else if("RemoteCommandEvent"===t&&e.parsedData){let t=this.resolveNetString(e.parsedData.funcName),a=e.parsedData.args,r=.032*this.state.moveTicks;if("ChatMessage"===t&&a.length>=4){let e=oP(this.resolveNetString(a[3])),t=a[4]?oC(this.resolveNetString(a[4])):"",n=this.formatRemoteArgs(a[3],a.slice(4));if(n){let i,o,s=n.indexOf(": "),{text:l,wavPath:c}=oD(s>=0?n.slice(s+2):n);if(c){let e=this.resolveNetString(a[1]);i=e?`voice/${e}/${c}.wav`:c;let t=this.resolveNetString(a[2]);if(t){let e=parseFloat(t);Number.isFinite(e)&&(o=Math.max(.5,Math.min(2,e)))}}let d=e??0;this.pushChatMessage({timeSec:r,sender:t,text:l,kind:"chat",colorCode:d,segments:[{text:t?`${t}: ${l}`:l,colorCode:d}],soundPath:i,soundPitch:o})}}else if("CannedChatMessage"===t&&a.length>=6){let e=oP(this.resolveNetString(a[1])),t=oC(this.resolveNetString(a[2])),n=oC(this.resolveNetString(a[4])),i=this.formatRemoteArgs(a[1],a.slice(2));if(i){let o,s,{wavPath:l}=oD(i),c=oD(oC(this.resolveNetString(a[3]))).text;if(l){let e=this.resolveNetString(a[5]);if(o=e?`voice/${e}/${l}.wav`:l,a[6]){let e=parseFloat(this.resolveNetString(a[6]));Number.isFinite(e)&&(s=Math.max(.5,Math.min(2,e)))}}let d=e??0,u=[];n&&u.push({text:`[${n}] `,colorCode:0}),u.push({text:t?`${t}: ${c}`:c,colorCode:d}),this.pushChatMessage({timeSec:r,sender:t,text:c,kind:"chat",colorCode:d,segments:u,soundPath:o,soundPitch:s})}}else if("ServerMessage"===t&&a.length>=2){this.handleServerMessage(a);let e=oP(this.resolveNetString(a[1])),t=this.formatRemoteArgs(a[1],a.slice(2));if(t){let{text:a,wavPath:n}=oD(t),i=e??0;this.pushChatMessage({timeSec:r,sender:"",text:a,kind:"server",colorCode:i,segments:[{text:a,colorCode:i}],soundPath:n??void 0})}}else this.handleHudRemoteCommand(t,a)}else if(("Sim3DAudioEvent"===t||"Sim2DAudioEvent"===t)&&e.parsedData){let a=e.parsedData.profileId;if("number"==typeof a){let r=.032*this.state.moveTicks,n="Sim3DAudioEvent"===t?e.parsedData.position:void 0;this.state.pendingAudioEvents.push({profileId:a,position:n,timeSec:r}),this.state.pendingAudioEvents.length>100&&this.state.pendingAudioEvents.splice(0,this.state.pendingAudioEvents.length-100)}}}for(let e of t.ghosts)this.applyPacketGhost(e);return}if(3===e.type&&this.isInfoData(e.parsed)){Number.isFinite(e.parsed.value2)&&(this.state.latestFov=e.parsed.value2);return}if(2===e.type&&this.isMoveData(e.parsed)){this.state.absoluteYaw+=e.parsed.yaw??0;let t=2*Math.PI;this.state.absoluteYaw=(this.state.absoluteYaw%t+t)%t,this.state.absolutePitch=ok(this.state.absolutePitch+(e.parsed.pitch??0),-ov,ov)}}applyPacketGhost(e){let t,a=e.index,r=this.state.entityIdByGhostIndex.get(a);if(r){let t=this.state.entitiesById.get(r);t&&"Projectile"===t.type&&!t.hasExploded&&null!=t.explosionDataBlockId&&t.position&&("delete"===e.type||"create"===e.type)&&this.spawnExplosion(t,[...t.position])}if("delete"===e.type){r&&(this.state.entitiesById.delete(r),this.state.entityIdByGhostIndex.delete(a));return}let n=this.resolveGhostClassName(a,e.classId);if(!n)return;let i=oT(n,a);r&&r!==i&&this.state.entitiesById.delete(r);let o=this.state.entitiesById.get(i);o&&"create"===e.type?(o.spawnTick=this.state.moveTicks,o.rotation=[0,0,0,1],o.hasExploded=void 0,o.explosionShape=void 0,o.explosionLifetimeTicks=void 0,o.faceViewer=void 0,o.simulatedVelocity=void 0,o.projectilePhysics=void 0,o.gravityMod=void 0,o.direction=void 0,o.velocity=void 0,o.position=void 0,o.dataBlock=void 0,o.dataBlockId=void 0,o.shapeHint=void 0,o.visual=void 0,o.targetId=void 0,o.targetRenderFlags=void 0,o.carryingFlag=void 0,o.sensorGroup=void 0,o.playerName=void 0,o.weaponShape=void 0,o.weaponImageState=void 0,o.weaponImageStates=void 0,o.weaponImageStatesDbId=void 0,o.itemPhysics=void 0,o.threads=void 0,o.headPitch=void 0,o.headYaw=void 0,o.health=void 0,o.energy=void 0,o.maxEnergy=void 0,o.damageState=void 0,o.actionAnim=void 0,o.actionAtEnd=void 0,o.explosionDataBlockId=void 0,o.maintainEmitterId=void 0,t=o):o?t=o:(t={id:i,ghostIndex:a,className:n,spawnTick:this.state.moveTicks,type:oM(n),rotation:[0,0,0,1]},this.state.entitiesById.set(i,t)),t.ghostIndex=a,t.className=n,t.type=oM(n),this.state.entityIdByGhostIndex.set(a,i),this.applyGhostData(t,e.parsedData)}resolveGhostClassName(e,t){if("number"==typeof t){let e=this.registry.getGhostParser(t)?.name;if(e)return e}let a=this.state.entityIdByGhostIndex.get(e);if(a){let e=this.state.entitiesById.get(a);if(e?.className)return e.className}let r=this.parser.getGhostTracker().getGhost(e);if(r?.className)return r.className}resolveEntityIdForGhostIndex(e){let t=this.state.entityIdByGhostIndex.get(e);if(t)return t;let a=this.parser.getGhostTracker().getGhost(e);if(a)return oT(a.className,e)}getDataBlockData(e){let t=this.initialBlock.dataBlocks.get(e);if(t?.data)return t.data;let a=this.parser.getPacketParser();return a.dataBlockDataMap?.get(e)}resolveExplosionInfo(e){let t=this.getDataBlockData(e);if(!t)return;let a=t.explosion;if(null==a)return;let r=this.getDataBlockData(a);if(!r)return;let n=r.dtsFileName||void 0,i=r.lifetimeMS??31;return{shape:n,faceViewer:!1!==r.faceViewer&&0!==r.faceViewer,lifetimeTicks:i,explosionDataBlockId:a}}applyGhostData(e,t){if(!t)return;let a=t.dataBlockId;if(null!=a){e.dataBlockId=a;let t=this.getDataBlockData(a),r=oj(t);if(e.visual=function(e,t){if(!t)return;let a=oN(t,["tracerTex0","textureName0","texture0"])??"";if(!("TracerProjectile"===e||a.length>0&&null!=oR(t,["tracerLength"]))||!a)return;let r=oN(t,["tracerTex1","textureName1","texture1"]),n=oR(t,["tracerLength"])??10,i=oR(t,["tracerWidth"]),o=oR(t,["tracerAlpha"]),s=null!=i&&(null!=oR(t,["crossViewAng"])||i<=.7)?i:o??i??.5,l=oR(t,["crossViewAng","crossViewFraction"])??("number"==typeof t.tracerWidth&&t.tracerWidth>.7?t.tracerWidth:.98);return{kind:"tracer",texture:a,crossTexture:r,tracerLength:n,tracerWidth:s,crossViewAng:l,crossSize:oR(t,["crossSize","muzzleVelocity"])??.45,renderCross:function(e,t){if(e)for(let a of t){let t=e[a];if("boolean"==typeof t)return t}}(t,["renderCross","proximityRadius"])??!0}}(e.className,t)??function(e,t){if(t){if("LinearFlareProjectile"===e){let e=oN(t,["smokeTexture","flareTexture"]);if(!e)return;let a=t.flareColor,r=oR(t,["size"])??.5;return{kind:"sprite",texture:e,color:a?{r:a.r,g:a.g,b:a.b}:{r:1,g:1,b:1},size:r}}if("FlareProjectile"===e){let e=oN(t,["flareTexture"]);if(!e)return;return{kind:"sprite",texture:e,color:{r:1,g:.9,b:.5},size:oR(t,["size"])??4}}}}(e.className,t),"string"==typeof r&&(e.shapeHint=r,e.dataBlock=r),"Player"===e.type&&"number"==typeof t?.maxEnergy&&(e.maxEnergy=t.maxEnergy),"Projectile"===e.type&&(om.has(e.className)?e.projectilePhysics="linear":of.has(e.className)?(e.projectilePhysics="ballistic",e.gravityMod=oR(t,["gravityMod"])??1):og.has(e.className)&&(e.projectilePhysics="seeker")),"Projectile"===e.type&&null==e.explosionDataBlockId){let t=this.resolveExplosionInfo(a);t&&(e.explosionShape=t.shape,e.faceViewer=t.faceViewer,e.explosionLifetimeTicks=t.lifetimeTicks,e.explosionDataBlockId=t.explosionDataBlockId)}if("Projectile"===e.type&&null==e.maintainEmitterId){let a=t?.baseEmitter;"number"==typeof a&&a>0&&(e.maintainEmitterId=a)}}if("Player"===e.type){let a=t.images;if(Array.isArray(a)&&a.length>0){let t=a.find(e=>0===e.index);if(t?.dataBlockId&&t.dataBlockId>0){let a=this.getDataBlockData(t.dataBlockId),r=oj(a);if(r){let t=a?.mountPoint;(null==t||t<=0)&&!/pack_/i.test(r)&&(e.weaponShape=r)}let n=e.weaponImageState;e.weaponImageState={dataBlockId:t.dataBlockId,triggerDown:t.triggerDown??n?.triggerDown??!1,ammo:t.ammo??n?.ammo??!0,loaded:t.loaded??n?.loaded??!0,target:t.target??n?.target??!1,wet:t.wet??n?.wet??!1,fireCount:t.fireCount??n?.fireCount??0},a&&e.weaponImageStatesDbId!==t.dataBlockId&&(e.weaponImageStates=function(e){let t=e.states;if(Array.isArray(t)&&0!==t.length)return t.map(e=>{let t=e=>null==e?-1:e-1;return{name:e.name??"",transitionOnNotLoaded:t(e.transitionOnAmmo),transitionOnLoaded:t(e.transitionOnNoAmmo),transitionOnNoAmmo:t(e.transitionOnTarget),transitionOnAmmo:t(e.transitionOnNoTarget),transitionOnNoTarget:t(e.transitionOnWet),transitionOnTarget:t(e.transitionOnNotWet),transitionOnNotWet:t(e.transitionOnTriggerUp),transitionOnWet:t(e.transitionOnTriggerDown),transitionOnTriggerUp:t(e.transitionOnTimeout),transitionOnTriggerDown:t(e.transitionGeneric0In),transitionOnTimeout:t(e.transitionGeneric0Out),timeoutValue:e.timeoutValue,waitForTimeout:e.waitForTimeout??!1,fire:e.fire??!1,sequence:e.sequence,spin:e.spin??0,direction:e.direction??!0,scaleAnimation:e.scaleAnimation??!1,loaded:e.loaded??0,soundDataBlockId:e.sound??-1}})}(a),e.weaponImageStatesDbId=t.dataBlockId)}else t&&!t.dataBlockId&&(e.weaponShape=void 0,e.weaponImageState=void 0,e.weaponImageStates=void 0);let r=a.find(e=>3===e.index);if(r){let t=!!r.dataBlockId&&r.dataBlockId>0;if(e.carryingFlag=t,null!=e.targetId&&e.targetId>=0){let a=this.targetRenderFlags.get(e.targetId)??0,r=t?2|a:-3&a;r!==a&&(this.targetRenderFlags.set(e.targetId,r),e.targetRenderFlags=r)}}}}let r=ox(t.position)?t.position:ox(t.initialPosition)?t.initialPosition:ox(t.explodePosition)?t.explodePosition:ox(t.endPoint)?t.endPoint:ox(t.transform?.position)?t.transform.position:void 0;r&&(e.position=[r.x,r.y,r.z]);let n=oB(t.direction)?t.direction:void 0;if(n&&(e.direction=[n.x,n.y,n.z]),"Player"===e.type&&"number"==typeof t.rotationZ&&(e.rotation=ow(t.rotationZ)),"Player"===e.type&&("number"==typeof t.headX&&(e.headPitch=t.headX),"number"==typeof t.headZ&&(e.headYaw=t.headZ)),oE(t.angPosition)){let a=oI(t.angPosition);a&&(e.rotation=a)}else if(oE(t.transform?.rotation)){let a=oI(t.transform.rotation);a&&(e.rotation=a)}else if("Item"===e.type&&"number"==typeof t.rotation?.angle){let a=t.rotation;e.rotation=ow((a.zSign??1)*a.angle)}else if("Projectile"===e.type){let a=t.velocity??t.direction??(ox(t.initialPosition)&&ox(t.endPos)?{x:t.endPos.x-t.initialPosition.x,y:t.endPos.y-t.initialPosition.y,z:t.endPos.z-t.initialPosition.z}:void 0);oB(a)&&(0!==a.x||0!==a.y)&&(e.rotation=ow(Math.atan2(a.x,a.y)))}if(oB(t.velocity)&&(e.velocity=[t.velocity.x,t.velocity.y,t.velocity.z],e.direction||(e.direction=[t.velocity.x,t.velocity.y,t.velocity.z])),"Item"===e.type){let a=t.atRest,n=t.warp;if(!0===a||!1===n)e.itemPhysics=void 0;else if(!1===a&&oB(t.velocity)){let a=null!=e.dataBlockId?this.getDataBlockData(e.dataBlockId):void 0;e.itemPhysics={velocity:[t.velocity.x,t.velocity.y,t.velocity.z],atRest:!1,elasticity:oR(a,["elasticity"])??.2,friction:oR(a,["friction"])??.6,gravityMod:oR(a,["gravityMod"])??1}}else r&&!oB(t.velocity)&&(e.itemPhysics=void 0)}if(e.projectilePhysics)if("linear"===e.projectilePhysics){let a=oR(null!=e.dataBlockId?this.getDataBlockData(e.dataBlockId):void 0,["dryVelocity","muzzleVelocity","bulletVelocity"])??80,r=e.direction??[0,1,0],n=r[0]*a,i=r[1]*a,o=r[2]*a,s=t.excessVel,l=t.excessDir;"number"==typeof s&&s>0&&oB(l)&&(n+=l.x*s,i+=l.y*s,o+=l.z*s),e.simulatedVelocity=[n,i,o]}else oB(t.velocity)&&(e.simulatedVelocity=[t.velocity.x,t.velocity.y,t.velocity.z]);if(e.projectilePhysics){let a=t.currTick;if("number"==typeof a&&a>0&&e.simulatedVelocity&&e.position){let t=.032*a,r=e.simulatedVelocity;if(e.position[0]+=r[0]*t,e.position[1]+=r[1]*t,e.position[2]+=r[2]*t,"ballistic"===e.projectilePhysics){let a=-9.81*(e.gravityMod??1);e.position[2]+=.5*a*t*t,r[2]+=a*t}}}let i=ox(t.explodePosition)?t.explodePosition:ox(t.explodePoint)?t.explodePoint:void 0;if("Projectile"===e.type&&!e.hasExploded&&i&&null!=e.explosionDataBlockId&&this.spawnExplosion(e,[i.x,i.y,i.z]),"number"==typeof t.damageLevel&&(e.health=ok(1-t.damageLevel,0,1)),"number"==typeof t.damageState&&(e.damageState=t.damageState),"number"==typeof t.action&&(e.actionAnim=t.action,e.actionAtEnd=!!t.actionAtEnd),Array.isArray(t.threads)){let a=t.threads;if(e.threads){let t=[...e.threads];for(let e of a){let a=t.findIndex(t=>t.index===e.index);a>=0?t[a]=e:t.push(e)}e.threads=t}else e.threads=a}if("number"==typeof t.energy&&(e.energy=ok(t.energy,0,1)),"number"==typeof t.targetId){e.targetId=t.targetId;let a=this.targetNames.get(t.targetId);a&&(e.playerName=a);let r=this.targetTeams.get(t.targetId);null!=r&&(e.sensorGroup=r,e.ghostIndex===this.state.latestControl.ghostIndex&&"player"===this.state.lastControlType&&(this.state.playerSensorGroup=r));let n=this.targetRenderFlags.get(t.targetId);null!=n&&(e.targetRenderFlags=n)}let o=t.sounds;if(Array.isArray(o)){let t=.032*this.state.moveTicks;for(let a of o)if(a.playing&&"number"==typeof a.profileId){let r=e.position;this.state.pendingAudioEvents.push({profileId:a.profileId,position:r?{x:r[0],y:r[1],z:r[2]}:void 0,timeSec:t})}}}advanceProjectiles(){for(let e of this.state.entitiesById.values()){if(!e.simulatedVelocity||!e.position)continue;let t=e.simulatedVelocity,a=e.position;"ballistic"===e.projectilePhysics&&(t[2]+=-9.81*(e.gravityMod??1)*.032),a[0]+=.032*t[0],a[1]+=.032*t[1],a[2]+=.032*t[2],(0!==t[0]||0!==t[1])&&(e.rotation=ow(Math.atan2(t[0],t[1])))}}advanceItems(){for(let a of this.state.entitiesById.values()){var e,t;let r=a.itemPhysics;if(!r||r.atRest||!a.position)continue;let n=r.velocity,i=a.position;n[2]+=-20*r.gravityMod*.032,i[0]+=.032*n[0],i[1]+=.032*n[1],i[2]+=.032*n[2];let o=(e=i[0],t=i[1],_?_(e,t):null);if(null!=o&&i[2]0){let e=Math.max(0,1-t/a);n[0]*=e,n[1]*=e}.15>Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2])&&(n[0]=n[1]=n[2]=0,r.atRest=!0)}}}spawnExplosion(e,t){e.hasExploded=!0;let a=e.explosionLifetimeTicks??31,r=`fx_${this.state.nextExplosionId++}`,n={id:r,ghostIndex:-1,className:"Explosion",spawnTick:this.state.moveTicks,type:"Explosion",dataBlock:e.explosionShape,explosionDataBlockId:e.explosionDataBlockId,position:t,rotation:[0,0,0,1],isExplosion:!0,faceViewer:!1!==e.faceViewer,expiryTick:this.state.moveTicks+a};if(this.state.entitiesById.set(r,n),null!=e.explosionDataBlockId){let a=this.getDataBlockData(e.explosionDataBlockId),r=a?.subExplosions;if(Array.isArray(r))for(let e of r){if(null==e)continue;let a=this.getDataBlockData(e);if(!a)continue;let r=a.dtsFileName||void 0;if(!r)continue;let n=a.lifetimeMS??31,i=a.offset??0,o=Math.random()*Math.PI*2,s=[t[0]+Math.cos(o)*i,t[1]+Math.sin(o)*i,t[2]],l=`fx_${this.state.nextExplosionId++}`,c={id:l,ghostIndex:-1,className:"Explosion",spawnTick:this.state.moveTicks,type:"Explosion",dataBlock:r,explosionDataBlockId:e,position:s,rotation:[0,0,0,1],isExplosion:!0,faceViewer:!1!==a.faceViewer&&0!==a.faceViewer,expiryTick:this.state.moveTicks+n};this.state.entitiesById.set(l,c)}}e.position=void 0,e.simulatedVelocity=void 0}removeExpiredExplosions(){for(let[e,t]of this.state.entitiesById)t.isExplosion&&null!=t.expiryTick&&this.state.moveTicks>=t.expiryTick&&this.state.entitiesById.delete(e)}updateCameraAndHud(){let e=this.state.latestControl,t=.032*this.state.moveTicks,a=e.data,r=this.state.lastControlType;if(e.position){var n;let i,o,s,l,c=!this.state.isPiloting&&"player"===r,d=c?this.state.absoluteYaw:this.state.lastAbsYaw,u=c?this.state.absolutePitch:this.state.lastAbsPitch;if(c&&(this.state.lastAbsYaw=d,this.state.lastAbsPitch=u),this.state.camera={time:t,position:[e.position.x,e.position.y,e.position.z],rotation:(i=Math.sin(n=ok(u,-ov,ov)),o=Math.cos(n),s=Math.sin(d),l=Math.cos(d),oF.set(-s,l*i,-l*o,0,0,o,i,0,l,s*i,-s*o,0,0,0,0,1),ob.setFromRotationMatrix(oF),[ob.x,ob.y,ob.z,ob.w]),fov:this.state.latestFov,mode:"observer",yaw:d,pitch:u},"camera"===r)if(("number"==typeof a?.cameraMode?a.cameraMode:this.state.lastCameraMode)===3){this.state.camera.mode="third-person","number"==typeof this.state.lastOrbitDistance&&(this.state.camera.orbitDistance=this.state.lastOrbitDistance);let e="number"==typeof a?.orbitObjectGhostIndex?a.orbitObjectGhostIndex:this.state.lastOrbitGhostIndex;"number"==typeof e&&e>=0&&(this.state.camera.orbitTargetId=this.resolveEntityIdForGhostIndex(e))}else this.state.camera.mode="observer";else this.state.camera.mode="first-person",e.ghostIndex>=0&&(this.state.controlPlayerGhostId=`player_${e.ghostIndex}`),this.state.controlPlayerGhostId&&(this.state.camera.controlEntityId=this.state.controlPlayerGhostId);if("player"===r&&!this.state.isPiloting&&this.state.controlPlayerGhostId&&e.position){let t=this.state.entitiesById.get(this.state.controlPlayerGhostId);t&&(t.position=[e.position.x,e.position.y,e.position.z],t.rotation=ow(d),t.headPitch=ok(this.state.absolutePitch/ov,-1,1))}}else this.state.camera&&(this.state.camera={...this.state.camera,time:t,fov:this.state.latestFov});let i={health:1,energy:1};if(this.state.camera?.mode==="first-person"){let e=this.state.controlPlayerGhostId,t=e?this.state.entitiesById.get(e):void 0;i.health=t?.health??1;let r=a?.energyLevel;if("number"==typeof r){let e=t?.maxEnergy??60;e>0&&(i.energy=ok(r/e,0,1))}else i.energy=t?.energy??1}else if(this.state.camera?.mode==="third-person"&&this.state.camera.orbitTargetId){let e=this.state.entitiesById.get(this.state.camera.orbitTargetId);i.health=e?.health??1,i.energy=e?.energy??1}this.state.lastStatus=i}pushChatMessage(e){this.state.chatMessages.push(e),this.state.chatMessages.length>200&&this.state.chatMessages.splice(0,this.state.chatMessages.length-200)}handleServerMessage(e){if(e.length<2)return;let t=this.resolveNetString(e[0]);if("MsgTeamScoreIs"===t&&e.length>=4){let t=parseInt(this.resolveNetString(e[2]),10),a=parseInt(this.resolveNetString(e[3]),10);if(!isNaN(t)&&!isNaN(a)){let e=this.state.teamScores.find(e=>e.teamId===t);e&&(e.score=a,this._teamScoresGen++)}}else if("MsgCTFAddTeam"===t&&e.length>=6){let t=parseInt(this.resolveNetString(e[2]),10),a=oC(this.resolveNetString(e[3])),r=parseInt(this.resolveNetString(e[5]),10);if(!isNaN(t)){let e=t+1,n=this.state.teamScores.find(t=>t.teamId===e);n?(n.name=a,n.score=isNaN(r)?n.score:r):this.state.teamScores.push({teamId:e,name:a,score:isNaN(r)?0:r,playerCount:0}),this._teamScoresGen++}}else if("MsgClientJoin"===t&&e.length>=4){let t=parseInt(this.resolveNetString(e[2]),10),a=oC(this.resolveNetString(e[3]));if(!isNaN(t)){let e=this.state.playerRoster.get(t);this.state.playerRoster.set(t,{name:a,teamId:e?.teamId??0}),this._rosterGen++}}else if("MsgClientDrop"===t&&e.length>=3){let t=parseInt(this.resolveNetString(e[2]),10);!isNaN(t)&&(this.state.playerRoster.delete(t),this._rosterGen++)}else if("MsgClientJoinTeam"===t&&e.length>=4){let t=parseInt(this.resolveNetString(e[2]),10),a=parseInt(this.resolveNetString(e[3]),10);if(!isNaN(t)&&!isNaN(a)){let e=this.state.playerRoster.get(t);e?e.teamId=a:this.state.playerRoster.set(t,{name:"",teamId:a}),this._rosterGen++}}}handleHudRemoteCommand(e,t){if("setWeaponsHudItem"===e&&t.length>=3){let e=parseInt(t[0],10),a=parseInt(t[1],10),r="1"===t[2]||"true"===t[2];!isNaN(e)&&(r?this.state.weaponsHud.slots.set(e,isNaN(a)?-1:a):this.state.weaponsHud.slots.delete(e),this._weaponsHudGen++)}else if("setWeaponsHudAmmo"===e&&t.length>=2){let e=parseInt(t[0],10),a=parseInt(t[1],10);!isNaN(e)&&(this.state.weaponsHud.slots.set(e,isNaN(a)?-1:a),this._weaponsHudGen++)}else if("setWeaponsHudActive"===e&&t.length>=1){let e=parseInt(t[0],10);this.state.weaponsHud.activeIndex=isNaN(e)?-1:e,isNaN(e)||!(e>=0)||this.state.weaponsHud.slots.has(e)||this.state.weaponsHud.slots.set(e,-1),this._weaponsHudGen++}else if("setWeaponsHudClearAll"===e)this.state.weaponsHud.slots.clear(),this.state.weaponsHud.activeIndex=-1,this._weaponsHudGen++;else if("setBackpackHudItem"===e&&t.length>=2){let e=parseInt(t[0],10);"1"!==t[1]&&"true"!==t[1]||isNaN(e)?this.state.backpackHud.packIndex=-1:this.state.backpackHud.packIndex=e,this.state.backpackHud.active=!1,this.state.backpackHud.text=""}else if("setSatchelArmed"===e)this.state.backpackHud.active=!0;else if("setCloakIconOn"===e||"setRepairPackIconOn"===e||"setShieldIconOn"===e||"setSenJamIconOn"===e)this.state.backpackHud.active=!0;else if("setCloakIconOff"===e||"setRepairPackIconOff"===e||"setShieldIconOff"===e||"setSenJamIconOff"===e)this.state.backpackHud.active=!1;else if("updatePackText"===e&&t.length>=1)this.state.backpackHud.text=t[0]??"";else if("setInventoryHudItem"===e&&t.length>=3){let e=parseInt(t[0],10),a=parseInt(t[1],10),r="1"===t[2]||"true"===t[2];!isNaN(e)&&(r&&!isNaN(a)?this.state.inventoryHud.slots.set(e,a):this.state.inventoryHud.slots.delete(e),this._inventoryHudGen++)}else if("setInventoryHudAmount"===e&&t.length>=2){let e=parseInt(t[0],10),a=parseInt(t[1],10);!isNaN(e)&&!isNaN(a)&&(this.state.inventoryHud.slots.set(e,a),this._inventoryHudGen++)}else"setInventoryHudClearAll"===e&&(this.state.inventoryHud.slots.clear(),this.state.inventoryHud.activeSlot=-1,this._inventoryHudGen++)}buildSnapshot(){let e,t=[];for(let e of this.state.entitiesById.values()){if(!(e.spawnTick>0||!oy.has(e.className)))continue;let a=null!=e.targetId&&e.targetId>=0?this.targetRenderFlags.get(e.targetId)??e.targetRenderFlags:e.targetRenderFlags;"Player"!==e.type||e.carryingFlag||(a=null!=a?-3&a:a),t.push({id:e.id,type:e.type,visual:e.visual,direction:e.direction,ghostIndex:e.ghostIndex,className:e.className,dataBlockId:e.dataBlockId,shapeHint:e.shapeHint,dataBlock:e.dataBlock,weaponShape:e.weaponShape,playerName:e.playerName,targetRenderFlags:a,iffColor:("Player"===e.type||((a??0)&2)!=0)&&null!=e.sensorGroup?this.resolveIffColor(e.sensorGroup):void 0,position:e.position&&(e.simulatedVelocity||e.itemPhysics&&!e.itemPhysics.atRest)?[...e.position]:e.position,rotation:e.rotation,velocity:e.velocity,health:e.health,energy:e.energy,actionAnim:e.actionAnim,actionAtEnd:e.actionAtEnd,damageState:e.damageState,faceViewer:e.faceViewer,threads:e.threads,explosionDataBlockId:e.explosionDataBlockId,maintainEmitterId:e.maintainEmitterId,weaponImageState:e.weaponImageState,weaponImageStates:e.weaponImageStates,headPitch:e.headPitch,headYaw:e.headYaw})}let a=.032*this.state.moveTicks,r=this._snap,n=this.state.chatMessages.filter(e=>e.timeSec>a-15),i=this.state.pendingAudioEvents.filter(e=>e.timeSec>a-.5&&e.timeSec<=a),o=r&&r.weaponsHudGen===this._weaponsHudGen?r.weaponsHud:{slots:Array.from(this.state.weaponsHud.slots.entries()).map(([e,t])=>({index:e,ammo:t})),activeIndex:this.state.weaponsHud.activeIndex},s=r&&r.inventoryHudGen===this._inventoryHudGen?r.inventoryHud:{slots:Array.from(this.state.inventoryHud.slots.entries()).map(([e,t])=>({slot:e,count:t})),activeSlot:this.state.inventoryHud.activeSlot},l=r&&r.backpackPackIndex===this.state.backpackHud.packIndex&&r.backpackActive===this.state.backpackHud.active&&r.backpackText===this.state.backpackHud.text?r.backpackHud:this.state.backpackHud.packIndex>=0?{...this.state.backpackHud}:null;if(r&&r.teamScoresGen===this._teamScoresGen&&r.rosterGen===this._rosterGen)e=r.teamScores;else{e=this.state.teamScores.map(e=>({...e}));let t=new Map;for(let{teamId:e}of this.state.playerRoster.values())e>0&&t.set(e,(t.get(e)??0)+1);for(let a of e)a.playerCount=t.get(a.teamId)??0}return this._snap={teamScoresGen:this._teamScoresGen,rosterGen:this._rosterGen,teamScores:e,weaponsHudGen:this._weaponsHudGen,weaponsHud:o,inventoryHudGen:this._inventoryHudGen,inventoryHud:s,backpackPackIndex:this.state.backpackHud.packIndex,backpackActive:this.state.backpackHud.active,backpackText:this.state.backpackHud.text,backpackHud:l},{timeSec:a,exhausted:this.state.exhausted,camera:this.state.camera,entities:t,controlPlayerGhostId:this.state.controlPlayerGhostId,playerSensorGroup:this.state.playerSensorGroup,status:this.state.lastStatus,chatMessages:n,audioEvents:i,weaponsHud:o,backpackHud:l,inventoryHud:s,teamScores:e}}resolveIffColor(e){if(0===this.state.playerSensorGroup)return;let t=this.sensorGroupColors.get(this.state.playerSensorGroup);if(t){let a=t.get(e);if(a)return a}return e===this.state.playerSensorGroup?oc:0!==e?od:void 0}getAbsoluteRotation(e){return e?"number"==typeof e.rotationZ&&"number"==typeof e.headX?{yaw:e.rotationZ,pitch:e.headX}:"number"==typeof e.rotZ&&"number"==typeof e.rotX?{yaw:e.rotZ,pitch:e.rotX}:null:null}isPacketData(e){return!!e&&"object"==typeof e&&"gameState"in e&&"events"in e&&"ghosts"in e}isMoveData(e){return!!e&&"object"==typeof e&&"yaw"in e}isInfoData(e){return!!e&&"object"==typeof e&&"value2"in e&&"number"==typeof e.value2}resolveNetString(e){if(e.length>=2&&1===e.charCodeAt(0)){let t=parseInt(e.slice(1),10);if(Number.isFinite(t))return this.netStrings.get(t)??e}return e}formatRemoteArgs(e,t){let a=this.resolveNetString(e);for(let e=0;e{if(h){g.current=g.current+1,m(null);return}f.current?.click()},u[0]=h,u[1]=m,u[2]=e):e=u[2];let p=e;u[3]!==m?(t=async e=>{let t=e.target.files?.[0];if(t){e.target.value="";try{let e=await t.arrayBuffer(),a=g.current+1;g.current=a;let r=await oU(e);if(g.current!==a)return;m(r)}catch(e){console.error("Failed to load demo:",e)}}},u[3]=m,u[4]=t):t=u[4];let y=t;u[5]===Symbol.for("react.memo_cache_sentinel")?(i={display:"none"},u[5]=i):i=u[5],u[6]!==y?(o=(0,a.jsx)("input",{ref:f,type:"file",accept:".rec",style:i,onChange:y}),u[6]=y,u[7]=o):o=u[7];let v=h?"Unload demo":"Load demo (.rec)",F=h?"Unload demo":"Load demo (.rec)",b=h?"true":void 0;u[8]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)(t8,{className:oL.default.DemoIcon}),u[8]=s):s=u[8];let S=h?"Unload demo":"Demo";return u[9]!==S?(l=(0,a.jsx)("span",{className:oL.default.ButtonLabel,children:S}),u[9]=S,u[10]=l):l=u[10],u[11]!==p||u[12]!==v||u[13]!==F||u[14]!==b||u[15]!==l?(c=(0,a.jsxs)("button",{type:"button",className:oL.default.Root,"aria-label":v,title:F,onClick:p,"data-active":b,children:[s,l]}),u[11]=p,u[12]=v,u[13]=F,u[14]=b,u[15]=l,u[16]=c):c=u[16],u[17]!==c||u[18]!==o?(d=(0,a.jsxs)(a.Fragment,{children:[o,c]}),u[17]=c,u[18]=o,u[19]=d):d=u[19],d}function oO(e){return(0,t3.GenIcon)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"circle",attr:{cx:"12",cy:"12",r:"10"},child:[]},{tag:"line",attr:{x1:"12",y1:"16",x2:"12",y2:"12"},child:[]},{tag:"line",attr:{x1:"12",y1:"8",x2:"12.01",y2:"8"},child:[]}]})(e)}function oV(e){return(0,t3.GenIcon)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"circle",attr:{cx:"12",cy:"12",r:"3"},child:[]},{tag:"path",attr:{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"},child:[]}]})(e)}var oq=e.i(65883);function oH(e){let t,i,o,s,l,c,d,u,h,m,f,g,p,y,F,b,S,x,k,w,I,C,_,P,D,M,T,E,B,j,R,N,A,G,U,L,z,O,V,q=(0,r.c)(92),{missionName:H,missionType:W,onChangeMission:$,onOpenMapInfo:Y,isTouch:K,cameraRef:X}=e,{fogEnabled:Z,setFogEnabled:J,fov:Q,setFov:ee,audioEnabled:et,setAudioEnabled:ea,animationEnabled:er,setAnimationEnabled:en}=(0,v.useSettings)(),{speedMultiplier:ei,setSpeedMultiplier:eo,touchMode:es,setTouchMode:el}=(0,v.useControls)(),{debugMode:ec,setDebugMode:ed}=(0,v.useDebug)(),eu=null!=ts(),[eh,em]=(0,n.useState)(!1),ef=(0,n.useRef)(null),eg=(0,n.useRef)(null),ep=(0,n.useRef)(null);q[0]!==eh?(t=()=>{eh&&ef.current?.focus()},i=[eh],q[0]=eh,q[1]=t,q[2]=i):(t=q[1],i=q[2]),(0,n.useEffect)(t,i),q[3]===Symbol.for("react.memo_cache_sentinel")?(o=e=>{let t=e.relatedTarget;t&&ep.current?.contains(t)||em(!1)},q[3]=o):o=q[3];let ey=o;q[4]===Symbol.for("react.memo_cache_sentinel")?(s=e=>{"Escape"===e.key&&(em(!1),eg.current?.focus())},q[4]=s):s=q[4];let ev=s;return q[5]!==eu||q[6]!==H||q[7]!==W||q[8]!==$?(l=(0,a.jsx)("div",{className:oq.default.MissionSelectWrapper,children:(0,a.jsx)(t1,{value:H,missionType:W,onChange:$,disabled:eu})}),q[5]=eu,q[6]=H,q[7]=W,q[8]=$,q[9]=l):l=q[9],q[10]===Symbol.for("react.memo_cache_sentinel")?(c=()=>{em(oW)},q[10]=c):c=q[10],q[11]===Symbol.for("react.memo_cache_sentinel")?(d=(0,a.jsx)(oV,{}),q[11]=d):d=q[11],q[12]!==eh?(u=(0,a.jsx)("button",{ref:eg,className:oq.default.Toggle,onClick:c,"aria-expanded":eh,"aria-controls":"settingsPanel","aria-label":"Settings",children:d}),q[12]=eh,q[13]=u):u=q[13],q[14]!==X||q[15]!==H||q[16]!==W?(h=(0,a.jsx)(t6,{missionName:H,missionType:W,cameraRef:X}),q[14]=X,q[15]=H,q[16]=W,q[17]=h):h=q[17],q[18]===Symbol.for("react.memo_cache_sentinel")?(m=(0,a.jsx)(oz,{}),q[18]=m):m=q[18],q[19]===Symbol.for("react.memo_cache_sentinel")?(f=(0,a.jsx)(oO,{}),g=(0,a.jsx)("span",{className:oq.default.ButtonLabel,children:"Show map info"}),q[19]=f,q[20]=g):(f=q[19],g=q[20]),q[21]!==Y?(p=(0,a.jsxs)("button",{type:"button",className:oq.default.MapInfoButton,"aria-label":"Show map info",onClick:Y,children:[f,g]}),q[21]=Y,q[22]=p):p=q[22],q[23]!==p||q[24]!==h?(y=(0,a.jsxs)("div",{className:oq.default.Group,children:[h,m,p]}),q[23]=p,q[24]=h,q[25]=y):y=q[25],q[26]!==J?(F=e=>{J(e.target.checked)},q[26]=J,q[27]=F):F=q[27],q[28]!==Z||q[29]!==F?(b=(0,a.jsx)("input",{id:"fogInput",type:"checkbox",checked:Z,onChange:F}),q[28]=Z,q[29]=F,q[30]=b):b=q[30],q[31]===Symbol.for("react.memo_cache_sentinel")?(S=(0,a.jsx)("label",{htmlFor:"fogInput",children:"Fog?"}),q[31]=S):S=q[31],q[32]!==b?(x=(0,a.jsxs)("div",{className:oq.default.CheckboxField,children:[b,S]}),q[32]=b,q[33]=x):x=q[33],q[34]!==ea?(k=e=>{ea(e.target.checked)},q[34]=ea,q[35]=k):k=q[35],q[36]!==et||q[37]!==k?(w=(0,a.jsx)("input",{id:"audioInput",type:"checkbox",checked:et,onChange:k}),q[36]=et,q[37]=k,q[38]=w):w=q[38],q[39]===Symbol.for("react.memo_cache_sentinel")?(I=(0,a.jsx)("label",{htmlFor:"audioInput",children:"Audio?"}),q[39]=I):I=q[39],q[40]!==w?(C=(0,a.jsxs)("div",{className:oq.default.CheckboxField,children:[w,I]}),q[40]=w,q[41]=C):C=q[41],q[42]!==x||q[43]!==C?(_=(0,a.jsxs)("div",{className:oq.default.Group,children:[x,C]}),q[42]=x,q[43]=C,q[44]=_):_=q[44],q[45]!==en?(P=e=>{en(e.target.checked)},q[45]=en,q[46]=P):P=q[46],q[47]!==er||q[48]!==P?(D=(0,a.jsx)("input",{id:"animationInput",type:"checkbox",checked:er,onChange:P}),q[47]=er,q[48]=P,q[49]=D):D=q[49],q[50]===Symbol.for("react.memo_cache_sentinel")?(M=(0,a.jsx)("label",{htmlFor:"animationInput",children:"Animation?"}),q[50]=M):M=q[50],q[51]!==D?(T=(0,a.jsxs)("div",{className:oq.default.CheckboxField,children:[D,M]}),q[51]=D,q[52]=T):T=q[52],q[53]!==ed?(E=e=>{ed(e.target.checked)},q[53]=ed,q[54]=E):E=q[54],q[55]!==ec||q[56]!==E?(B=(0,a.jsx)("input",{id:"debugInput",type:"checkbox",checked:ec,onChange:E}),q[55]=ec,q[56]=E,q[57]=B):B=q[57],q[58]===Symbol.for("react.memo_cache_sentinel")?(j=(0,a.jsx)("label",{htmlFor:"debugInput",children:"Debug?"}),q[58]=j):j=q[58],q[59]!==B?(R=(0,a.jsxs)("div",{className:oq.default.CheckboxField,children:[B,j]}),q[59]=B,q[60]=R):R=q[60],q[61]!==T||q[62]!==R?(N=(0,a.jsxs)("div",{className:oq.default.Group,children:[T,R]}),q[61]=T,q[62]=R,q[63]=N):N=q[63],q[64]!==Q||q[65]!==eu||q[66]!==ee?(A=eu?null:(0,a.jsxs)("div",{className:oq.default.Field,children:[(0,a.jsx)("label",{htmlFor:"fovInput",children:"FOV"}),(0,a.jsx)("input",{id:"fovInput",type:"range",min:75,max:120,step:5,value:Q,disabled:eu,onChange:e=>ee(parseInt(e.target.value))}),(0,a.jsx)("output",{htmlFor:"fovInput",children:Q})]}),q[64]=Q,q[65]=eu,q[66]=ee,q[67]=A):A=q[67],q[68]!==eu||q[69]!==eo||q[70]!==ei?(G=eu?null:(0,a.jsxs)("div",{className:oq.default.Field,children:[(0,a.jsx)("label",{htmlFor:"speedInput",children:"Speed"}),(0,a.jsx)("input",{id:"speedInput",type:"range",min:.1,max:5,step:.05,value:ei,disabled:eu,onChange:e=>eo(parseFloat(e.target.value))})]}),q[68]=eu,q[69]=eo,q[70]=ei,q[71]=G):G=q[71],q[72]!==A||q[73]!==G?(U=(0,a.jsxs)("div",{className:oq.default.Group,children:[A,G]}),q[72]=A,q[73]=G,q[74]=U):U=q[74],q[75]!==K||q[76]!==el||q[77]!==es?(L=K&&(0,a.jsx)("div",{className:oq.default.Group,children:(0,a.jsxs)("div",{className:oq.default.Field,children:[(0,a.jsx)("label",{htmlFor:"touchModeInput",children:"Joystick:"})," ",(0,a.jsxs)("select",{id:"touchModeInput",value:es,onChange:e=>el(e.target.value),children:[(0,a.jsx)("option",{value:"dualStick",children:"Dual Stick"}),(0,a.jsx)("option",{value:"moveLookStick",children:"Single Stick"})]})]})}),q[75]=K,q[76]=el,q[77]=es,q[78]=L):L=q[78],q[79]!==eh||q[80]!==y||q[81]!==_||q[82]!==N||q[83]!==U||q[84]!==L?(z=(0,a.jsxs)("div",{className:oq.default.Dropdown,ref:ef,id:"settingsPanel",tabIndex:-1,onKeyDown:ev,onBlur:ey,"data-open":eh,children:[y,_,N,U,L]}),q[79]=eh,q[80]=y,q[81]=_,q[82]=N,q[83]=U,q[84]=L,q[85]=z):z=q[85],q[86]!==z||q[87]!==u?(O=(0,a.jsxs)("div",{ref:ep,children:[u,z]}),q[86]=z,q[87]=u,q[88]=O):O=q[88],q[89]!==O||q[90]!==l?(V=(0,a.jsxs)("div",{id:"controls",className:oq.default.Controls,onKeyDown:oK,onPointerDown:oY,onClick:o$,children:[l,O]}),q[89]=O,q[90]=l,q[91]=V):V=q[91],V}function oW(e){return!e}function o$(e){return e.stopPropagation()}function oY(e){return e.stopPropagation()}function oK(e){return e.stopPropagation()}let oX=()=>null;var oZ=e.i(31067);let oJ=n.forwardRef(({envMap:e,resolution:t=256,frames:a=1/0,makeDefault:r,children:i,...s},l)=>{let c=(0,h.useThree)(({set:e})=>e),d=(0,h.useThree)(({camera:e})=>e),m=(0,h.useThree)(({size:e})=>e),f=n.useRef(null);n.useImperativeHandle(l,()=>f.current,[]);let g=n.useRef(null),p=function(e,t,a){let r=(0,h.useThree)(e=>e.size),i=(0,h.useThree)(e=>e.viewport),s="number"==typeof e?e:r.width*i.dpr,l=r.height*i.dpr,c=("number"==typeof e?void 0:e)||{},{samples:d=0,depth:u,...m}=c,f=null!=u?u:c.depthBuffer,g=n.useMemo(()=>{let e=new o.WebGLRenderTarget(s,l,{minFilter:o.LinearFilter,magFilter:o.LinearFilter,type:o.HalfFloatType,...m});return f&&(e.depthTexture=new o.DepthTexture(s,l,o.FloatType)),e.samples=d,e},[]);return n.useLayoutEffect(()=>{g.setSize(s,l),d&&(g.samples=d)},[d,g,s,l]),n.useEffect(()=>()=>g.dispose(),[]),g}(t);n.useLayoutEffect(()=>{s.manual||(f.current.aspect=m.width/m.height)},[m,s]),n.useLayoutEffect(()=>{f.current.updateProjectionMatrix()});let y=0,v=null,F="function"==typeof i;return(0,u.useFrame)(t=>{F&&(a===1/0||y{if(r)return c(()=>({camera:f.current})),()=>c(()=>({camera:d}))},[f,r,c]),n.createElement(n.Fragment,null,n.createElement("perspectiveCamera",(0,oZ.default)({ref:f},s),!F&&i),n.createElement("group",{ref:g},F&&i(p.texture)))});function oQ(){let e,t,n=(0,r.c)(3),{fov:i}=(0,v.useSettings)();return n[0]===Symbol.for("react.memo_cache_sentinel")?(e=[0,256,0],n[0]=e):e=n[0],n[1]!==i?(t=(0,a.jsx)(oJ,{makeDefault:!0,position:e,fov:i}),n[1]=i,n[2]=t):t=n[2],t}var o0=e.i(51434),o1=e.i(86855),o2=e.i(71832),o3=n,o5=e.i(82816);class o4{states;seqIndexToName;currentStateIndex=0;delayTime=0;lastFireCount=-1;spinTimeScale=0;constructor(e,t){this.states=e,this.seqIndexToName=t,e.length>0&&(this.delayTime=e[0].timeoutValue??0)}get stateIndex(){return this.currentStateIndex}reset(){this.currentStateIndex=0,this.delayTime=this.states.length>0?this.states[0].timeoutValue??0:0,this.lastFireCount=-1}tick(e,t){if(0===this.states.length)return{sequenceName:null,isFiring:!1,spinTimeScale:0,reverse:!1,scaleAnimation:!1,timeoutValue:0,transitioned:!1,soundDataBlockIds:[],stateIndex:-1};let a=this.lastFireCount>=0&&t.fireCount!==this.lastFireCount;this.lastFireCount=t.fireCount;let r=[];if(a){let e=this.states.findIndex(e=>e.fire);if(e>=0&&e!==this.currentStateIndex){this.currentStateIndex=e,this.delayTime=this.states[e].timeoutValue??0;let t=this.states[e].soundDataBlockId;t>=0&&r.push(t)}}this.delayTime-=e;let n=a,i=this.evaluateTickTransitions(t),o=0;for(;i>=0&&o<32;){if(o++,n=!0,i===this.currentStateIndex){this.delayTime=this.states[i].timeoutValue??0;break}let e=this.states[this.currentStateIndex].spin,a=this.delayTime;this.currentStateIndex=i;let s=this.states[i].timeoutValue??0;this.delayTime=s;let l=this.states[i].soundDataBlockId;switch(l>=0&&r.push(l),this.states[i].spin){case 1:this.spinTimeScale=0;break;case 4:this.spinTimeScale=1;break;case 2:3===e&&s>0&&(this.delayTime*=1-a/s);break;case 3:2===e&&s>0&&(this.delayTime*=1-a/s)}i=this.evaluateEntryTransitions(t)}let s=this.states[this.currentStateIndex],l=s.timeoutValue??0;switch(s.spin){case 1:this.spinTimeScale=0;break;case 2:this.spinTimeScale=l>0?Math.max(0,1-this.delayTime/l):1;break;case 4:this.spinTimeScale=1;break;case 3:this.spinTimeScale=l>0?Math.max(0,this.delayTime/l):0}return{sequenceName:this.resolveSequenceName(s),isFiring:s.fire,spinTimeScale:this.spinTimeScale,reverse:!s.direction,scaleAnimation:s.scaleAnimation,timeoutValue:s.timeoutValue??0,transitioned:n,soundDataBlockIds:r,stateIndex:this.currentStateIndex}}evaluateTickTransitions(e){let t=this.states[this.currentStateIndex],a=this.delayTime<=0;if(!(a||!t.waitForTimeout))return -1;let r=this.evaluateConditions(t,e);if(-1!==r)return r;if(a){let e=t.transitionOnTimeout;if(-1!==e)return e}return -1}evaluateEntryTransitions(e){let t=this.states[this.currentStateIndex];return this.evaluateConditions(t,e)}evaluateConditions(e,t){let a=t.loaded?e.transitionOnLoaded:e.transitionOnNotLoaded;if(-1!==a)return a;let r=t.ammo?e.transitionOnAmmo:e.transitionOnNoAmmo;if(-1!==r)return r;let n=t.target?e.transitionOnTarget:e.transitionOnNoTarget;if(-1!==n)return n;let i=t.wet?e.transitionOnWet:e.transitionOnNotWet;if(-1!==i)return i;let o=t.triggerDown?e.transitionOnTriggerDown:e.transitionOnTriggerUp;return -1!==o?o:-1}resolveSequenceName(e){return null==e.sequence||e.sequence<0?null:this.seqIndexToName[e.sequence]??null}}var o6=e.i(43595),o8=e.i(29055);function o7(e,t,a){let r=e.current;if(r){(0,o8.untrackDemoSound)(r);try{r.stop()}catch{}r.disconnect(),a?.remove(r),e.current=null,t.current=-1}}function o9(e){let t,i,s,l,c,d,h,m,f,g,p,y,v,F,b,S,x,k,w,C=(0,r.c)(44),{entity:_,timeRef:P}=e,D=(0,I.useEngineStoreApi)(),M=(0,ev.useStaticShape)(_.dataBlock);C[0]!==_.dataBlock?(t=e=>{let t=_.dataBlock?.toLowerCase();return t?e.runtime.sequenceAliases.get(t):void 0},C[0]=_.dataBlock,C[1]=t):t=C[1];let T=(0,I.useEngineSelector)(t);C[2]!==M.scene?(c=o5.clone(M.scene),i=(0,o2.processShapeScene)(c),c.traverse(sn),l=new o.AnimationMixer(c),s=null,c.traverse(e=>{s||"Mount0"!==e.name||(s=e)}),C[2]=M.scene,C[3]=i,C[4]=s,C[5]=l,C[6]=c):(i=C[3],s=C[4],l=C[5],c=C[6]),C[7]!==i||C[8]!==s||C[9]!==l||C[10]!==c?(d={clonedScene:c,mixer:l,mount0:s,iflInitializers:i},C[7]=i,C[8]=s,C[9]=l,C[10]=c,C[11]=d):d=C[11];let{clonedScene:E,mixer:B,mount0:j,iflInitializers:R}=d;C[12]===Symbol.for("react.memo_cache_sentinel")?(h=new Map,C[12]=h):h=C[12];let N=(0,n.useRef)(h);C[13]===Symbol.for("react.memo_cache_sentinel")?(m={head:null,headside:null},C[13]=m):m=C[13];let A=(0,n.useRef)(m);C[14]===Symbol.for("react.memo_cache_sentinel")?(f=new Map,C[14]=f):f=C[14];let G=(0,n.useRef)(f),U=(0,n.useRef)(null);C[15]===Symbol.for("react.memo_cache_sentinel")?(g={name:"root",timeScale:1},C[15]=g):g=C[15];let L=(0,n.useRef)(g),z=(0,n.useRef)(!1);return C[16]!==M.animations||C[17]!==B||C[18]!==T?(p=()=>{let e=(0,o6.getAliasedActions)(M.animations,B,T);N.current=e;let t=e.get("root");t&&t.play(),L.current={name:"root",timeScale:1};let a={head:null,headside:null};for(let{key:e,names:t}of[{key:"head",names:["head"]},{key:"headside",names:["headside"]}]){let r=M.animations.find(e=>t.includes(e.name.toLowerCase()));if(!r)continue;let n=r.clone(),i=Math.round(30*r.duration/2);o.AnimationUtils.makeClipAdditive(n,i,r,30);let s=B.clipAction(n);s.blendMode=o.AdditiveAnimationBlendMode,s.timeScale=0,s.weight=1,s.play(),a[e]=s}A.current=a;let r=new Map,n=M.animations.find(sr),i=n?Math.round(30*n.duration/2):0;for(let e of["lookde","lookms","looksn"]){let t=M.animations.find(t=>t.name.toLowerCase()===e);if(!t)continue;let a=t.clone(),s=n??t;o.AnimationUtils.makeClipAdditive(a,i,s,30);let l=B.clipAction(a);l.blendMode=o.AdditiveAnimationBlendMode,l.timeScale=0,l.weight=0,l.play(),r.set(e,l)}G.current=r;let s=r.get("lookde");return s&&(s.weight=1,U.current="lookde"),B.update(0),()=>{B.stopAllAction(),N.current=new Map,A.current={head:null,headside:null},G.current=new Map,U.current=null}},y=[B,M.animations,T],C[16]=M.animations,C[17]=B,C[18]=T,C[19]=p,C[20]=y):(p=C[19],y=C[20]),(0,n.useEffect)(p,y),C[21]!==R||C[22]!==P?(v=()=>{let e=[];for(let{mesh:t,initialize:a}of R)a(t,()=>P.current).then(t=>e.push(t)).catch(sa);return()=>e.forEach(st)},C[21]=R,C[22]=P,C[23]=v):v=C[23],C[24]!==R?(F=[R],C[24]=R,C[25]=F):F=C[25],(0,n.useEffect)(v,F),C[26]!==D||C[27]!==_.headPitch||C[28]!==_.headYaw||C[29]!==_.keyframes||C[30]!==_.weaponShape||C[31]!==B||C[32]!==P?(b=(e,t)=>{let a=D.getState().playback,r="playing"===a.status,n=P.current,i=(0,o2.getKeyframeAtTime)(_.keyframes,n),s=i?.damageState!=null&&i.damageState>=1,l=N.current;if(s&&!z.current){z.current=!0;let e=[...l.keys()].filter(se);if(e.length>0){let t=e[Math.floor(Math.random()*e.length)],a=l.get(L.current.name.toLowerCase());a&&a.fadeOut(o2.ANIM_TRANSITION_TIME);let r=l.get(t);r.setLoop(o.LoopOnce,1),r.clampWhenFinished=!0,r.reset().fadeIn(o2.ANIM_TRANSITION_TIME).play(),L.current={name:t,timeScale:1}}}if(!s&&z.current){z.current=!1;let e=l.get(L.current.name.toLowerCase());e&&(e.stop(),e.setLoop(o.LoopRepeat,1/0),e.clampWhenFinished=!1),L.current={name:"root",timeScale:1};let t=l.get("root");t&&t.reset().play()}if(!z.current){let e=function(e,t){if(!e)return{animation:"root",timeScale:1};let[a,r,n]=e;if(n<-10)return{animation:"fall",timeScale:1};let i=-2*Math.atan2(t[1],t[3]),o=Math.cos(i),s=Math.sin(i),l=a*o+r*s,c=-a*s+r*o,d=-c,u=-l,h=Math.max(c,d,u,l);return h<.1?{animation:"root",timeScale:1}:h===c?{animation:"run",timeScale:1}:h===d?{animation:"back",timeScale:1}:h===u?{animation:"side",timeScale:1}:{animation:"side",timeScale:-1}}(i?.velocity,i?.rotation??[0,0,0,1]),t=L.current;if(e.animation!==t.name||e.timeScale!==t.timeScale){let a=l.get(t.name.toLowerCase()),n=l.get(e.animation.toLowerCase());n&&(r&&a&&a!==n?(a.fadeOut(o2.ANIM_TRANSITION_TIME),n.reset().fadeIn(o2.ANIM_TRANSITION_TIME).play()):(a&&a!==n&&a.stop(),n.reset().play()),n.timeScale=e.timeScale,L.current={name:e.animation,timeScale:e.timeScale})}}let c=function(e){if(!e)return"lookde";let t=e.toLowerCase();return t.includes("missile")?"lookms":t.includes("sniper")?"looksn":"lookde"}(_.weaponShape);if(c!==U.current){let e=G.current,t=U.current?e.get(U.current):null,a=e.get(c);a&&(t&&(t.weight=0),a.weight=+!s,U.current=c)}let{head:d,headside:u}=A.current,h=U.current?G.current.get(U.current):null,m=+!s,f=_.headPitch??0,g=_.headYaw??0,p=(f+1)/2;h&&(h.time=p*h.getClip().duration,h.weight=m),d&&(d.time=p*d.getClip().duration,d.weight=m),u&&(u.time=(g+1)/2*u.getClip().duration,u.weight=m),r?B.update(t*a.rate):B.update(0)},C[26]=D,C[27]=_.headPitch,C[28]=_.headYaw,C[29]=_.keyframes,C[30]=_.weaponShape,C[31]=B,C[32]=P,C[33]=b):b=C[33],(0,u.useFrame)(b),C[34]===Symbol.for("react.memo_cache_sentinel")?(S=[0,Math.PI/2,0],C[34]=S):S=C[34],C[35]!==E?(x=(0,a.jsx)("group",{rotation:S,children:(0,a.jsx)("primitive",{object:E})}),C[35]=E,C[36]=x):x=C[36],C[37]!==_||C[38]!==j||C[39]!==P?(k=_.weaponShape&&j&&(0,a.jsx)(sA,{fallback:null,children:(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(si,{entity:_,mount0:j,timeRef:P})})}),C[37]=_,C[38]=j,C[39]=P,C[40]=k):k=C[40],C[41]!==x||C[42]!==k?(w=(0,a.jsxs)(a.Fragment,{children:[x,k]}),C[41]=x,C[42]=k,C[43]=w):w=C[43],w}function se(e){return e.startsWith("death")}function st(e){return e()}function sa(){}function sr(e){return"lookde"===e.name.toLowerCase()}function sn(e){if(e.isMesh&&e.material)for(let t of Array.isArray(e.material)?e.material:[e.material])t.side=o.FrontSide}function si(e){let t,a,i,s,l,d,h,m,f,g,p,y,F,b,S=(0,r.c)(40),{entity:x,mount0:k,timeRef:w}=e,C=(0,I.useEngineStoreApi)(),_=(0,ev.useStaticShape)(x.weaponShape);if(S[0]!==_.animations||S[1]!==_.scene){t=o5.clone(_.scene),a=(0,o2.processShapeScene)(t);let e=(0,o2.getPosedNodeTransform)(_.scene,_.animations,"Mountpoint");if(e){let a=e.quaternion.clone().invert(),r=e.position.clone().negate().applyQuaternion(a);t.position.copy(r),t.quaternion.copy(a)}s=new Map,t.traverse(e=>{if(!e.isMesh)return;let t=e.userData,a=(t?.vis_sequence??"").toLowerCase();if(!a)return;let r=s.get(a);r||(r=[],s.set(a,r)),r.push(e)}),i=new o.AnimationMixer(t),S[0]=_.animations,S[1]=_.scene,S[2]=t,S[3]=a,S[4]=i,S[5]=s}else t=S[2],a=S[3],i=S[4],s=S[5];let P=i,D=_.scene;S[6]!==D||S[7]!==_.animations?(l=function(e,t){let a=e.userData?.dts_sequence_names;if("string"==typeof a)try{return JSON.parse(a).map(e=>e.toLowerCase())}catch{}return t.map(e=>e.name.toLowerCase())}(D,_.animations),S[6]=D,S[7]=_.animations,S[8]=l):l=S[8];let M=l;S[9]!==t||S[10]!==a||S[11]!==P||S[12]!==M||S[13]!==s?(d={weaponClone:t,weaponMixer:P,seqIndexToName:M,visNodesBySequence:s,weaponIflInitializers:a},S[9]=t,S[10]=a,S[11]=P,S[12]=M,S[13]=s,S[14]=d):d=S[14];let{weaponClone:T,weaponMixer:E,seqIndexToName:B,visNodesBySequence:j,weaponIflInitializers:R}=d;S[15]===Symbol.for("react.memo_cache_sentinel")?(h=new Map,S[15]=h):h=S[15];let N=(0,n.useRef)(h),A=(0,n.useRef)(null);S[16]!==_.animations||S[17]!==E?(m=()=>{let e=new Map;for(let t of _.animations)e.set(t.name.toLowerCase(),E.clipAction(t));N.current=e;let t=e.get("spin");return t&&(t.setLoop(o.LoopRepeat,1/0),t.timeScale=0,t.play()),A.current=t??null,E.update(0),()=>{E.stopAllAction(),N.current=new Map,A.current=null,o7(H,W)}},f=[E,_.animations],S[16]=_.animations,S[17]=E,S[18]=m,S[19]=f):(m=S[18],f=S[19]),(0,n.useEffect)(m,f),S[20]!==w||S[21]!==R?(g=()=>{let e=[];for(let{mesh:t,initialize:a}of R)a(t,()=>w.current).then(t=>e.push(t)).catch(ss);return()=>e.forEach(so)},S[20]=w,S[21]=R,S[22]=g):g=S[22],S[23]!==R?(p=[R],S[23]=R,S[24]=p):p=S[24],(0,n.useEffect)(g,p);let{audioLoader:G,audioListener:U}=(0,o0.useAudio)(),L=(0,v.useSettings)(),z=L?.audioEnabled??!1,O=(0,n.useRef)(null),V=(0,n.useRef)(null),q=(0,n.useRef)(x.weaponImageStates),H=(0,n.useRef)(null),W=(0,n.useRef)(-1);return S[25]!==k||S[26]!==T?(y=()=>(k.add(T),()=>{k.remove(T)}),F=[T,k],S[25]=k,S[26]=T,S[27]=y,S[28]=F):(y=S[27],F=S[28]),(0,n.useEffect)(y,F),S[29]!==z||S[30]!==U||S[31]!==G||S[32]!==C||S[33]!==x.weaponImageState||S[34]!==x.weaponImageStates||S[35]!==B||S[36]!==j||S[37]!==T||S[38]!==E?(b=(e,t)=>{let a=C.getState().playback,r="playing"===a.status,n=N.current,i=x.weaponImageState,s=x.weaponImageStates;s!==q.current&&(q.current=s,s&&s.length>0?O.current=new o4(s,B):O.current=null,V.current=null,o7(H,W,T)),!O.current&&s&&s.length>0&&(O.current=new o4(s,B));let l=O.current;if(l&&i&&r){let e=t*a.rate,r=l.tick(e,i);if(function(e,t,a,r){let n=e.sequenceName,i=a.current;if(n===i&&!e.transitioned)return;if(n!==i){if(i){let e=r.get(i);if(e)for(let t of e)t.visible=!1}if(n){let e=r.get(n);if(e)for(let t of e)t.visible=!0}}if(!n){if(i){let e=t.get(i);e&&e.fadeOut(o2.ANIM_TRANSITION_TIME),a.current=null}return}let s=t.get(n);if(s&&(e.transitioned||n!==i)){let r=i?t.get(i):null;if(e.isFiring||e.timeoutValue>0?(s.setLoop(o.LoopOnce,1),s.clampWhenFinished=!0):(s.setLoop(o.LoopRepeat,1/0),s.clampWhenFinished=!1),e.scaleAnimation&&e.timeoutValue>0){let t=s.getClip().duration;s.timeScale=t>0?t/e.timeoutValue:1}else s.timeScale=e.reverse?-1:1;r&&r!==s?(r.fadeOut(o2.ANIM_TRANSITION_TIME),s.reset().fadeIn(o2.ANIM_TRANSITION_TIME).play()):s.reset().play(),a.current=n}}(r,n,V,j),H.current&&r.stateIndex!==W.current&&o7(H,W,T),z&&G&&U&&r.soundDataBlockIds.length>0){let e=a.recording?.streamingPlayback.getDataBlockData.bind(a.recording.streamingPlayback);if(e)for(let t of r.soundDataBlockIds){let r=(0,o8.resolveAudioProfile)(t,e);if(r)if(r.isLooping){if(!H.current)try{let e=(0,c.audioToUrl)(r.filename);(0,o8.getCachedAudioBuffer)(e,G,e=>{if(H.current)return;let t=l.stateIndex,n=new o.PositionalAudio(U);n.setBuffer(e),n.setDistanceModel("inverse"),n.setRefDistance(r.refDist),n.setMaxDistance(r.maxDist),n.setRolloffFactor(1),n.setVolume(r.volume),n.setPlaybackRate(a.rate),n.setLoop(!0),T.add(n),(0,o8.trackDemoSound)(n),n.play(),H.current=n,W.current=t})}catch{}}else(0,o8.playOneShotSound)(r,U,G,void 0,T)}}A.current&&(A.current.timeScale=r.spinTimeScale)}r?E.update(t*a.rate):E.update(0)},S[29]=z,S[30]=U,S[31]=G,S[32]=C,S[33]=x.weaponImageState,S[34]=x.weaponImageStates,S[35]=B,S[36]=j,S[37]=T,S[38]=E,S[39]=b):b=S[39],(0,u.useFrame)(b),null}function so(e){return e()}function ss(){}function sl(e){let t,a,i=(0,r.c)(7),{shapeName:o,eyeOffsetRef:s}=e,l=(0,ev.useStaticShape)(o);return i[0]!==s||i[1]!==l.animations||i[2]!==l.scene?(t=()=>{let e=(0,o2.getPosedNodeTransform)(l.scene,l.animations,"Eye");e?s.current.set(e.position.z,e.position.y,-e.position.x):s.current.set(0,o2.DEFAULT_EYE_HEIGHT,0)},i[0]=s,i[1]=l.animations,i[2]=l.scene,i[3]=t):t=i[3],i[4]!==s||i[5]!==l?(a=[l,s],i[4]=s,i[5]=l,i[6]=a):a=i[6],(0,n.useEffect)(t,a),null}var sc=e.i(71505);function sd(e){let t,n,i,o=(0,r.c)(8),{shapeName:s,entityId:l,threads:c}=e,d="number"==typeof l?l:0;o[0]!==d?(t={_class:"player",_className:"Player",_id:d},o[0]=d,o[1]=t):t=o[1];let u=t;return o[2]!==c?(n=(0,a.jsx)(ev.ShapeRenderer,{loadingColor:"#00ff88",demoThreads:c}),o[2]=c,o[3]=n):n=o[3],o[4]!==s||o[5]!==n||o[6]!==u?(i=(0,a.jsx)(eF.ShapeInfoProvider,{object:u,shapeName:s,type:"StaticShape",children:n}),o[4]=s,o[5]=n,o[6]=u,o[7]=i):i=o[7],i}function su({shapeName:e,playerShapeName:t}){let r=(0,ev.useStaticShape)(t),i=(0,ev.useStaticShape)(e),o=(0,n.useMemo)(()=>{let t,a,n=function(e){if(!e)return"lookde";let t=e.toLowerCase();return t.includes("missile")?"lookms":t.includes("sniper")?"looksn":"lookde"}(e),o=(0,o2.getPosedNodeTransform)(r.scene,r.animations,"Mount0",[n]);if(!o)return{position:void 0,quaternion:void 0};let s=(0,o2.getPosedNodeTransform)(i.scene,i.animations,"Mountpoint");if(s){let e=s.quaternion.clone().invert(),r=s.position.clone().negate().applyQuaternion(e);a=o.quaternion.clone().multiply(e),t=r.clone().applyQuaternion(o.quaternion).add(o.position)}else t=o.position.clone(),a=o.quaternion.clone();return{position:t.applyQuaternion(o2._r90),quaternion:o2._r90.clone().multiply(a).multiply(o2._r90inv)}},[r,i]),s=(0,n.useMemo)(()=>({_class:"weapon",_className:"Weapon",_id:0}),[]);return(0,a.jsx)(eF.ShapeInfoProvider,{object:s,shapeName:e,type:"Item",children:(0,a.jsx)("group",{position:o.position,quaternion:o.quaternion,children:(0,a.jsx)(ev.ShapeRenderer,{loadingColor:"#4488ff"})})})}function sh({entity:e,playback:t}){let r=(0,ev.useStaticShape)(e.dataBlock),i=(0,n.useRef)(null),s=(0,n.useRef)((0,I.demoEffectNow)()),l=(0,n.useRef)(Math.random()*Math.PI*2),c=(0,n.useRef)([]),d=(0,n.useMemo)(()=>{if(e.explosionDataBlockId)return t.getDataBlockData(e.explosionDataBlockId)},[e.explosionDataBlockId,t]),h=(0,n.useMemo)(()=>d?function(e){let t=e.sizes,a=e.times;if(!Array.isArray(t)||0===t.length)return{times:[0,1],sizes:[[1,1,1],[1,1,1]]};let r=t.map(e=>[e.x/100,e.y/100,e.z/100]);return{times:Array.isArray(a)?a:r.map((e,t)=>t/Math.max(r.length-1,1)),sizes:r}}(d):void 0,[d]),m=(0,n.useMemo)(()=>{let e=d?.explosionScale;return e?[e.x/100,e.y/100,e.z/100]:[1,1,1]},[d]),f=32*(d?.lifetimeMS??31),g=!1!==e.faceViewer,{scene:p,mixer:y,visNodes:v,iflInfos:F,materials:b}=(0,n.useMemo)(()=>{let e=o5.clone(r.scene),t=[];e.traverse(e=>{if(!e.isMesh||!e.material)return;let a=Array.isArray(e.material)?e.material[0]:e.material;if(!a?.userData)return;let r=new Set(a.userData.flag_names??[]),n=a.userData.resource_path;if(r.has("IflMaterial")&&n){let a=e.userData;t.push({mesh:e,iflPath:`textures/${n}.ifl`,sequenceName:a?.ifl_sequence?String(a.ifl_sequence).toLowerCase():void 0,duration:a?.ifl_duration?Number(a.ifl_duration):void 0,cyclic:a?.ifl_sequence?!!a.ifl_cyclic:void 0,toolBegin:a?.ifl_tool_begin!=null?Number(a.ifl_tool_begin):void 0})}}),(0,o2.processShapeScene)(e);let a=[];for(let t of(e.traverse(e=>{if(!e.isMesh)return;let t=e.userData;if(!t)return;let r=t.vis_keyframes,n=t.vis_duration,i=(t.vis_sequence??"").toLowerCase();i&&Array.isArray(r)&&!(r.length<=1)&&n&&!(n<=0)&&"ambient"===i&&a.push({mesh:e,keyframes:r,duration:n,cyclic:!!t.vis_cyclic})}),a))t.mesh.visible=!0,t.mesh.material&&!Array.isArray(t.mesh.material)&&(t.mesh.material.transparent=!0,t.mesh.material.depthWrite=!1);for(let e of t)e.mesh.userData?.vis_sequence||(e.mesh.visible=!0);let n=new Map;for(let e of r.animations)n.set(e.name.toLowerCase(),e);let i=n.get("ambient"),s=null;if(i){let t=(s=new o.AnimationMixer(e)).clipAction(i);t.setLoop(o.LoopOnce,1),t.clampWhenFinished=!0,t.timeScale=(d?.playSpeed??20)/20,t.play()}let l=[];return e.traverse(e=>{e.isMesh&&(Array.isArray(e.material)?l.push(...e.material):e.material&&l.push(e.material))}),e.traverse(e=>{e.frustumCulled=!1}),{scene:e,mixer:s,visNodes:a,iflInfos:t,materials:l}},[r,d]);return(0,n.useEffect)(()=>{for(let e of(c.current=[],F))(0,sc.loadIflAtlas)(e.iflPath).then(t=>{let a=Array.isArray(e.mesh.material)?e.mesh.material[0]:e.mesh.material;a&&(a.map=t.texture,a.needsUpdate=!0),c.current.push({atlas:t,info:e})}).catch(()=>{})},[F]),(0,u.useFrame)((e,t)=>{let a=i.current;if(!a)return;let r=I.engineStore.getState().playback,n="playing"===r.status?t*r.rate:0,o=(0,I.demoEffectNow)()-s.current,d=Math.min(o/f,1),u=o/1e3;y&&y.update(n);let p=d>.8?1-(d-.8)/.2:1;for(let{mesh:e,keyframes:t,duration:a,cyclic:r}of v){let n=e.material;if(!n||Array.isArray(n))continue;let i=u/a,o=r?i%1:Math.min(i,1),s=t.length,l=o*s,c=Math.floor(l)%s,d=(c+1)%s,h=l-Math.floor(l);n.opacity=(t[c]+(t[d]-t[c])*h)*p}if(p<1)for(let e of b)"opacity"in e&&(e.transparent=!0,e.opacity*=p);for(let{atlas:e,info:t}of c.current){let a;a=t.sequenceName&&t.duration?(t.cyclic?u/t.duration%1:Math.min(u/t.duration,1))*t.duration+(t.toolBegin??0):u,(0,sc.updateAtlasFrame)(e,(0,sc.getFrameIndexForTime)(e,a))}if(h){let e=function(e,t){let{times:a,sizes:r}=e;if(0===a.length)return[1,1,1];if(t<=a[0])return r[0];if(t>=a[a.length-1])return r[r.length-1];for(let e=0;e=a[e]&&t<=a[e+1]){let n=(t-a[e])/(a[e+1]-a[e]);return[r[e][0]+(r[e+1][0]-r[e][0])*n,r[e][1]+(r[e+1][1]-r[e][1])*n,r[e][2]+(r[e+1][2]-r[e][2])*n]}return r[r.length-1]}(h,d);a.scale.set(e[0]*m[0],e[1]*m[1],e[2]*m[2])}g&&(a.lookAt(e.camera.position),a.rotateZ(l.current))}),(0,a.jsx)("group",{ref:i,children:(0,a.jsx)("group",{rotation:[0,Math.PI,0],children:(0,a.jsx)("primitive",{object:p})})})}let sm=new o.Vector3,sf=new o.Vector3,sg=new o.Vector3,sp=new o.Vector3,sy=new o.Vector3,sv=new o.Vector3,sF=new o.Vector3(0,1,0);function sb(e){let t,n,i,s,l,d=(0,r.c)(14),{visual:u}=e;d[0]!==u.texture?(t=(0,c.textureToUrl)(u.texture),d[0]=u.texture,d[1]=t):t=d[1];let h=t,m=(0,g.useTexture)(h,sS),f=Array.isArray(m)?m[0]:m;d[2]!==u.color.b||d[3]!==u.color.g||d[4]!==u.color.r?(n=new o.Color().setRGB(u.color.r,u.color.g,u.color.b,o.SRGBColorSpace),d[2]=u.color.b,d[3]=u.color.g,d[4]=u.color.r,d[5]=n):n=d[5];let p=n;return d[6]!==u.size?(i=[u.size,u.size,1],d[6]=u.size,d[7]=i):i=d[7],d[8]!==p||d[9]!==f?(s=(0,a.jsx)("spriteMaterial",{map:f,color:p,transparent:!0,blending:o.AdditiveBlending,depthWrite:!1,toneMapped:!1}),d[8]=p,d[9]=f,d[10]=s):s=d[10],d[11]!==i||d[12]!==s?(l=(0,a.jsx)("sprite",{scale:i,children:s}),d[11]=i,d[12]=s,d[13]=l):l=d[13],l}function sS(e){let t=Array.isArray(e)?e[0]:e;(0,o2.setupEffectTexture)(t)}function sx(e){let t,i,s,l,d,h,m,f,p,y,v,F,b=(0,r.c)(28),{entity:S,visual:x}=e,k=(0,n.useRef)(null),w=(0,n.useRef)(null),I=(0,n.useRef)(null);b[0]===Symbol.for("react.memo_cache_sentinel")?(t=new o.Quaternion,b[0]=t):t=b[0];let C=(0,n.useRef)(t);b[1]!==x.texture?(i=(0,c.textureToUrl)(x.texture),b[1]=x.texture,b[2]=i):i=b[2];let _=x.crossTexture??x.texture;b[3]!==_?(s=(0,c.textureToUrl)(_),b[3]=_,b[4]=s):s=b[4],b[5]!==i||b[6]!==s?(l=[i,s],b[5]=i,b[6]=s,b[7]=l):l=b[7];let P=l,D=(0,g.useTexture)(P,sk);b[8]!==D?(d=Array.isArray(D)?D:[D,D],b[8]=D,b[9]=d):d=b[9];let[M,T]=d;return b[10]!==S||b[11]!==x.crossSize||b[12]!==x.crossViewAng||b[13]!==x.renderCross||b[14]!==x.tracerLength||b[15]!==x.tracerWidth?(h=e=>{let{camera:t}=e,a=k.current,r=w.current;if(!a||!r)return;let n=S.keyframes[0],i=n?.position,o=S.direction??n?.velocity;if(!i||!o||((0,o2.torqueVecToThree)(o,sm),1e-8>sm.lengthSq())){a.visible=!1,I.current&&(I.current.visible=!1);return}sm.normalize(),a.visible=!0,(0,o2.torqueVecToThree)(i,sv),sf.copy(sv).sub(t.position),sg.crossVectors(sf,sm),1e-8>sg.lengthSq()&&(sg.crossVectors(sF,sm),1e-8>sg.lengthSq()&&sg.set(1,0,0)),sg.normalize().multiplyScalar(x.tracerWidth);let s=.5*x.tracerLength;sp.copy(sm).multiplyScalar(-s),sy.copy(sm).multiplyScalar(s);let l=r.array;l[0]=sp.x+sg.x,l[1]=sp.y+sg.y,l[2]=sp.z+sg.z,l[3]=sp.x-sg.x,l[4]=sp.y-sg.y,l[5]=sp.z-sg.z,l[6]=sy.x-sg.x,l[7]=sy.y-sg.y,l[8]=sy.z-sg.z,l[9]=sy.x+sg.x,l[10]=sy.y+sg.y,l[11]=sy.z+sg.z,r.needsUpdate=!0;let c=I.current;if(!c)return;if(!x.renderCross){c.visible=!1;return}sf.normalize();let d=sm.dot(sf);if(d>-x.crossViewAng&&d{let e=v.current;if(!e)return;e.getWorldPosition(sP);let t=y.position.distanceTo(sP),a=y.matrixWorld.elements,r=!(-((sP.x-a[12])*a[8])+-((sP.y-a[13])*a[9])+-((sP.z-a[14])*a[10])<0)&&t<150;if(k!==r&&w(r),!r)return;let n=(0,o2.getKeyframeAtTime)(f.keyframes,g.current),i=n?.health??1;if(n?.damageState!=null&&n.damageState>=1){F.current&&(F.current.style.opacity="0"),b.current&&(b.current.style.opacity="0");return}let o=Math.max(0,Math.min(1,1-t/150)).toString();if(F.current&&(F.current.style.opacity=o),b.current&&(b.current.style.opacity=o),x.current&&f.iffColor){let e=f.iffColor.r>f.iffColor.g?s_:sC;x.current.src!==e&&(x.current.src=e)}S.current&&_&&(S.current.style.width=`${Math.max(0,Math.min(100,100*i))}%`,S.current.style.background=f.iffColor?`rgb(${f.iffColor.r}, ${f.iffColor.g}, ${f.iffColor.b})`:"")},m[7]=y,m[8]=f.iffColor,m[9]=f.keyframes,m[10]=_,m[11]=k,m[12]=g,m[13]=l):l=m[13],(0,u.useFrame)(l);let P=f.iffColor&&f.iffColor.r>f.iffColor.g?s_:sC;return m[14]!==I||m[15]!==_||m[16]!==C||m[17]!==P||m[18]!==k?(c=k&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(sw.Html,{position:[0,C,0],center:!0,children:(0,a.jsx)("div",{ref:F,className:sI.default.Top,children:(0,a.jsx)("img",{ref:x,className:sI.default.IffArrow,src:P,alt:""})})}),(0,a.jsx)(sw.Html,{position:[0,-.2,0],center:!0,children:(0,a.jsxs)("div",{ref:b,className:sI.default.Bottom,children:[(0,a.jsx)("div",{className:sI.default.Name,children:I}),_&&(0,a.jsx)("div",{className:sI.default.HealthBar,children:(0,a.jsx)("div",{ref:S,className:sI.default.HealthFill})})]})})]}),m[14]=I,m[15]=_,m[16]=C,m[17]=P,m[18]=k,m[19]=c):c=m[19],m[20]!==c?(d=(0,a.jsx)("group",{ref:v,children:c}),m[20]=c,m[21]=d):d=m[21],d}function sM(e){return null!=e.health}var sT=e.i(78779);let sE=(0,c.textureToUrl)("commander/MiniIcons/com_flag_grey"),sB=new o.Vector3;function sj(e){let t,i,o,s,l,c=(0,r.c)(9),{entity:d}=e,m=(0,n.useRef)(null),f=(0,n.useRef)(null),g=(0,n.useRef)(null),{camera:p}=(0,h.useThree)();c[0]!==p||c[1]!==d.iffColor?(t=()=>{if(f.current&&d.iffColor){let{r:e,g:t,b:a}=d.iffColor;f.current.style.backgroundColor=`rgb(${e},${t},${a})`}if(g.current&&m.current){m.current.getWorldPosition(sB);let e=p.position.distanceTo(sB);g.current.textContent=e.toFixed(1)}},c[0]=p,c[1]=d.iffColor,c[2]=t):t=c[2],(0,u.useFrame)(t);let y=d.iffColor?`rgb(${d.iffColor.r},${d.iffColor.g},${d.iffColor.b})`:"rgb(200,200,200)";c[3]===Symbol.for("react.memo_cache_sentinel")?(i=[0,1.5,0],c[3]=i):i=c[3],c[4]===Symbol.for("react.memo_cache_sentinel")?(o=(0,a.jsx)("span",{ref:g,className:sT.default.Distance}),c[4]=o):o=c[4],c[5]!==y?(s={backgroundColor:y,"--flag-icon-url":`url(${sE})`},c[5]=y,c[6]=s):s=c[6];let v=s;return c[7]!==v?(l=(0,a.jsx)("group",{ref:m,children:(0,a.jsx)(sw.Html,{position:i,center:!0,children:(0,a.jsxs)("div",{className:sT.default.Root,children:[o,(0,a.jsx)("div",{ref:f,className:sT.default.Icon,style:v})]})})}),c[7]=v,c[8]=l):l=c[8],l}let sR=(0,o3.memo)(function(e){let t,n,i,o,s,l,c,d,u,h=(0,r.c)(100),{entity:m,timeRef:f,playback:g}=e,p=(0,v.useDebug)(),y=p?.debugMode??!1,F=(0,I.useEngineSelector)(sG),b=String(m.id);if(m.visual?.kind==="tracer"){let e,t,r,n,i;return h[0]===Symbol.for("react.memo_cache_sentinel")?(e={demoVisualKind:"tracer"},h[0]=e):e=h[0],h[1]!==m?(t=(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sx,{entity:m,visual:m.visual})}),h[1]=m,h[2]=t):t=h[2],h[3]!==y||h[4]!==m?(r=y?(0,a.jsx)(sN,{entity:m}):null,h[3]=y,h[4]=m,h[5]=r):r=h[5],h[6]!==t||h[7]!==r?(n=(0,a.jsxs)("group",{name:"model",userData:e,children:[t,r]}),h[6]=t,h[7]=r,h[8]=n):n=h[8],h[9]!==b||h[10]!==n?(i=(0,a.jsx)("group",{name:b,children:n}),h[9]=b,h[10]=n,h[11]=i):i=h[11],i}if(m.visual?.kind==="sprite"){let e,t,r,n,i;return h[12]===Symbol.for("react.memo_cache_sentinel")?(e={demoVisualKind:"sprite"},h[12]=e):e=h[12],h[13]!==m.visual?(t=(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sb,{visual:m.visual})}),h[13]=m.visual,h[14]=t):t=h[14],h[15]!==y||h[16]!==m?(r=y?(0,a.jsx)(sN,{entity:m}):null,h[15]=y,h[16]=m,h[17]=r):r=h[17],h[18]!==t||h[19]!==r?(n=(0,a.jsxs)("group",{name:"model",userData:e,children:[t,r]}),h[18]=t,h[19]=r,h[20]=n):n=h[20],h[21]!==b||h[22]!==n?(i=(0,a.jsx)("group",{name:b,children:n}),h[21]=b,h[22]=n,h[23]=i):i=h[23],i}if(!m.dataBlock){let e,t,r,n,i,o,s,l=((m.targetRenderFlags??0)&2)!=0;return h[24]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)("sphereGeometry",{args:[.3,6,4]}),h[24]=e):e=h[24],h[25]!==m.type?(t=(0,o2.entityTypeColor)(m.type),h[25]=m.type,h[26]=t):t=h[26],h[27]!==t?(r=(0,a.jsxs)("mesh",{children:[e,(0,a.jsx)("meshBasicMaterial",{color:t,wireframe:!0})]}),h[27]=t,h[28]=r):r=h[28],h[29]!==y||h[30]!==m?(n=y?(0,a.jsx)(sN,{entity:m}):null,h[29]=y,h[30]=m,h[31]=n):n=h[31],h[32]!==r||h[33]!==n?(i=(0,a.jsxs)("group",{name:"model",children:[r,n]}),h[32]=r,h[33]=n,h[34]=i):i=h[34],h[35]!==m||h[36]!==l||h[37]!==f?(o=l&&(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sj,{entity:m,timeRef:f})}),h[35]=m,h[36]=l,h[37]=f,h[38]=o):o=h[38],h[39]!==b||h[40]!==i||h[41]!==o?(s=(0,a.jsxs)("group",{name:b,children:[i,o]}),h[39]=b,h[40]=i,h[41]=o,h[42]=s):s=h[42],s}h[43]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)("sphereGeometry",{args:[.5,8,6]}),h[43]=t):t=h[43],h[44]!==m.type?(n=(0,o2.entityTypeColor)(m.type),h[44]=m.type,h[45]=n):n=h[45],h[46]!==n?(i=(0,a.jsxs)("mesh",{children:[t,(0,a.jsx)("meshBasicMaterial",{color:n,wireframe:!0})]}),h[46]=n,h[47]=i):i=h[47];let S=i;if("Player"===m.type){let e,t,r,n,i,o,s,l=m.id===F,c=((m.targetRenderFlags??0)&2)!=0;return h[48]!==m||h[49]!==f?(e=(0,a.jsx)(o9,{entity:m,timeRef:f}),h[48]=m,h[49]=f,h[50]=e):e=h[50],h[51]!==S||h[52]!==e?(t=(0,a.jsx)(o3.Suspense,{fallback:S,children:e}),h[51]=S,h[52]=e,h[53]=t):t=h[53],h[54]!==S||h[55]!==t?(r=(0,a.jsx)(sA,{fallback:S,children:t}),h[54]=S,h[55]=t,h[56]=r):r=h[56],h[57]!==m||h[58]!==l||h[59]!==f?(n=!l&&(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sD,{entity:m,timeRef:f})}),h[57]=m,h[58]=l,h[59]=f,h[60]=n):n=h[60],h[61]!==m||h[62]!==c||h[63]!==f?(i=c&&(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sj,{entity:m,timeRef:f})}),h[61]=m,h[62]=c,h[63]=f,h[64]=i):i=h[64],h[65]!==r||h[66]!==n||h[67]!==i?(o=(0,a.jsxs)("group",{name:"model",children:[r,n,i]}),h[65]=r,h[66]=n,h[67]=i,h[68]=o):o=h[68],h[69]!==b||h[70]!==o?(s=(0,a.jsx)("group",{name:b,children:o}),h[69]=b,h[70]=o,h[71]=s):s=h[71],s}if("Explosion"===m.type&&m.dataBlock&&g){let e,t;return h[72]!==g||h[73]!==m?(e=(0,a.jsx)("group",{name:"model",children:(0,a.jsx)(sA,{fallback:null,children:(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sh,{entity:m,playback:g})})})}),h[72]=g,h[73]=m,h[74]=e):e=h[74],h[75]!==b||h[76]!==e?(t=(0,a.jsx)("group",{name:b,children:e}),h[75]=b,h[76]=e,h[77]=t):t=h[77],t}let x=((m.targetRenderFlags??0)&2)!=0;return h[78]!==m.dataBlock||h[79]!==m.id||h[80]!==m.threads?(o=(0,a.jsx)(sd,{shapeName:m.dataBlock,entityId:m.id,threads:m.threads}),h[78]=m.dataBlock,h[79]=m.id,h[80]=m.threads,h[81]=o):o=h[81],h[82]!==S||h[83]!==o?(s=(0,a.jsx)(o3.Suspense,{fallback:S,children:o}),h[82]=S,h[83]=o,h[84]=s):s=h[84],h[85]!==S||h[86]!==s?(l=(0,a.jsx)("group",{name:"model",children:(0,a.jsx)(sA,{fallback:S,children:s})}),h[85]=S,h[86]=s,h[87]=l):l=h[87],h[88]!==m.dataBlock||h[89]!==m.weaponShape?(c=m.weaponShape&&(0,a.jsx)("group",{name:"weapon",children:(0,a.jsx)(sA,{fallback:null,children:(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(su,{shapeName:m.weaponShape,playerShapeName:m.dataBlock})})})}),h[88]=m.dataBlock,h[89]=m.weaponShape,h[90]=c):c=h[90],h[91]!==m||h[92]!==x||h[93]!==f?(d=x&&(0,a.jsx)(o3.Suspense,{fallback:null,children:(0,a.jsx)(sj,{entity:m,timeRef:f})}),h[91]=m,h[92]=x,h[93]=f,h[94]=d):d=h[94],h[95]!==b||h[96]!==l||h[97]!==c||h[98]!==d?(u=(0,a.jsxs)("group",{name:b,children:[l,c,d]}),h[95]=b,h[96]=l,h[97]=c,h[98]=d,h[99]=u):u=h[99],u});function sN(e){let t,n,i=(0,r.c)(9),{entity:o}=e,s=String(o.id);i[0]!==o.className||i[1]!==o.dataBlockId||i[2]!==o.ghostIndex||i[3]!==o.shapeHint||i[4]!==o.type||i[5]!==s?((t=[]).push(`${s} (${o.type})`),o.className&&t.push(`class ${o.className}`),"number"==typeof o.ghostIndex&&t.push(`ghost ${o.ghostIndex}`),"number"==typeof o.dataBlockId&&t.push(`db ${o.dataBlockId}`),t.push(o.shapeHint?`shapeHint ${o.shapeHint}`:"shapeHint "),i[0]=o.className,i[1]=o.dataBlockId,i[2]=o.ghostIndex,i[3]=o.shapeHint,i[4]=o.type,i[5]=s,i[6]=t):t=i[6];let l=t.join(" | ");return i[7]!==l?(n=(0,a.jsx)(z.FloatingLabel,{color:"#ff6688",children:l}),i[7]=l,i[8]=n):n=i[8],n}class sA extends o3.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e,t){console.warn("[demo] Shape load failed:",e.message,t.componentStack)}render(){return this.state.hasError?this.props.fallback:this.props.children}}function sG(e){return e.playback.streamSnapshot?.controlPlayerGhostId}let sU=Math.PI/180,sL=Math.PI/18e4;function sz(e,t,a){let r=e[t];return"number"==typeof r&&Number.isFinite(r)?r:a}function sO(e,t,a){let r=e[t];return"boolean"==typeof r?r:"number"==typeof r?0!==r:a}function sV(e,t){let a,r=e.particles;if(Array.isArray(r)){for(let e of r)if("number"==typeof e&&(a=t(e)))break}return a?{ejectionPeriodMS:sz(e,"ejectionPeriodMS",100),periodVarianceMS:sz(e,"periodVarianceMS",0),ejectionVelocity:.01*sz(e,"ejectionVelocity",200),velocityVariance:.01*sz(e,"velocityVariance",100),ejectionOffset:.01*sz(e,"ejectionOffset",0),thetaMin:sz(e,"thetaMin",0),thetaMax:sz(e,"thetaMax",90),phiReferenceVel:sz(e,"phiReferenceVel",0),phiVariance:sz(e,"phiVariance",360),overrideAdvances:sO(e,"overrideAdvances",!1),orientParticles:sO(e,"orientParticles",!1),orientOnVelocity:sO(e,"orientOnVelocity",!0),lifetimeMS:sz(e,"lifetimeMS",0)<<5,lifetimeVarianceMS:sz(e,"lifetimeVarianceMS",0)<<5,particles:function(e){let t=e.keys,a=[];if(Array.isArray(t)&&t.length>0)for(let e=0;e0&&t[0]&&(r=t[0])}return{dragCoefficient:5*sz(e,"dragCoefficient",0),windCoefficient:sz(e,"windCoefficient",1),gravityCoefficient:10*sz(e,"gravityCoefficient",0),inheritedVelFactor:sz(e,"inheritedVelFactor",0),constantAcceleration:sz(e,"constantAcceleration",0),lifetimeMS:sz(e,"lifetimeMS",31)<<5,lifetimeVarianceMS:sz(e,"lifetimeVarianceMS",0)<<5,spinSpeed:sz(e,"spinSpeed",0),spinRandomMin:sz(e,"spinRandomMin",1e3)+-1e3,spinRandomMax:sz(e,"spinRandomMax",1e3)+-1e3,useInvAlpha:sO(e,"useInvAlpha",!1),keys:a,textureName:r}}(a)}:null}function sq(e,t){return e+(2*Math.random()-1)*t}function sH(e,t,a,r,n,i,o){let s=Math.cos(o),l=Math.sin(o),c=e*r+t*n+a*i;return[e*s+(n*a-i*t)*l+r*c*(1-s),t*s+(i*e-r*a)*l+n*c*(1-s),a*s+(r*t-n*e)*l+i*c*(1-s)]}class sW{data;particles=[];maxParticles;internalClock=0;nextParticleTime=0;emitterAge=0;emitterLifetime;emitterDead=!1;constructor(e,t=256,a){this.data=e,this.maxParticles=t;let r=a??e.lifetimeMS;!a&&e.lifetimeVarianceMS>0&&(r+=Math.round(sq(0,e.lifetimeVarianceMS))),this.emitterLifetime=r}emitBurst(e,t,a=[0,0,1]){for(let r=0;r0;){if(this.nextParticleTime>0){let e=Math.min(r,this.nextParticleTime);this.nextParticleTime-=e,r-=e,this.internalClock+=e;continue}if(this.particles.length0)){let e=this.particles[this.particles.length-1];e.currentAge+=r,e.currentAge>=e.totalLifetime&&this.particles.pop()}let t=this.data.ejectionPeriodMS;this.data.periodVarianceMS>0&&(t+=Math.round(sq(0,this.data.periodVarianceMS))),this.nextParticleTime=Math.max(1,t)}}update(e){this.emitterAge+=e,this.emitterLifetime>0&&this.emitterAge>this.emitterLifetime&&(this.emitterDead=!0);let t=e/1e3,a=this.data.particles;for(let r=this.particles.length-1;r>=0;r--){let n=this.particles[r];if(n.currentAge+=e,n.currentAge>=n.totalLifetime){this.particles[r]=this.particles[this.particles.length-1],this.particles.pop();continue}let i=a.dragCoefficient,o=a.gravityCoefficient,s=n.acc[0]-n.vel[0]*i,l=n.acc[1]-n.vel[1]*i,c=n.acc[2]-n.vel[2]*i+-9.81*o;n.vel[0]+=s*t,n.vel[1]+=l*t,n.vel[2]+=c*t,n.pos[0]+=n.vel[0]*t,n.pos[1]+=n.vel[1]*t,n.pos[2]+=n.vel[2]*t;let d=n.currentAge/n.totalLifetime,u=function(e,t){for(let a=1;a=t){let r=e[a-1],n=e[a],i=n.time-r.time,o=i>0?(t-r.time)/i:0;return{r:r.r+(n.r-r.r)*o,g:r.g+(n.g-r.g)*o,b:r.b+(n.b-r.b)*o,a:r.a+(n.a-r.a)*o,size:r.size+(n.size-r.size)*o}}let a=e[e.length-1];return{r:a.r,g:a.g,b:a.b,a:a.a,size:a.size}}(a.keys,d);n.r=u.r,n.g=u.g,n.b=u.b,n.a=u.a,n.size=u.size,n.currentSpin=n.spinSpeed*n.currentAge*sL}}isDead(){return this.emitterDead&&0===this.particles.length}kill(){this.emitterDead=!0}addParticle(e,t){var a,r,n,i;let o,s,l,c,d=this.data,u=d.particles,h=t[0],m=t[1],f=t[2],g=(a=h,r=m,.9>Math.abs(n=f)?(o=r,s=-a,l=0):(o=-n,s=0,l=a),(c=Math.sqrt(o*o+s*s+l*l))<1e-8?[1,0,0]:[o/c,s/c,l/c]),p=(d.thetaMin+Math.random()*(d.thetaMax-d.thetaMin))*sU,y=(this.internalClock/1e3*d.phiReferenceVel+Math.random()*d.phiVariance)*sU;[h,m,f]=sH(h,m,f,g[0],g[1],g[2],p),[h,m,f]=sH(h,m,f,t[0],t[1],t[2],y);let v=Math.sqrt(h*h+m*m+f*f);v>1e-8&&(h/=v,m/=v,f/=v);let F=sq(d.ejectionVelocity,d.velocityVariance),b=[e[0]+h*d.ejectionOffset,e[1]+m*d.ejectionOffset,e[2]+f*d.ejectionOffset],S=[h*F,m*F,f*F],x=u.constantAcceleration,k=[S[0]*x,S[1]*x,S[2]*x],w=u.lifetimeMS;u.lifetimeVarianceMS>0&&(w+=Math.round(sq(0,u.lifetimeVarianceMS))),w=Math.max(1,w);let I=u.spinSpeed+((i=u.spinRandomMin)+Math.random()*(u.spinRandomMax-i)),C=u.keys[0];this.particles.push({pos:b,vel:S,acc:k,orientDir:[h,m,f],currentAge:0,totalLifetime:w,dataIndex:0,spinSpeed:I,currentSpin:0,r:C.r,g:C.g,b:C.b,a:C.a,size:C.size})}}let s$=` +// 'position' is auto-declared by Three.js for ShaderMaterial. +attribute vec4 particleColor; +attribute float particleSize; +attribute float particleSpin; +attribute vec2 quadCorner; // (-0.5,-0.5) to (0.5,0.5) +attribute vec3 orientDir; + +uniform bool uOrientParticles; +// cameraPosition is a built-in Three.js uniform. + +varying vec2 vUv; +varying vec4 vColor; + +void main() { + vUv = quadCorner + 0.5; // [0,1] range + vColor = particleColor; + + if (uOrientParticles) { + if (length(orientDir) < 0.0001) { + // V12: don't render oriented particles with zero velocity. + gl_Position = vec4(0.0, 0.0, 0.0, 0.0); + return; + } + // V12 oriented particle: quad aligned along direction, facing camera. + vec3 worldPos = (modelMatrix * vec4(position, 1.0)).xyz; + vec3 dir = normalize(orientDir); + vec3 dirFromCam = worldPos - cameraPosition; + vec3 crossDir = normalize(cross(dirFromCam, dir)); + + // V12 maps U along dir (velocity) — match by using quadCorner.x for dir. + vec3 offset = dir * quadCorner.x + crossDir * quadCorner.y; + worldPos += offset * particleSize; + + gl_Position = projectionMatrix * viewMatrix * vec4(worldPos, 1.0); + } else { + // Standard camera-facing billboard. + vec3 viewPos = (modelViewMatrix * vec4(position, 1.0)).xyz; + + // Apply spin rotation to quad corner. + float c = cos(particleSpin); + float s = sin(particleSpin); + vec2 rotated = vec2( + c * quadCorner.x - s * quadCorner.y, + s * quadCorner.x + c * quadCorner.y + ); + + // Offset in view space (camera-facing billboard). + viewPos.xy += rotated * particleSize; + + gl_Position = projectionMatrix * vec4(viewPos, 1.0); + } +} +`,sY=` +uniform sampler2D particleTexture; +uniform bool hasTexture; +uniform float debugOpacity; + +varying vec2 vUv; +varying vec4 vColor; + +void main() { + if (hasTexture) { + vec4 texColor = texture2D(particleTexture, vUv); + gl_FragColor = texColor * vColor; + } else { + gl_FragColor = vColor; + } + gl_FragColor.a *= debugOpacity; +} +`,sK=new Float32Array([-.5,-.5,.5,-.5,.5,.5,-.5,.5]),sX=new Map,sZ=new Set,sJ=new o.DataTexture(new Uint8Array([255,255,255,255]),1,1,o.RGBAFormat,o.UnsignedByteType);function sQ(e){if(!e)return sJ;let t=sX.get(e);if(t)return t;try{let t=(0,c.textureToUrl)(e),a=(0,f.loadTexture)(t,e=>{(0,o2.setupEffectTexture)(e),sZ.add(e)});return(0,o2.setupEffectTexture)(a),sX.set(e,a),a}catch{return sJ}}sJ.needsUpdate=!0;let s0=new o.SphereGeometry(1,6,6),s1=new o.MeshBasicMaterial({color:0xff0000,wireframe:!0}),s2=new o.BoxGeometry(.3,.3,.3),s3=new o.MeshBasicMaterial({color:65280,wireframe:!0}),s5=new o.SphereGeometry(1,12,8),s4=` + attribute vec4 vertexColor; + attribute vec2 texCoord; + varying vec4 vColor; + varying vec2 vUV; + void main() { + vColor = vertexColor; + vUV = texCoord; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } +`,s6=` + uniform sampler2D uTexture; + varying vec4 vColor; + varying vec2 vUV; + void main() { + vec4 tex = texture2D(uTexture, vUV); + gl_FragColor = vec4(vColor.rgb * tex.rgb, vColor.a * tex.a); + } +`;function s8(e){let t=(e+1)*2,a=new Float32Array(3*t),r=new Float32Array(2*t),n=new Float32Array(4*t),i=new Uint16Array(6*e);for(let t=0;t{let a=D.current,r=x.current;if(!a||!r)return;let n=I.engineStore.getState().playback,i="playing"===n.status,s=i?t*n.rate:0,l=1e3*s,d=S.getDataBlockData.bind(S);for(let e of r.entities){if("Explosion"!==e.type||!e.explosionDataBlockId||!e.position||T.current.has(e.id))continue;T.current.add(e.id);let t=function(e,t){let a=t(e);if(!a)return null;let r=[],n=[],i=a.particleEmitter;if("number"==typeof i){let e=t(i);if(e){let n=sV(e,t);if(n){let e=a.particleDensity??10;r.push({data:n,density:e})}}}let o=a.emitters;if(Array.isArray(o))for(let e of o){if("number"!=typeof e)continue;let a=t(e);if(!a)continue;let r=sV(a,t);r&&n.push(r)}return 0===r.length&&0===n.length?null:{burstEmitters:r,streamingEmitters:n,lifetimeMS:32*(a.lifetimeMS??31)}}(e.explosionDataBlockId,d);if(!t)continue;let r=[...e.position];for(let e of t.burstEmitters){let t=new sW(e.data,256);t.emitBurst(r,e.density);let n=sQ(e.data.particles.textureName),i=s9(256),s=le(n,e.data.particles.useInvAlpha,e.data.orientParticles),l=new o.Mesh(i,s);l.frustumCulled=!1,a.add(l),M.current.push({emitter:t,mesh:l,geometry:i,material:s,targetTexture:n,origin:r,isBurst:!0,hasBurst:!0})}for(let e of t.streamingEmitters){let n=new sW(e,256,t.lifetimeMS),i=sQ(e.particles.textureName),s=s9(256),l=le(i,e.particles.useInvAlpha,e.orientParticles),c=new o.Mesh(s,l);c.frustumCulled=!1,a.add(c),M.current.push({emitter:n,mesh:c,geometry:s,material:l,targetTexture:i,origin:r,isBurst:!1,hasBurst:!1})}let n=d(e.explosionDataBlockId);if(k){let i=n?function(e){let t=e.sizes;if(Array.isArray(t)&&t.length>0){let e=0;for(let a of t)e=Math.max(e,a.x,a.y,a.z);if(e>0)return e/1e3}let a=e.particleRadius;return"number"==typeof a&&a>0?a:5}(n):5,s=function(e){if(!e)return 0xff00ff;let t=e.toLowerCase();return t.includes("disc")?4491519:t.includes("grenade")?0xff8800:t.includes("mortar")?0xff4400:t.includes("plasma")?4521796:t.includes("laser")?0xff2222:t.includes("blaster")?0xffff00:t.includes("missile")?0xff6600:t.includes("bomb")?0xff0000:t.includes("mine")?0xff8844:t.includes("concussion")?0xffaa00:t.includes("shocklance")?8930559:t.includes("chaingun")||t.includes("bullet")?0xcccccc:0xff00ff}(e.dataBlock),l=new o.MeshBasicMaterial({color:s,wireframe:!0,transparent:!0,opacity:1,depthWrite:!1}),c=new o.Mesh(s5,l);c.frustumCulled=!1,c.scale.setScalar(i),c.position.set(r[1],r[2],r[0]),a.add(c);let{sprite:d,material:u}=function(e,t){let a=document.createElement("canvas"),r=a.getContext("2d");r.font="bold 32px monospace",a.width=Math.ceil(r.measureText(e).width)+16,a.height=48,r.font="bold 32px monospace",r.fillStyle=`#${t.toString(16).padStart(6,"0")}`,r.textBaseline="middle",r.fillText(e,8,a.height/2);let n=new o.CanvasTexture(a),i=new o.SpriteMaterial({map:n,transparent:!0,depthTest:!1,depthWrite:!1}),s=new o.Sprite(i),l=a.width/a.height;return s.scale.set(2*l,2,1),{sprite:s,material:i}}(`${e.id}: ${e.dataBlock??`expId:${e.explosionDataBlockId}`}`,s);d.position.set(r[1],r[2]+i+2,r[0]),d.frustumCulled=!1,a.add(d),R.current.push({entityId:e.id,mesh:c,material:l,label:d,labelMaterial:u,creationTime:(0,I.demoEffectNow)(),lifetimeMS:Math.max(t.lifetimeMS,3e3),targetRadius:i})}let i=n?.shockwave;if("number"==typeof i){let t=function(e,t){let a=t(e);if(!a)return null;let r=a.colors??[],n=a.times??[0,.5,1,1];return{width:a.width??1,numSegments:Math.max(a.numSegments??16,4),velocity:a.velocity??0,height:a.height??0,verticalCurve:a.verticalCurve??0,acceleration:a.acceleration??0,texWrap:a.texWrap??1,lifetimeMS:a.lifetimeMS??500,is2D:!!a.is2D,renderSquare:!!a.renderSquare,renderBottom:!!a.renderBottom,mapToTerrain:!!a.mapToTerrain,colors:r,times:n,textureName:a.textureName??"",mapToTexture:a.mapToTexture??""}}(i,d);if(t){let n=sQ(t.textureName),i=s8(t.numSegments),s=new o.ShaderMaterial({vertexShader:s4,fragmentShader:s6,uniforms:{uTexture:{value:n}},transparent:!0,depthWrite:!1,blending:o.AdditiveBlending,side:o.DoubleSide}),l=new o.Mesh(i,s);l.frustumCulled=!1,l.position.set(r[1],r[2],r[0]),a.add(l);let c=null,d=null;t.renderBottom&&(d=s8(t.numSegments),(c=new o.Mesh(d,s)).frustumCulled=!1,c.position.set(r[1],r[2],r[0]),c.scale.y=-1,a.add(c));let u=Math.abs(t.velocity)>1e-10?t.velocity:0;N.current.push({entityId:e.id,mesh:l,bottomMesh:c,geometry:i,bottomGeometry:d,material:s,creationTime:(0,I.demoEffectNow)(),lifetimeMS:t.lifetimeMS,data:t,radius:0,velocity:u})}}}let u=new Set;for(let e of r.entities){if(u.add(e.id),!e.maintainEmitterId||E.current.has(e.id))continue;E.current.add(e.id);let t=d(e.maintainEmitterId);if(!t)continue;let r=sV(t,d);if(!r)continue;let n=e.position?[...e.position]:[0,0,0],i=new sW(r,256),s=sQ(r.particles.textureName),l=s9(256),c=le(s,r.particles.useInvAlpha,r.orientParticles),h=new o.Mesh(l,c);h.frustumCulled=!1,a.add(h),M.current.push({emitter:i,mesh:h,geometry:l,material:c,targetTexture:s,origin:n,isBurst:!1,hasBurst:!1,followEntityId:e.id})}for(let e of M.current)e.followEntityId&&!u.has(e.followEntityId)&&e.emitter.kill();for(let e of E.current)u.has(e)||E.current.delete(e);let h=M.current;for(let e=h.length-1;e>=0;e--){let t=h[e];if(t.shaderChecked||(!function(e,t,a){let r=e.properties.get(t).currentProgram;if(!r)return;let n=r.program,i=e.getContext();i.getProgramParameter(n,i.LINK_STATUS)||console.error(`[ParticleFX] Shader LINK ERROR (${a}):`,i.getProgramInfoLog(n))}(P,t.material,t.isBurst?"burst":"stream"),t.shaderChecked=!0),t.followEntityId){let e=r.entities.find(e=>e.id===t.followEntityId);e?.position&&(t.origin[0]=e.position[0],t.origin[1]=e.position[1],t.origin[2]=e.position[2]),e?.direction&&(t.emitAxis=e.direction)}if(t.isBurst||t.emitter.emitPeriodic(t.origin,l,t.emitAxis),t.emitter.update(l),sZ.has(t.targetTexture)&&t.material.uniforms.particleTexture.value!==t.targetTexture&&(t.material.uniforms.particleTexture.value=t.targetTexture),t.material.uniforms.debugOpacity.value=k?.2:1,!function(e){let t=e.emitter.particles,a=e.geometry,r=a.getAttribute("position"),n=a.getAttribute("particleColor"),i=a.getAttribute("particleSize"),o=a.getAttribute("particleSpin"),s=a.getAttribute("orientDir"),l=r.array,c=n.array,d=i.array,u=o.array,h=s.array,m=Math.min(t.length,256),f=e.emitter.data.orientOnVelocity;for(let e=0;e=0;e--){let t=m[e],r=Math.min((f-t.creationTime)/t.lifetimeMS,1),n=Math.min(r/.1,1);t.mesh.scale.setScalar(t.targetRadius*n),t.material.opacity=1-r,t.labelMaterial.opacity=1-r,r>=1&&(a.remove(t.mesh),a.remove(t.label),t.material.dispose(),t.labelMaterial.dispose(),m.splice(e,1))}let g=N.current;for(let t=g.length-1;t>=0;t--){let r=g[t],n=Math.min((f-r.creationTime)/r.lifetimeMS,1);r.velocity=r.velocity+r.data.acceleration*s,r.radius=r.radius+r.velocity*s;let i=function(e,t){let{colors:a,times:r}=e;if(0===a.length)return[1,1,1,1];let n=0;for(let e=0;e=r[e]&&(n=e);let i=Math.min(n+1,a.length-1),o=r[n]??0,s=(r[i]??1)-o,l=s>0?Math.min((t-o)/s,1):0,c=a[n]??a[0],d=a[i]??a[0];return[c.r+(d.r-c.r)*l,c.g+(d.g-c.g)*l,c.b+(d.b-c.b)*l,c.a+(d.a-c.a)*l]}(r.data,n);s7(r.geometry,r.data,r.radius,i,r.data.is2D),r.bottomGeometry&&s7(r.bottomGeometry,r.data,r.radius,i,r.data.is2D),r.data.is2D&&r.mesh.lookAt(e.camera.position),n>=1&&(a.remove(r.mesh),r.bottomMesh&&a.remove(r.bottomMesh),r.geometry.dispose(),r.bottomGeometry?.dispose(),r.material.dispose(),g.splice(t,1))}if(i&&w&&C&&_&&D.current){for(let e of r.entities){if("Explosion"!==e.type||!e.explosionDataBlockId||!e.position)continue;let t=`snd:${e.id}`;if(j.current.has(t))continue;j.current.add(t);let a=d(e.explosionDataBlockId);if(!a)continue;let r=a.soundProfile;if("number"!=typeof r)continue;let n=(0,o8.resolveAudioProfile)(r,d);if(!n)continue;let i=new o.Vector3(e.position[1],e.position[2],e.position[0]);(0,o8.playOneShotSound)(n,_,C,i,D.current)}let e=B.current;for(let t of r.entities){if("Projectile"!==t.type||!t.dataBlockId||!t.position)continue;if(e.has(t.id)){e.get(t.id).position.set(t.position[1],t.position[2],t.position[0]);continue}if(e.size>=20)continue;let a=d(t.dataBlockId);if(!a)continue;let r=a.sound;if("number"!=typeof r)continue;let i=(0,o8.resolveAudioProfile)(r,d);if(i&&i.isLooping&&i.is3D)try{let a=(0,c.audioToUrl)(i.filename);(0,o8.getCachedAudioBuffer)(a,C,a=>{if(!u.has(t.id)||e.has(t.id))return;let r=D.current;if(!r)return;let s=new o.PositionalAudio(_);s.setBuffer(a),s.setDistanceModel("inverse"),s.setRefDistance(i.refDist),s.setMaxDistance(i.maxDist),s.setRolloffFactor(1),s.setVolume(i.volume),s.setPlaybackRate(n.rate),s.setLoop(!0),s.position.set(t.position[1],t.position[2],t.position[0]),r.add(s),(0,o8.trackDemoSound)(s),s.play(),e.set(t.id,s)})}catch{}}for(let[t,a]of e)if(!u.has(t)){(0,o8.untrackDemoSound)(a);try{a.stop()}catch{}a.disconnect(),D.current?.remove(a),e.delete(t)}for(let e of r.audioEvents){let t=`${e.timeSec}:${e.profileId}:${e.position?.x??""}`;if(j.current.has(t))continue;j.current.add(t);let a=(0,o8.resolveAudioProfile)(e.profileId,d);if(!a)continue;let r=e.position?new o.Vector3(e.position.y,e.position.z,e.position.x):void 0;(0,o8.playOneShotSound)(a,_,C,r,D.current)}}if(T.current.size>500){let e=new Set(r.entities.map(lr));for(let t of T.current)e.has(t)||T.current.delete(t)}if(j.current.size>500){let e=new Set(r.entities.map(la));for(let t of j.current)t.startsWith("snd:")&&e.has(t.slice(4))||j.current.delete(t)}},b[7]=w,b[8]=_,b[9]=C,b[10]=k,b[11]=P,b[12]=S,b[13]=x,b[14]=g):g=b[14],(0,u.useFrame)(g),b[15]===Symbol.for("react.memo_cache_sentinel")?(y=()=>()=>{let e=D.current;for(let t of M.current){if(e&&(e.remove(t.mesh),t.debugOriginMesh&&e.remove(t.debugOriginMesh),t.debugParticleMeshes))for(let a of t.debugParticleMeshes)e.remove(a);t.geometry.dispose(),t.material.dispose()}for(let t of(M.current=[],R.current))e&&(e.remove(t.mesh),e.remove(t.label)),t.material.dispose(),t.labelMaterial.dispose();for(let t of(R.current=[],N.current))e&&(e.remove(t.mesh),t.bottomMesh&&e.remove(t.bottomMesh)),t.geometry.dispose(),t.bottomGeometry?.dispose(),t.material.dispose();for(let[,t]of(N.current=[],T.current.clear(),E.current.clear(),B.current)){(0,o8.untrackDemoSound)(t);try{t.stop()}catch{}t.disconnect(),e&&e.remove(t)}B.current.clear(),j.current.clear()},p=[],b[15]=p,b[16]=y):(p=b[15],y=b[16]),(0,n.useEffect)(y,p),b[17]===Symbol.for("react.memo_cache_sentinel")?(F=(0,a.jsx)("group",{ref:D}),b[17]=F):F=b[17],F}function la(e){return e.id}function lr(e){return e.id}function ln(e){return e.gl}let li=new WeakMap;function lo(e){let t=li.get(e);return t||(t=new Map(e.entities.map(e=>[e.id,e])),li.set(e,t)),t}let ls=new o.Vector3,ll=new o.Quaternion,lc=new o.Quaternion,ld=new o.Quaternion(0,1,0,0),lu=new o.Vector3,lh=new o.Vector3,lm=new o.Vector3;function lf(e){let t,i,s,l,d,h,m,f,g,p,y,v,F=(0,r.c)(25),{recording:b}=e,S=(0,I.useEngineStoreApi)(),x=(0,n.useRef)(null),k=(0,n.useRef)(0),w=(0,n.useRef)(0),C=(0,n.useRef)(null),_=(0,n.useRef)(null);F[0]===Symbol.for("react.memo_cache_sentinel")?(t=new o.Vector3(0,o2.DEFAULT_EYE_HEIGHT,0),F[0]=t):t=F[0];let P=(0,n.useRef)(t),D=(0,n.useRef)(b.streamingPlayback??null),M=(0,n.useRef)(null);F[1]===Symbol.for("react.memo_cache_sentinel")?(i=new Map,F[1]=i):i=F[1];let T=(0,n.useRef)(i),E=(0,n.useRef)(null);F[2]===Symbol.for("react.memo_cache_sentinel")?(s=[],F[2]=s):s=F[2];let[B,j]=(0,n.useState)(s),[R,N]=(0,n.useState)(null);F[3]===Symbol.for("react.memo_cache_sentinel")?(l=e=>{if(e===E.current)return;E.current=e;let t=T.current,a=new Map,r=!1;for(let n of e.entities){let i=t.get(n.id);i&&i.type===n.type&&i.dataBlock===n.dataBlock&&i.weaponShape===n.weaponShape&&i.className===n.className&&i.ghostIndex===n.ghostIndex&&i.dataBlockId===n.dataBlockId&&i.shapeHint===n.shapeHint?(i.playerName!==n.playerName||i.iffColor!==n.iffColor||i.targetRenderFlags!==n.targetRenderFlags||i.threads!==n.threads||i.weaponImageState!==n.weaponImageState||i.weaponImageStates!==n.weaponImageStates||i.headPitch!==n.headPitch||i.headYaw!==n.headYaw||i.direction!==n.direction||i.visual!==n.visual)&&(i={...i,playerName:n.playerName,iffColor:n.iffColor,targetRenderFlags:n.targetRenderFlags,threads:n.threads,weaponImageState:n.weaponImageState,weaponImageStates:n.weaponImageStates,headPitch:n.headPitch,headYaw:n.headYaw,direction:n.direction,visual:n.visual},r=!0):((i=(0,o2.buildStreamDemoEntity)(n.id,n.type,n.dataBlock,n.visual,n.direction,n.weaponShape,n.playerName,n.className,n.ghostIndex,n.dataBlockId,n.shapeHint,n.explosionDataBlockId,n.faceViewer)).playerName=n.playerName,i.iffColor=n.iffColor,i.targetRenderFlags=n.targetRenderFlags,i.threads=n.threads,i.weaponImageState=n.weaponImageState,i.weaponImageStates=n.weaponImageStates,i.headPitch=n.headPitch,i.headYaw=n.headYaw,i.direction=n.direction,i.visual=n.visual,i.explosionDataBlockId=n.explosionDataBlockId,i.faceViewer=n.faceViewer,i.spawnTime=e.timeSec,r=!0),0===i.keyframes.length&&i.keyframes.push({time:e.timeSec,position:n.position??[0,0,0],rotation:n.rotation??[0,0,0,1]});let o=i.keyframes[0];o.time=e.timeSec,n.position&&(o.position=n.position),n.rotation&&(o.rotation=n.rotation),o.velocity=n.velocity,o.health=n.health,o.energy=n.energy,o.actionAnim=n.actionAnim,o.actionAtEnd=n.actionAtEnd,o.damageState=n.damageState,a.set(n.id,i)}for(let[n,i]of t)if(!a.has(n)){if("Explosion"===i.type&&i.dataBlock&&null!=i.spawnTime&&e.timeSec-i.spawnTime<5){a.set(n,i);continue}r=!0}a.size!==t.size&&(r=!0),T.current=a,r&&j(Array.from(a.values()));let n=null;if(e.camera?.mode==="first-person"&&e.camera.controlEntityId){let t=a.get(e.camera.controlEntityId);t?.dataBlock&&(n=t.dataBlock)}N(e=>e===n?e:n)},F[3]=l):l=F[3];let A=l;return F[4]!==S||F[5]!==b.streamingPlayback?(d=()=>{D.current=b.streamingPlayback??null,T.current=new Map,E.current=null,M.current=null,k.current=0,w.current=0,C.current=null,_.current=null;let e=D.current;if(!e)return void S.getState().setPlaybackStreamSnapshot(null);for(let t of(e.reset(),e.getEffectShapes()))L.useGLTF.preload((0,c.shapeToUrl)(t));let t=e.getSnapshot();return k.current=t.timeSec,w.current=t.timeSec,C.current=t,_.current=t,A(t),S.getState().setPlaybackStreamSnapshot(t),M.current=t,()=>{S.getState().setPlaybackStreamSnapshot(null)}},F[4]=S,F[5]=b.streamingPlayback,F[6]=d):d=F[6],F[7]!==S||F[8]!==b?(h=[b,S,A],F[7]=S,F[8]=b,F[9]=h):h=F[9],(0,n.useEffect)(d,h),F[10]!==S?(m=(e,t)=>{let a=D.current;if(!a)return;let r=S.getState(),n=r.playback,i="playing"===n.status,o=n.timeMs/1e3,s=!i&&Math.abs(o-w.current)>5e-4,l=i&&Math.abs(o-k.current)>.05,c=s||l;c&&(w.current=o),i&&((0,I.advanceEffectClock)(t,n.rate),w.current=w.current+t*n.rate);let d=Math.max(1,Math.ceil(1e3*t*Math.max(n.rate,.01)/32)+2),u=w.current+o2.STREAM_TICK_SEC,h=a.stepToTime(u,i&&!c?d:1/0),m=_.current;!m||h.timeSec1.5*o2.STREAM_TICK_SEC?(C.current=h,_.current=h):h.timeSec!==m.timeSec&&(C.current=m,_.current=h);let f=_.current??h,g=C.current??f,p=f.timeSec-o2.STREAM_TICK_SEC,y=Math.max(0,Math.min(1,(w.current-p)/o2.STREAM_TICK_SEC));k.current=w.current,h.exhausted&&i&&(w.current=Math.min(w.current,h.timeSec)),A(f);let v=M.current;(!v||f.timeSec!==v.timeSec||f.exhausted!==v.exhausted||f.status.health!==v.status.health||f.status.energy!==v.status.energy||f.camera?.mode!==v.camera?.mode||f.camera?.controlEntityId!==v.camera?.controlEntityId||f.camera?.orbitTargetId!==v.camera?.orbitTargetId||f.chatMessages.length!==v.chatMessages.length||f.teamScores.length!==v.teamScores.length||f.teamScores.some((e,t)=>e.score!==v.teamScores[t]?.score||e.playerCount!==v.teamScores[t]?.playerCount))&&(M.current=f,r.setPlaybackStreamSnapshot(f));let F=f.camera,b=F&&g.camera&&g.camera.mode===F.mode&&g.camera.controlEntityId===F.controlEntityId&&g.camera.orbitTargetId===F.orbitTargetId?g.camera:null;if(F){if(b){let t=b.position[0],a=b.position[1],r=b.position[2],n=F.position[0],i=F.position[1],o=F.position[2];e.camera.position.set(a+(i-a)*y,r+(o-r)*y,t+(n-t)*y),ll.set(...b.rotation),lc.set(...F.rotation),ll.slerp(lc,y),e.camera.quaternion.copy(ll)}else e.camera.position.set(F.position[1],F.position[2],F.position[0]),e.camera.quaternion.set(...F.rotation);if(Number.isFinite(F.fov)&&"isPerspectiveCamera"in e.camera&&e.camera.isPerspectiveCamera){let t=e.camera,a=b&&Number.isFinite(b.fov)?b.fov+(F.fov-b.fov)*y:F.fov,r=(0,o2.torqueHorizontalFovToThreeVerticalFov)(a,t.aspect);Math.abs(t.fov-r)>.01&&(t.fov=r,t.updateProjectionMatrix())}}let E=lo(f),B=lo(g),j=T.current,R=x.current;if(R)for(let t of R.children){let a=E.get(t.name);if(!a){let e=j.get(t.name);if(e?.keyframes[0]?.position){let a=e.keyframes[0];t.visible=!0,t.position.set(a.position[1],a.position[2],a.position[0]);continue}}if(!a?.position){t.visible=!1;continue}t.visible=!0;let r=B.get(t.name);if(r?.position){let e=r.position[0],n=r.position[1],i=r.position[2],o=a.position[0],s=a.position[1],l=a.position[2],c=e+(o-e)*y,d=n+(s-n)*y,u=i+(l-i)*y;t.position.set(d,u,c)}else t.position.set(a.position[1],a.position[2],a.position[0]);a.faceViewer?t.quaternion.copy(e.camera.quaternion).multiply(ld):a.visual?.kind==="tracer"?t.quaternion.identity():a.rotation&&(r?.rotation?(ll.set(...r.rotation),lc.set(...a.rotation),ll.slerp(lc,y),t.quaternion.copy(ll)):t.quaternion.set(...a.rotation))}let N=F?.mode;if("third-person"===N&&R&&F?.orbitTargetId){let t=R.children.find(e=>e.name===F.orbitTargetId);if(t){let a=E.get(F.orbitTargetId);lh.copy(t.position),a?.type==="Player"&&(lh.y=lh.y+1);let r=!1;if("number"==typeof F.yaw&&"number"==typeof F.pitch){let e=Math.sin(F.pitch),t=Math.cos(F.pitch),a=Math.sin(F.yaw),n=Math.cos(F.yaw);lu.set(-t,-a*e,-n*e),r=lu.lengthSq()>1e-8}if(r||(lu.copy(e.camera.position).sub(lh),r=lu.lengthSq()>1e-8),r){lu.normalize();let t=Math.max(.1,F.orbitDistance??4);lm.copy(lh).addScaledVector(lu,t),e.camera.position.copy(lm),e.camera.lookAt(lh)}}}if("first-person"===N&&R&&F?.controlEntityId){let t=R.children.find(e=>e.name===F.controlEntityId);t?(ls.copy(P.current).applyQuaternion(t.quaternion),e.camera.position.add(ls)):e.camera.position.y=e.camera.position.y+P.current.y}i&&h.exhausted&&r.setPlaybackStatus("paused");let G=1e3*w.current;Math.abs(G-n.timeMs)>.5&&r.setPlaybackTime(G)},F[10]=S,F[11]=m):m=F[11],(0,u.useFrame)(m),F[12]!==B||F[13]!==b.streamingPlayback?(f=B.map(e=>(0,a.jsx)(sR,{entity:e,timeRef:k,playback:b.streamingPlayback},e.id)),F[12]=B,F[13]=b.streamingPlayback,F[14]=f):f=F[14],F[15]!==f?(g=(0,a.jsx)("group",{ref:x,children:f}),F[15]=f,F[16]=g):g=F[16],F[17]!==b.streamingPlayback?(p=(0,a.jsx)(lt,{playback:b.streamingPlayback,snapshotRef:_}),F[17]=b.streamingPlayback,F[18]=p):p=F[18],F[19]!==R?(y=R&&(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(sl,{shapeName:R,eyeOffsetRef:P})}),F[19]=R,F[20]=y):y=F[20],F[21]!==p||F[22]!==y||F[23]!==g?(v=(0,a.jsxs)(eE.TickProvider,{children:[g,p,y]}),F[21]=p,F[22]=y,F[23]=g,F[24]=v):v=F[24],v}function lg(){let e,t=(0,r.c)(2),n=ts();return n?(t[0]!==n?(e=(0,a.jsx)(lf,{recording:n}),t[0]=n,t[1]=e):e=t[1],e):null}var lp=e.i(21629);let ly=[.25,.5,1,2,4];function lv(e){let t=Math.floor(e/60),a=Math.floor(e%60);return`${t}:${a.toString().padStart(2,"0")}`}function lF(){let e,t,i,o,s,l,c,d,u,h,m,f,g=(0,r.c)(33),p=ts(),y=(0,I.useEngineSelector)(tc),v=(0,I.useEngineSelector)(td),F=(0,I.useEngineSelector)(tu),b=(0,I.useEngineSelector)(th),{play:S,pause:x,seek:k,setSpeed:w}=tm();g[0]!==y||g[1]!==x||g[2]!==S||g[3]!==p?(e=()=>{if(!p)return;let e=e=>{if("Space"!==e.code)return;let t=e.target;"INPUT"===t.tagName||"TEXTAREA"===t.tagName||"SELECT"===t.tagName||"BUTTON"===t.tagName||t.isContentEditable||(e.preventDefault(),y?x():S())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},t=[p,y,S,x],g[0]=y,g[1]=x,g[2]=S,g[3]=p,g[4]=e,g[5]=t):(e=g[4],t=g[5]),(0,n.useEffect)(e,t),g[6]!==k?(i=e=>{k(parseFloat(e.target.value))},g[6]=k,g[7]=i):i=g[7];let C=i;g[8]!==w?(o=e=>{w(parseFloat(e.target.value))},g[8]=w,g[9]=o):o=g[9];let _=o;if(!p)return null;let P=y?x:S,D=y?"Pause":"Play",M=y?"❚❚":"▶";g[10]!==P||g[11]!==D||g[12]!==M?(s=(0,a.jsx)("button",{className:lp.default.PlayPause,onClick:P,"aria-label":D,children:M}),g[10]=P,g[11]=D,g[12]=M,g[13]=s):s=g[13],g[14]!==v?(l=lv(v),g[14]=v,g[15]=l):l=g[15],g[16]!==F?(c=lv(F),g[16]=F,g[17]=c):c=g[17];let T=`${l} / ${c}`;return g[18]!==T?(d=(0,a.jsx)("span",{className:lp.default.Time,children:T}),g[18]=T,g[19]=d):d=g[19],g[20]!==v||g[21]!==F||g[22]!==C?(u=(0,a.jsx)("input",{className:lp.default.Seek,type:"range",min:0,max:F,step:.01,value:v,onChange:C}),g[20]=v,g[21]=F,g[22]=C,g[23]=u):u=g[23],g[24]===Symbol.for("react.memo_cache_sentinel")?(h=ly.map(lb),g[24]=h):h=g[24],g[25]!==_||g[26]!==b?(m=(0,a.jsx)("select",{className:lp.default.Speed,value:b,onChange:_,children:h}),g[25]=_,g[26]=b,g[27]=m):m=g[27],g[28]!==d||g[29]!==u||g[30]!==m||g[31]!==s?(f=(0,a.jsxs)("div",{className:lp.default.Root,onKeyDown:lk,onPointerDown:lx,onClick:lS,children:[s,d,u,m]}),g[28]=d,g[29]=u,g[30]=m,g[31]=s,g[32]=f):f=g[32],f}function lb(e){return(0,a.jsxs)("option",{value:e,children:[e,"x"]},e)}function lS(e){return e.stopPropagation()}function lx(e){return e.stopPropagation()}function lk(e){return e.stopPropagation()}var lw=e.i(75840);let lI=(0,c.textureToUrl)("gui/hud_new_compass"),lC=(0,c.textureToUrl)("gui/hud_new_NSEW");function l_(e){let t,n,i=(0,r.c)(3),{yaw:o}=e;if(null==o)return null;let s=180*o/Math.PI;i[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)("img",{src:lI,alt:"",className:lw.default.CompassRing}),i[0]=t):t=i[0];let l=`rotate(${-s}deg)`;return i[1]!==l?(n=(0,a.jsxs)("div",{className:lw.default.Compass,children:[t,(0,a.jsx)("img",{src:lC,alt:"",className:lw.default.CompassNSEW,style:{transform:l}})]}),i[1]=l,i[2]=n):n=i[2],n}function lP(e){let t,n=(0,r.c)(2),{value:i}=e,o=Math.max(0,Math.min(100,100*i)),s=`${o}%`;return n[0]!==s?(t=(0,a.jsx)("div",{className:lw.default.BarTrack,children:(0,a.jsx)("div",{className:lw.default.BarFillHealth,style:{width:s}})}),n[0]=s,n[1]=t):t=n[1],t}function lD(e){let t,n=(0,r.c)(2),{value:i}=e,o=Math.max(0,Math.min(100,100*i)),s=`${o}%`;return n[0]!==s?(t=(0,a.jsx)("div",{className:lw.default.BarTrack,children:(0,a.jsx)("div",{className:lw.default.BarFillEnergy,style:{width:s}})}),n[0]=s,n[1]=t):t=n[1],t}let lM={weapon_sniper:"gui/hud_ret_sniper",weapon_shocklance:"gui/hud_ret_shocklance",weapon_targeting:"gui/hud_ret_targlaser"};function lT(){let e,t=(0,r.c)(5),n=(0,I.useEngineSelector)(lE);if(void 0===n)return null;let i=lM[!n?"":n.replace(/\.dts$/i,"").toLowerCase()];if(i){let e,r;return t[0]!==i?(e=(0,c.textureToUrl)(i),t[0]=i,t[1]=e):e=t[1],t[2]!==e?(r=(0,a.jsx)("div",{className:lw.default.Reticle,children:(0,a.jsx)("img",{src:e,alt:"",className:lw.default.ReticleImage})}),t[2]=e,t[3]=r):r=t[3],r}return t[4]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)("div",{className:lw.default.Reticle,children:(0,a.jsx)("div",{className:lw.default.ReticleDot})}),t[4]=e):e=t[4],e}function lE(e){let t=e.playback.streamSnapshot;if(!t||t.camera?.mode!=="first-person")return;let a=t.controlPlayerGhostId;if(a)return t.entities.find(e=>e.id===a)?.weaponShape}let lB={0:{icon:"gui/hud_blaster",label:"Blaster"},1:{icon:"gui/hud_plasma",label:"Plasma"},2:{icon:"gui/hud_chaingun",label:"Chaingun"},3:{icon:"gui/hud_disc",label:"Spinfusor"},4:{icon:"gui/hud_grenlaunch",label:"GL"},5:{icon:"gui/hud_sniper",label:"Laser Rifle"},6:{icon:"gui/hud_elfgun",label:"ELF Gun"},7:{icon:"gui/hud_new_mortar",label:"Mortar"},8:{icon:"gui/hud_missiles",label:"Missile"},9:{icon:"gui/hud_targetlaser",label:"Targeting"},10:{icon:"gui/hud_shocklance",label:"Shocklance"},11:{icon:"gui/hud_disc",label:"Spinfusor"},12:{icon:"gui/hud_grenlaunch",label:"GL"},13:{icon:"gui/hud_chaingun",label:"Chaingun"},14:{icon:"gui/hud_targetlaser",label:"Targeting"},15:{icon:"gui/hud_targetlaser",label:"Targeting"},16:{icon:"gui/hud_shocklance",label:"Shocklance"},17:{icon:"gui/hud_new_mortar",label:"Mortar"}},lj=new Map(Object.entries(lB).map(([e,t])=>[Number(e),(0,c.textureToUrl)(t.icon)])),lR=new Set([9,14,15]),lN=(0,c.textureToUrl)("gui/hud_infinity");function lA(e){let t,n,i,o,s=(0,r.c)(12),{slot:l,isSelected:c}=e,d=lB[l.index];if(!d)return null;let u=l.ammo<0,h=`${lw.default.PackInvItem} ${c?lw.default.PackInvItemActive:lw.default.PackInvItemDim}`;return s[0]!==l.index?(t=lj.get(l.index),s[0]=l.index,s[1]=t):t=s[1],s[2]!==d.label||s[3]!==t?(n=(0,a.jsx)("img",{src:t,alt:d.label,className:lw.default.PackInvIcon}),s[2]=d.label,s[3]=t,s[4]=n):n=s[4],s[5]!==u||s[6]!==l.ammo?(i=u?(0,a.jsx)("img",{src:lN,alt:"\\u221E",className:lw.default.PackInvInfinity}):(0,a.jsx)("span",{className:lw.default.PackInvCount,children:l.ammo}),s[5]=u,s[6]=l.ammo,s[7]=i):i=s[7],s[8]!==h||s[9]!==n||s[10]!==i?(o=(0,a.jsxs)("div",{className:h,children:[n,i]}),s[8]=h,s[9]=n,s[10]=i,s[11]=o):o=s[11],o}function lG(){let e,t,n,i,o,s,l=(0,r.c)(15),c=(0,I.useEngineSelector)(lU);if(!c||!c.slots.length)return null;if(l[0]!==c.slots){for(let a of(t=[],e=[],c.slots))lR.has(a.index)?e.push(a):t.push(a);l[0]=c.slots,l[1]=e,l[2]=t}else e=l[1],t=l[2];return l[3]!==t||l[4]!==c?(n=t.map(e=>(0,a.jsx)(lA,{slot:e,isSelected:e.index===c.activeIndex},e.index)),l[3]=t,l[4]=c,l[5]=n):n=l[5],l[6]!==e.length?(i=e.length>0&&(0,a.jsx)("div",{className:lw.default.WeaponSeparator}),l[6]=e.length,l[7]=i):i=l[7],l[8]!==e||l[9]!==c?(o=e.map(e=>(0,a.jsx)(lA,{slot:e,isSelected:e.index===c.activeIndex},e.index)),l[8]=e,l[9]=c,l[10]=o):o=l[10],l[11]!==n||l[12]!==i||l[13]!==o?(s=(0,a.jsxs)("div",{className:lw.default.WeaponHUD,children:[n,i,o]}),l[11]=n,l[12]=i,l[13]=o,l[14]=s):s=l[14],s}function lU(e){return e.playback.streamSnapshot?.weaponsHud}let lL={1:"Storm",2:"Inferno",3:"Starwolf",4:"Diamond Sword",5:"Blood Eagle",6:"Phoenix"};function lz(){let e,t,n,i=(0,r.c)(11),o=(0,I.useEngineSelector)(lV),s=(0,I.useEngineSelector)(lO);if(!o?.length)return null;if(i[0]!==s||i[1]!==o){let r,n;i[4]!==s?(r=(e,t)=>{if(s){if(e.teamId===s)return -1;if(t.teamId===s)return 1}return e.teamId-t.teamId},i[4]=s,i[5]=r):r=i[5];let l=[...o].sort(r);e=lw.default.TeamScores,i[6]!==s?(n=e=>{let t=s>0&&e.teamId===s,r=e.name||(lL[e.teamId]??`Team ${e.teamId}`);return(0,a.jsxs)("div",{className:lw.default.TeamRow,children:[(0,a.jsx)("span",{className:t?lw.default.TeamNameFriendly:lw.default.TeamNameEnemy,children:r}),(0,a.jsx)("span",{className:lw.default.TeamScore,children:e.score}),(0,a.jsxs)("span",{className:lw.default.TeamCount,children:["(",e.playerCount,")"]})]},e.teamId)},i[6]=s,i[7]=n):n=i[7],t=l.map(n),i[0]=s,i[1]=o,i[2]=e,i[3]=t}else e=i[2],t=i[3];return i[8]!==e||i[9]!==t?(n=(0,a.jsx)("div",{className:e,children:t}),i[8]=e,i[9]=t,i[10]=n):n=i[10],n}function lO(e){return e.playback.streamSnapshot?.playerSensorGroup}function lV(e){return e.playback.streamSnapshot?.teamScores}let lq={0:lw.default.ChatColor0,1:lw.default.ChatColor1,2:lw.default.ChatColor2,3:lw.default.ChatColor3,4:lw.default.ChatColor4,5:lw.default.ChatColor5,6:lw.default.ChatColor6,7:lw.default.ChatColor7,8:lw.default.ChatColor8,9:lw.default.ChatColor9};function lH(){let e,t,n,i,o=(0,r.c)(13),s=(0,I.useEngineSelector)(lY),l=(0,I.useEngineSelector)(l$);if(!s||!s.length||null==l)return null;let c=l-7.5;if(o[0]!==c||o[1]!==s||o[2]!==l){n=Symbol.for("react.early_return_sentinel");e:{let r,i;o[6]!==c?(r=e=>e.timeSec>c&&""!==e.text.trim(),o[6]=c,o[7]=r):r=o[7];let d=s.filter(r);if(!d.length){n=null;break e}e=lw.default.ChatWindow,o[8]!==l?(i=(e,t)=>{let r=l-e.timeSec,n=r<=6?1:Math.max(0,1-(r-6)/1.5);return(0,a.jsx)("div",{className:lw.default.ChatMessage,style:{opacity:n},children:e.segments?e.segments.map(lW):(0,a.jsxs)("span",{className:null!=e.colorCode&&lq[e.colorCode]?lq[e.colorCode]:lq[0],children:[e.sender?`${e.sender}: `:"",e.text]})},`${e.timeSec}-${t}`)},o[8]=l,o[9]=i):i=o[9],t=d.map(i)}o[0]=c,o[1]=s,o[2]=l,o[3]=e,o[4]=t,o[5]=n}else e=o[3],t=o[4],n=o[5];return n!==Symbol.for("react.early_return_sentinel")?n:(o[10]!==e||o[11]!==t?(i=(0,a.jsx)("div",{className:e,children:t}),o[10]=e,o[11]=t,o[12]=i):i=o[12],i)}function lW(e,t){return(0,a.jsx)("span",{className:lq[e.colorCode]??lq[0],children:e.text},t)}function l$(e){return e.playback.streamSnapshot?.timeSec}function lY(e){return e.playback.streamSnapshot?.chatMessages}let lK=new Map(Object.entries({0:"gui/hud_new_packammo",1:"gui/hud_new_packcloak",2:"gui/hud_new_packenergy",3:"gui/hud_new_packrepair",4:"gui/hud_new_packsatchel",5:"gui/hud_new_packshield",6:"gui/hud_new_packinventory",7:"gui/hud_new_packmotionsens",8:"gui/hud_new_packradar",9:"gui/hud_new_packturretout",10:"gui/hud_new_packturretin",11:"gui/hud_new_packsensjam",12:"gui/hud_new_packturret",13:"gui/hud_new_packturret",14:"gui/hud_new_packturret",15:"gui/hud_new_packturret",16:"gui/hud_new_packturret",17:"gui/hud_new_packturret",18:"gui/hud_satchel_unarmed",19:"gui/hud_new_packenergy"}).map(([e,t])=>[Number(e),(0,c.textureToUrl)(t)])),lX=new Map(Object.entries({1:"gui/hud_new_packcloak_armed",3:"gui/hud_new_packrepair_armed",4:"gui/hud_satchel_armed",5:"gui/hud_new_packshield_armed",11:"gui/hud_new_packsensjam_armed"}).map(([e,t])=>[Number(e),(0,c.textureToUrl)(t)])),lZ={0:{icon:"gui/hud_handgren",label:"Grenade"},1:{icon:"gui/hud_mine",label:"Mine"},2:{icon:"gui/hud_beacon",label:"Beacon"},3:{icon:"gui/hud_medpack",label:"Repair Kit"}},lJ=new Map(Object.entries(lZ).map(([e,t])=>[Number(e),(0,c.textureToUrl)(t.icon)]));function lQ(){let e,t,n,i,o,s,l,c=(0,r.c)(25),d=(0,I.useEngineSelector)(l2),u=(0,I.useEngineSelector)(l1),h=d&&d.packIndex>=0;if(h){let t,a;c[0]!==d.active||c[1]!==d.packIndex?(t=d.active?lX.get(d.packIndex):void 0,c[0]=d.active,c[1]=d.packIndex,c[2]=t):t=c[2];let r=t;c[3]!==r||c[4]!==d.packIndex?(a=r??lK.get(d.packIndex),c[3]=r,c[4]=d.packIndex,c[5]=a):a=c[5],e=a}if(c[6]!==u){if(t=new Map,u)for(let e of u.slots)t.set(e.slot,e.count);c[6]=u,c[7]=t}else t=c[7];if(c[8]!==d||c[9]!==t||c[10]!==h||c[11]!==e){s=Symbol.for("react.early_return_sentinel");e:{let r,l=Object.keys(lZ).map(Number).sort(l0);if(!h&&!t.size){s=null;break e}n=lw.default.PackInventoryHUD,c[16]!==d||c[17]!==e?(i=e&&(0,a.jsxs)("div",{className:`${lw.default.PackInvItem} ${d.active?lw.default.PackInvItemActive:""}`,children:[(0,a.jsx)("img",{src:e,alt:"",className:lw.default.PackInvIcon}),(0,a.jsx)("span",{className:lw.default.PackInvCount,children:d.text||" "})]}),c[16]=d,c[17]=e,c[18]=i):i=c[18],c[19]!==t?(r=e=>{let r=lZ[e],n=lJ.get(e);return r&&n?(0,a.jsxs)("div",{className:lw.default.PackInvItem,children:[(0,a.jsx)("img",{src:n,alt:r.label,className:lw.default.PackInvIcon}),(0,a.jsx)("span",{className:lw.default.PackInvCount,children:t.get(e)??0})]},e):null},c[19]=t,c[20]=r):r=c[20],o=l.map(r)}c[8]=d,c[9]=t,c[10]=h,c[11]=e,c[12]=n,c[13]=i,c[14]=o,c[15]=s}else n=c[12],i=c[13],o=c[14],s=c[15];return s!==Symbol.for("react.early_return_sentinel")?s:(c[21]!==n||c[22]!==i||c[23]!==o?(l=(0,a.jsxs)("div",{className:n,children:[i,o]}),c[21]=n,c[22]=i,c[23]=o,c[24]=l):l=c[24],l)}function l0(e,t){return e-t}function l1(e){return e.playback.streamSnapshot?.inventoryHud}function l2(e){return e.playback.streamSnapshot?.backpackHud}function l3(){let e,t,n,i,o,s,l,c,d,u,h,m=(0,r.c)(19),f=ts(),g=(0,I.useEngineSelector)(l5);if(!f)return null;let p=g?.status;if(!p)return null;m[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)(lH,{}),m[0]=e):e=m[0],m[1]!==p.health?(t=(0,a.jsx)(lP,{value:p.health}),m[1]=p.health,m[2]=t):t=m[2],m[3]!==p.energy?(n=(0,a.jsx)(lD,{value:p.energy}),m[3]=p.energy,m[4]=n):n=m[4],m[5]!==t||m[6]!==n?(i=(0,a.jsxs)("div",{className:lw.default.Bars,children:[t,n]}),m[5]=t,m[6]=n,m[7]=i):i=m[7];let y=g?.camera?.yaw;return m[8]!==y?(o=(0,a.jsx)(l_,{yaw:y}),m[8]=y,m[9]=o):o=m[9],m[10]!==i||m[11]!==o?(s=(0,a.jsxs)("div",{className:lw.default.TopRight,children:[i,o]}),m[10]=i,m[11]=o,m[12]=s):s=m[12],m[13]===Symbol.for("react.memo_cache_sentinel")?(c=(0,a.jsx)(lG,{}),d=(0,a.jsx)(lQ,{}),u=(0,a.jsx)(lz,{}),l=(0,a.jsx)(lT,{}),m[13]=l,m[14]=c,m[15]=d,m[16]=u):(l=m[13],c=m[14],d=m[15],u=m[16]),m[17]!==s?(h=(0,a.jsxs)("div",{className:lw.default.PlayerHUD,children:[e,s,c,d,u,l]}),m[17]=s,m[18]=h):h=m[18],h}function l5(e){return e.playback.streamSnapshot}function l4(){let{audioLoader:e,audioListener:t}=(0,o0.useAudio)(),a=(0,v.useSettings)(),r=a?.audioEnabled??!1,i=(0,I.useEngineSelector)(e=>e.playback.streamSnapshot?.chatMessages),s=(0,I.useEngineSelector)(e=>e.playback.streamSnapshot?.timeSec),l=(0,n.useRef)(new WeakSet),d=(0,n.useRef)(new Map);return(0,n.useEffect)(()=>{if(!r||!e||!t||!i?.length||null==s)return;let a=l.current,n=d.current;for(let r of i){if(!a.has(r)){if((a.add(r),r.soundPath)&&!(Math.abs(s-r.timeSec)>2))try{let a=(0,c.audioToUrl)(r.soundPath),i=r.soundPitch??1,s=I.engineStore.getState().playback.rate,l=r.sender;(0,o8.getCachedAudioBuffer)(a,e,e=>{if(l){let e=n.get(l);if(e){try{e.stop()}catch{}(0,o8.untrackDemoSound)(e),e.disconnect(),n.delete(l)}}let a=new o.Audio(t);a.setBuffer(e),a.setPlaybackRate(i*s),(0,o8.trackDemoSound)(a,i),l&&n.set(l,a),a.play(),a.source.onended=()=>{(0,o8.untrackDemoSound)(a),a.disconnect(),l&&n.get(l)===a&&n.delete(l)}})}catch{}}}},[r,e,t,i,s]),null}var l6=e.i(38847),l8=e.i(3011);let l7=(0,n.lazy)(()=>e.A(59197).then(e=>({default:e.MapInfoDialog}))),l9=new eW.QueryClient,ce={toneMapping:o.NoToneMapping,outputColorSpace:o.SRGBColorSpace},ct=(0,l6.createParser)({parse(e){let[t,a]=e.split("~"),r=a,n=(0,eG.getMissionInfo)(t).missionTypes;return a&&n.includes(a)||(r=n[0]),{missionName:t,missionType:r}},serialize:({missionName:e,missionType:t})=>1===(0,eG.getMissionInfo)(e).missionTypes.length?e:`${e}~${t}`,eq:(e,t)=>e.missionName===t.missionName&&e.missionType===t.missionType}).withDefault({missionName:"RiverDance",missionType:"CTF"});function ca(){let e,t,s,l,c,d,u,h,m,f,g,p,y,F,b,S,x,k,w,I,C,_,P,D,M,T,E,B,j,R,N,A,G,U,L,z,O,V,q,H=(0,r.c)(69),[W,$]=(0,l6.useQueryState)("mission",ct),[Y,K]=(0,l6.useQueryState)("fog",l6.parseAsBoolean);H[0]!==K?(e=()=>{K(null)},H[0]=K,H[1]=e):e=H[1];let X=e;H[2]!==X||H[3]!==$?(t=e=>{window.location.hash="",X(),$(e)},H[2]=X,H[3]=$,H[4]=t):t=H[4];let Z=t,J=(z=(0,r.c)(2),O=(0,n.useRef)(null),z[0]===Symbol.for("react.memo_cache_sentinel")?(U=e=>{let t=window.matchMedia("(pointer: coarse)");return t.addEventListener("change",e),O.current=t,()=>{t.removeEventListener("change",e)}},z[0]=U):U=z[0],V=U,z[1]===Symbol.for("react.memo_cache_sentinel")?(L=()=>O.current?.matches??null,z[1]=L):L=z[1],q=L,(0,n.useSyncExternalStore)(V,q,oX)),{missionName:Q,missionType:ee}=W,[et,ea]=(0,n.useState)(!1),[er,en]=(0,n.useState)(0),[ei,eo]=(0,n.useState)(!0),es=er<1;H[5]!==es?(s=()=>{if(es)eo(!0);else{let e=setTimeout(()=>eo(!1),500);return()=>clearTimeout(e)}},l=[es],H[5]=es,H[6]=s,H[7]=l):(s=H[6],l=H[7]),(0,n.useEffect)(s,l),H[8]!==Z?(c=()=>(window.setMissionName=e=>{let t=(0,eG.getMissionInfo)(e).missionTypes;Z({missionName:e,missionType:t[0]})},window.getMissionList=eG.getMissionList,window.getMissionInfo=eG.getMissionInfo,cr),d=[Z],H[8]=Z,H[9]=c,H[10]=d):(c=H[9],d=H[10]),(0,n.useEffect)(c,d),H[11]===Symbol.for("react.memo_cache_sentinel")?(u=()=>{let e=e=>{if("KeyI"!==e.code||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target;"INPUT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable||ea(!0)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},h=[],H[11]=u,H[12]=h):(u=H[11],h=H[12]),(0,n.useEffect)(u,h),H[13]===Symbol.for("react.memo_cache_sentinel")?(m=(e,t)=>{en(void 0===t?0:t)},H[13]=m):m=H[13];let el=m,ec=(0,n.useRef)(null);H[14]===Symbol.for("react.memo_cache_sentinel")?(f={angle:0,force:0},H[14]=f):f=H[14];let ed=(0,n.useRef)(f),eu=(0,n.useRef)(null);H[15]===Symbol.for("react.memo_cache_sentinel")?(g={angle:0,force:0},H[15]=g):g=H[15];let eh=(0,n.useRef)(g),em=(0,n.useRef)(null);H[16]!==es||H[17]!==er||H[18]!==ei?(p=ei&&(0,a.jsxs)("div",{id:"loadingIndicator",className:l8.default.LoadingIndicator,"data-complete":!es,children:[(0,a.jsx)("div",{className:l8.default.Spinner}),(0,a.jsx)("div",{className:l8.default.Progress,children:(0,a.jsx)("div",{className:l8.default.ProgressBar,style:{width:`${100*er}%`}})}),(0,a.jsxs)("div",{className:l8.default.ProgressText,children:[Math.round(100*er),"%"]})]}),H[16]=es,H[17]=er,H[18]=ei,H[19]=p):p=H[19],H[20]===Symbol.for("react.memo_cache_sentinel")?(y={type:o.PCFShadowMap},F=e=>{ec.current=e.camera},H[20]=y,H[21]=F):(y=H[20],F=H[21]);let ef=`${Q}~${ee}`;return H[22]!==Q||H[23]!==ee||H[24]!==ef?(b=(0,a.jsx)(eH,{name:Q,missionType:ee,onLoadingChange:el},ef),H[22]=Q,H[23]=ee,H[24]=ef,H[25]=b):b=H[25],H[26]===Symbol.for("react.memo_cache_sentinel")?(S=(0,a.jsx)(oQ,{}),x=(0,a.jsx)(o1.DebugElements,{}),k=(0,a.jsx)(lg,{}),w=(0,a.jsx)(l4,{}),H[26]=S,H[27]=x,H[28]=k,H[29]=w):(S=H[26],x=H[27],k=H[28],w=H[29]),H[30]!==J?(I=(0,a.jsx)(co,{isTouch:J,joystickStateRef:ed,joystickZoneRef:eu,lookJoystickStateRef:eh,lookJoystickZoneRef:em}),H[30]=J,H[31]=I):I=H[31],H[32]!==b||H[33]!==I?(C=(0,a.jsx)(i.Canvas,{frameloop:"always",gl:ce,shadows:y,onCreated:F,children:(0,a.jsx)(ew,{children:(0,a.jsxs)(o0.AudioProvider,{children:[b,S,x,k,w,I]})})}),H[32]=b,H[33]=I,H[34]=C):C=H[34],H[35]!==p||H[36]!==C?(_=(0,a.jsxs)("div",{id:"canvasContainer",className:l8.default.CanvasContainer,children:[p,C]}),H[35]=p,H[36]=C,H[37]=_):_=H[37],H[38]===Symbol.for("react.memo_cache_sentinel")?(P=(0,a.jsx)(l3,{}),H[38]=P):P=H[38],H[39]!==J?(D=J&&(0,a.jsx)(tB,{joystickState:ed,joystickZone:eu,lookJoystickState:eh,lookJoystickZone:em}),H[39]=J,H[40]=D):D=H[40],H[41]!==J?(M=!1===J&&(0,a.jsx)(tF,{}),H[41]=J,H[42]=M):M=H[42],H[43]===Symbol.for("react.memo_cache_sentinel")?(T=()=>ea(!0),H[43]=T):T=H[43],H[44]!==Z||H[45]!==J||H[46]!==Q||H[47]!==ee?(E=(0,a.jsx)(oH,{missionName:Q,missionType:ee,onChangeMission:Z,onOpenMapInfo:T,cameraRef:ec,isTouch:J}),H[44]=Z,H[45]=J,H[46]=Q,H[47]=ee,H[48]=E):E=H[48],H[49]!==et||H[50]!==Q||H[51]!==ee?(B=et&&(0,a.jsx)(n.Suspense,{fallback:null,children:(0,a.jsx)(l7,{open:et,onClose:()=>ea(!1),missionName:Q,missionType:ee??""})}),H[49]=et,H[50]=Q,H[51]=ee,H[52]=B):B=H[52],H[53]!==Z||H[54]!==W?(j=(0,a.jsx)(ci,{changeMission:Z,currentMission:W}),H[53]=Z,H[54]=W,H[55]=j):j=H[55],H[56]===Symbol.for("react.memo_cache_sentinel")?(R=(0,a.jsx)(lF,{}),N=(0,a.jsx)(cs,{}),H[56]=R,H[57]=N):(R=H[56],N=H[57]),H[58]!==_||H[59]!==D||H[60]!==M||H[61]!==E||H[62]!==B||H[63]!==j?(A=(0,a.jsxs)(eJ,{map:ta,children:[_,P,D,M,E,B,j,R,N]}),H[58]=_,H[59]=D,H[60]=M,H[61]=E,H[62]=B,H[63]=j,H[64]=A):A=H[64],H[65]!==X||H[66]!==Y||H[67]!==A?(G=(0,a.jsx)(e$.QueryClientProvider,{client:l9,children:(0,a.jsx)("main",{children:(0,a.jsx)(to,{children:(0,a.jsx)(v.SettingsProvider,{fogEnabledOverride:Y,onClearFogEnabledOverride:X,children:A})})})}),H[65]=X,H[66]=Y,H[67]=A,H[68]=G):G=H[68],G}function cr(){delete window.setMissionName,delete window.getMissionList,delete window.getMissionInfo}let cn={"Capture the Flag":"CTF","Capture and Hold":"CnH",Deathmatch:"DM","Team Deathmatch":"TDM",Siege:"Siege",Bounty:"Bounty",Rabbit:"Rabbit"};function ci(e){let t,a,i=(0,r.c)(5),{changeMission:o,currentMission:s}=e,l=ts();return i[0]!==o||i[1]!==s||i[2]!==l?(t=()=>{if(!l?.missionName)return;let e=(0,eG.findMissionByDemoName)(l.missionName);if(!e)return void console.warn(`Demo mission "${l.missionName}" not found in manifest`);let t=(0,eG.getMissionInfo)(e),a=l.gameType?cn[l.gameType]:void 0,r=a&&t.missionTypes.includes(a)?a:t.missionTypes[0];(s.missionName!==e||s.missionType!==r)&&o({missionName:e,missionType:r})},a=[l,o,s],i[0]=o,i[1]=s,i[2]=l,i[3]=t,i[4]=a):(t=i[3],a=i[4]),(0,n.useEffect)(t,a),null}function co(e){let t,n=(0,r.c)(6),{isTouch:i,joystickStateRef:o,joystickZoneRef:s,lookJoystickStateRef:l,lookJoystickZoneRef:c}=e;if(ts()||null===i)return null;if(i){let e;return n[0]!==o||n[1]!==s||n[2]!==l||n[3]!==c?(e=(0,a.jsx)(tj,{joystickState:o,joystickZone:s,lookJoystickState:l,lookJoystickZone:c}),n[0]=o,n[1]=s,n[2]=l,n[3]=c,n[4]=e):e=n[4],e}return n[5]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)(tr,{}),n[5]=t):t=n[5],t}function cs(){let e,t,a=(0,r.c)(3),{setRecording:i}=tm();return a[0]!==i?(e=()=>(window.loadDemoRecording=i,cl),t=[i],a[0]=i,a[1]=e,a[2]=t):(e=a[1],t=a[2]),(0,n.useEffect)(e,t),null}function cl(){delete window.loadDemoRecording}function cc(){let e,t=(0,r.c)(1);return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,a.jsx)(n.Suspense,{children:(0,a.jsx)(ca,{})}),t[0]=e):e=t[0],e}e.s(["default",()=>cc],31713)}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/f299abcdb625bb54.js b/docs/_next/static/chunks/f299abcdb625bb54.js deleted file mode 100644 index e0adda6c..00000000 --- a/docs/_next/static/chunks/f299abcdb625bb54.js +++ /dev/null @@ -1,211 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31067,e=>{"use strict";function t(){return(t=Object.assign.bind()).apply(null,arguments)}e.s(["default",()=>t])},47071,99143,e=>{"use strict";var t=e.i(71645),r=e.i(90072),i=e.i(15080),s=e.i(40859);e.s(["useLoader",()=>s.G],99143);var s=s;let n=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function a(e,a){let o=(0,i.useThree)(e=>e.gl),l=(0,s.G)(r.TextureLoader,n(e)?Object.values(e):e);return(0,t.useLayoutEffect)(()=>{null==a||a(l)},[a]),(0,t.useEffect)(()=>{if("initTexture"in o){let e=[];Array.isArray(l)?e=l:l instanceof r.Texture?e=[l]:n(l)&&(e=Object.values(l)),e.forEach(e=>{e instanceof r.Texture&&o.initTexture(e)})}},[o,l]),(0,t.useMemo)(()=>{if(!n(e))return l;{let t={},r=0;for(let i in e)t[i]=l[r++];return t}},[e,l])}a.preload=e=>s.G.preload(r.TextureLoader,e),a.clear=e=>s.G.clear(r.TextureLoader,e),e.s(["useTexture",()=>a],47071)},75567,e=>{"use strict";var t=e.i(90072);let r=new t.ImageBitmapLoader,i=new Map;function s(e,s){let n=i.get(e);if(n)return s&&n.image&&s(n),n;let a=new t.Texture;return a.flipY=!1,i.set(e,a),r.load(e,e=>{a.image=e,a.needsUpdate=!0,s?.(a)}),a}function n(e){let s=i.get(e);return s?s.image?Promise.resolve(s):new Promise(e=>{let t=()=>{s.image?e(s):setTimeout(t,16)};t()}):new Promise((s,n)=>{let a=new t.Texture;a.flipY=!1,i.set(e,a),r.load(e,e=>{a.image=e,a.needsUpdate=!0,s(a)},void 0,n)})}function a(e,r={}){let{repeat:i=[1,1],disableMipmaps:s=!1}=r;return e.wrapS=e.wrapT=t.RepeatWrapping,e.colorSpace=t.SRGBColorSpace,e.repeat.set(...i),e.flipY=!1,e.anisotropy=16,s?(e.generateMipmaps=!1,e.minFilter=t.LinearFilter):(e.generateMipmaps=!0,e.minFilter=t.LinearMipmapLinearFilter),e.magFilter=t.LinearFilter,e.needsUpdate=!0,e}function o(e){let r=new t.DataTexture(e,256,256,t.RedFormat,t.UnsignedByteType);return r.colorSpace=t.NoColorSpace,r.wrapS=r.wrapT=t.RepeatWrapping,r.generateMipmaps=!1,r.minFilter=t.LinearFilter,r.magFilter=t.LinearFilter,r.needsUpdate=!0,r}e.s(["loadTexture",()=>s,"loadTextureAsync",()=>n,"setupMask",()=>o,"setupTexture",()=>a])},47021,e=>{"use strict";var t=e.i(8560);let r=` -#ifdef USE_FOG - // Check fog enabled uniform - allows toggling without shader recompilation - #ifdef USE_VOLUMETRIC_FOG - if (!fogEnabled) { - // Skip all fog calculations when disabled - } else { - #endif - - float dist = vFogDepth; - - // Discard fragments at or beyond visible distance - matches Torque's behavior - // where objects beyond visibleDistance are not rendered at all. - // This prevents fully-fogged geometry from showing as silhouettes against - // the sky's fog-to-sky gradient. - if (dist >= fogFar) { - discard; - } - - // Step 1: Calculate distance-based haze (quadratic falloff) - // Since we discard at fogFar, haze never reaches 1.0 here - float haze = 0.0; - if (dist > fogNear) { - float fogScale = 1.0 / (fogFar - fogNear); - float distFactor = (dist - fogNear) * fogScale - 1.0; - haze = 1.0 - distFactor * distFactor; - } - - // Step 2: Calculate fog volume contributions - // Note: Per-volume colors are NOT used in Tribes 2 ($specialFog defaults to false) - // All fog uses the global fogColor - see Tribes2_Fog_System.md for details - float volumeFog = 0.0; - - #ifdef USE_VOLUMETRIC_FOG - { - #ifdef USE_FOG_WORLD_POSITION - float fragmentHeight = vFogWorldPosition.y; - #else - float fragmentHeight = cameraHeight; - #endif - - float deltaY = fragmentHeight - cameraHeight; - float absDeltaY = abs(deltaY); - - // Determine if we're going up (positive) or down (negative) - if (absDeltaY > 0.01) { - // Non-horizontal ray: ray-march through fog volumes - for (int i = 0; i < 3; i++) { - int offset = i * 4; - float volVisDist = fogVolumeData[offset + 0]; - float volMinH = fogVolumeData[offset + 1]; - float volMaxH = fogVolumeData[offset + 2]; - float volPct = fogVolumeData[offset + 3]; - - // Skip inactive volumes (visibleDistance = 0) - if (volVisDist <= 0.0) continue; - - // Calculate fog factor for this volume - // From Torque: factor = (1 / (volumeVisDist * visFactor)) * percentage - // where visFactor is smVisibleDistanceMod (a user quality pref, default 1.0) - // Since we don't have quality settings, we use visFactor = 1.0 - float factor = (1.0 / volVisDist) * volPct; - - // Find ray intersection with this volume's height range - float rayMinY = min(cameraHeight, fragmentHeight); - float rayMaxY = max(cameraHeight, fragmentHeight); - - // Check if ray intersects volume height range - if (rayMinY < volMaxH && rayMaxY > volMinH) { - float intersectMin = max(rayMinY, volMinH); - float intersectMax = min(rayMaxY, volMaxH); - float intersectHeight = intersectMax - intersectMin; - - // Calculate distance traveled through this volume using similar triangles: - // subDist / dist = intersectHeight / absDeltaY - float subDist = dist * (intersectHeight / absDeltaY); - - // Accumulate fog: fog += subDist * factor - volumeFog += subDist * factor; - } - } - } else { - // Near-horizontal ray: if camera is inside a volume, apply full fog for that volume - for (int i = 0; i < 3; i++) { - int offset = i * 4; - float volVisDist = fogVolumeData[offset + 0]; - float volMinH = fogVolumeData[offset + 1]; - float volMaxH = fogVolumeData[offset + 2]; - float volPct = fogVolumeData[offset + 3]; - - if (volVisDist <= 0.0) continue; - - // If camera is inside this volume, apply fog for full distance - if (cameraHeight >= volMinH && cameraHeight <= volMaxH) { - float factor = (1.0 / volVisDist) * volPct; - volumeFog += dist * factor; - } - } - } - } - #endif - - // Step 3: Combine haze and volume fog - // Torque's clamping: if (bandPct + hazePct > 1) hazePct = 1 - bandPct - // This gives fog volumes priority over haze - float volPct = min(volumeFog, 1.0); - float hazePct = haze; - if (volPct + hazePct > 1.0) { - hazePct = 1.0 - volPct; - } - float fogFactor = hazePct + volPct; - - // Apply fog using global fogColor (per-volume colors not used in Tribes 2) - gl_FragColor.rgb = mix(gl_FragColor.rgb, fogColor, fogFactor); - - #ifdef USE_VOLUMETRIC_FOG - } // end fogEnabled check - #endif -#endif -`;function i(){t.ShaderChunk.fog_pars_fragment=` -#ifdef USE_FOG - uniform vec3 fogColor; - varying float vFogDepth; - #ifdef FOG_EXP2 - uniform float fogDensity; - #else - uniform float fogNear; - uniform float fogFar; - #endif - - // Custom volumetric fog uniforms (only defined when USE_VOLUMETRIC_FOG is set) - // Format: [visDist, minH, maxH, percentage] x 3 volumes = 12 floats - #ifdef USE_VOLUMETRIC_FOG - uniform float fogVolumeData[12]; - uniform float cameraHeight; - #endif - - #ifdef USE_FOG_WORLD_POSITION - varying vec3 vFogWorldPosition; - #endif -#endif -`,t.ShaderChunk.fog_fragment=r,t.ShaderChunk.fog_pars_vertex=` -#ifdef USE_FOG - varying float vFogDepth; - #ifdef USE_FOG_WORLD_POSITION - varying vec3 vFogWorldPosition; - #endif -#endif -`,t.ShaderChunk.fog_vertex=` -#ifdef USE_FOG - // Use Euclidean distance from camera, not view-space z-depth - // This ensures fog doesn't change when rotating the camera - vFogDepth = length(mvPosition.xyz); - #ifdef USE_FOG_WORLD_POSITION - vFogWorldPosition = (modelMatrix * vec4(transformed, 1.0)).xyz; - #endif -#endif -`}function s(e,t){e.uniforms.fogVolumeData=t.fogVolumeData,e.uniforms.cameraHeight=t.cameraHeight,e.uniforms.fogEnabled=t.fogEnabled,e.vertexShader=e.vertexShader.replace("#include ",`#include -#ifdef USE_FOG - #define USE_FOG_WORLD_POSITION - #define USE_VOLUMETRIC_FOG - varying vec3 vFogWorldPosition; -#endif`),e.vertexShader=e.vertexShader.replace("#include ",`#include -#ifdef USE_FOG - vFogWorldPosition = (modelMatrix * vec4(transformed, 1.0)).xyz; -#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include -#ifdef USE_FOG - #define USE_VOLUMETRIC_FOG - uniform float fogVolumeData[12]; - uniform float cameraHeight; - uniform bool fogEnabled; - #define USE_FOG_WORLD_POSITION - varying vec3 vFogWorldPosition; -#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",r)}e.s(["fogFragmentShader",0,r,"injectCustomFog",()=>s,"installCustomFogShader",()=>i])},48066,e=>{"use strict";let t={fogVolumeData:{value:new Float32Array(12)},cameraHeight:{value:0},fogEnabled:{value:!0}};function r(e,i,s=!0){t.cameraHeight.value=e,t.fogVolumeData.value.set(i),t.fogEnabled.value=s}function i(){t.cameraHeight.value=0,t.fogVolumeData.value.fill(0),t.fogEnabled.value=!0}function s(e){let t=new Float32Array(12);for(let r=0;r<3;r++){let i=4*r,s=e[r];s&&(t[i+0]=s.visibleDistance,t[i+1]=s.minHeight,t[i+2]=s.maxHeight,t[i+3]=s.percentage)}return t}e.s(["globalFogUniforms",0,t,"packFogVolumeData",()=>s,"resetGlobalFogUniforms",()=>i,"updateGlobalFogUniforms",()=>r])},67191,e=>{e.v({Label:"FloatingLabel-module__8y09Ka__Label"})},89887,60099,e=>{"use strict";let t,r;var i=e.i(43476),s=e.i(932),n=e.i(71645),a=e.i(90072),o=e.i(71753),l=e.i(31067),u=e.i(88014),c=e.i(15080);let h=new a.Vector3,d=new a.Vector3,f=new a.Vector3,p=new a.Vector2;function m(e,t,r){let i=h.setFromMatrixPosition(e.matrixWorld);i.project(t);let s=r.width/2,n=r.height/2;return[i.x*s+s,-(i.y*n)+n]}let y=e=>1e-10>Math.abs(e)?0:e;function v(e,t,r=""){let i="matrix3d(";for(let r=0;16!==r;r++)i+=y(t[r]*e.elements[r])+(15!==r?",":")");return r+i}let g=(t=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>v(e,t)),b=(r=e=>[1/e,1/e,1/e,1,-1/e,-1/e,-1/e,-1,1/e,1/e,1/e,1,1,1,1,1],(e,t)=>v(e,r(t),"translate(-50%,-50%)")),S=n.forwardRef(({children:e,eps:t=.001,style:r,className:i,prepend:s,center:v,fullscreen:S,portal:R,distanceFactor:T,sprite:F=!1,transform:O=!1,occlude:x,onOcclude:w,castShadow:E,receiveShadow:I,material:M,geometry:C,zIndexRange:_=[0x1000037,0],calculatePosition:P=m,as:D="div",wrapperClass:j,pointerEvents:k="auto",...U},Q)=>{let{gl:L,camera:V,scene:B,size:A,raycaster:H,events:W,viewport:q}=(0,c.useThree)(),[N]=n.useState(()=>document.createElement(D)),G=n.useRef(null),z=n.useRef(null),$=n.useRef(0),K=n.useRef([0,0]),Y=n.useRef(null),Z=n.useRef(null),J=(null==R?void 0:R.current)||W.connected||L.domElement.parentNode,X=n.useRef(null),ee=n.useRef(!1),et=n.useMemo(()=>{var e;return x&&"blending"!==x||Array.isArray(x)&&x.length&&(e=x[0])&&"object"==typeof e&&"current"in e},[x]);n.useLayoutEffect(()=>{let e=L.domElement;x&&"blending"===x?(e.style.zIndex=`${Math.floor(_[0]/2)}`,e.style.position="absolute",e.style.pointerEvents="none"):(e.style.zIndex=null,e.style.position=null,e.style.pointerEvents=null)},[x]),n.useLayoutEffect(()=>{if(z.current){let e=G.current=u.createRoot(N);if(B.updateMatrixWorld(),O)N.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{let e=P(z.current,V,A);N.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return J&&(s?J.prepend(N):J.appendChild(N)),()=>{J&&J.removeChild(N),e.unmount()}}},[J,O]),n.useLayoutEffect(()=>{j&&(N.className=j)},[j]);let er=n.useMemo(()=>O?{position:"absolute",top:0,left:0,width:A.width,height:A.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:v?"translate3d(-50%,-50%,0)":"none",...S&&{top:-A.height/2,left:-A.width/2,width:A.width,height:A.height},...r},[r,v,S,A,O]),ei=n.useMemo(()=>({position:"absolute",pointerEvents:k}),[k]);n.useLayoutEffect(()=>{var t,s;ee.current=!1,O?null==(t=G.current)||t.render(n.createElement("div",{ref:Y,style:er},n.createElement("div",{ref:Z,style:ei},n.createElement("div",{ref:Q,className:i,style:r,children:e})))):null==(s=G.current)||s.render(n.createElement("div",{ref:Q,style:er,className:i,children:e}))});let es=n.useRef(!0);(0,o.useFrame)(e=>{if(z.current){V.updateMatrixWorld(),z.current.updateWorldMatrix(!0,!1);let e=O?K.current:P(z.current,V,A);if(O||Math.abs($.current-V.zoom)>t||Math.abs(K.current[0]-e[0])>t||Math.abs(K.current[1]-e[1])>t){var r;let t,i,s,n,o=(r=z.current,t=h.setFromMatrixPosition(r.matrixWorld),i=d.setFromMatrixPosition(V.matrixWorld),s=t.sub(i),n=V.getWorldDirection(f),s.angleTo(n)>Math.PI/2),l=!1;et&&(Array.isArray(x)?l=x.map(e=>e.current):"blending"!==x&&(l=[B]));let u=es.current;l?es.current=function(e,t,r,i){let s=h.setFromMatrixPosition(e.matrixWorld),n=s.clone();n.project(t),p.set(n.x,n.y),r.setFromCamera(p,t);let a=r.intersectObjects(i,!0);if(a.length){let e=a[0].distance;return s.distanceTo(r.ray.origin)({vertexShader:O?void 0:` - /* - This shader is from the THREE's SpriteMaterial. - We need to turn the backing plane into a Sprite - (make it always face the camera) if "transfrom" - is false. - */ - #include - - void main() { - vec2 center = vec2(0., 1.); - float rotation = 0.0; - - // This is somewhat arbitrary, but it seems to work well - // Need to figure out how to derive this dynamically if it even matters - float size = 0.03; - - vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); - vec2 scale; - scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); - scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); - - bool isPerspective = isPerspectiveMatrix( projectionMatrix ); - if ( isPerspective ) scale *= - mvPosition.z; - - vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; - vec2 rotatedPosition; - rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; - rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; - mvPosition.xy += rotatedPosition; - - gl_Position = projectionMatrix * mvPosition; - } - `,fragmentShader:` - void main() { - gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); - } - `}),[O]);return n.createElement("group",(0,l.default)({},U,{ref:z}),x&&!et&&n.createElement("mesh",{castShadow:E,receiveShadow:I,ref:X},C||n.createElement("planeGeometry",null),M||n.createElement("shaderMaterial",{side:a.DoubleSide,vertexShader:en.vertexShader,fragmentShader:en.fragmentShader})))});e.s(["Html",()=>S],60099);var R=e.i(67191);let T=[0,0,0],F=new a.Vector3,O=(0,n.memo)(function(e){let t,r,a,l=(0,s.c)(11),{children:u,color:c,position:h,opacity:d}=e,f=void 0===c?"white":c,p=void 0===h?T:h,m=void 0===d?"fadeWithDistance":d,y="fadeWithDistance"===m,v=(0,n.useRef)(null),[g,b]=(0,n.useState)(0!==m),O=(0,n.useRef)(null);return l[0]!==y||l[1]!==g||l[2]!==m?(t=e=>{var t,r,i;let s,{camera:n}=e,a=v.current;if(!a)return;a.getWorldPosition(F);let o=(t=F.x,r=F.y,i=F.z,-((t-(s=n.matrixWorld.elements)[12])*s[8])+-((r-s[13])*s[9])+-((i-s[14])*s[10])<0);if(y){let e=o?1/0:n.position.distanceTo(F),t=e<200;if(g!==t&&b(t),O.current&&t){let t=Math.max(0,Math.min(1,1-e/200));O.current.style.opacity=t.toString()}}else{let e=!o&&0!==m;g!==e&&b(e),O.current&&(O.current.style.opacity=m.toString())}},l[0]=y,l[1]=g,l[2]=m,l[3]=t):t=l[3],(0,o.useFrame)(t),l[4]!==u||l[5]!==f||l[6]!==g||l[7]!==p?(r=g?(0,i.jsx)(S,{position:p,center:!0,children:(0,i.jsx)("div",{ref:O,className:R.default.Label,style:{color:f},children:u})}):null,l[4]=u,l[5]=f,l[6]=g,l[7]=p,l[8]=r):r=l[8],l[9]!==r?(a=(0,i.jsx)("group",{ref:v,children:r}),l[9]=r,l[10]=a):a=l[10],a});e.s(["FloatingLabel",0,O],89887)},13876,79473,43595,58647,e=>{"use strict";var t=e.i(932),r=e.i(8155);let i=e=>(t,r,i)=>{let s=i.subscribe;return i.subscribe=(e,t,r)=>{let n=e;if(t){let s=(null==r?void 0:r.equalityFn)||Object.is,a=e(i.getState());n=r=>{let i=e(r);if(!s(a,i)){let e=a;t(a=i,e)}},(null==r?void 0:r.fireImmediately)&&t(a,a)}return s(n)},e(t,r,i)};e.s(["subscribeWithSelector",()=>i],79473);var s=e.i(66748);function n(e){let t=new Map;for(let r of e.state.datablocks.values()){if("tsshapeconstructor"!==r._class)continue;let e=r.baseshape;if("string"!=typeof e)continue;let i=e.toLowerCase(),s=i.replace(/\.dts$/i,"")+"_",n=new Map;for(let e=0;e<=127;e++){let t=r[`sequence${e}`];if("string"!=typeof t)continue;let i=t.indexOf(" ");if(-1===i)continue;let a=t.slice(0,i).toLowerCase(),o=t.slice(i+1).trim().toLowerCase();if(!o||!a.startsWith(s)||!a.endsWith(".dsq"))continue;let l=a.slice(s.length,-4);l&&n.set(o,l)}n.size>0&&t.set(i,n)}return t}function a(e,t,r){let i=new Map;for(let r of e){let e=t.clipAction(r);i.set(r.name.toLowerCase(),e)}if(r)for(let[e,t]of r){let r=i.get(t);r&&!i.has(e)&&i.set(e,r)}return i}function o(e){return e.toLowerCase()}function l(e){let t=o(e.trim());return t.startsWith("$")?t.slice(1):t}e.s(["buildSequenceAliasMap",()=>n,"getAliasedActions",()=>a],43595);let u={runtime:{runtime:null,sequenceAliases:new Map,objectVersionById:{},globalVersionByName:{},objectIdsByName:{},datablockIdsByName:{},lastRuntimeTick:0},playback:{recording:null,status:"stopped",timeMs:0,rate:1,durationMs:0,streamSnapshot:null}},c=(0,r.createStore)()(i(e=>({...u,setRuntime(t){let r=function(e){let t={},r={},i={},s={};for(let r of e.state.objectsById.values())t[r._id]=0,r._name&&(i[o(r._name)]=r._id,r._isDatablock&&(s[o(r._name)]=r._id));for(let t of e.state.globals.keys())r[l(t)]=0;return{objectVersionById:t,globalVersionByName:r,objectIdsByName:i,datablockIdsByName:s}}(t),i=n(t);e(e=>({...e,runtime:{runtime:t,sequenceAliases:i,objectVersionById:r.objectVersionById,globalVersionByName:r.globalVersionByName,objectIdsByName:r.objectIdsByName,datablockIdsByName:r.datablockIdsByName,lastRuntimeTick:0}}))},clearRuntime(){e(e=>({...e,runtime:{runtime:null,sequenceAliases:new Map,objectVersionById:{},globalVersionByName:{},objectIdsByName:{},datablockIdsByName:{},lastRuntimeTick:0}}))},applyRuntimeBatch(t,r){0!==t.length&&e(e=>{let i={...e.runtime.objectVersionById},s={...e.runtime.globalVersionByName},n={...e.runtime.objectIdsByName},a={...e.runtime.datablockIdsByName},u=e=>{null!=e&&(i[e]=(i[e]??0)+1)};for(let e of t){if("object.created"===e.type){let t=e.object;if(u(e.objectId),t._name){let r=o(t._name);n[r]=e.objectId,t._isDatablock&&(a[r]=e.objectId)}u(t._parent?._id);continue}if("object.deleted"===e.type){let t=e.object;if(delete i[e.objectId],t?._name){let e=o(t._name);delete n[e],t._isDatablock&&delete a[e]}u(t?._parent?._id);continue}if("field.changed"===e.type){u(e.objectId);continue}if("global.changed"===e.type){let t=l(e.name);s[t]=(s[t]??0)+1;continue}}let c=r?.tick??(e.runtime.lastRuntimeTick>0?e.runtime.lastRuntimeTick+1:1);return{...e,runtime:{...e.runtime,objectVersionById:i,globalVersionByName:s,objectIdsByName:n,datablockIdsByName:a,lastRuntimeTick:c}}})},setDemoRecording(t){let r=Math.max(0,(t?.duration??0)*1e3);e(e=>({...e,playback:{recording:t,status:"stopped",timeMs:0,rate:1,durationMs:r,streamSnapshot:null}}))},setPlaybackTime(t){e(e=>{var r,i,s;let n=(r=t,i=0,s=e.playback.durationMs,r<0?0:r>s?s:r);return{...e,playback:{...e.playback,timeMs:n}}})},setPlaybackStatus(t){e(e=>({...e,playback:{...e.playback,status:t}}))},setPlaybackRate(t){var r,i,s;let n=Number.isFinite(t)?(i=.01,s=16,(r=t)<.01?.01:r>16?16:r):1;e(e=>({...e,playback:{...e.playback,rate:n}}))},setPlaybackStreamSnapshot(t){e(e=>({...e,playback:{...e.playback,streamSnapshot:t}}))}})));function h(){return c}function d(e,t){return(0,s.useStoreWithEqualityFn)(c,e,t)}function f(e){let r,i,s,n=(0,t.c)(7),a=d(p);n[0]!==e?(r=t=>null==e?-1:t.runtime.objectVersionById[e]??-1,n[0]=e,n[1]=r):r=n[1];let o=d(r);if(null==e||!a||-1===o)return;n[2]!==e||n[3]!==a.state.objectsById?(i=a.state.objectsById.get(e),n[2]=e,n[3]=a.state.objectsById,n[4]=i):i=n[4];let l=i;return n[5]!==l?(s=l?{...l}:void 0,n[5]=l,n[6]=s):s=n[6],s}function p(e){return e.runtime.runtime}function m(e){let r,i,s,n,a,l=(0,t.c)(11),u=d(y);l[0]!==e?(r=e?o(e):"",l[0]=e,l[1]=r):r=l[1];let c=r;l[2]!==c?(i=e=>c?e.runtime.objectIdsByName[c]:void 0,l[2]=c,l[3]=i):i=l[3];let h=d(i);l[4]!==h?(s=e=>null==h?-1:e.runtime.objectVersionById[h]??-1,l[4]=h,l[5]=s):s=l[5];let f=d(s);if(!u||!c||null==h||-1===f)return;l[6]!==h||l[7]!==u.state.objectsById?(n=u.state.objectsById.get(h),l[6]=h,l[7]=u.state.objectsById,l[8]=n):n=l[8];let p=n;return l[9]!==p?(a=p?{...p}:void 0,l[9]=p,l[10]=a):a=l[10],a}function y(e){return e.runtime.runtime}function v(e){let r,i,s,n,a,l=(0,t.c)(11),u=d(g);l[0]!==e?(r=e?o(e):"",l[0]=e,l[1]=r):r=l[1];let c=r;l[2]!==c?(i=e=>c?e.runtime.datablockIdsByName[c]:void 0,l[2]=c,l[3]=i):i=l[3];let h=d(i);l[4]!==h?(s=e=>null==h?-1:e.runtime.objectVersionById[h]??-1,l[4]=h,l[5]=s):s=l[5];let f=d(s);if(!u||!c||null==h||-1===f)return;l[6]!==h||l[7]!==u.state.objectsById?(n=u.state.objectsById.get(h),l[6]=h,l[7]=u.state.objectsById,l[8]=n):n=l[8];let p=n;return l[9]!==p?(a=p?{...p}:void 0,l[9]=p,l[10]=a):a=l[10],a}function g(e){return e.runtime.runtime}function b(e,r){let i,s,n,a,o=(0,t.c)(13);o[0]!==r?(i=void 0===r?[]:r,o[0]=r,o[1]=i):i=o[1];let l=i,u=d(F);o[2]!==e?(s=t=>null==e?-1:t.runtime.objectVersionById[e]??-1,o[2]=e,o[3]=s):s=o[3];let c=d(s);if(null==e){let e;return o[4]!==l?(e=l.map(T),o[4]=l,o[5]=e):e=o[5],e}if(!u||-1===c){let e;return o[6]!==l?(e=l.map(R),o[6]=l,o[7]=e):e=o[7],e}let h=u.state.objectsById;if(o[8]!==e||o[9]!==u.state.objectsById){a=Symbol.for("react.early_return_sentinel");e:{let t=h.get(e);if(!t?._children){let e;o[12]===Symbol.for("react.memo_cache_sentinel")?(e=[],o[12]=e):e=o[12],a=e;break e}n=t._children.map(S)}o[8]=e,o[9]=u.state.objectsById,o[10]=n,o[11]=a}else n=o[10],a=o[11];return a!==Symbol.for("react.early_return_sentinel")?a:n}function S(e){return e._id}function R(e){return e._id}function T(e){return e._id}function F(e){return e.runtime.runtime}e.s(["engineStore",0,c,"useDatablockByName",()=>v,"useEngineSelector",()=>d,"useEngineStoreApi",()=>h,"useRuntimeChildIds",()=>b,"useRuntimeObjectById",()=>f,"useRuntimeObjectByName",()=>m],58647),e.s([],13876)},19273,80166,e=>{"use strict";e.i(47167);var t={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},r=new class{#e=t;#t=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function i(e){setTimeout(e,0)}e.s(["systemSetTimeoutZero",()=>i,"timeoutManager",()=>r],80166);var s="u"=0&&e!==1/0}function l(e,t){return Math.max(e+(t||0)-Date.now(),0)}function u(e,t){return"function"==typeof e?e(t):e}function c(e,t){return"function"==typeof e?e(t):e}function h(e,t){let{type:r="all",exact:i,fetchStatus:s,predicate:n,queryKey:a,stale:o}=e;if(a){if(i){if(t.queryHash!==f(a,t.options))return!1}else if(!m(t.queryKey,a))return!1}if("all"!==r){let e=t.isActive();if("active"===r&&!e||"inactive"===r&&e)return!1}return("boolean"!=typeof o||t.isStale()===o)&&(!s||s===t.state.fetchStatus)&&(!n||!!n(t))}function d(e,t){let{exact:r,status:i,predicate:s,mutationKey:n}=e;if(n){if(!t.options.mutationKey)return!1;if(r){if(p(t.options.mutationKey)!==p(n))return!1}else if(!m(t.options.mutationKey,n))return!1}return(!i||t.state.status===i)&&(!s||!!s(t))}function f(e,t){return(t?.queryKeyHashFn||p)(e)}function p(e){return JSON.stringify(e,(e,t)=>b(t)?Object.keys(t).sort().reduce((e,r)=>(e[r]=t[r],e),{}):t)}function m(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(r=>m(e[r],t[r]))}var y=Object.prototype.hasOwnProperty;function v(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}function g(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function b(e){if(!S(e))return!1;let t=e.constructor;if(void 0===t)return!0;let r=t.prototype;return!!S(r)&&!!r.hasOwnProperty("isPrototypeOf")&&Object.getPrototypeOf(e)===Object.prototype}function S(e){return"[object Object]"===Object.prototype.toString.call(e)}function R(e){return new Promise(t=>{r.setTimeout(t,e)})}function T(e,t,r){return"function"==typeof r.structuralSharing?r.structuralSharing(e,t):!1!==r.structuralSharing?function e(t,r,i=0){if(t===r)return t;if(i>500)return r;let s=g(t)&&g(r);if(!s&&!(b(t)&&b(r)))return r;let n=(s?t:Object.keys(t)).length,a=s?r:Object.keys(r),o=a.length,l=s?Array(o):{},u=0;for(let c=0;cr?i.slice(1):i}function O(e,t,r=0){let i=[t,...e];return r&&i.length>r?i.slice(0,-1):i}var x=Symbol();function w(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==x?e.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`))}function E(e,t){return"function"==typeof e?e(...t):!!e}function I(e,t,r){let i,s=!1;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),s||(s=!0,i.aborted?r():i.addEventListener("abort",r,{once:!0})),i)}),e}e.s(["addConsumeAwareSignal",()=>I,"addToEnd",()=>F,"addToStart",()=>O,"ensureQueryFn",()=>w,"functionalUpdate",()=>a,"hashKey",()=>p,"hashQueryKeyByOptions",()=>f,"isServer",()=>s,"isValidTimeout",()=>o,"matchMutation",()=>d,"matchQuery",()=>h,"noop",()=>n,"partialMatchKey",()=>m,"replaceData",()=>T,"resolveEnabled",()=>c,"resolveStaleTime",()=>u,"shallowEqualObjects",()=>v,"shouldThrowError",()=>E,"skipToken",()=>x,"sleep",()=>R,"timeUntilStale",()=>l],19273)},40143,e=>{"use strict";let t,r,i,s,n,a;var o=e.i(80166).systemSetTimeoutZero,l=(t=[],r=0,i=e=>{e()},s=e=>{e()},n=o,{batch:e=>{let a;r++;try{a=e()}finally{let e;--r||(e=t,t=[],e.length&&n(()=>{s(()=>{e.forEach(e=>{i(e)})})}))}return a},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a=e=>{r?t.push(e):n(()=>{i(e)})},setNotifyFunction:e=>{i=e},setBatchNotifyFunction:e=>{s=e},setScheduler:e=>{n=e}});e.s(["notifyManager",()=>l])},15823,e=>{"use strict";var t=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}};e.s(["Subscribable",()=>t])},75555,e=>{"use strict";var t=e.i(15823),r=e.i(19273),i=new class extends t.Subscribable{#r;#i;#s;constructor(){super(),this.#s=e=>{if(!r.isServer&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#i||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#i?.(),this.#i=void 0)}setEventListener(e){this.#s=e,this.#i?.(),this.#i=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){this.#r!==e&&(this.#r=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#r?this.#r:globalThis.document?.visibilityState!=="hidden"}};e.s(["focusManager",()=>i])},86491,14448,93803,36553,88587,e=>{"use strict";e.i(47167);var t=e.i(19273),r=e.i(40143),i=e.i(75555),s=e.i(15823),n=new class extends s.Subscribable{#n=!0;#i;#s;constructor(){super(),this.#s=e=>{if(!t.isServer&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#i||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#i?.(),this.#i=void 0)}setEventListener(e){this.#s=e,this.#i?.(),this.#i=e(this.setOnline.bind(this))}setOnline(e){this.#n!==e&&(this.#n=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#n}};function a(){let e,t,r=new Promise((r,i)=>{e=r,t=i});function i(e){Object.assign(r,e),delete r.resolve,delete r.reject}return r.status="pending",r.catch(()=>{}),r.resolve=t=>{i({status:"fulfilled",value:t}),e(t)},r.reject=e=>{i({status:"rejected",reason:e}),t(e)},r}function o(e){return Math.min(1e3*2**e,3e4)}function l(e){return(e??"online")!=="online"||n.isOnline()}e.s(["onlineManager",()=>n],14448),e.s(["pendingThenable",()=>a],93803);var u=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function c(e){let r,s=!1,c=0,h=a(),d=()=>i.focusManager.isFocused()&&("always"===e.networkMode||n.isOnline())&&e.canRun(),f=()=>l(e.networkMode)&&e.canRun(),p=e=>{"pending"===h.status&&(r?.(),h.resolve(e))},m=e=>{"pending"===h.status&&(r?.(),h.reject(e))},y=()=>new Promise(t=>{r=e=>{("pending"!==h.status||d())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,"pending"===h.status&&e.onContinue?.()}),v=()=>{let r;if("pending"!==h.status)return;let i=0===c?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(p).catch(r=>{if("pending"!==h.status)return;let i=e.retry??3*!t.isServer,n=e.retryDelay??o,a="function"==typeof n?n(c,r):n,l=!0===i||"number"==typeof i&&cd()?void 0:y()).then(()=>{s?m(r):v()}))})};return{promise:h,status:()=>h.status,cancel:t=>{if("pending"===h.status){let r=new u(t);m(r),e.onCancel?.(r)}},continue:()=>(r?.(),h),cancelRetry:()=>{s=!0},continueRetry:()=>{s=!1},canStart:f,start:()=>(f()?v():y().then(v),h)}}e.s(["CancelledError",()=>u,"canFetch",()=>l,"createRetryer",()=>c],36553);var h=e.i(80166),d=class{#a;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,t.isValidTimeout)(this.gcTime)&&(this.#a=h.timeoutManager.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(t.isServer?1/0:3e5))}clearGcTimeout(){this.#a&&(h.timeoutManager.clearTimeout(this.#a),this.#a=void 0)}};e.s(["Removable",()=>d],88587);var f=class extends d{#o;#l;#u;#c;#h;#d;#f;constructor(e){super(),this.#f=!1,this.#d=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#c=e.client,this.#u=this.#c.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#o=y(this.options),this.state=e.state??this.#o,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#h?.promise}setOptions(e){if(this.options={...this.#d,...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=y(this.options);void 0!==e.data&&(this.setState(m(e.data,e.dataUpdatedAt)),this.#o=e)}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#u.remove(this)}setData(e,r){let i=(0,t.replaceData)(this.state.data,e,this.options);return this.#p({data:i,type:"success",dataUpdatedAt:r?.updatedAt,manual:r?.manual}),i}setState(e,t){this.#p({type:"setState",state:e,setStateOptions:t})}cancel(e){let r=this.#h?.promise;return this.#h?.cancel(e),r?r.then(t.noop).catch(t.noop):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#o)}isActive(){return this.observers.some(e=>!1!==(0,t.resolveEnabled)(e.options.enabled,this))}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===t.skipToken||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===(0,t.resolveStaleTime)(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(e=0){return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!(0,t.timeUntilStale)(this.state.dataUpdatedAt,e))}onFocus(){let e=this.observers.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#h?.continue()}onOnline(){let e=this.observers.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#h?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#u.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#h&&(this.#f?this.#h.cancel({revert:!0}):this.#h.cancelRetry()),this.scheduleGc()),this.#u.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#p({type:"invalidate"})}async fetch(e,r){let i;if("idle"!==this.state.fetchStatus&&this.#h?.status()!=="rejected"){if(void 0!==this.state.data&&r?.cancelRefetch)this.cancel({silent:!0});else if(this.#h)return this.#h.continueRetry(),this.#h.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let s=new AbortController,n=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#f=!0,s.signal)})},a=()=>{let e,i=(0,t.ensureQueryFn)(this.options,r),s=(n(e={client:this.#c,queryKey:this.queryKey,meta:this.meta}),e);return(this.#f=!1,this.options.persister)?this.options.persister(i,s,this):i(s)},o=(n(i={fetchOptions:r,options:this.options,queryKey:this.queryKey,client:this.#c,state:this.state,fetchFn:a}),i);this.options.behavior?.onFetch(o,this),this.#l=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==o.fetchOptions?.meta)&&this.#p({type:"fetch",meta:o.fetchOptions?.meta}),this.#h=c({initialPromise:r?.initialPromise,fn:o.fetchFn,onCancel:e=>{e instanceof u&&e.revert&&this.setState({...this.#l,fetchStatus:"idle"}),s.abort()},onFail:(e,t)=>{this.#p({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#p({type:"pause"})},onContinue:()=>{this.#p({type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0});try{let e=await this.#h.start();if(void 0===e)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#u.config.onSuccess?.(e,this),this.#u.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof u){if(e.silent)return this.#h.promise;else if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw this.#p({type:"error",error:e}),this.#u.config.onError?.(e,this),this.#u.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#p(e){let t=t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...p(t.data,this.options),fetchMeta:e.meta??null};case"success":let r={...t,...m(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#l=e.manual?r:void 0,r;case"error":let i=e.error;return{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}};this.state=t(this.state),r.notifyManager.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#u.notify({query:this,type:"updated",action:e})})}};function p(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:l(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}function m(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function y(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,i=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?i??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}e.s(["Query",()=>f,"fetchState",()=>p],86491)},12598,e=>{"use strict";var t=e.i(71645),r=e.i(43476),i=t.createContext(void 0),s=e=>{let r=t.useContext(i);if(e)return e;if(!r)throw Error("No QueryClient set, use QueryClientProvider to set one");return r},n=({client:e,children:s})=>(t.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,r.jsx)(i.Provider,{value:e,children:s}));e.s(["QueryClientProvider",()=>n,"useQueryClient",()=>s])},69230,e=>{"use strict";var t=e.i(75555),r=e.i(40143),i=e.i(86491),s=e.i(15823),n=e.i(93803),a=e.i(19273),o=e.i(80166),l=class extends s.Subscribable{constructor(e,t){super(),this.options=t,this.#c=e,this.#m=null,this.#y=(0,n.pendingThenable)(),this.bindMethods(),this.setOptions(t)}#c;#v=void 0;#g=void 0;#b=void 0;#S;#R;#y;#m;#T;#F;#O;#x;#w;#E;#I=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#v.addObserver(this),u(this.#v,this.options)?this.#M():this.updateResult(),this.#C())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return c(this.#v,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return c(this.#v,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#_(),this.#P(),this.#v.removeObserver(this)}setOptions(e){let t=this.options,r=this.#v;if(this.options=this.#c.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof(0,a.resolveEnabled)(this.options.enabled,this.#v))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#D(),this.#v.setOptions(this.options),t._defaulted&&!(0,a.shallowEqualObjects)(this.options,t)&&this.#c.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#v,observer:this});let i=this.hasListeners();i&&h(this.#v,r,this.options,t)&&this.#M(),this.updateResult(),i&&(this.#v!==r||(0,a.resolveEnabled)(this.options.enabled,this.#v)!==(0,a.resolveEnabled)(t.enabled,this.#v)||(0,a.resolveStaleTime)(this.options.staleTime,this.#v)!==(0,a.resolveStaleTime)(t.staleTime,this.#v))&&this.#j();let s=this.#k();i&&(this.#v!==r||(0,a.resolveEnabled)(this.options.enabled,this.#v)!==(0,a.resolveEnabled)(t.enabled,this.#v)||s!==this.#E)&&this.#U(s)}getOptimisticResult(e){var t,r;let i=this.#c.getQueryCache().build(this.#c,e),s=this.createResult(i,e);return t=this,r=s,(0,a.shallowEqualObjects)(t.getCurrentResult(),r)||(this.#b=s,this.#R=this.options,this.#S=this.#v.state),s}getCurrentResult(){return this.#b}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),t?.(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==this.#y.status||this.#y.reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){this.#I.add(e)}getCurrentQuery(){return this.#v}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#c.defaultQueryOptions(e),r=this.#c.getQueryCache().build(this.#c,t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return this.#M({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#b))}#M(e){this.#D();let t=this.#v.fetch(this.options,e);return e?.throwOnError||(t=t.catch(a.noop)),t}#j(){this.#_();let e=(0,a.resolveStaleTime)(this.options.staleTime,this.#v);if(a.isServer||this.#b.isStale||!(0,a.isValidTimeout)(e))return;let t=(0,a.timeUntilStale)(this.#b.dataUpdatedAt,e);this.#x=o.timeoutManager.setTimeout(()=>{this.#b.isStale||this.updateResult()},t+1)}#k(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#v):this.options.refetchInterval)??!1}#U(e){this.#P(),this.#E=e,!a.isServer&&!1!==(0,a.resolveEnabled)(this.options.enabled,this.#v)&&(0,a.isValidTimeout)(this.#E)&&0!==this.#E&&(this.#w=o.timeoutManager.setInterval(()=>{(this.options.refetchIntervalInBackground||t.focusManager.isFocused())&&this.#M()},this.#E))}#C(){this.#j(),this.#U(this.#k())}#_(){this.#x&&(o.timeoutManager.clearTimeout(this.#x),this.#x=void 0)}#P(){this.#w&&(o.timeoutManager.clearInterval(this.#w),this.#w=void 0)}createResult(e,t){let r,s=this.#v,o=this.options,l=this.#b,c=this.#S,f=this.#R,p=e!==s?e.state:this.#g,{state:m}=e,y={...m},v=!1;if(t._optimisticResults){let r=this.hasListeners(),n=!r&&u(e,t),a=r&&h(e,s,t,o);(n||a)&&(y={...y,...(0,i.fetchState)(m.data,e.options)}),"isRestoring"===t._optimisticResults&&(y.fetchStatus="idle")}let{error:g,errorUpdatedAt:b,status:S}=y;r=y.data;let R=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===S){let e;l?.isPlaceholderData&&t.placeholderData===f?.placeholderData?(e=l.data,R=!0):e="function"==typeof t.placeholderData?t.placeholderData(this.#O?.state.data,this.#O):t.placeholderData,void 0!==e&&(S="success",r=(0,a.replaceData)(l?.data,e,t),v=!0)}if(t.select&&void 0!==r&&!R)if(l&&r===c?.data&&t.select===this.#T)r=this.#F;else try{this.#T=t.select,r=t.select(r),r=(0,a.replaceData)(l?.data,r,t),this.#F=r,this.#m=null}catch(e){this.#m=e}this.#m&&(g=this.#m,r=this.#F,b=Date.now(),S="error");let T="fetching"===y.fetchStatus,F="pending"===S,O="error"===S,x=F&&T,w=void 0!==r,E={status:S,fetchStatus:y.fetchStatus,isPending:F,isSuccess:"success"===S,isError:O,isInitialLoading:x,isLoading:x,data:r,dataUpdatedAt:y.dataUpdatedAt,error:g,errorUpdatedAt:b,failureCount:y.fetchFailureCount,failureReason:y.fetchFailureReason,errorUpdateCount:y.errorUpdateCount,isFetched:y.dataUpdateCount>0||y.errorUpdateCount>0,isFetchedAfterMount:y.dataUpdateCount>p.dataUpdateCount||y.errorUpdateCount>p.errorUpdateCount,isFetching:T,isRefetching:T&&!F,isLoadingError:O&&!w,isPaused:"paused"===y.fetchStatus,isPlaceholderData:v,isRefetchError:O&&w,isStale:d(e,t),refetch:this.refetch,promise:this.#y,isEnabled:!1!==(0,a.resolveEnabled)(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=void 0!==E.data,r="error"===E.status&&!t,i=e=>{r?e.reject(E.error):t&&e.resolve(E.data)},a=()=>{i(this.#y=E.promise=(0,n.pendingThenable)())},o=this.#y;switch(o.status){case"pending":e.queryHash===s.queryHash&&i(o);break;case"fulfilled":(r||E.data!==o.value)&&a();break;case"rejected":r&&E.error===o.reason||a()}}return E}updateResult(){let e=this.#b,t=this.createResult(this.#v,this.options);if(this.#S=this.#v.state,this.#R=this.options,void 0!==this.#S.data&&(this.#O=this.#v),(0,a.shallowEqualObjects)(t,e))return;this.#b=t;let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!this.#I.size)return!0;let i=new Set(r??this.#I);return this.options.throwOnError&&i.add("error"),Object.keys(this.#b).some(t=>this.#b[t]!==e[t]&&i.has(t))};this.#Q({listeners:r()})}#D(){let e=this.#c.getQueryCache().build(this.#c,this.options);if(e===this.#v)return;let t=this.#v;this.#v=e,this.#g=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#C()}#Q(e){r.notifyManager.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#b)}),this.#c.getQueryCache().notify({query:this.#v,type:"observerResultsUpdated"})})}};function u(e,t){return!1!==(0,a.resolveEnabled)(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==t.retryOnMount)||void 0!==e.state.data&&c(e,t,t.refetchOnMount)}function c(e,t,r){if(!1!==(0,a.resolveEnabled)(t.enabled,e)&&"static"!==(0,a.resolveStaleTime)(t.staleTime,e)){let i="function"==typeof r?r(e):r;return"always"===i||!1!==i&&d(e,t)}return!1}function h(e,t,r,i){return(e!==t||!1===(0,a.resolveEnabled)(i.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&d(e,r)}function d(e,t){return!1!==(0,a.resolveEnabled)(t.enabled,e)&&e.isStaleByTime((0,a.resolveStaleTime)(t.staleTime,e))}e.s(["QueryObserver",()=>l])},69637,54440,e=>{"use strict";let t;e.i(47167);var r=e.i(71645),i=e.i(19273),s=e.i(40143),n=e.i(12598);e.i(43476);var a=r.createContext((t=!1,{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t})),o=r.createContext(!1);o.Provider;var l=(e,t)=>void 0===t.state.data,u=e=>{if(e.suspense){let t=e=>"static"===e?e:Math.max(e??1e3,1e3),r=e.staleTime;e.staleTime="function"==typeof r?(...e)=>t(r(...e)):t(r),"number"==typeof e.gcTime&&(e.gcTime=Math.max(e.gcTime,1e3))}},c=(e,t)=>e.isLoading&&e.isFetching&&!t,h=(e,t)=>e?.suspense&&t.isPending,d=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function f(e,t,l){let f,p=r.useContext(o),m=r.useContext(a),y=(0,n.useQueryClient)(l),v=y.defaultQueryOptions(e);y.getDefaultOptions().queries?._experimental_beforeQuery?.(v);let g=y.getQueryCache().get(v.queryHash);v._optimisticResults=p?"isRestoring":"optimistic",u(v),f=g?.state.error&&"function"==typeof v.throwOnError?(0,i.shouldThrowError)(v.throwOnError,[g.state.error,g]):v.throwOnError,(v.suspense||v.experimental_prefetchInRender||f)&&!m.isReset()&&(v.retryOnMount=!1),r.useEffect(()=>{m.clearReset()},[m]);let b=!y.getQueryCache().get(v.queryHash),[S]=r.useState(()=>new t(y,v)),R=S.getOptimisticResult(v),T=!p&&!1!==e.subscribed;if(r.useSyncExternalStore(r.useCallback(e=>{let t=T?S.subscribe(s.notifyManager.batchCalls(e)):i.noop;return S.updateResult(),t},[S,T]),()=>S.getCurrentResult(),()=>S.getCurrentResult()),r.useEffect(()=>{S.setOptions(v)},[v,S]),h(v,R))throw d(v,S,m);if((({result:e,errorResetBoundary:t,throwOnError:r,query:s,suspense:n})=>e.isError&&!t.isReset()&&!e.isFetching&&s&&(n&&void 0===e.data||(0,i.shouldThrowError)(r,[e.error,s])))({result:R,errorResetBoundary:m,throwOnError:v.throwOnError,query:g,suspense:v.suspense}))throw R.error;if(y.getDefaultOptions().queries?._experimental_afterQuery?.(v,R),v.experimental_prefetchInRender&&!i.isServer&&c(R,p)){let e=b?d(v,S,m):g?.promise;e?.catch(i.noop).finally(()=>{S.updateResult()})}return v.notifyOnChangeProps?R:S.trackResult(R)}e.s(["defaultThrowOnError",()=>l,"ensureSuspenseTimers",()=>u,"fetchOptimistic",()=>d,"shouldSuspend",()=>h,"willFetch",()=>c],54440),e.s(["useBaseQuery",()=>f],69637)}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/f4c5b6b3116ac3bb.js b/docs/_next/static/chunks/f4c5b6b3116ac3bb.js deleted file mode 100644 index bf7c5c06..00000000 --- a/docs/_next/static/chunks/f4c5b6b3116ac3bb.js +++ /dev/null @@ -1,211 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31067,e=>{"use strict";function t(){return(t=Object.assign.bind()).apply(null,arguments)}e.s(["default",()=>t])},47071,99143,e=>{"use strict";var t=e.i(71645),r=e.i(90072),i=e.i(15080),s=e.i(40859);e.s(["useLoader",()=>s.G],99143);var s=s;let n=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function a(e,a){let o=(0,i.useThree)(e=>e.gl),l=(0,s.G)(r.TextureLoader,n(e)?Object.values(e):e);return(0,t.useLayoutEffect)(()=>{null==a||a(l)},[a]),(0,t.useEffect)(()=>{if("initTexture"in o){let e=[];Array.isArray(l)?e=l:l instanceof r.Texture?e=[l]:n(l)&&(e=Object.values(l)),e.forEach(e=>{e instanceof r.Texture&&o.initTexture(e)})}},[o,l]),(0,t.useMemo)(()=>{if(!n(e))return l;{let t={},r=0;for(let i in e)t[i]=l[r++];return t}},[e,l])}a.preload=e=>s.G.preload(r.TextureLoader,e),a.clear=e=>s.G.clear(r.TextureLoader,e),e.s(["useTexture",()=>a],47071)},75567,e=>{"use strict";var t=e.i(90072);let r=new t.ImageBitmapLoader,i=new Map;function s(e,s){let n=i.get(e);if(n)return s&&n.image&&s(n),n;let a=new t.Texture;return a.flipY=!1,i.set(e,a),r.load(e,e=>{a.image=e,a.needsUpdate=!0,s?.(a)}),a}function n(e){let s=i.get(e);return s?s.image?Promise.resolve(s):new Promise(e=>{let t=()=>{s.image?e(s):setTimeout(t,16)};t()}):new Promise((s,n)=>{let a=new t.Texture;a.flipY=!1,i.set(e,a),r.load(e,e=>{a.image=e,a.needsUpdate=!0,s(a)},void 0,n)})}function a(e,r={}){let{repeat:i=[1,1],disableMipmaps:s=!1}=r;return e.wrapS=e.wrapT=t.RepeatWrapping,e.colorSpace=t.SRGBColorSpace,e.repeat.set(...i),e.flipY=!1,e.anisotropy=16,s?(e.generateMipmaps=!1,e.minFilter=t.LinearFilter):(e.generateMipmaps=!0,e.minFilter=t.LinearMipmapLinearFilter),e.magFilter=t.LinearFilter,e.needsUpdate=!0,e}function o(e){let r=new t.DataTexture(e,256,256,t.RedFormat,t.UnsignedByteType);return r.colorSpace=t.NoColorSpace,r.wrapS=r.wrapT=t.RepeatWrapping,r.generateMipmaps=!1,r.minFilter=t.LinearFilter,r.magFilter=t.LinearFilter,r.needsUpdate=!0,r}e.s(["loadTexture",()=>s,"loadTextureAsync",()=>n,"setupMask",()=>o,"setupTexture",()=>a])},47021,e=>{"use strict";var t=e.i(8560);let r=` -#ifdef USE_FOG - // Check fog enabled uniform - allows toggling without shader recompilation - #ifdef USE_VOLUMETRIC_FOG - if (!fogEnabled) { - // Skip all fog calculations when disabled - } else { - #endif - - float dist = vFogDepth; - - // Discard fragments at or beyond visible distance - matches Torque's behavior - // where objects beyond visibleDistance are not rendered at all. - // This prevents fully-fogged geometry from showing as silhouettes against - // the sky's fog-to-sky gradient. - if (dist >= fogFar) { - discard; - } - - // Step 1: Calculate distance-based haze (quadratic falloff) - // Since we discard at fogFar, haze never reaches 1.0 here - float haze = 0.0; - if (dist > fogNear) { - float fogScale = 1.0 / (fogFar - fogNear); - float distFactor = (dist - fogNear) * fogScale - 1.0; - haze = 1.0 - distFactor * distFactor; - } - - // Step 2: Calculate fog volume contributions - // Note: Per-volume colors are NOT used in Tribes 2 ($specialFog defaults to false) - // All fog uses the global fogColor - see Tribes2_Fog_System.md for details - float volumeFog = 0.0; - - #ifdef USE_VOLUMETRIC_FOG - { - #ifdef USE_FOG_WORLD_POSITION - float fragmentHeight = vFogWorldPosition.y; - #else - float fragmentHeight = cameraHeight; - #endif - - float deltaY = fragmentHeight - cameraHeight; - float absDeltaY = abs(deltaY); - - // Determine if we're going up (positive) or down (negative) - if (absDeltaY > 0.01) { - // Non-horizontal ray: ray-march through fog volumes - for (int i = 0; i < 3; i++) { - int offset = i * 4; - float volVisDist = fogVolumeData[offset + 0]; - float volMinH = fogVolumeData[offset + 1]; - float volMaxH = fogVolumeData[offset + 2]; - float volPct = fogVolumeData[offset + 3]; - - // Skip inactive volumes (visibleDistance = 0) - if (volVisDist <= 0.0) continue; - - // Calculate fog factor for this volume - // From Torque: factor = (1 / (volumeVisDist * visFactor)) * percentage - // where visFactor is smVisibleDistanceMod (a user quality pref, default 1.0) - // Since we don't have quality settings, we use visFactor = 1.0 - float factor = (1.0 / volVisDist) * volPct; - - // Find ray intersection with this volume's height range - float rayMinY = min(cameraHeight, fragmentHeight); - float rayMaxY = max(cameraHeight, fragmentHeight); - - // Check if ray intersects volume height range - if (rayMinY < volMaxH && rayMaxY > volMinH) { - float intersectMin = max(rayMinY, volMinH); - float intersectMax = min(rayMaxY, volMaxH); - float intersectHeight = intersectMax - intersectMin; - - // Calculate distance traveled through this volume using similar triangles: - // subDist / dist = intersectHeight / absDeltaY - float subDist = dist * (intersectHeight / absDeltaY); - - // Accumulate fog: fog += subDist * factor - volumeFog += subDist * factor; - } - } - } else { - // Near-horizontal ray: if camera is inside a volume, apply full fog for that volume - for (int i = 0; i < 3; i++) { - int offset = i * 4; - float volVisDist = fogVolumeData[offset + 0]; - float volMinH = fogVolumeData[offset + 1]; - float volMaxH = fogVolumeData[offset + 2]; - float volPct = fogVolumeData[offset + 3]; - - if (volVisDist <= 0.0) continue; - - // If camera is inside this volume, apply fog for full distance - if (cameraHeight >= volMinH && cameraHeight <= volMaxH) { - float factor = (1.0 / volVisDist) * volPct; - volumeFog += dist * factor; - } - } - } - } - #endif - - // Step 3: Combine haze and volume fog - // Torque's clamping: if (bandPct + hazePct > 1) hazePct = 1 - bandPct - // This gives fog volumes priority over haze - float volPct = min(volumeFog, 1.0); - float hazePct = haze; - if (volPct + hazePct > 1.0) { - hazePct = 1.0 - volPct; - } - float fogFactor = hazePct + volPct; - - // Apply fog using global fogColor (per-volume colors not used in Tribes 2) - gl_FragColor.rgb = mix(gl_FragColor.rgb, fogColor, fogFactor); - - #ifdef USE_VOLUMETRIC_FOG - } // end fogEnabled check - #endif -#endif -`;function i(){t.ShaderChunk.fog_pars_fragment=` -#ifdef USE_FOG - uniform vec3 fogColor; - varying float vFogDepth; - #ifdef FOG_EXP2 - uniform float fogDensity; - #else - uniform float fogNear; - uniform float fogFar; - #endif - - // Custom volumetric fog uniforms (only defined when USE_VOLUMETRIC_FOG is set) - // Format: [visDist, minH, maxH, percentage] x 3 volumes = 12 floats - #ifdef USE_VOLUMETRIC_FOG - uniform float fogVolumeData[12]; - uniform float cameraHeight; - #endif - - #ifdef USE_FOG_WORLD_POSITION - varying vec3 vFogWorldPosition; - #endif -#endif -`,t.ShaderChunk.fog_fragment=r,t.ShaderChunk.fog_pars_vertex=` -#ifdef USE_FOG - varying float vFogDepth; - #ifdef USE_FOG_WORLD_POSITION - varying vec3 vFogWorldPosition; - #endif -#endif -`,t.ShaderChunk.fog_vertex=` -#ifdef USE_FOG - // Use Euclidean distance from camera, not view-space z-depth - // This ensures fog doesn't change when rotating the camera - vFogDepth = length(mvPosition.xyz); - #ifdef USE_FOG_WORLD_POSITION - vFogWorldPosition = (modelMatrix * vec4(transformed, 1.0)).xyz; - #endif -#endif -`}function s(e,t){e.uniforms.fogVolumeData=t.fogVolumeData,e.uniforms.cameraHeight=t.cameraHeight,e.uniforms.fogEnabled=t.fogEnabled,e.vertexShader=e.vertexShader.replace("#include ",`#include -#ifdef USE_FOG - #define USE_FOG_WORLD_POSITION - #define USE_VOLUMETRIC_FOG - varying vec3 vFogWorldPosition; -#endif`),e.vertexShader=e.vertexShader.replace("#include ",`#include -#ifdef USE_FOG - vFogWorldPosition = (modelMatrix * vec4(transformed, 1.0)).xyz; -#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include -#ifdef USE_FOG - #define USE_VOLUMETRIC_FOG - uniform float fogVolumeData[12]; - uniform float cameraHeight; - uniform bool fogEnabled; - #define USE_FOG_WORLD_POSITION - varying vec3 vFogWorldPosition; -#endif`),e.fragmentShader=e.fragmentShader.replace("#include ",r)}e.s(["fogFragmentShader",0,r,"injectCustomFog",()=>s,"installCustomFogShader",()=>i])},48066,e=>{"use strict";let t={fogVolumeData:{value:new Float32Array(12)},cameraHeight:{value:0},fogEnabled:{value:!0}};function r(e,i,s=!0){t.cameraHeight.value=e,t.fogVolumeData.value.set(i),t.fogEnabled.value=s}function i(){t.cameraHeight.value=0,t.fogVolumeData.value.fill(0),t.fogEnabled.value=!0}function s(e){let t=new Float32Array(12);for(let r=0;r<3;r++){let i=4*r,s=e[r];s&&(t[i+0]=s.visibleDistance,t[i+1]=s.minHeight,t[i+2]=s.maxHeight,t[i+3]=s.percentage)}return t}e.s(["globalFogUniforms",0,t,"packFogVolumeData",()=>s,"resetGlobalFogUniforms",()=>i,"updateGlobalFogUniforms",()=>r])},15823,e=>{"use strict";var t=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}};e.s(["Subscribable",()=>t])},19273,80166,e=>{"use strict";e.i(47167);var t={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},r=new class{#e=t;#t=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function i(e){setTimeout(e,0)}e.s(["systemSetTimeoutZero",()=>i,"timeoutManager",()=>r],80166);var s="u"=0&&e!==1/0}function l(e,t){return Math.max(e+(t||0)-Date.now(),0)}function u(e,t){return"function"==typeof e?e(t):e}function c(e,t){return"function"==typeof e?e(t):e}function h(e,t){let{type:r="all",exact:i,fetchStatus:s,predicate:n,queryKey:a,stale:o}=e;if(a){if(i){if(t.queryHash!==f(a,t.options))return!1}else if(!m(t.queryKey,a))return!1}if("all"!==r){let e=t.isActive();if("active"===r&&!e||"inactive"===r&&e)return!1}return("boolean"!=typeof o||t.isStale()===o)&&(!s||s===t.state.fetchStatus)&&(!n||!!n(t))}function d(e,t){let{exact:r,status:i,predicate:s,mutationKey:n}=e;if(n){if(!t.options.mutationKey)return!1;if(r){if(p(t.options.mutationKey)!==p(n))return!1}else if(!m(t.options.mutationKey,n))return!1}return(!i||t.state.status===i)&&(!s||!!s(t))}function f(e,t){return(t?.queryKeyHashFn||p)(e)}function p(e){return JSON.stringify(e,(e,t)=>b(t)?Object.keys(t).sort().reduce((e,r)=>(e[r]=t[r],e),{}):t)}function m(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(r=>m(e[r],t[r]))}var y=Object.prototype.hasOwnProperty;function v(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}function g(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function b(e){if(!S(e))return!1;let t=e.constructor;if(void 0===t)return!0;let r=t.prototype;return!!S(r)&&!!r.hasOwnProperty("isPrototypeOf")&&Object.getPrototypeOf(e)===Object.prototype}function S(e){return"[object Object]"===Object.prototype.toString.call(e)}function R(e){return new Promise(t=>{r.setTimeout(t,e)})}function T(e,t,r){return"function"==typeof r.structuralSharing?r.structuralSharing(e,t):!1!==r.structuralSharing?function e(t,r,i=0){if(t===r)return t;if(i>500)return r;let s=g(t)&&g(r);if(!s&&!(b(t)&&b(r)))return r;let n=(s?t:Object.keys(t)).length,a=s?r:Object.keys(r),o=a.length,l=s?Array(o):{},u=0;for(let c=0;cr?i.slice(1):i}function F(e,t,r=0){let i=[t,...e];return r&&i.length>r?i.slice(0,-1):i}var w=Symbol();function O(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:e.queryFn&&e.queryFn!==w?e.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`))}function E(e,t){return"function"==typeof e?e(...t):!!e}function M(e,t,r){let i,s=!1;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),s||(s=!0,i.aborted?r():i.addEventListener("abort",r,{once:!0})),i)}),e}e.s(["addConsumeAwareSignal",()=>M,"addToEnd",()=>x,"addToStart",()=>F,"ensureQueryFn",()=>O,"functionalUpdate",()=>a,"hashKey",()=>p,"hashQueryKeyByOptions",()=>f,"isServer",()=>s,"isValidTimeout",()=>o,"matchMutation",()=>d,"matchQuery",()=>h,"noop",()=>n,"partialMatchKey",()=>m,"replaceData",()=>T,"resolveEnabled",()=>c,"resolveStaleTime",()=>u,"shallowEqualObjects",()=>v,"shouldThrowError",()=>E,"skipToken",()=>w,"sleep",()=>R,"timeUntilStale",()=>l],19273)},75555,e=>{"use strict";var t=e.i(15823),r=e.i(19273),i=new class extends t.Subscribable{#r;#i;#s;constructor(){super(),this.#s=e=>{if(!r.isServer&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#i||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#i?.(),this.#i=void 0)}setEventListener(e){this.#s=e,this.#i?.(),this.#i=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){this.#r!==e&&(this.#r=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#r?this.#r:globalThis.document?.visibilityState!=="hidden"}};e.s(["focusManager",()=>i])},40143,e=>{"use strict";let t,r,i,s,n,a;var o=e.i(80166).systemSetTimeoutZero,l=(t=[],r=0,i=e=>{e()},s=e=>{e()},n=o,{batch:e=>{let a;r++;try{a=e()}finally{let e;--r||(e=t,t=[],e.length&&n(()=>{s(()=>{e.forEach(e=>{i(e)})})}))}return a},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a=e=>{r?t.push(e):n(()=>{i(e)})},setNotifyFunction:e=>{i=e},setBatchNotifyFunction:e=>{s=e},setScheduler:e=>{n=e}});e.s(["notifyManager",()=>l])},86491,14448,93803,36553,88587,e=>{"use strict";e.i(47167);var t=e.i(19273),r=e.i(40143),i=e.i(75555),s=e.i(15823),n=new class extends s.Subscribable{#n=!0;#i;#s;constructor(){super(),this.#s=e=>{if(!t.isServer&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#i||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#i?.(),this.#i=void 0)}setEventListener(e){this.#s=e,this.#i?.(),this.#i=e(this.setOnline.bind(this))}setOnline(e){this.#n!==e&&(this.#n=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#n}};function a(){let e,t,r=new Promise((r,i)=>{e=r,t=i});function i(e){Object.assign(r,e),delete r.resolve,delete r.reject}return r.status="pending",r.catch(()=>{}),r.resolve=t=>{i({status:"fulfilled",value:t}),e(t)},r.reject=e=>{i({status:"rejected",reason:e}),t(e)},r}function o(e){return Math.min(1e3*2**e,3e4)}function l(e){return(e??"online")!=="online"||n.isOnline()}e.s(["onlineManager",()=>n],14448),e.s(["pendingThenable",()=>a],93803);var u=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function c(e){let r,s=!1,c=0,h=a(),d=()=>i.focusManager.isFocused()&&("always"===e.networkMode||n.isOnline())&&e.canRun(),f=()=>l(e.networkMode)&&e.canRun(),p=e=>{"pending"===h.status&&(r?.(),h.resolve(e))},m=e=>{"pending"===h.status&&(r?.(),h.reject(e))},y=()=>new Promise(t=>{r=e=>{("pending"!==h.status||d())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,"pending"===h.status&&e.onContinue?.()}),v=()=>{let r;if("pending"!==h.status)return;let i=0===c?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(p).catch(r=>{if("pending"!==h.status)return;let i=e.retry??3*!t.isServer,n=e.retryDelay??o,a="function"==typeof n?n(c,r):n,l=!0===i||"number"==typeof i&&cd()?void 0:y()).then(()=>{s?m(r):v()}))})};return{promise:h,status:()=>h.status,cancel:t=>{if("pending"===h.status){let r=new u(t);m(r),e.onCancel?.(r)}},continue:()=>(r?.(),h),cancelRetry:()=>{s=!0},continueRetry:()=>{s=!1},canStart:f,start:()=>(f()?v():y().then(v),h)}}e.s(["CancelledError",()=>u,"canFetch",()=>l,"createRetryer",()=>c],36553);var h=e.i(80166),d=class{#a;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,t.isValidTimeout)(this.gcTime)&&(this.#a=h.timeoutManager.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(t.isServer?1/0:3e5))}clearGcTimeout(){this.#a&&(h.timeoutManager.clearTimeout(this.#a),this.#a=void 0)}};e.s(["Removable",()=>d],88587);var f=class extends d{#o;#l;#u;#c;#h;#d;#f;constructor(e){super(),this.#f=!1,this.#d=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#c=e.client,this.#u=this.#c.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#o=y(this.options),this.state=e.state??this.#o,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#h?.promise}setOptions(e){if(this.options={...this.#d,...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=y(this.options);void 0!==e.data&&(this.setState(m(e.data,e.dataUpdatedAt)),this.#o=e)}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#u.remove(this)}setData(e,r){let i=(0,t.replaceData)(this.state.data,e,this.options);return this.#p({data:i,type:"success",dataUpdatedAt:r?.updatedAt,manual:r?.manual}),i}setState(e,t){this.#p({type:"setState",state:e,setStateOptions:t})}cancel(e){let r=this.#h?.promise;return this.#h?.cancel(e),r?r.then(t.noop).catch(t.noop):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#o)}isActive(){return this.observers.some(e=>!1!==(0,t.resolveEnabled)(e.options.enabled,this))}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===t.skipToken||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===(0,t.resolveStaleTime)(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(e=0){return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!(0,t.timeUntilStale)(this.state.dataUpdatedAt,e))}onFocus(){let e=this.observers.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#h?.continue()}onOnline(){let e=this.observers.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#h?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#u.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#h&&(this.#f?this.#h.cancel({revert:!0}):this.#h.cancelRetry()),this.scheduleGc()),this.#u.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#p({type:"invalidate"})}async fetch(e,r){let i;if("idle"!==this.state.fetchStatus&&this.#h?.status()!=="rejected"){if(void 0!==this.state.data&&r?.cancelRefetch)this.cancel({silent:!0});else if(this.#h)return this.#h.continueRetry(),this.#h.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let s=new AbortController,n=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#f=!0,s.signal)})},a=()=>{let e,i=(0,t.ensureQueryFn)(this.options,r),s=(n(e={client:this.#c,queryKey:this.queryKey,meta:this.meta}),e);return(this.#f=!1,this.options.persister)?this.options.persister(i,s,this):i(s)},o=(n(i={fetchOptions:r,options:this.options,queryKey:this.queryKey,client:this.#c,state:this.state,fetchFn:a}),i);this.options.behavior?.onFetch(o,this),this.#l=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==o.fetchOptions?.meta)&&this.#p({type:"fetch",meta:o.fetchOptions?.meta}),this.#h=c({initialPromise:r?.initialPromise,fn:o.fetchFn,onCancel:e=>{e instanceof u&&e.revert&&this.setState({...this.#l,fetchStatus:"idle"}),s.abort()},onFail:(e,t)=>{this.#p({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#p({type:"pause"})},onContinue:()=>{this.#p({type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0});try{let e=await this.#h.start();if(void 0===e)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#u.config.onSuccess?.(e,this),this.#u.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof u){if(e.silent)return this.#h.promise;else if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw this.#p({type:"error",error:e}),this.#u.config.onError?.(e,this),this.#u.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#p(e){let t=t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...p(t.data,this.options),fetchMeta:e.meta??null};case"success":let r={...t,...m(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#l=e.manual?r:void 0,r;case"error":let i=e.error;return{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}};this.state=t(this.state),r.notifyManager.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#u.notify({query:this,type:"updated",action:e})})}};function p(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:l(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}function m(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function y(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,i=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?i??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}e.s(["Query",()=>f,"fetchState",()=>p],86491)},69230,e=>{"use strict";var t=e.i(75555),r=e.i(40143),i=e.i(86491),s=e.i(15823),n=e.i(93803),a=e.i(19273),o=e.i(80166),l=class extends s.Subscribable{constructor(e,t){super(),this.options=t,this.#c=e,this.#m=null,this.#y=(0,n.pendingThenable)(),this.bindMethods(),this.setOptions(t)}#c;#v=void 0;#g=void 0;#b=void 0;#S;#R;#y;#m;#T;#x;#F;#w;#O;#E;#M=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#v.addObserver(this),u(this.#v,this.options)?this.#I():this.updateResult(),this.#P())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return c(this.#v,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return c(this.#v,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#C(),this.#D(),this.#v.removeObserver(this)}setOptions(e){let t=this.options,r=this.#v;if(this.options=this.#c.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof(0,a.resolveEnabled)(this.options.enabled,this.#v))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#_(),this.#v.setOptions(this.options),t._defaulted&&!(0,a.shallowEqualObjects)(this.options,t)&&this.#c.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#v,observer:this});let i=this.hasListeners();i&&h(this.#v,r,this.options,t)&&this.#I(),this.updateResult(),i&&(this.#v!==r||(0,a.resolveEnabled)(this.options.enabled,this.#v)!==(0,a.resolveEnabled)(t.enabled,this.#v)||(0,a.resolveStaleTime)(this.options.staleTime,this.#v)!==(0,a.resolveStaleTime)(t.staleTime,this.#v))&&this.#j();let s=this.#k();i&&(this.#v!==r||(0,a.resolveEnabled)(this.options.enabled,this.#v)!==(0,a.resolveEnabled)(t.enabled,this.#v)||s!==this.#E)&&this.#U(s)}getOptimisticResult(e){var t,r;let i=this.#c.getQueryCache().build(this.#c,e),s=this.createResult(i,e);return t=this,r=s,(0,a.shallowEqualObjects)(t.getCurrentResult(),r)||(this.#b=s,this.#R=this.options,this.#S=this.#v.state),s}getCurrentResult(){return this.#b}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),t?.(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==this.#y.status||this.#y.reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){this.#M.add(e)}getCurrentQuery(){return this.#v}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#c.defaultQueryOptions(e),r=this.#c.getQueryCache().build(this.#c,t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return this.#I({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#b))}#I(e){this.#_();let t=this.#v.fetch(this.options,e);return e?.throwOnError||(t=t.catch(a.noop)),t}#j(){this.#C();let e=(0,a.resolveStaleTime)(this.options.staleTime,this.#v);if(a.isServer||this.#b.isStale||!(0,a.isValidTimeout)(e))return;let t=(0,a.timeUntilStale)(this.#b.dataUpdatedAt,e);this.#w=o.timeoutManager.setTimeout(()=>{this.#b.isStale||this.updateResult()},t+1)}#k(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#v):this.options.refetchInterval)??!1}#U(e){this.#D(),this.#E=e,!a.isServer&&!1!==(0,a.resolveEnabled)(this.options.enabled,this.#v)&&(0,a.isValidTimeout)(this.#E)&&0!==this.#E&&(this.#O=o.timeoutManager.setInterval(()=>{(this.options.refetchIntervalInBackground||t.focusManager.isFocused())&&this.#I()},this.#E))}#P(){this.#j(),this.#U(this.#k())}#C(){this.#w&&(o.timeoutManager.clearTimeout(this.#w),this.#w=void 0)}#D(){this.#O&&(o.timeoutManager.clearInterval(this.#O),this.#O=void 0)}createResult(e,t){let r,s=this.#v,o=this.options,l=this.#b,c=this.#S,f=this.#R,p=e!==s?e.state:this.#g,{state:m}=e,y={...m},v=!1;if(t._optimisticResults){let r=this.hasListeners(),n=!r&&u(e,t),a=r&&h(e,s,t,o);(n||a)&&(y={...y,...(0,i.fetchState)(m.data,e.options)}),"isRestoring"===t._optimisticResults&&(y.fetchStatus="idle")}let{error:g,errorUpdatedAt:b,status:S}=y;r=y.data;let R=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===S){let e;l?.isPlaceholderData&&t.placeholderData===f?.placeholderData?(e=l.data,R=!0):e="function"==typeof t.placeholderData?t.placeholderData(this.#F?.state.data,this.#F):t.placeholderData,void 0!==e&&(S="success",r=(0,a.replaceData)(l?.data,e,t),v=!0)}if(t.select&&void 0!==r&&!R)if(l&&r===c?.data&&t.select===this.#T)r=this.#x;else try{this.#T=t.select,r=t.select(r),r=(0,a.replaceData)(l?.data,r,t),this.#x=r,this.#m=null}catch(e){this.#m=e}this.#m&&(g=this.#m,r=this.#x,b=Date.now(),S="error");let T="fetching"===y.fetchStatus,x="pending"===S,F="error"===S,w=x&&T,O=void 0!==r,E={status:S,fetchStatus:y.fetchStatus,isPending:x,isSuccess:"success"===S,isError:F,isInitialLoading:w,isLoading:w,data:r,dataUpdatedAt:y.dataUpdatedAt,error:g,errorUpdatedAt:b,failureCount:y.fetchFailureCount,failureReason:y.fetchFailureReason,errorUpdateCount:y.errorUpdateCount,isFetched:y.dataUpdateCount>0||y.errorUpdateCount>0,isFetchedAfterMount:y.dataUpdateCount>p.dataUpdateCount||y.errorUpdateCount>p.errorUpdateCount,isFetching:T,isRefetching:T&&!x,isLoadingError:F&&!O,isPaused:"paused"===y.fetchStatus,isPlaceholderData:v,isRefetchError:F&&O,isStale:d(e,t),refetch:this.refetch,promise:this.#y,isEnabled:!1!==(0,a.resolveEnabled)(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=void 0!==E.data,r="error"===E.status&&!t,i=e=>{r?e.reject(E.error):t&&e.resolve(E.data)},a=()=>{i(this.#y=E.promise=(0,n.pendingThenable)())},o=this.#y;switch(o.status){case"pending":e.queryHash===s.queryHash&&i(o);break;case"fulfilled":(r||E.data!==o.value)&&a();break;case"rejected":r&&E.error===o.reason||a()}}return E}updateResult(){let e=this.#b,t=this.createResult(this.#v,this.options);if(this.#S=this.#v.state,this.#R=this.options,void 0!==this.#S.data&&(this.#F=this.#v),(0,a.shallowEqualObjects)(t,e))return;this.#b=t;let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!this.#M.size)return!0;let i=new Set(r??this.#M);return this.options.throwOnError&&i.add("error"),Object.keys(this.#b).some(t=>this.#b[t]!==e[t]&&i.has(t))};this.#L({listeners:r()})}#_(){let e=this.#c.getQueryCache().build(this.#c,this.options);if(e===this.#v)return;let t=this.#v;this.#v=e,this.#g=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#P()}#L(e){r.notifyManager.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#b)}),this.#c.getQueryCache().notify({query:this.#v,type:"observerResultsUpdated"})})}};function u(e,t){return!1!==(0,a.resolveEnabled)(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==t.retryOnMount)||void 0!==e.state.data&&c(e,t,t.refetchOnMount)}function c(e,t,r){if(!1!==(0,a.resolveEnabled)(t.enabled,e)&&"static"!==(0,a.resolveStaleTime)(t.staleTime,e)){let i="function"==typeof r?r(e):r;return"always"===i||!1!==i&&d(e,t)}return!1}function h(e,t,r,i){return(e!==t||!1===(0,a.resolveEnabled)(i.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&d(e,r)}function d(e,t){return!1!==(0,a.resolveEnabled)(t.enabled,e)&&e.isStaleByTime((0,a.resolveStaleTime)(t.staleTime,e))}e.s(["QueryObserver",()=>l])},12598,e=>{"use strict";var t=e.i(71645),r=e.i(43476),i=t.createContext(void 0),s=e=>{let r=t.useContext(i);if(e)return e;if(!r)throw Error("No QueryClient set, use QueryClientProvider to set one");return r},n=({client:e,children:s})=>(t.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,r.jsx)(i.Provider,{value:e,children:s}));e.s(["QueryClientProvider",()=>n,"useQueryClient",()=>s])},69637,54440,e=>{"use strict";let t;e.i(47167);var r=e.i(71645),i=e.i(19273),s=e.i(40143),n=e.i(12598);e.i(43476);var a=r.createContext((t=!1,{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t})),o=r.createContext(!1);o.Provider;var l=(e,t)=>void 0===t.state.data,u=e=>{if(e.suspense){let t=e=>"static"===e?e:Math.max(e??1e3,1e3),r=e.staleTime;e.staleTime="function"==typeof r?(...e)=>t(r(...e)):t(r),"number"==typeof e.gcTime&&(e.gcTime=Math.max(e.gcTime,1e3))}},c=(e,t)=>e.isLoading&&e.isFetching&&!t,h=(e,t)=>e?.suspense&&t.isPending,d=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function f(e,t,l){let f,p=r.useContext(o),m=r.useContext(a),y=(0,n.useQueryClient)(l),v=y.defaultQueryOptions(e);y.getDefaultOptions().queries?._experimental_beforeQuery?.(v);let g=y.getQueryCache().get(v.queryHash);v._optimisticResults=p?"isRestoring":"optimistic",u(v),f=g?.state.error&&"function"==typeof v.throwOnError?(0,i.shouldThrowError)(v.throwOnError,[g.state.error,g]):v.throwOnError,(v.suspense||v.experimental_prefetchInRender||f)&&!m.isReset()&&(v.retryOnMount=!1),r.useEffect(()=>{m.clearReset()},[m]);let b=!y.getQueryCache().get(v.queryHash),[S]=r.useState(()=>new t(y,v)),R=S.getOptimisticResult(v),T=!p&&!1!==e.subscribed;if(r.useSyncExternalStore(r.useCallback(e=>{let t=T?S.subscribe(s.notifyManager.batchCalls(e)):i.noop;return S.updateResult(),t},[S,T]),()=>S.getCurrentResult(),()=>S.getCurrentResult()),r.useEffect(()=>{S.setOptions(v)},[v,S]),h(v,R))throw d(v,S,m);if((({result:e,errorResetBoundary:t,throwOnError:r,query:s,suspense:n})=>e.isError&&!t.isReset()&&!e.isFetching&&s&&(n&&void 0===e.data||(0,i.shouldThrowError)(r,[e.error,s])))({result:R,errorResetBoundary:m,throwOnError:v.throwOnError,query:g,suspense:v.suspense}))throw R.error;if(y.getDefaultOptions().queries?._experimental_afterQuery?.(v,R),v.experimental_prefetchInRender&&!i.isServer&&c(R,p)){let e=b?d(v,S,m):g?.promise;e?.catch(i.noop).finally(()=>{S.updateResult()})}return v.notifyOnChangeProps?R:S.trackResult(R)}e.s(["defaultThrowOnError",()=>l,"ensureSuspenseTimers",()=>u,"fetchOptimistic",()=>d,"shouldSuspend",()=>h,"willFetch",()=>c],54440),e.s(["useBaseQuery",()=>f],69637)},67191,e=>{e.v({Label:"FloatingLabel-module__8y09Ka__Label"})},89887,60099,e=>{"use strict";let t,r;var i=e.i(43476),s=e.i(932),n=e.i(71645),a=e.i(90072),o=e.i(71753),l=e.i(31067),u=e.i(88014),c=e.i(15080);let h=new a.Vector3,d=new a.Vector3,f=new a.Vector3,p=new a.Vector2;function m(e,t,r){let i=h.setFromMatrixPosition(e.matrixWorld);i.project(t);let s=r.width/2,n=r.height/2;return[i.x*s+s,-(i.y*n)+n]}let y=e=>1e-10>Math.abs(e)?0:e;function v(e,t,r=""){let i="matrix3d(";for(let r=0;16!==r;r++)i+=y(t[r]*e.elements[r])+(15!==r?",":")");return r+i}let g=(t=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>v(e,t)),b=(r=e=>[1/e,1/e,1/e,1,-1/e,-1/e,-1/e,-1,1/e,1/e,1/e,1,1,1,1,1],(e,t)=>v(e,r(t),"translate(-50%,-50%)")),S=n.forwardRef(({children:e,eps:t=.001,style:r,className:i,prepend:s,center:v,fullscreen:S,portal:R,distanceFactor:T,sprite:x=!1,transform:F=!1,occlude:w,onOcclude:O,castShadow:E,receiveShadow:M,material:I,geometry:P,zIndexRange:C=[0x1000037,0],calculatePosition:D=m,as:_="div",wrapperClass:j,pointerEvents:k="auto",...U},L)=>{let{gl:Q,camera:A,scene:B,size:V,raycaster:W,events:H,viewport:q}=(0,c.useThree)(),[N]=n.useState(()=>document.createElement(_)),G=n.useRef(null),z=n.useRef(null),$=n.useRef(0),K=n.useRef([0,0]),Y=n.useRef(null),Z=n.useRef(null),J=(null==R?void 0:R.current)||H.connected||Q.domElement.parentNode,X=n.useRef(null),ee=n.useRef(!1),et=n.useMemo(()=>{var e;return w&&"blending"!==w||Array.isArray(w)&&w.length&&(e=w[0])&&"object"==typeof e&&"current"in e},[w]);n.useLayoutEffect(()=>{let e=Q.domElement;w&&"blending"===w?(e.style.zIndex=`${Math.floor(C[0]/2)}`,e.style.position="absolute",e.style.pointerEvents="none"):(e.style.zIndex=null,e.style.position=null,e.style.pointerEvents=null)},[w]),n.useLayoutEffect(()=>{if(z.current){let e=G.current=u.createRoot(N);if(B.updateMatrixWorld(),F)N.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{let e=D(z.current,A,V);N.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return J&&(s?J.prepend(N):J.appendChild(N)),()=>{J&&J.removeChild(N),e.unmount()}}},[J,F]),n.useLayoutEffect(()=>{j&&(N.className=j)},[j]);let er=n.useMemo(()=>F?{position:"absolute",top:0,left:0,width:V.width,height:V.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:v?"translate3d(-50%,-50%,0)":"none",...S&&{top:-V.height/2,left:-V.width/2,width:V.width,height:V.height},...r},[r,v,S,V,F]),ei=n.useMemo(()=>({position:"absolute",pointerEvents:k}),[k]);n.useLayoutEffect(()=>{var t,s;ee.current=!1,F?null==(t=G.current)||t.render(n.createElement("div",{ref:Y,style:er},n.createElement("div",{ref:Z,style:ei},n.createElement("div",{ref:L,className:i,style:r,children:e})))):null==(s=G.current)||s.render(n.createElement("div",{ref:L,style:er,className:i,children:e}))});let es=n.useRef(!0);(0,o.useFrame)(e=>{if(z.current){A.updateMatrixWorld(),z.current.updateWorldMatrix(!0,!1);let e=F?K.current:D(z.current,A,V);if(F||Math.abs($.current-A.zoom)>t||Math.abs(K.current[0]-e[0])>t||Math.abs(K.current[1]-e[1])>t){var r;let t,i,s,n,o=(r=z.current,t=h.setFromMatrixPosition(r.matrixWorld),i=d.setFromMatrixPosition(A.matrixWorld),s=t.sub(i),n=A.getWorldDirection(f),s.angleTo(n)>Math.PI/2),l=!1;et&&(Array.isArray(w)?l=w.map(e=>e.current):"blending"!==w&&(l=[B]));let u=es.current;l?es.current=function(e,t,r,i){let s=h.setFromMatrixPosition(e.matrixWorld),n=s.clone();n.project(t),p.set(n.x,n.y),r.setFromCamera(p,t);let a=r.intersectObjects(i,!0);if(a.length){let e=a[0].distance;return s.distanceTo(r.ray.origin)({vertexShader:F?void 0:` - /* - This shader is from the THREE's SpriteMaterial. - We need to turn the backing plane into a Sprite - (make it always face the camera) if "transfrom" - is false. - */ - #include - - void main() { - vec2 center = vec2(0., 1.); - float rotation = 0.0; - - // This is somewhat arbitrary, but it seems to work well - // Need to figure out how to derive this dynamically if it even matters - float size = 0.03; - - vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); - vec2 scale; - scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); - scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); - - bool isPerspective = isPerspectiveMatrix( projectionMatrix ); - if ( isPerspective ) scale *= - mvPosition.z; - - vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size; - vec2 rotatedPosition; - rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; - rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; - mvPosition.xy += rotatedPosition; - - gl_Position = projectionMatrix * mvPosition; - } - `,fragmentShader:` - void main() { - gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); - } - `}),[F]);return n.createElement("group",(0,l.default)({},U,{ref:z}),w&&!et&&n.createElement("mesh",{castShadow:E,receiveShadow:M,ref:X},P||n.createElement("planeGeometry",null),I||n.createElement("shaderMaterial",{side:a.DoubleSide,vertexShader:en.vertexShader,fragmentShader:en.fragmentShader})))});e.s(["Html",()=>S],60099);var R=e.i(67191);let T=[0,0,0],x=new a.Vector3,F=(0,n.memo)(function(e){let t,r,a,l=(0,s.c)(11),{children:u,color:c,position:h,opacity:d}=e,f=void 0===c?"white":c,p=void 0===h?T:h,m=void 0===d?"fadeWithDistance":d,y="fadeWithDistance"===m,v=(0,n.useRef)(null),[g,b]=(0,n.useState)(0!==m),F=(0,n.useRef)(null);return l[0]!==y||l[1]!==g||l[2]!==m?(t=e=>{var t,r,i;let s,{camera:n}=e,a=v.current;if(!a)return;a.getWorldPosition(x);let o=(t=x.x,r=x.y,i=x.z,-((t-(s=n.matrixWorld.elements)[12])*s[8])+-((r-s[13])*s[9])+-((i-s[14])*s[10])<0);if(y){let e=o?1/0:n.position.distanceTo(x),t=e<200;if(g!==t&&b(t),F.current&&t){let t=Math.max(0,Math.min(1,1-e/200));F.current.style.opacity=t.toString()}}else{let e=!o&&0!==m;g!==e&&b(e),F.current&&(F.current.style.opacity=m.toString())}},l[0]=y,l[1]=g,l[2]=m,l[3]=t):t=l[3],(0,o.useFrame)(t),l[4]!==u||l[5]!==f||l[6]!==g||l[7]!==p?(r=g?(0,i.jsx)(S,{position:p,center:!0,children:(0,i.jsx)("div",{ref:F,className:R.default.Label,style:{color:f},children:u})}):null,l[4]=u,l[5]=f,l[6]=g,l[7]=p,l[8]=r):r=l[8],l[9]!==r?(a=(0,i.jsx)("group",{ref:v,children:r}),l[9]=r,l[10]=a):a=l[10],a});e.s(["FloatingLabel",0,F],89887)},29055,51434,e=>{"use strict";var t=e.i(43476),r=e.i(71645),i=e.i(15080),s=e.i(71753),n=e.i(90072),a=e.i(62395),o=e.i(12979),l=e.i(932);let u=(0,r.createContext)(void 0);function c(e){let s,a,o,c,d=(0,l.c)(7),{children:f}=e,{camera:p}=(0,i.useThree)();d[0]===Symbol.for("react.memo_cache_sentinel")?(s={audioLoader:null,audioListener:null},d[0]=s):s=d[0];let[m,y]=(0,r.useState)(s);return d[1]!==p?(a=()=>{let e=new n.AudioLoader,t=p.children.find(h);t||(t=new n.AudioListener,p.add(t)),y({audioLoader:e,audioListener:t})},o=[p],d[1]=p,d[2]=a,d[3]=o):(a=d[2],o=d[3]),(0,r.useEffect)(a,o),d[4]!==m||d[5]!==f?(c=(0,t.jsx)(u.Provider,{value:m,children:f}),d[4]=m,d[5]=f,d[6]=c):c=d[6],c}function h(e){return e instanceof n.AudioListener}function d(){let e=(0,r.useContext)(u);if(void 0===e)throw Error("useAudio must be used within AudioProvider");return e}e.s(["AudioProvider",()=>c,"useAudio",()=>d],51434);var f=e.i(79123),p=e.i(89887);let m=new Map;function y(e,t){let r=t(e),i=r?.filename;if(!i)return null;let s=i.endsWith(".wav")?i:`${i}.wav`,n=r.description,a=null!=n?t(n):void 0,o=a?.is3D??!0,l=a?.isLooping??!1,u=a?.referenceDistance??20;return{filename:s,is3D:o,isLooping:l,refDist:u,maxDist:a?.maxDistance??100,volume:a?.volume??1}}function v(e,t,r,i,s){let a;try{a=(0,o.audioToUrl)(e.filename)}catch{return}g(a,r,r=>{try{if(e.is3D&&s){let a=new n.PositionalAudio(t);a.setBuffer(r),a.setDistanceModel("inverse"),a.setRefDistance(e.refDist),a.setMaxDistance(e.maxDist),a.setRolloffFactor(1),a.setVolume(e.volume),i&&a.position.copy(i),s.add(a),a.play(),a.source.onended=()=>{a.disconnect(),s.remove(a)}}else{let i=new n.Audio(t);i.setBuffer(r),i.setVolume(e.volume),i.play(),i.source.onended=()=>{i.disconnect()}}}catch{}})}function g(e,t,r){m.has(e)?r(m.get(e)):t.load(e,t=>{m.set(e,t),r(t)},void 0,t=>{console.error("Audio load error",e,t)})}let b=(0,r.memo)(function({object:e}){let{debugMode:l}=(0,f.useDebug)(),u=(0,a.getProperty)(e,"fileName")??"",c=(0,a.getFloat)(e,"volume")??1,h=(0,a.getFloat)(e,"minDistance")??1,m=(0,a.getFloat)(e,"maxDistance")??1,y=(0,a.getFloat)(e,"minLoopGap")??0,v=(0,a.getFloat)(e,"maxLoopGap")??0,b=(0,a.getInt)(e,"is3D")??0,[S,R,T]=(0,a.getPosition)(e),{scene:x,camera:F}=(0,i.useThree)(),{audioLoader:w,audioListener:O}=d(),{audioEnabled:E}=(0,f.useSettings)(),M=(0,r.useRef)(null),I=(0,r.useRef)(null),P=(0,r.useRef)(null),C=(0,r.useRef)(!1),D=(0,r.useRef)(!1),_=(0,r.useRef)(new n.Vector3(S,R,T)),j=()=>{I.current&&clearTimeout(I.current),P.current&&clearTimeout(P.current)};(0,r.useEffect)(()=>{let e;if(w&&O){if(b){let t=new n.PositionalAudio(O);t.position.copy(_.current),t.setDistanceModel("inverse"),t.setRefDistance(h),t.setMaxDistance(m),t.setRolloffFactor(1),t.setVolume(c),e=t,x.add(e)}else(e=new n.Audio(O)).setVolume(c);return M.current=e,()=>{j();try{e.stop()}catch{}e.disconnect(),b&&x.remove(e),C.current=!1,D.current=!1}}},[w,O,b,h,m,c,x]);let k=e=>{if(y>0||v>0){let t=Math.max(0,y),r=Math.max(t,v),i=t===r?t:Math.random()*(r-t)+t;e.loop=!1;let s=()=>{!1===e.isPlaying?I.current=setTimeout(()=>{try{e.play(),k(e)}catch{}},i):P.current=setTimeout(s,100)};P.current=setTimeout(s,100)}else e.setLoop(!0)},U=e=>{if(C.current)try{e.isPlaying||(e.play(),k(e))}catch{}else g((0,o.audioToUrl)(u),w,t=>{if(!e.buffer){e.setBuffer(t),C.current=!0;try{e.play(),k(e)}catch{}}})};return(0,r.useEffect)(()=>{let e=M.current;e&&!b&&E&&u&&U(e)},[E,b,u,w,O]),(0,s.useFrame)(()=>{let e=M.current;if(!e||!b||!E||!u)return;let t=F.position.distanceTo(_.current),r=D.current,i=t<=m;if(i&&!r)D.current=!0,U(e);else if(!i&&r){D.current=!1,j();try{e.stop()}catch{}}}),(0,r.useEffect)(()=>{let e=M.current;if(e&&!E){j();try{e.stop()}catch{}}},[E]),l?(0,t.jsxs)("mesh",{position:_.current,children:[(0,t.jsx)("sphereGeometry",{args:[h,12,12]}),(0,t.jsx)("meshBasicMaterial",{color:"#00ff00",wireframe:!0,opacity:.05,transparent:!0,toneMapped:!1}),(0,t.jsx)(p.FloatingLabel,{color:"#00ff00",position:[0,h+1,0],children:u})]}):null});e.s(["AudioEmitter",0,b,"audioBufferCache",0,m,"getCachedAudioBuffer",()=>g,"playOneShotSound",()=>v,"resolveAudioProfile",()=>y],29055)},13876,79473,43595,58647,e=>{"use strict";var t=e.i(932),r=e.i(8155);let i=e=>(t,r,i)=>{let s=i.subscribe;return i.subscribe=(e,t,r)=>{let n=e;if(t){let s=(null==r?void 0:r.equalityFn)||Object.is,a=e(i.getState());n=r=>{let i=e(r);if(!s(a,i)){let e=a;t(a=i,e)}},(null==r?void 0:r.fireImmediately)&&t(a,a)}return s(n)},e(t,r,i)};e.s(["subscribeWithSelector",()=>i],79473);var s=e.i(66748);function n(e){let t=new Map;for(let r of e.state.datablocks.values()){if("tsshapeconstructor"!==r._class)continue;let e=r.baseshape;if("string"!=typeof e)continue;let i=e.toLowerCase(),s=i.replace(/\.dts$/i,"")+"_",n=new Map;for(let e=0;e<=127;e++){let t=r[`sequence${e}`];if("string"!=typeof t)continue;let i=t.indexOf(" ");if(-1===i)continue;let a=t.slice(0,i).toLowerCase(),o=t.slice(i+1).trim().toLowerCase();if(!o||!a.startsWith(s)||!a.endsWith(".dsq"))continue;let l=a.slice(s.length,-4);l&&n.set(o,l)}n.size>0&&t.set(i,n)}return t}function a(e,t,r){let i=new Map;for(let r of e){let e=t.clipAction(r);i.set(r.name.toLowerCase(),e)}if(r)for(let[e,t]of r){let r=i.get(t);r&&!i.has(e)&&i.set(e,r)}return i}function o(e){return e.toLowerCase()}function l(e){let t=o(e.trim());return t.startsWith("$")?t.slice(1):t}e.s(["buildSequenceAliasMap",()=>n,"getAliasedActions",()=>a],43595);let u={runtime:{runtime:null,sequenceAliases:new Map,objectVersionById:{},globalVersionByName:{},objectIdsByName:{},datablockIdsByName:{},lastRuntimeTick:0},playback:{recording:null,status:"stopped",timeMs:0,rate:1,durationMs:0,streamSnapshot:null}},c=(0,r.createStore)()(i(e=>({...u,setRuntime(t){let r=function(e){let t={},r={},i={},s={};for(let r of e.state.objectsById.values())t[r._id]=0,r._name&&(i[o(r._name)]=r._id,r._isDatablock&&(s[o(r._name)]=r._id));for(let t of e.state.globals.keys())r[l(t)]=0;return{objectVersionById:t,globalVersionByName:r,objectIdsByName:i,datablockIdsByName:s}}(t),i=n(t);e(e=>({...e,runtime:{runtime:t,sequenceAliases:i,objectVersionById:r.objectVersionById,globalVersionByName:r.globalVersionByName,objectIdsByName:r.objectIdsByName,datablockIdsByName:r.datablockIdsByName,lastRuntimeTick:0}}))},clearRuntime(){e(e=>({...e,runtime:{runtime:null,sequenceAliases:new Map,objectVersionById:{},globalVersionByName:{},objectIdsByName:{},datablockIdsByName:{},lastRuntimeTick:0}}))},applyRuntimeBatch(t,r){0!==t.length&&e(e=>{let i={...e.runtime.objectVersionById},s={...e.runtime.globalVersionByName},n={...e.runtime.objectIdsByName},a={...e.runtime.datablockIdsByName},u=e=>{null!=e&&(i[e]=(i[e]??0)+1)};for(let e of t){if("object.created"===e.type){let t=e.object;if(u(e.objectId),t._name){let r=o(t._name);n[r]=e.objectId,t._isDatablock&&(a[r]=e.objectId)}u(t._parent?._id);continue}if("object.deleted"===e.type){let t=e.object;if(delete i[e.objectId],t?._name){let e=o(t._name);delete n[e],t._isDatablock&&delete a[e]}u(t?._parent?._id);continue}if("field.changed"===e.type){u(e.objectId);continue}if("global.changed"===e.type){let t=l(e.name);s[t]=(s[t]??0)+1;continue}}let c=r?.tick??(e.runtime.lastRuntimeTick>0?e.runtime.lastRuntimeTick+1:1);return{...e,runtime:{...e.runtime,objectVersionById:i,globalVersionByName:s,objectIdsByName:n,datablockIdsByName:a,lastRuntimeTick:c}}})},setDemoRecording(t){let r=Math.max(0,(t?.duration??0)*1e3);e(e=>({...e,playback:{recording:t,status:"stopped",timeMs:0,rate:1,durationMs:r,streamSnapshot:null}}))},setPlaybackTime(t){e(e=>{var r,i,s;let n=(r=t,i=0,s=e.playback.durationMs,r<0?0:r>s?s:r);return{...e,playback:{...e.playback,timeMs:n}}})},setPlaybackStatus(t){e(e=>({...e,playback:{...e.playback,status:t}}))},setPlaybackRate(t){var r,i,s;let n=Number.isFinite(t)?(i=.01,s=16,(r=t)<.01?.01:r>16?16:r):1;e(e=>({...e,playback:{...e.playback,rate:n}}))},setPlaybackStreamSnapshot(t){e(e=>({...e,playback:{...e.playback,streamSnapshot:t}}))}})));function h(){return c}function d(e,t){return(0,s.useStoreWithEqualityFn)(c,e,t)}function f(e){let r,i,s,n=(0,t.c)(7),a=d(p);n[0]!==e?(r=t=>null==e?-1:t.runtime.objectVersionById[e]??-1,n[0]=e,n[1]=r):r=n[1];let o=d(r);if(null==e||!a||-1===o)return;n[2]!==e||n[3]!==a.state.objectsById?(i=a.state.objectsById.get(e),n[2]=e,n[3]=a.state.objectsById,n[4]=i):i=n[4];let l=i;return n[5]!==l?(s=l?{...l}:void 0,n[5]=l,n[6]=s):s=n[6],s}function p(e){return e.runtime.runtime}function m(e){let r,i,s,n,a,l=(0,t.c)(11),u=d(y);l[0]!==e?(r=e?o(e):"",l[0]=e,l[1]=r):r=l[1];let c=r;l[2]!==c?(i=e=>c?e.runtime.objectIdsByName[c]:void 0,l[2]=c,l[3]=i):i=l[3];let h=d(i);l[4]!==h?(s=e=>null==h?-1:e.runtime.objectVersionById[h]??-1,l[4]=h,l[5]=s):s=l[5];let f=d(s);if(!u||!c||null==h||-1===f)return;l[6]!==h||l[7]!==u.state.objectsById?(n=u.state.objectsById.get(h),l[6]=h,l[7]=u.state.objectsById,l[8]=n):n=l[8];let p=n;return l[9]!==p?(a=p?{...p}:void 0,l[9]=p,l[10]=a):a=l[10],a}function y(e){return e.runtime.runtime}function v(e){let r,i,s,n,a,l=(0,t.c)(11),u=d(g);l[0]!==e?(r=e?o(e):"",l[0]=e,l[1]=r):r=l[1];let c=r;l[2]!==c?(i=e=>c?e.runtime.datablockIdsByName[c]:void 0,l[2]=c,l[3]=i):i=l[3];let h=d(i);l[4]!==h?(s=e=>null==h?-1:e.runtime.objectVersionById[h]??-1,l[4]=h,l[5]=s):s=l[5];let f=d(s);if(!u||!c||null==h||-1===f)return;l[6]!==h||l[7]!==u.state.objectsById?(n=u.state.objectsById.get(h),l[6]=h,l[7]=u.state.objectsById,l[8]=n):n=l[8];let p=n;return l[9]!==p?(a=p?{...p}:void 0,l[9]=p,l[10]=a):a=l[10],a}function g(e){return e.runtime.runtime}function b(e,r){let i,s,n,a,o=(0,t.c)(13);o[0]!==r?(i=void 0===r?[]:r,o[0]=r,o[1]=i):i=o[1];let l=i,u=d(x);o[2]!==e?(s=t=>null==e?-1:t.runtime.objectVersionById[e]??-1,o[2]=e,o[3]=s):s=o[3];let c=d(s);if(null==e){let e;return o[4]!==l?(e=l.map(T),o[4]=l,o[5]=e):e=o[5],e}if(!u||-1===c){let e;return o[6]!==l?(e=l.map(R),o[6]=l,o[7]=e):e=o[7],e}let h=u.state.objectsById;if(o[8]!==e||o[9]!==u.state.objectsById){a=Symbol.for("react.early_return_sentinel");e:{let t=h.get(e);if(!t?._children){let e;o[12]===Symbol.for("react.memo_cache_sentinel")?(e=[],o[12]=e):e=o[12],a=e;break e}n=t._children.map(S)}o[8]=e,o[9]=u.state.objectsById,o[10]=n,o[11]=a}else n=o[10],a=o[11];return a!==Symbol.for("react.early_return_sentinel")?a:n}function S(e){return e._id}function R(e){return e._id}function T(e){return e._id}function x(e){return e.runtime.runtime}e.s(["engineStore",0,c,"useDatablockByName",()=>v,"useEngineSelector",()=>d,"useEngineStoreApi",()=>h,"useRuntimeChildIds",()=>b,"useRuntimeObjectById",()=>f,"useRuntimeObjectByName",()=>m],58647),e.s([],13876)},6112,e=>{"use strict";e.i(13876);var t=e.i(58647);function r(e){return(0,t.useDatablockByName)(e)}e.s(["useDatablock",()=>r])},61921,e=>{e.v(e=>Promise.resolve().then(()=>e(29055)))},25147,e=>{e.v(t=>Promise.all(["static/chunks/8c435435e00c1d09.js"].map(t=>e.l(t))).then(()=>t(63724)))},18599,e=>{e.v(t=>Promise.all(["static/chunks/13f8b467e8aa89cb.js"].map(t=>e.l(t))).then(()=>t(42585)))},84968,e=>{e.v(t=>Promise.all(["static/chunks/6e9a6efec350bf8d.js"].map(t=>e.l(t))).then(()=>t(90208)))},59197,e=>{e.v(t=>Promise.all(["static/chunks/0be79f7f5e0597a7.css","static/chunks/1cf33c843f96e1c9.js"].map(t=>e.l(t))).then(()=>t(94247)))}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/fe8d2153bfb8c263.js b/docs/_next/static/chunks/fe8d2153bfb8c263.js new file mode 100644 index 00000000..ce802b29 --- /dev/null +++ b/docs/_next/static/chunks/fe8d2153bfb8c263.js @@ -0,0 +1,8 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,75056,e=>{"use strict";var t=e.i(40859),r=e.i(71645),n=e.i(8560),i=e.i(90072);e.s(["ACESFilmicToneMapping",()=>i.ACESFilmicToneMapping,"AddEquation",()=>i.AddEquation,"AddOperation",()=>i.AddOperation,"AdditiveAnimationBlendMode",()=>i.AdditiveAnimationBlendMode,"AdditiveBlending",()=>i.AdditiveBlending,"AgXToneMapping",()=>i.AgXToneMapping,"AlphaFormat",()=>i.AlphaFormat,"AlwaysCompare",()=>i.AlwaysCompare,"AlwaysDepth",()=>i.AlwaysDepth,"AlwaysStencilFunc",()=>i.AlwaysStencilFunc,"AmbientLight",()=>i.AmbientLight,"AnimationAction",()=>i.AnimationAction,"AnimationClip",()=>i.AnimationClip,"AnimationLoader",()=>i.AnimationLoader,"AnimationMixer",()=>i.AnimationMixer,"AnimationObjectGroup",()=>i.AnimationObjectGroup,"AnimationUtils",()=>i.AnimationUtils,"ArcCurve",()=>i.ArcCurve,"ArrayCamera",()=>i.ArrayCamera,"ArrowHelper",()=>i.ArrowHelper,"AttachedBindMode",()=>i.AttachedBindMode,"Audio",()=>i.Audio,"AudioAnalyser",()=>i.AudioAnalyser,"AudioContext",()=>i.AudioContext,"AudioListener",()=>i.AudioListener,"AudioLoader",()=>i.AudioLoader,"AxesHelper",()=>i.AxesHelper,"BackSide",()=>i.BackSide,"BasicDepthPacking",()=>i.BasicDepthPacking,"BasicShadowMap",()=>i.BasicShadowMap,"BatchedMesh",()=>i.BatchedMesh,"Bone",()=>i.Bone,"BooleanKeyframeTrack",()=>i.BooleanKeyframeTrack,"Box2",()=>i.Box2,"Box3",()=>i.Box3,"Box3Helper",()=>i.Box3Helper,"BoxGeometry",()=>i.BoxGeometry,"BoxHelper",()=>i.BoxHelper,"BufferAttribute",()=>i.BufferAttribute,"BufferGeometry",()=>i.BufferGeometry,"BufferGeometryLoader",()=>i.BufferGeometryLoader,"ByteType",()=>i.ByteType,"Cache",()=>i.Cache,"Camera",()=>i.Camera,"CameraHelper",()=>i.CameraHelper,"CanvasTexture",()=>i.CanvasTexture,"CapsuleGeometry",()=>i.CapsuleGeometry,"CatmullRomCurve3",()=>i.CatmullRomCurve3,"CineonToneMapping",()=>i.CineonToneMapping,"CircleGeometry",()=>i.CircleGeometry,"ClampToEdgeWrapping",()=>i.ClampToEdgeWrapping,"Clock",()=>i.Clock,"Color",()=>i.Color,"ColorKeyframeTrack",()=>i.ColorKeyframeTrack,"ColorManagement",()=>i.ColorManagement,"CompressedArrayTexture",()=>i.CompressedArrayTexture,"CompressedCubeTexture",()=>i.CompressedCubeTexture,"CompressedTexture",()=>i.CompressedTexture,"CompressedTextureLoader",()=>i.CompressedTextureLoader,"ConeGeometry",()=>i.ConeGeometry,"ConstantAlphaFactor",()=>i.ConstantAlphaFactor,"ConstantColorFactor",()=>i.ConstantColorFactor,"Controls",()=>i.Controls,"CubeCamera",()=>i.CubeCamera,"CubeDepthTexture",()=>i.CubeDepthTexture,"CubeReflectionMapping",()=>i.CubeReflectionMapping,"CubeRefractionMapping",()=>i.CubeRefractionMapping,"CubeTexture",()=>i.CubeTexture,"CubeTextureLoader",()=>i.CubeTextureLoader,"CubeUVReflectionMapping",()=>i.CubeUVReflectionMapping,"CubicBezierCurve",()=>i.CubicBezierCurve,"CubicBezierCurve3",()=>i.CubicBezierCurve3,"CubicInterpolant",()=>i.CubicInterpolant,"CullFaceBack",()=>i.CullFaceBack,"CullFaceFront",()=>i.CullFaceFront,"CullFaceFrontBack",()=>i.CullFaceFrontBack,"CullFaceNone",()=>i.CullFaceNone,"Curve",()=>i.Curve,"CurvePath",()=>i.CurvePath,"CustomBlending",()=>i.CustomBlending,"CustomToneMapping",()=>i.CustomToneMapping,"CylinderGeometry",()=>i.CylinderGeometry,"Cylindrical",()=>i.Cylindrical,"Data3DTexture",()=>i.Data3DTexture,"DataArrayTexture",()=>i.DataArrayTexture,"DataTexture",()=>i.DataTexture,"DataTextureLoader",()=>i.DataTextureLoader,"DataUtils",()=>i.DataUtils,"DecrementStencilOp",()=>i.DecrementStencilOp,"DecrementWrapStencilOp",()=>i.DecrementWrapStencilOp,"DefaultLoadingManager",()=>i.DefaultLoadingManager,"DepthFormat",()=>i.DepthFormat,"DepthStencilFormat",()=>i.DepthStencilFormat,"DepthTexture",()=>i.DepthTexture,"DetachedBindMode",()=>i.DetachedBindMode,"DirectionalLight",()=>i.DirectionalLight,"DirectionalLightHelper",()=>i.DirectionalLightHelper,"DiscreteInterpolant",()=>i.DiscreteInterpolant,"DodecahedronGeometry",()=>i.DodecahedronGeometry,"DoubleSide",()=>i.DoubleSide,"DstAlphaFactor",()=>i.DstAlphaFactor,"DstColorFactor",()=>i.DstColorFactor,"DynamicCopyUsage",()=>i.DynamicCopyUsage,"DynamicDrawUsage",()=>i.DynamicDrawUsage,"DynamicReadUsage",()=>i.DynamicReadUsage,"EdgesGeometry",()=>i.EdgesGeometry,"EllipseCurve",()=>i.EllipseCurve,"EqualCompare",()=>i.EqualCompare,"EqualDepth",()=>i.EqualDepth,"EqualStencilFunc",()=>i.EqualStencilFunc,"EquirectangularReflectionMapping",()=>i.EquirectangularReflectionMapping,"EquirectangularRefractionMapping",()=>i.EquirectangularRefractionMapping,"Euler",()=>i.Euler,"EventDispatcher",()=>i.EventDispatcher,"ExternalTexture",()=>i.ExternalTexture,"ExtrudeGeometry",()=>i.ExtrudeGeometry,"FileLoader",()=>i.FileLoader,"Float16BufferAttribute",()=>i.Float16BufferAttribute,"Float32BufferAttribute",()=>i.Float32BufferAttribute,"FloatType",()=>i.FloatType,"Fog",()=>i.Fog,"FogExp2",()=>i.FogExp2,"FramebufferTexture",()=>i.FramebufferTexture,"FrontSide",()=>i.FrontSide,"Frustum",()=>i.Frustum,"FrustumArray",()=>i.FrustumArray,"GLBufferAttribute",()=>i.GLBufferAttribute,"GLSL1",()=>i.GLSL1,"GLSL3",()=>i.GLSL3,"GreaterCompare",()=>i.GreaterCompare,"GreaterDepth",()=>i.GreaterDepth,"GreaterEqualCompare",()=>i.GreaterEqualCompare,"GreaterEqualDepth",()=>i.GreaterEqualDepth,"GreaterEqualStencilFunc",()=>i.GreaterEqualStencilFunc,"GreaterStencilFunc",()=>i.GreaterStencilFunc,"GridHelper",()=>i.GridHelper,"Group",()=>i.Group,"HalfFloatType",()=>i.HalfFloatType,"HemisphereLight",()=>i.HemisphereLight,"HemisphereLightHelper",()=>i.HemisphereLightHelper,"IcosahedronGeometry",()=>i.IcosahedronGeometry,"ImageBitmapLoader",()=>i.ImageBitmapLoader,"ImageLoader",()=>i.ImageLoader,"ImageUtils",()=>i.ImageUtils,"IncrementStencilOp",()=>i.IncrementStencilOp,"IncrementWrapStencilOp",()=>i.IncrementWrapStencilOp,"InstancedBufferAttribute",()=>i.InstancedBufferAttribute,"InstancedBufferGeometry",()=>i.InstancedBufferGeometry,"InstancedInterleavedBuffer",()=>i.InstancedInterleavedBuffer,"InstancedMesh",()=>i.InstancedMesh,"Int16BufferAttribute",()=>i.Int16BufferAttribute,"Int32BufferAttribute",()=>i.Int32BufferAttribute,"Int8BufferAttribute",()=>i.Int8BufferAttribute,"IntType",()=>i.IntType,"InterleavedBuffer",()=>i.InterleavedBuffer,"InterleavedBufferAttribute",()=>i.InterleavedBufferAttribute,"Interpolant",()=>i.Interpolant,"InterpolateDiscrete",()=>i.InterpolateDiscrete,"InterpolateLinear",()=>i.InterpolateLinear,"InterpolateSmooth",()=>i.InterpolateSmooth,"InterpolationSamplingMode",()=>i.InterpolationSamplingMode,"InterpolationSamplingType",()=>i.InterpolationSamplingType,"InvertStencilOp",()=>i.InvertStencilOp,"KeepStencilOp",()=>i.KeepStencilOp,"KeyframeTrack",()=>i.KeyframeTrack,"LOD",()=>i.LOD,"LatheGeometry",()=>i.LatheGeometry,"Layers",()=>i.Layers,"LessCompare",()=>i.LessCompare,"LessDepth",()=>i.LessDepth,"LessEqualCompare",()=>i.LessEqualCompare,"LessEqualDepth",()=>i.LessEqualDepth,"LessEqualStencilFunc",()=>i.LessEqualStencilFunc,"LessStencilFunc",()=>i.LessStencilFunc,"Light",()=>i.Light,"LightProbe",()=>i.LightProbe,"Line",()=>i.Line,"Line3",()=>i.Line3,"LineBasicMaterial",()=>i.LineBasicMaterial,"LineCurve",()=>i.LineCurve,"LineCurve3",()=>i.LineCurve3,"LineDashedMaterial",()=>i.LineDashedMaterial,"LineLoop",()=>i.LineLoop,"LineSegments",()=>i.LineSegments,"LinearFilter",()=>i.LinearFilter,"LinearInterpolant",()=>i.LinearInterpolant,"LinearMipMapLinearFilter",()=>i.LinearMipMapLinearFilter,"LinearMipMapNearestFilter",()=>i.LinearMipMapNearestFilter,"LinearMipmapLinearFilter",()=>i.LinearMipmapLinearFilter,"LinearMipmapNearestFilter",()=>i.LinearMipmapNearestFilter,"LinearSRGBColorSpace",()=>i.LinearSRGBColorSpace,"LinearToneMapping",()=>i.LinearToneMapping,"LinearTransfer",()=>i.LinearTransfer,"Loader",()=>i.Loader,"LoaderUtils",()=>i.LoaderUtils,"LoadingManager",()=>i.LoadingManager,"LoopOnce",()=>i.LoopOnce,"LoopPingPong",()=>i.LoopPingPong,"LoopRepeat",()=>i.LoopRepeat,"MOUSE",()=>i.MOUSE,"Material",()=>i.Material,"MaterialLoader",()=>i.MaterialLoader,"MathUtils",()=>i.MathUtils,"Matrix2",()=>i.Matrix2,"Matrix3",()=>i.Matrix3,"Matrix4",()=>i.Matrix4,"MaxEquation",()=>i.MaxEquation,"Mesh",()=>i.Mesh,"MeshBasicMaterial",()=>i.MeshBasicMaterial,"MeshDepthMaterial",()=>i.MeshDepthMaterial,"MeshDistanceMaterial",()=>i.MeshDistanceMaterial,"MeshLambertMaterial",()=>i.MeshLambertMaterial,"MeshMatcapMaterial",()=>i.MeshMatcapMaterial,"MeshNormalMaterial",()=>i.MeshNormalMaterial,"MeshPhongMaterial",()=>i.MeshPhongMaterial,"MeshPhysicalMaterial",()=>i.MeshPhysicalMaterial,"MeshStandardMaterial",()=>i.MeshStandardMaterial,"MeshToonMaterial",()=>i.MeshToonMaterial,"MinEquation",()=>i.MinEquation,"MirroredRepeatWrapping",()=>i.MirroredRepeatWrapping,"MixOperation",()=>i.MixOperation,"MultiplyBlending",()=>i.MultiplyBlending,"MultiplyOperation",()=>i.MultiplyOperation,"NearestFilter",()=>i.NearestFilter,"NearestMipMapLinearFilter",()=>i.NearestMipMapLinearFilter,"NearestMipMapNearestFilter",()=>i.NearestMipMapNearestFilter,"NearestMipmapLinearFilter",()=>i.NearestMipmapLinearFilter,"NearestMipmapNearestFilter",()=>i.NearestMipmapNearestFilter,"NeutralToneMapping",()=>i.NeutralToneMapping,"NeverCompare",()=>i.NeverCompare,"NeverDepth",()=>i.NeverDepth,"NeverStencilFunc",()=>i.NeverStencilFunc,"NoBlending",()=>i.NoBlending,"NoColorSpace",()=>i.NoColorSpace,"NoNormalPacking",()=>i.NoNormalPacking,"NoToneMapping",()=>i.NoToneMapping,"NormalAnimationBlendMode",()=>i.NormalAnimationBlendMode,"NormalBlending",()=>i.NormalBlending,"NormalGAPacking",()=>i.NormalGAPacking,"NormalRGPacking",()=>i.NormalRGPacking,"NotEqualCompare",()=>i.NotEqualCompare,"NotEqualDepth",()=>i.NotEqualDepth,"NotEqualStencilFunc",()=>i.NotEqualStencilFunc,"NumberKeyframeTrack",()=>i.NumberKeyframeTrack,"Object3D",()=>i.Object3D,"ObjectLoader",()=>i.ObjectLoader,"ObjectSpaceNormalMap",()=>i.ObjectSpaceNormalMap,"OctahedronGeometry",()=>i.OctahedronGeometry,"OneFactor",()=>i.OneFactor,"OneMinusConstantAlphaFactor",()=>i.OneMinusConstantAlphaFactor,"OneMinusConstantColorFactor",()=>i.OneMinusConstantColorFactor,"OneMinusDstAlphaFactor",()=>i.OneMinusDstAlphaFactor,"OneMinusDstColorFactor",()=>i.OneMinusDstColorFactor,"OneMinusSrcAlphaFactor",()=>i.OneMinusSrcAlphaFactor,"OneMinusSrcColorFactor",()=>i.OneMinusSrcColorFactor,"OrthographicCamera",()=>i.OrthographicCamera,"PCFShadowMap",()=>i.PCFShadowMap,"PCFSoftShadowMap",()=>i.PCFSoftShadowMap,"PMREMGenerator",()=>n.PMREMGenerator,"Path",()=>i.Path,"PerspectiveCamera",()=>i.PerspectiveCamera,"Plane",()=>i.Plane,"PlaneGeometry",()=>i.PlaneGeometry,"PlaneHelper",()=>i.PlaneHelper,"PointLight",()=>i.PointLight,"PointLightHelper",()=>i.PointLightHelper,"Points",()=>i.Points,"PointsMaterial",()=>i.PointsMaterial,"PolarGridHelper",()=>i.PolarGridHelper,"PolyhedronGeometry",()=>i.PolyhedronGeometry,"PositionalAudio",()=>i.PositionalAudio,"PropertyBinding",()=>i.PropertyBinding,"PropertyMixer",()=>i.PropertyMixer,"QuadraticBezierCurve",()=>i.QuadraticBezierCurve,"QuadraticBezierCurve3",()=>i.QuadraticBezierCurve3,"Quaternion",()=>i.Quaternion,"QuaternionKeyframeTrack",()=>i.QuaternionKeyframeTrack,"QuaternionLinearInterpolant",()=>i.QuaternionLinearInterpolant,"R11_EAC_Format",()=>i.R11_EAC_Format,"RED_GREEN_RGTC2_Format",()=>i.RED_GREEN_RGTC2_Format,"RED_RGTC1_Format",()=>i.RED_RGTC1_Format,"REVISION",()=>i.REVISION,"RG11_EAC_Format",()=>i.RG11_EAC_Format,"RGBADepthPacking",()=>i.RGBADepthPacking,"RGBAFormat",()=>i.RGBAFormat,"RGBAIntegerFormat",()=>i.RGBAIntegerFormat,"RGBA_ASTC_10x10_Format",()=>i.RGBA_ASTC_10x10_Format,"RGBA_ASTC_10x5_Format",()=>i.RGBA_ASTC_10x5_Format,"RGBA_ASTC_10x6_Format",()=>i.RGBA_ASTC_10x6_Format,"RGBA_ASTC_10x8_Format",()=>i.RGBA_ASTC_10x8_Format,"RGBA_ASTC_12x10_Format",()=>i.RGBA_ASTC_12x10_Format,"RGBA_ASTC_12x12_Format",()=>i.RGBA_ASTC_12x12_Format,"RGBA_ASTC_4x4_Format",()=>i.RGBA_ASTC_4x4_Format,"RGBA_ASTC_5x4_Format",()=>i.RGBA_ASTC_5x4_Format,"RGBA_ASTC_5x5_Format",()=>i.RGBA_ASTC_5x5_Format,"RGBA_ASTC_6x5_Format",()=>i.RGBA_ASTC_6x5_Format,"RGBA_ASTC_6x6_Format",()=>i.RGBA_ASTC_6x6_Format,"RGBA_ASTC_8x5_Format",()=>i.RGBA_ASTC_8x5_Format,"RGBA_ASTC_8x6_Format",()=>i.RGBA_ASTC_8x6_Format,"RGBA_ASTC_8x8_Format",()=>i.RGBA_ASTC_8x8_Format,"RGBA_BPTC_Format",()=>i.RGBA_BPTC_Format,"RGBA_ETC2_EAC_Format",()=>i.RGBA_ETC2_EAC_Format,"RGBA_PVRTC_2BPPV1_Format",()=>i.RGBA_PVRTC_2BPPV1_Format,"RGBA_PVRTC_4BPPV1_Format",()=>i.RGBA_PVRTC_4BPPV1_Format,"RGBA_S3TC_DXT1_Format",()=>i.RGBA_S3TC_DXT1_Format,"RGBA_S3TC_DXT3_Format",()=>i.RGBA_S3TC_DXT3_Format,"RGBA_S3TC_DXT5_Format",()=>i.RGBA_S3TC_DXT5_Format,"RGBDepthPacking",()=>i.RGBDepthPacking,"RGBFormat",()=>i.RGBFormat,"RGBIntegerFormat",()=>i.RGBIntegerFormat,"RGB_BPTC_SIGNED_Format",()=>i.RGB_BPTC_SIGNED_Format,"RGB_BPTC_UNSIGNED_Format",()=>i.RGB_BPTC_UNSIGNED_Format,"RGB_ETC1_Format",()=>i.RGB_ETC1_Format,"RGB_ETC2_Format",()=>i.RGB_ETC2_Format,"RGB_PVRTC_2BPPV1_Format",()=>i.RGB_PVRTC_2BPPV1_Format,"RGB_PVRTC_4BPPV1_Format",()=>i.RGB_PVRTC_4BPPV1_Format,"RGB_S3TC_DXT1_Format",()=>i.RGB_S3TC_DXT1_Format,"RGDepthPacking",()=>i.RGDepthPacking,"RGFormat",()=>i.RGFormat,"RGIntegerFormat",()=>i.RGIntegerFormat,"RawShaderMaterial",()=>i.RawShaderMaterial,"Ray",()=>i.Ray,"Raycaster",()=>i.Raycaster,"RectAreaLight",()=>i.RectAreaLight,"RedFormat",()=>i.RedFormat,"RedIntegerFormat",()=>i.RedIntegerFormat,"ReinhardToneMapping",()=>i.ReinhardToneMapping,"RenderTarget",()=>i.RenderTarget,"RenderTarget3D",()=>i.RenderTarget3D,"RepeatWrapping",()=>i.RepeatWrapping,"ReplaceStencilOp",()=>i.ReplaceStencilOp,"ReverseSubtractEquation",()=>i.ReverseSubtractEquation,"RingGeometry",()=>i.RingGeometry,"SIGNED_R11_EAC_Format",()=>i.SIGNED_R11_EAC_Format,"SIGNED_RED_GREEN_RGTC2_Format",()=>i.SIGNED_RED_GREEN_RGTC2_Format,"SIGNED_RED_RGTC1_Format",()=>i.SIGNED_RED_RGTC1_Format,"SIGNED_RG11_EAC_Format",()=>i.SIGNED_RG11_EAC_Format,"SRGBColorSpace",()=>i.SRGBColorSpace,"SRGBTransfer",()=>i.SRGBTransfer,"Scene",()=>i.Scene,"ShaderChunk",()=>n.ShaderChunk,"ShaderLib",()=>n.ShaderLib,"ShaderMaterial",()=>i.ShaderMaterial,"ShadowMaterial",()=>i.ShadowMaterial,"Shape",()=>i.Shape,"ShapeGeometry",()=>i.ShapeGeometry,"ShapePath",()=>i.ShapePath,"ShapeUtils",()=>i.ShapeUtils,"ShortType",()=>i.ShortType,"Skeleton",()=>i.Skeleton,"SkeletonHelper",()=>i.SkeletonHelper,"SkinnedMesh",()=>i.SkinnedMesh,"Source",()=>i.Source,"Sphere",()=>i.Sphere,"SphereGeometry",()=>i.SphereGeometry,"Spherical",()=>i.Spherical,"SphericalHarmonics3",()=>i.SphericalHarmonics3,"SplineCurve",()=>i.SplineCurve,"SpotLight",()=>i.SpotLight,"SpotLightHelper",()=>i.SpotLightHelper,"Sprite",()=>i.Sprite,"SpriteMaterial",()=>i.SpriteMaterial,"SrcAlphaFactor",()=>i.SrcAlphaFactor,"SrcAlphaSaturateFactor",()=>i.SrcAlphaSaturateFactor,"SrcColorFactor",()=>i.SrcColorFactor,"StaticCopyUsage",()=>i.StaticCopyUsage,"StaticDrawUsage",()=>i.StaticDrawUsage,"StaticReadUsage",()=>i.StaticReadUsage,"StereoCamera",()=>i.StereoCamera,"StreamCopyUsage",()=>i.StreamCopyUsage,"StreamDrawUsage",()=>i.StreamDrawUsage,"StreamReadUsage",()=>i.StreamReadUsage,"StringKeyframeTrack",()=>i.StringKeyframeTrack,"SubtractEquation",()=>i.SubtractEquation,"SubtractiveBlending",()=>i.SubtractiveBlending,"TOUCH",()=>i.TOUCH,"TangentSpaceNormalMap",()=>i.TangentSpaceNormalMap,"TetrahedronGeometry",()=>i.TetrahedronGeometry,"Texture",()=>i.Texture,"TextureLoader",()=>i.TextureLoader,"TextureUtils",()=>i.TextureUtils,"Timer",()=>i.Timer,"TimestampQuery",()=>i.TimestampQuery,"TorusGeometry",()=>i.TorusGeometry,"TorusKnotGeometry",()=>i.TorusKnotGeometry,"Triangle",()=>i.Triangle,"TriangleFanDrawMode",()=>i.TriangleFanDrawMode,"TriangleStripDrawMode",()=>i.TriangleStripDrawMode,"TrianglesDrawMode",()=>i.TrianglesDrawMode,"TubeGeometry",()=>i.TubeGeometry,"UVMapping",()=>i.UVMapping,"Uint16BufferAttribute",()=>i.Uint16BufferAttribute,"Uint32BufferAttribute",()=>i.Uint32BufferAttribute,"Uint8BufferAttribute",()=>i.Uint8BufferAttribute,"Uint8ClampedBufferAttribute",()=>i.Uint8ClampedBufferAttribute,"Uniform",()=>i.Uniform,"UniformsGroup",()=>i.UniformsGroup,"UniformsLib",()=>n.UniformsLib,"UniformsUtils",()=>i.UniformsUtils,"UnsignedByteType",()=>i.UnsignedByteType,"UnsignedInt101111Type",()=>i.UnsignedInt101111Type,"UnsignedInt248Type",()=>i.UnsignedInt248Type,"UnsignedInt5999Type",()=>i.UnsignedInt5999Type,"UnsignedIntType",()=>i.UnsignedIntType,"UnsignedShort4444Type",()=>i.UnsignedShort4444Type,"UnsignedShort5551Type",()=>i.UnsignedShort5551Type,"UnsignedShortType",()=>i.UnsignedShortType,"VSMShadowMap",()=>i.VSMShadowMap,"Vector2",()=>i.Vector2,"Vector3",()=>i.Vector3,"Vector4",()=>i.Vector4,"VectorKeyframeTrack",()=>i.VectorKeyframeTrack,"VideoFrameTexture",()=>i.VideoFrameTexture,"VideoTexture",()=>i.VideoTexture,"WebGL3DRenderTarget",()=>i.WebGL3DRenderTarget,"WebGLArrayRenderTarget",()=>i.WebGLArrayRenderTarget,"WebGLCoordinateSystem",()=>i.WebGLCoordinateSystem,"WebGLCubeRenderTarget",()=>i.WebGLCubeRenderTarget,"WebGLRenderTarget",()=>i.WebGLRenderTarget,"WebGLRenderer",()=>n.WebGLRenderer,"WebGLUtils",()=>n.WebGLUtils,"WebGPUCoordinateSystem",()=>i.WebGPUCoordinateSystem,"WebXRController",()=>i.WebXRController,"WireframeGeometry",()=>i.WireframeGeometry,"WrapAroundEnding",()=>i.WrapAroundEnding,"ZeroCurvatureEnding",()=>i.ZeroCurvatureEnding,"ZeroFactor",()=>i.ZeroFactor,"ZeroSlopeEnding",()=>i.ZeroSlopeEnding,"ZeroStencilOp",()=>i.ZeroStencilOp,"createCanvasElement",()=>i.createCanvasElement,"error",()=>i.error,"getConsoleFunction",()=>i.getConsoleFunction,"log",()=>i.log,"setConsoleFunction",()=>i.setConsoleFunction,"warn",()=>i.warn,"warnOnce",()=>i.warnOnce],32009);var o=e.i(32009);function a(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}let s=["x","y","top","bottom","left","right","width","height"];var l=e.i(46791),u=e.i(43476);function c({ref:e,children:n,fallback:i,resize:l,style:c,gl:d,events:f=t.f,eventSource:A,eventPrefix:h,shadows:m,linear:p,flat:B,legacy:C,orthographic:g,frameloop:v,dpr:y,performance:b,raycaster:E,camera:M,scene:F,onPointerMissed:S,onCreated:R,...I}){r.useMemo(()=>(0,t.e)(o),[]);let T=(0,t.u)(),[x,G]=function({debounce:e,scroll:t,polyfill:n,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){var o,l,u;let c=n||("u"(p.current=!0,()=>void(p.current=!1)));let[B,C,g]=(0,r.useMemo)(()=>{let e=()=>{let e,t;if(!A.current.element)return;let{left:r,top:n,width:o,height:a,bottom:l,right:u,x:c,y:d}=A.current.element.getBoundingClientRect(),h={left:r,top:n,width:o,height:a,bottom:l,right:u,x:c,y:d};A.current.element instanceof HTMLElement&&i&&(h.height=A.current.element.offsetHeight,h.width=A.current.element.offsetWidth),Object.freeze(h),p.current&&(e=A.current.lastBounds,t=h,!s.every(r=>e[r]===t[r]))&&f(A.current.lastBounds=h)};return[e,m?a(e,m):e,h?a(e,h):e]},[f,i,h,m]);function v(){A.current.scrollContainers&&(A.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),A.current.scrollContainers=null),A.current.resizeObserver&&(A.current.resizeObserver.disconnect(),A.current.resizeObserver=null),A.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",A.current.orientationHandler))}function y(){A.current.element&&(A.current.resizeObserver=new c(g),A.current.resizeObserver.observe(A.current.element),t&&A.current.scrollContainers&&A.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),A.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",A.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",A.current.orientationHandler))}return o=g,l=!!t,(0,r.useEffect)(()=>{if(l)return window.addEventListener("scroll",o,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",o,!0)},[o,l]),u=C,(0,r.useEffect)(()=>(window.addEventListener("resize",u),()=>void window.removeEventListener("resize",u)),[u]),(0,r.useEffect)(()=>{v(),y()},[t,g,C]),(0,r.useEffect)(()=>v,[]),[e=>{e&&e!==A.current.element&&(v(),A.current.element=e,A.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:i,overflowY:o}=window.getComputedStyle(t);return[n,i,o].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),y())},d,B]}({scroll:!0,debounce:{scroll:50,resize:0},...l}),D=r.useRef(null),w=r.useRef(null);r.useImperativeHandle(e,()=>D.current);let L=(0,t.a)(S),[_,O]=r.useState(!1),[H,P]=r.useState(!1);if(_)throw _;if(H)throw H;let J=r.useRef(null);(0,t.b)(()=>{let e=D.current;G.width>0&&G.height>0&&e&&(J.current||(J.current=(0,t.c)(e)),async function(){await J.current.configure({gl:d,scene:F,events:f,shadows:m,linear:p,flat:B,legacy:C,orthographic:g,frameloop:v,dpr:y,performance:b,raycaster:E,camera:M,size:G,onPointerMissed:(...e)=>null==L.current?void 0:L.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(A?(0,t.i)(A)?A.current:A:w.current),h&&e.setEvents({compute:(e,t)=>{let r=e[h+"X"],n=e[h+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==R||R(e)}}),J.current.render((0,u.jsx)(T,{children:(0,u.jsx)(t.E,{set:P,children:(0,u.jsx)(r.Suspense,{fallback:(0,u.jsx)(t.B,{set:O}),children:null!=n?n:null})})}))}())}),r.useEffect(()=>{let e=D.current;if(e)return()=>(0,t.d)(e)},[]);let U=A?"none":"auto";return(0,u.jsx)("div",{ref:w,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:U,...c},...I,children:(0,u.jsx)("div",{ref:x,style:{width:"100%",height:"100%"},children:(0,u.jsx)("canvas",{ref:D,style:{display:"block"},children:i})})})}function d(e){return(0,u.jsx)(l.FiberProvider,{children:(0,u.jsx)(c,{...e})})}e.i(89499),e.s(["Canvas",()=>d],75056)},17751,85413,e=>{"use strict";var t=e.i(19273),r=e.i(86491),n=e.i(40143),i=e.i(15823),o=class extends i.Subscribable{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,n,i){let o=n.queryKey,a=n.queryHash??(0,t.hashQueryKeyByOptions)(o,n),s=this.get(a);return s||(s=new r.Query({client:e,queryKey:o,queryHash:a,options:e.defaultQueryOptions(n),state:i,defaultOptions:e.getQueryDefaults(o)}),this.add(s)),s}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let r={exact:!0,...e};return this.getAll().find(e=>(0,t.matchQuery)(r,e))}findAll(e={}){let r=this.getAll();return Object.keys(e).length>0?r.filter(r=>(0,t.matchQuery)(e,r)):r}notify(e){n.notifyManager.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){n.notifyManager.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},a=e.i(88587),s=e.i(36553),l=class extends a.Removable{#t;#r;#n;#i;constructor(e){super(),this.#t=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#r=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#r.includes(e)||(this.#r.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#r=this.#r.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#r.length||("pending"===this.state.status?this.scheduleGc():this.#n.remove(this))}continue(){return this.#i?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#o({type:"continue"})},r={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#i=(0,s.createRetryer)({fn:()=>this.options.mutationFn?this.options.mutationFn(e,r):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#o({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#o({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let n="pending"===this.state.status,i=!this.#i.canStart();try{if(n)t();else{this.#o({type:"pending",variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,r);let t=await this.options.onMutate?.(e,r);t!==this.state.context&&this.#o({type:"pending",context:t,variables:e,isPaused:i})}let o=await this.#i.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,r),await this.options.onSuccess?.(o,e,this.state.context,r),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(o,null,e,this.state.context,r),this.#o({type:"success",data:o}),o}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,r)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,r)}catch(e){Promise.reject(e)}throw this.#o({type:"error",error:t}),t}finally{this.#n.runNext(this)}}#o(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),n.notifyManager.batch(()=>{this.#r.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:"updated",action:e})})}},u=i,c=class extends u.Subscribable{constructor(e={}){super(),this.config=e,this.#a=new Set,this.#s=new Map,this.#l=0}#a;#s;#l;build(e,t,r){let n=new l({client:e,mutationCache:this,mutationId:++this.#l,options:e.defaultMutationOptions(t),state:r});return this.add(n),n}add(e){this.#a.add(e);let t=d(e);if("string"==typeof t){let r=this.#s.get(t);r?r.push(e):this.#s.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#a.delete(e)){let t=d(e);if("string"==typeof t){let r=this.#s.get(t);if(r)if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&this.#s.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=d(e);if("string"!=typeof t)return!0;{let r=this.#s.get(t),n=r?.find(e=>"pending"===e.state.status);return!n||n===e}}runNext(e){let t=d(e);if("string"!=typeof t)return Promise.resolve();{let r=this.#s.get(t)?.find(t=>t!==e&&t.state.isPaused);return r?.continue()??Promise.resolve()}}clear(){n.notifyManager.batch(()=>{this.#a.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#a.clear(),this.#s.clear()})}getAll(){return Array.from(this.#a)}find(e){let r={exact:!0,...e};return this.getAll().find(e=>(0,t.matchMutation)(r,e))}findAll(e={}){return this.getAll().filter(r=>(0,t.matchMutation)(e,r))}notify(e){n.notifyManager.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return n.notifyManager.batch(()=>Promise.all(e.map(e=>e.continue().catch(t.noop))))}};function d(e){return e.options.scope?.id}var f=e.i(75555),A=e.i(14448);function h(e){return{onFetch:(r,n)=>{let i=r.options,o=r.fetchOptions?.meta?.fetchMore?.direction,a=r.state.data?.pages||[],s=r.state.data?.pageParams||[],l={pages:[],pageParams:[]},u=0,c=async()=>{let n=!1,c=(0,t.ensureQueryFn)(r.options,r.fetchOptions),d=async(e,i,o)=>{let a;if(n)return Promise.reject();if(null==i&&e.pages.length)return Promise.resolve(e);let s=(a={client:r.client,queryKey:r.queryKey,pageParam:i,direction:o?"backward":"forward",meta:r.options.meta},(0,t.addConsumeAwareSignal)(a,()=>r.signal,()=>n=!0),a),l=await c(s),{maxPages:u}=r.options,d=o?t.addToStart:t.addToEnd;return{pages:d(e.pages,l,u),pageParams:d(e.pageParams,i,u)}};if(o&&a.length){let e="backward"===o,t={pages:a,pageParams:s},r=(e?function(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}:m)(i,t);l=await d(t,r,e)}else{let t=e??a.length;do{let e=0===u?s[0]??i.initialPageParam:m(i,l);if(u>0&&null==e)break;l=await d(l,e),u++}while(ur.options.persister?.(c,{client:r.client,queryKey:r.queryKey,meta:r.options.meta,signal:r.signal},n):r.fetchFn=c}}}function m(e,{pages:t,pageParams:r}){let n=t.length-1;return t.length>0?e.getNextPageParam(t[n],t,r[n],r):void 0}var p=class{#u;#n;#c;#d;#f;#A;#h;#m;constructor(e={}){this.#u=e.queryCache||new o,this.#n=e.mutationCache||new c,this.#c=e.defaultOptions||{},this.#d=new Map,this.#f=new Map,this.#A=0}mount(){this.#A++,1===this.#A&&(this.#h=f.focusManager.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#u.onFocus())}),this.#m=A.onlineManager.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#u.onOnline())}))}unmount(){this.#A--,0===this.#A&&(this.#h?.(),this.#h=void 0,this.#m?.(),this.#m=void 0)}isFetching(e){return this.#u.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#n.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#u.get(t.queryHash)?.state.data}ensureQueryData(e){let r=this.defaultQueryOptions(e),n=this.#u.build(this,r),i=n.state.data;return void 0===i?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime((0,t.resolveStaleTime)(r.staleTime,n))&&this.prefetchQuery(r),Promise.resolve(i))}getQueriesData(e){return this.#u.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,r,n){let i=this.defaultQueryOptions({queryKey:e}),o=this.#u.get(i.queryHash),a=o?.state.data,s=(0,t.functionalUpdate)(r,a);if(void 0!==s)return this.#u.build(this,i).setData(s,{...n,manual:!0})}setQueriesData(e,t,r){return n.notifyManager.batch(()=>this.#u.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#u.get(t.queryHash)?.state}removeQueries(e){let t=this.#u;n.notifyManager.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=this.#u;return n.notifyManager.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,r={}){let i={revert:!0,...r};return Promise.all(n.notifyManager.batch(()=>this.#u.findAll(e).map(e=>e.cancel(i)))).then(t.noop).catch(t.noop)}invalidateQueries(e,t={}){return n.notifyManager.batch(()=>(this.#u.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType==="none")?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t))}refetchQueries(e,r={}){let i={...r,cancelRefetch:r.cancelRefetch??!0};return Promise.all(n.notifyManager.batch(()=>this.#u.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let r=e.fetch(void 0,i);return i.throwOnError||(r=r.catch(t.noop)),"paused"===e.state.fetchStatus?Promise.resolve():r}))).then(t.noop)}fetchQuery(e){let r=this.defaultQueryOptions(e);void 0===r.retry&&(r.retry=!1);let n=this.#u.build(this,r);return n.isStaleByTime((0,t.resolveStaleTime)(r.staleTime,n))?n.fetch(r):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(t.noop).catch(t.noop)}fetchInfiniteQuery(e){return e.behavior=h(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(t.noop).catch(t.noop)}ensureInfiniteQueryData(e){return e.behavior=h(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return A.onlineManager.isOnline()?this.#n.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#u}getMutationCache(){return this.#n}getDefaultOptions(){return this.#c}setDefaultOptions(e){this.#c=e}setQueryDefaults(e,r){this.#d.set((0,t.hashKey)(e),{queryKey:e,defaultOptions:r})}getQueryDefaults(e){let r=[...this.#d.values()],n={};return r.forEach(r=>{(0,t.partialMatchKey)(e,r.queryKey)&&Object.assign(n,r.defaultOptions)}),n}setMutationDefaults(e,r){this.#f.set((0,t.hashKey)(e),{mutationKey:e,defaultOptions:r})}getMutationDefaults(e){let r=[...this.#f.values()],n={};return r.forEach(r=>{(0,t.partialMatchKey)(e,r.mutationKey)&&Object.assign(n,r.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let r={...this.#c.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return r.queryHash||(r.queryHash=(0,t.hashQueryKeyByOptions)(r.queryKey,r)),void 0===r.refetchOnReconnect&&(r.refetchOnReconnect="always"!==r.networkMode),void 0===r.throwOnError&&(r.throwOnError=!!r.suspense),!r.networkMode&&r.persister&&(r.networkMode="offlineFirst"),r.queryFn===t.skipToken&&(r.enabled=!1),r}defaultMutationOptions(e){return e?._defaulted?e:{...this.#c.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#u.clear(),this.#n.clear()}};e.s(["QueryClient",()=>p],17751);var B=Object.defineProperty;class C{constructor(){((e,t,r)=>{let n;return(n="symbol"!=typeof t?t+"":t)in e?B(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r})(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,n=r.length;tC],85413)},91907,8597,78140,82816,25947,51475,71505,71832,e=>{"use strict";let t;e.s(["ShapeRenderer",()=>tc,"applyShapeShaderModifications",()=>tn,"createMaterialFromFlags",()=>ti,"useStaticShape",()=>to],91907);var r=e.i(43476),n=e.i(932),i=e.i(71645),o=i;let a=(0,o.createContext)(null),s={didCatch:!1,error:null};class l extends o.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=s}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(...e){let{error:t}=this.state;null!==t&&(this.props.onReset?.({args:e,reason:"imperative-api"}),this.setState(s))}componentDidCatch(e,t){this.props.onError?.(e,t)}componentDidUpdate(e,t){let{didCatch:r}=this.state,{resetKeys:n}=this.props;r&&null!==t.error&&function(e=[],t=[]){return e.length!==t.length||e.some((e,r)=>!Object.is(e,t[r]))}(e.resetKeys,n)&&(this.props.onReset?.({next:n,prev:e.resetKeys,reason:"keys"}),this.setState(s))}render(){let{children:e,fallbackRender:t,FallbackComponent:r,fallback:n}=this.props,{didCatch:i,error:s}=this.state,l=e;if(i){let e={error:s,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)l=t(e);else if(r)l=(0,o.createElement)(r,e);else if(void 0!==n)l=n;else throw s}return(0,o.createElement)(a.Provider,{value:{didCatch:i,error:s,resetErrorBoundary:this.resetErrorBoundary}},l)}}e.s(["ErrorBoundary",()=>l],8597);var u=e.i(31067),c=e.i(90072);function d(e,t){if(t===c.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==c.TriangleFanDrawMode&&t!==c.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;etypeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r=2.0 are supported."));return}let s=new ei(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});s.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===a[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}s.setExtensions(o),s.setPlugins(a),s.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}}function B(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let C={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class g{constructor(e){this.parser=e,this.name=C.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,o)}}class w{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let o=i.extensions[t],a=n.images[o.source],s=r.textureLoader;if(a.uri){let e=r.options.manager.getHandler(a.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,o.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class L{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let o=i.extensions[t],a=n.images[o.source],s=r.textureLoader;if(a.uri){let e=r.options.manager.getHandler(a.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,o.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class _{constructor(e){this.name=C.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,o=e.count,a=e.byteStride,s=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(o,a,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(o*a);return i.decodeGltfBuffer(new Uint8Array(t),o,a,s,e.mode,e.filter),t})})}}}class O{constructor(e){this.name=C.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],o={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new c.Matrix4,r=new c.Vector3,a=new c.Quaternion,s=new c.Vector3(1,1,1),l=new c.InstancedMesh(e.geometry,e.material,n);for(let e=0;e=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Z={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},z={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete};function $(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function ee(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function et(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;ntypeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"u"{let r=this.associations.get(e);for(let[n,o]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(o,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r=2&&o.setY(t,f[e*s+1]),s>=3&&o.setZ(t,f[e*s+2]),s>=4&&o.setW(t,f[e*s+3]),s>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return o})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],o=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(o=e)}return this.loadTextureImage(e,n,o)}loadTextureImage(e,t,r){let n=this,i=this.json,o=i.textures[e],a=i.images[t],s=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[s])return this.textureCache[s];let l=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=o.name||a.name||"",""===t.name&&"string"==typeof a.uri&&!1===a.uri.startsWith("data:image/")&&(t.name=a.uri);let r=(i.samplers||{})[o.sampler]||{};return t.magFilter=V[r.magFilter]||c.LinearFilter,t.minFilter=V[r.minFilter]||c.LinearMipmapLinearFilter,t.wrapS=q[r.wrapS]||c.RepeatWrapping,t.wrapT=q[r.wrapT]||c.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=l,l}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],o=self.URL||self.webkitURL,a=i.uri||"",s=!1;if(void 0!==i.bufferView)a=this.getDependency("bufferView",i.bufferView).then(function(e){s=!0;let t=new Blob([e],{type:i.mimeType});return a=o.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(a).then(function(e){return new Promise(function(r,i){let o=r;!0===t.isImageBitmapLoader&&(o=function(e){let t=new c.Texture(e);t.needsUpdate=!0,r(t)}),t.load(c.LoaderUtils.resolveURL(e,n.path),o,void 0,i)})}).then(function(e){var t;return!0===s&&o.revokeObjectURL(a),ee(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),e});return this.sourceCache[e]=l,l}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(o){if(!o)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((o=o.clone()).channel=r.texCoord),i.extensions[C.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[C.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(o);o=i.extensions[C.KHR_TEXTURE_TRANSFORM].extendTexture(o,e),i.associations.set(o,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?h:m),"colorSpace"in o?o.colorSpace=n:o.encoding=n===h?3001:3e3),e[t]=o,o})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new c.PointsMaterial,c.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new c.LineBasicMaterial,c.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||o){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,o=n.materials[e],a={},s=o.extensions||{},l=[];if(s[C.KHR_MATERIALS_UNLIT]){let e=i[C.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),l.push(e.extendParams(a,o,r))}else{let n=o.pbrMetallicRoughness||{};if(a.color=new c.Color(1,1,1),a.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;a.color.setRGB(e[0],e[1],e[2],m),a.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(r.assignTexture(a,"map",n.baseColorTexture,h)),a.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,a.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(r.assignTexture(a,"metalnessMap",n.metallicRoughnessTexture)),l.push(r.assignTexture(a,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)})))}!0===o.doubleSided&&(a.side=c.DoubleSide);let u=o.alphaMode||"OPAQUE";if("BLEND"===u?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,"MASK"===u&&(a.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&t!==c.MeshBasicMaterial&&(l.push(r.assignTexture(a,"normalMap",o.normalTexture)),a.normalScale=new c.Vector2(1,1),void 0!==o.normalTexture.scale)){let e=o.normalTexture.scale;a.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&t!==c.MeshBasicMaterial&&(l.push(r.assignTexture(a,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(a.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&t!==c.MeshBasicMaterial){let e=o.emissiveFactor;a.emissive=new c.Color().setRGB(e[0],e[1],e[2],m)}return void 0!==o.emissiveTexture&&t!==c.MeshBasicMaterial&&l.push(r.assignTexture(a,"emissiveMap",o.emissiveTexture,h)),Promise.all(l).then(function(){let n=new t(a);return o.name&&(n.name=o.name),ee(n,o),r.associations.set(n,{materials:e}),o.extensions&&$(i,n,o),n})}createUniqueName(e){let t=c.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let o=0,a=e.length;o0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r1?new c.Group:1===t.length?t[0]:new c.Object3D)!==t[0])for(let e=0,r=t.length;e{let t=new Map;for(let[e,r]of n.associations)(e instanceof c.Material||e instanceof c.Texture)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let o,a=[],s=e.name?e.name:e.uuid,l=[];switch(Z[i.path]===Z.weights?e.traverse(function(e){e.morphTargetInfluences&&l.push(e.name?e.name:e.uuid)}):l.push(s),Z[i.path]){case Z.weights:o=c.NumberKeyframeTrack;break;case Z.rotation:o=c.QuaternionKeyframeTrack;break;case Z.position:case Z.scale:o=c.VectorKeyframeTrack;break;default:o=1===r.itemSize?c.NumberKeyframeTrack:c.VectorKeyframeTrack}let u=void 0!==n.interpolation?z[n.interpolation]:c.InterpolateLinear,d=this._getArrayFromAccessor(r);for(let e=0,r=l.length;e{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(es.has(e)){let t=es.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(i,o).then(n=>(r=n,new Promise((n,o)=>{r._callbacks[i]={resolve:n,reject:o},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return a.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),es.set(e,{key:n,promise:a}),a}_createGeometry(e){let t=new ea.BufferGeometry;e.index&&t.setIndex(new ea.BufferAttribute(e.index.array,1));for(let r=0;r{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=eu.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,r=new t.Decoder,a=new t.DecoderBuffer;a.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){var i,o,a;let s,l,u,c,d,f,A=n.attributeIDs,h=n.attributeTypes,m=t.GetEncodedGeometryType(r);if(m===e.TRIANGULAR_MESH)d=new e.Mesh,f=t.DecodeBufferToMesh(r,d);else if(m===e.POINT_CLOUD)d=new e.PointCloud,f=t.DecodeBufferToPointCloud(r,d);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!f.ok()||0===d.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+f.error_msg());let p={index:null,attributes:[]};for(let r in A){let i,o,a=self[h[r]];if(n.useUniqueIDs)o=A[r],i=t.GetAttributeByUniqueId(d,o);else{if(-1===(o=t.GetAttributeId(d,e[A[r]])))continue;i=t.GetAttribute(d,o)}p.attributes.push(function(e,t,r,n,i,o){let a=o.num_components(),s=r.num_points()*a,l=s*i.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),c=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,o,u,l,c);let d=new i(e.HEAPF32.buffer,c,s).slice();return e._free(c),{name:n,array:d,itemSize:a}}(e,t,d,r,a,i))}return m===e.TRIANGULAR_MESH&&(i=e,o=t,a=d,s=3*a.num_faces(),l=4*s,u=i._malloc(l),o.GetTrianglesUInt32Array(a,l,u),c=new Uint32Array(i.HEAPF32.buffer,u,s).slice(),i._free(u),p.index={array:c,itemSize:1}),e.destroy(d),p}(t,r,a,o),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(a),t.destroy(r)}})}}}var ec=e.i(99143);let ed=function(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;i{let A={keys:l,deep:n,inject:s,castShadow:o,receiveShadow:a};if(Array.isArray(t=i.useMemo(()=>{if(!1===e&&!Array.isArray(t)){let e=!1;if(t.traverse(t=>{t.isSkinnedMesh&&(e=!0)}),e)return ed(t)}return t},[t,e])))return i.createElement("group",(0,u.default)({},d,{ref:f}),t.map(e=>i.createElement(ef,(0,u.default)({key:e.uuid,object:e},A))),r);let{children:h,...m}=function(e,{keys:t=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData","bindMode","bindMatrix","bindMatrixInverse","skeleton"],deep:r,inject:n,castShadow:o,receiveShadow:a}){let s={};for(let r of t)s[r]=e[r];return r&&(s.geometry&&"materialsOnly"!==r&&(s.geometry=s.geometry.clone()),s.material&&"geometriesOnly"!==r&&(s.material=s.material.clone())),n&&(s="function"==typeof n?{...s,children:n(e)}:i.isValidElement(n)?{...s,children:n}:{...s,...n}),e instanceof c.Mesh&&(o&&(s.castShadow=!0),a&&(s.receiveShadow=!0)),s}(t,A),p=t.type[0].toLowerCase()+t.type.slice(1);return i.createElement(p,(0,u.default)({},m,d,{ref:f}),t.children.map(e=>"Bone"===e.type?i.createElement("primitive",(0,u.default)({key:e.uuid,object:e},A)):i.createElement(ef,(0,u.default)({key:e.uuid,object:e},A,{isChild:!0}))),r,h)}),eA=null,eh="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function em(e=!0,r=!0,n){return i=>{n&&n(i),e&&(eA||(eA=new el),eA.setDecoderPath("string"==typeof e?e:eh),i.setDRACOLoader(eA)),r&&i.setMeshoptDecoder((()=>{let e;if(t)return t;let r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="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";WebAssembly.validate(r)&&(i="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");let o=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let r=0;for(let i=0;i{(e=t.instance).exports.__wasm_call_ctors()});function a(t,r,n,i,o,a){let s=e.exports.sbrk,l=n+3&-4,u=s(l*i),c=s(o.length),d=new Uint8Array(e.exports.memory.buffer);d.set(o,c);let f=t(u,n,i,c,o.length);if(0===f&&a&&a(u,l,i),r.set(d.subarray(u,u+n*i)),s(u-s(0)),0!==f)throw Error(`Malformed buffer data: ${f}`)}let s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return t={ready:o,supported:!0,decodeVertexBuffer(t,r,n,i,o){a(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[s[o]])},decodeIndexBuffer(t,r,n,i){a(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){a(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,o,u){a(e.exports[l[o]],t,r,n,i,e.exports[s[u]])}}})())}}let ep=(e,t,r,n)=>(0,ec.useLoader)(p,e,em(t,r,n));ep.preload=(e,t,r,n)=>ec.useLoader.preload(p,e,em(t,r,n)),ep.clear=e=>ec.useLoader.clear(p,e),ep.setDecoderPath=e=>{eh=e},e.s(["useGLTF",()=>ep],78140);var eB=e.i(47071),eC=e.i(71753),eg=e.i(12979);function ev(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;iev],82816);var ey=e.i(75567),eb=e.i(79123);let eE=/borg|xorg|porg|dorg|plant|tree|bush|fern|vine|grass|leaf|flower|frond|palm|foliage/i;function eM(e){return eE.test(e)}let eF=(0,i.createContext)(null);function eS(){let e=(0,i.useContext)(eF);if(!e)throw Error("useShapeInfo must be used within ShapeInfoProvider");return e}function eR(e){let t,i,o,a=(0,n.c)(10),{children:s,object:l,shapeName:u,type:c}=e;a[0]!==u?(t=eM(u),a[0]=u,a[1]=t):t=a[1];let d=t;a[2]!==d||a[3]!==l||a[4]!==u||a[5]!==c?(i={object:l,shapeName:u,type:c,isOrganic:d},a[2]=d,a[3]=l,a[4]=u,a[5]=c,a[6]=i):i=a[6];let f=i;return a[7]!==s||a[8]!==f?(o=(0,r.jsx)(eF.Provider,{value:f,children:s}),a[7]=s,a[8]=f,a[9]=o):o=a[9],o}e.s(["ShapeInfoProvider",()=>eR,"isOrganicShape",()=>eM,"useShapeInfo",()=>eS],25947),e.i(13876);var eI=e.i(58647),eT=e.i(89887);e.i(47167);var ex=e.i(69230),eG=e.i(69637),eD=e.i(54440);let ew=(0,i.createContext)(null);function eL({children:e}){let t=(0,i.useRef)(void 0),n=(0,i.useRef)(0),o=(0,i.useRef)(0);(0,eC.useFrame)((e,r)=>{for(n.current+=r;n.current>=.03125;)if(n.current-=.03125,o.current++,t.current)for(let e of t.current)e(o.current)});let a=(0,i.useCallback)(e=>(t.current??=new Set,t.current.add(e),()=>{t.current.delete(e)}),[]),s=(0,i.useCallback)(()=>o.current,[]),l=(0,i.useMemo)(()=>({subscribe:a,getTick:s}),[a,s]);return(0,r.jsx)(ew.Provider,{value:l,children:e})}function e_(e){let t=(0,i.useContext)(ew);if(!t)throw Error("useTick must be used within a TickProvider");let r=(0,i.useRef)(e);r.current=e,(0,i.useEffect)(()=>t.subscribe(e=>r.current(e)),[t])}e.s(["TICK_RATE",0,32,"TickProvider",()=>eL,"useTick",()=>e_],51475);let eO=1/30,eH=new Map;function eP(e){let t=e[0].image,r=t.width,n=t.height,i=e.length,o=Math.ceil(Math.sqrt(i)),a=Math.ceil(i/o),s=document.createElement("canvas");s.width=r*o,s.height=n*a;let l=s.getContext("2d");e.forEach((e,t)=>{let i=Math.floor(t/o);l.drawImage(e.image,t%o*r,i*n)});let u=new c.CanvasTexture(s);return u.colorSpace=c.SRGBColorSpace,u.generateMipmaps=!1,u.minFilter=c.NearestFilter,u.magFilter=c.NearestFilter,u.wrapS=c.ClampToEdgeWrapping,u.wrapT=c.ClampToEdgeWrapping,u.repeat.set(1/o,1/a),{texture:u,columns:o,rows:a,frameCount:i,frameOffsetSeconds:[],totalDurationSeconds:0,lastFrame:-1}}function eJ(e,t){let r=0;e.frameOffsetSeconds=t.map(e=>r+=e.frameCount*eO),e.totalDurationSeconds=r}function eU(e,t){if(t===e.lastFrame)return;e.lastFrame=t;let r=t%e.columns,n=e.rows-1-Math.floor(t/e.columns);e.texture.offset.set(r/e.columns,n/e.rows)}function eN(e,t){let r=e.totalDurationSeconds;if(r<=0)return 0;let n=t;n>r&&(n-=r*Math.floor(n/r));for(let t=0;t(0,eg.iflTextureToUrl)(t.name,e)),i=eP(await Promise.all(n.map(ey.loadTextureAsync)));return eJ(i,r),eH.set(e,i),i}function eK(e){var t;let r,i,o,a,s=(0,n.c)(14),{animationEnabled:l}=(0,eb.useSettings)();s[0]!==e?(r={queryKey:["ifl",e],queryFn:()=>(0,eg.loadImageFrameList)(e)},s[0]=e,s[1]=r):r=s[1];let{data:u}=(t=r,(0,eG.useBaseQuery)({...t,enabled:!0,suspense:!0,throwOnError:eD.defaultThrowOnError,placeholderData:void 0},ex.QueryObserver,void 0));if(s[2]!==u||s[3]!==e){let t;s[5]!==e?(t=t=>(0,eg.iflTextureToUrl)(t.name,e),s[5]=e,s[6]=t):t=s[6],i=u.map(t),s[2]=u,s[3]=e,s[4]=i}else i=s[4];let c=i,d=(0,eB.useTexture)(c);s[7]!==u||s[8]!==e||s[9]!==d?((o=eH.get(e))||(o=eP(d),eH.set(e,o)),eJ(o,u),s[7]=u,s[8]=e,s[9]=d,s[10]=o):o=s[10];let f=o;return s[11]!==l||s[12]!==f?(a=e=>{let t=l?eN(f,e/32):0;eU(f,t)},s[11]=l,s[12]=f,s[13]=a):a=s[13],e_(a),f.texture}e.s(["getFrameIndexForTime",()=>eN,"loadIflAtlas",()=>ek,"updateAtlasFrame",()=>eU,"useIflTexture",()=>eK],71505);var ej=e.i(47021),eQ=e.i(48066);e.s(["ANIM_TRANSITION_TIME",()=>eV,"DEFAULT_EYE_HEIGHT",()=>eX,"STREAM_TICK_SEC",()=>eq,"_r90",()=>e$,"_r90inv",()=>e0,"buildStreamDemoEntity",()=>te,"entityTypeColor",()=>tt,"getKeyframeAtTime",()=>e3,"getPosedNodeTransform",()=>e6,"processShapeScene",()=>e5,"replaceWithShapeMaterial",()=>e4,"setQuaternionFromDir",()=>e2,"setupEffectTexture",()=>e9,"torqueHorizontalFovToThreeVerticalFov",()=>e1,"torqueVecToThree",()=>e8],71832);let eX=2.1,eV=.25,eq=.032,eW=new c.Vector3,eY=new c.Vector3,eZ=new c.Matrix4,ez=new c.Vector3(0,1,0),e$=new c.Quaternion().setFromAxisAngle(new c.Vector3(0,1,0),Math.PI/2),e0=e$.clone().invert();function e1(e,t){return 180*(2*Math.atan(Math.tan(Math.max(.01,Math.min(179.99,e))*Math.PI/180/2)/(Number.isFinite(t)&&t>1e-6?t:4/3)))/Math.PI}function e9(e){e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.magFilter=c.LinearFilter,e.colorSpace=c.NoColorSpace,e.flipY=!1,e.needsUpdate=!0}function e8(e,t){return t.set(e[1],e[2],e[0])}function e2(e,t){eW.crossVectors(e,ez),1e-8>eW.lengthSq()&&eW.set(-1,0,0),eW.normalize(),eY.crossVectors(eW,e).normalize(),eZ.set(eW.x,e.x,eY.x,0,eW.y,e.y,eY.y,0,eW.z,e.z,eY.z,0,0,0,0,1),t.setFromRotationMatrix(eZ)}function e3(e,t){if(0===e.length)return null;if(t<=e[0].time)return e[0];if(t>=e[e.length-1].time)return e[e.length-1];let r=0,n=e.length-1;for(;n-r>1;){let i=r+n>>1;e[i].time<=t?r=i:n=i}return e[r]}function e6(e,t,r,n){let i=e.clone(!0),o=t.find(e=>"Root"===e.name);if(o){let e=new c.AnimationMixer(i);if(e.clipAction(o).play(),n)for(let r of n){let n=t.find(e=>e.name.toLowerCase()===r.toLowerCase());if(n){let t=e.clipAction(n);t.time=n.duration/2,t.setEffectiveTimeScale(0),t.play()}}e.setTime(0)}i.updateMatrixWorld(!0);let a=null,s=null;return(i.traverse(e=>{a||e.name!==r||(a=new c.Vector3,s=new c.Quaternion,e.getWorldPosition(a),e.getWorldQuaternion(s))}),a&&s)?{position:a,quaternion:s}:null}function e4(e,t){let r=e.userData?.resource_path,n=new Set(e.userData?.flag_names??[]);if(!r){let t=new c.MeshLambertMaterial({color:e.color,side:2,reflectivity:0});return tn(t),{material:t}}if(n.has("IflMaterial")){let i=ti(e,null,n,!1,t),o=Array.isArray(i)?i[1]:i;return{material:o,initialize:(e,t)=>e7(o,r,e,t)}}let i=(0,eg.textureToUrl)(r),o=(0,ey.loadTexture)(i);(0,ey.setupTexture)(o);let a=ti(e,o,n,!1,t);return{material:Array.isArray(a)?a[1]:a}}async function e7(e,t,r,n){let i=`textures/${t}.ifl`,o=await ek(i);e.map=o.texture,e.needsUpdate=!0;let a=!1,s=r.onBeforeRender;return r.onBeforeRender=function(...e){s?.apply(this,e),a||eU(o,eN(o,n()))},()=>{a=!0,r.onBeforeRender=s??(()=>{})}}function e5(e){var t;let r,n=[],i=null;e.traverse(e=>{!i&&e.skeleton&&(i=e.skeleton)});let o=i?(t=i,r=new Set,t.bones.forEach((e,t)=>{e.name.match(/^Hulk/i)&&r.add(t)}),r):new Set;return e.traverse(e=>{if(!e.isMesh)return;if(e.name.match(/^Hulk/i)||e.material?.name==="Unassigned"){e.visible=!1;return}let t=!!e.userData?.vis_sequence;if((e.userData?.vis??1)<.01&&(e.visible=!1),e.geometry){let t=function(e,t){if(0===t.size||!e.attributes.skinIndex)return e;let r=e.attributes.skinIndex,n=e.attributes.skinWeight,i=e.index,o=Array(r.count).fill(!1);for(let e=0;e.01&&t.has(a)){o[e]=!0;break}}if(i){let t=[],r=i.array;for(let e=0;e1){let t=0,r=0,n=0;for(let o of e)t+=i[3*o],r+=i[3*o+1],n+=i[3*o+2];let o=Math.sqrt(t*t+r*r+n*n);for(let a of(o>0&&(t/=o,r/=o,n/=o),e))i[3*a]=t,i[3*a+1]=r,i[3*a+2]=n}r.needsUpdate=!0}(t=t.clone()),e.geometry=t}let r=t?1:e.userData?.vis??1;if(Array.isArray(e.material))e.material=e.material.map(t=>{let i=e4(t,r);return i.initialize&&n.push({mesh:e,initialize:i.initialize}),i.material});else if(e.material){let t=e4(e.material,r);t.initialize&&n.push({mesh:e,initialize:t.initialize}),e.material=t.material}}),n}function te(e,t,r,n,i,o,a,s,l,u,c,d,f){return{id:e,type:t,dataBlock:r,visual:n,direction:i,weaponShape:o,playerName:a,className:s,ghostIndex:l,dataBlockId:u,shapeHint:c,explosionDataBlockId:d,faceViewer:f,keyframes:[{time:0,position:[0,0,0],rotation:[0,0,0,1]}]}}function tt(e){switch(e.toLowerCase()){case"player":return"#00ff88";case"vehicle":return"#ff8800";case"projectile":return"#ff0044";case"deployable":return"#ffcc00";default:return"#8888ff"}}function tr(){return"stopped"!==eI.engineStore.getState().playback.status?(0,eI.demoEffectNow)()/1e3:performance.now()/1e3}function tn(e){e.onBeforeCompile=t=>{(0,ej.injectCustomFog)(t,eQ.globalFogUniforms),e instanceof c.MeshLambertMaterial&&(t.uniforms.shapeDirectionalFactor={value:1},t.uniforms.shapeAmbientFactor={value:1.5},t.fragmentShader=t.fragmentShader.replace("#include ",`#include +uniform float shapeDirectionalFactor; +uniform float shapeAmbientFactor; +`),t.fragmentShader=t.fragmentShader.replace("#include ",`#include + // Apply shape-specific lighting multipliers + reflectedLight.directDiffuse *= shapeDirectionalFactor; + reflectedLight.indirectDiffuse *= shapeAmbientFactor; +`))}}function ti(e,t,r,n,i=1,o=!1){let a=r.has("Translucent"),s=r.has("Additive"),l=r.has("SelfIlluminating"),u=i<1||o;if(l||s){let e=s||a||u,r=new c.MeshBasicMaterial({map:t,side:2,transparent:e,depthWrite:!e,alphaTest:0,fog:!0,...u&&{opacity:i},...s&&{blending:c.AdditiveBlending}});return tn(r),r}if(n||a){let e={map:t,transparent:u,alphaTest:.5*!u,...u&&{opacity:i,depthWrite:!1},reflectivity:0},r=new c.MeshLambertMaterial({...e,side:1,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1}),n=new c.MeshLambertMaterial({...e,side:0});return tn(r),tn(n),[r,n]}let d=new c.MeshLambertMaterial({map:t,side:2,reflectivity:0,...u&&{transparent:!0,opacity:i,depthWrite:!1}});return tn(d),d}function to(e){let t,r=(0,n.c)(2);return r[0]!==e?(t=(0,eg.shapeToUrl)(e),r[0]=e,r[1]=t):t=r[1],ep(t)}function ta(e){let t,i,o,a,s=(0,n.c)(9),{color:l,label:u}=e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("boxGeometry",{args:[10,10,10]}),s[0]=t):t=s[0],s[1]!==l?(i=(0,r.jsx)("meshStandardMaterial",{color:l,wireframe:!0}),s[1]=l,s[2]=i):i=s[2],s[3]!==l||s[4]!==u?(o=u?(0,r.jsx)(eT.FloatingLabel,{color:l,children:u}):null,s[3]=l,s[4]=u,s[5]=o):o=s[5],s[6]!==i||s[7]!==o?(a=(0,r.jsxs)("mesh",{children:[t,i,o]}),s[6]=i,s[7]=o,s[8]=a):a=s[8],a}function ts(e){let t,i=(0,n.c)(4),{color:o,label:a}=e,{debugMode:s}=(0,eb.useDebug)();return i[0]!==o||i[1]!==s||i[2]!==a?(t=s?(0,r.jsx)(ta,{color:o,label:a}):null,i[0]=o,i[1]=s,i[2]=a,i[3]=t):t=i[3],t}let tl=new Set(["octahedron.dts"]);function tu(e){let t,i,o,a,s=(0,n.c)(6),{label:l}=e,{debugMode:u}=(0,eb.useDebug)();return u?(s[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("icosahedronGeometry",{args:[1,1]}),i=(0,r.jsx)("meshBasicMaterial",{color:"cyan",wireframe:!0}),s[0]=t,s[1]=i):(t=s[0],i=s[1]),s[2]!==l?(o=l?(0,r.jsx)(eT.FloatingLabel,{color:"cyan",children:l}):null,s[2]=l,s[3]=o):o=s[3],s[4]!==o?(a=(0,r.jsxs)("mesh",{children:[t,i,o]}),s[4]=o,s[5]=a):a=s[5],a):null}function tc(e){let t,o,a,s,u,c=(0,n.c)(17),{loadingColor:d,demoThreads:f,children:A}=e,h=void 0===d?"yellow":d,{object:m,shapeName:p}=eS();if(!p){let e,t=`${m._id}: `;return c[0]!==t?(e=(0,r.jsx)(ts,{color:"orange",label:t}),c[0]=t,c[1]=e):e=c[1],e}if(tl.has(p.toLowerCase())){let e,t=`${m._id}: ${p}`;return c[2]!==t?(e=(0,r.jsx)(tu,{label:t}),c[2]=t,c[3]=e):e=c[3],e}let B=`${m._id}: ${p}`;return c[4]!==B?(t=(0,r.jsx)(ts,{color:"red",label:B}),c[4]=B,c[5]=t):t=c[5],c[6]!==h?(o=(0,r.jsx)(ta,{color:h}),c[6]=h,c[7]=o):o=c[7],c[8]!==f?(a=(0,r.jsx)(tf,{demoThreads:f}),c[8]=f,c[9]=a):a=c[9],c[10]!==A||c[11]!==o||c[12]!==a?(s=(0,r.jsxs)(i.Suspense,{fallback:o,children:[a,A]}),c[10]=A,c[11]=o,c[12]=a,c[13]=s):s=c[13],c[14]!==t||c[15]!==s?(u=(0,r.jsx)(l,{fallback:t,children:s}),c[14]=t,c[15]=s,c[16]=u):u=c[16],u}let td=(0,i.memo)(function({gltf:e,demoThreads:t}){let{object:n,shapeName:o}=eS(),{debugMode:a}=(0,eb.useDebug)(),{animationEnabled:s}=(0,eb.useSettings)(),l=(0,eI.useEngineSelector)(e=>e.runtime.runtime),{clonedScene:u,mixer:d,clipsByName:f,visNodesBySequence:A,iflMeshes:h}=(0,i.useMemo)(()=>{let t=ev(e.scene),r=[];for(let{mesh:e,hasVisSequence:n}of(t.traverse(e=>{if(!e.isMesh||!e.material)return;let t=Array.isArray(e.material)?e.material[0]:e.material;if(!t?.userData)return;let n=new Set(t.userData.flag_names??[]),i=t.userData.resource_path;if(n.has("IflMaterial")&&i){let t=e.userData,n=t?.ifl_sequence?String(t.ifl_sequence).toLowerCase():void 0,o=t?.ifl_duration?Number(t.ifl_duration):void 0,a=t?.ifl_sequence?!!t.ifl_cyclic:void 0,s=t?.ifl_tool_begin!=null?Number(t.ifl_tool_begin):void 0;r.push({mesh:e,iflPath:`textures/${i}.ifl`,hasVisSequence:!!t?.vis_sequence,iflSequence:n,iflDuration:o,iflCyclic:a,iflToolBegin:s})}}),e5(t),r))n||(e.visible=!0);let n=new Map;t.traverse(e=>{if(!e.isMesh)return;let t=e.userData;if(!t)return;let r=t.vis_keyframes,i=t.vis_duration,o=(t.vis_sequence??"").toLowerCase();if(!o||!Array.isArray(r)||r.length<=1||!i||i<=0)return;let a=n.get(o);a||(a=[],n.set(o,a)),a.push({mesh:e,keyframes:r,duration:i,cyclic:!!t.vis_cyclic})});let i=new Map;for(let t of e.animations)i.set(t.name.toLowerCase(),t);let o=i.size>0?new c.AnimationMixer(t):null;return{clonedScene:t,mixer:o,clipsByName:i,visNodesBySequence:n,iflMeshes:r}},[e]),m=(0,i.useRef)(new Map),p=(0,i.useRef)(new Map),B=(0,i.useRef)([]),C=(0,i.useRef)(0),g=(0,i.useRef)(s);g.current=s;let v=(0,i.useRef)(null),y=(0,i.useRef)(t);y.current=t;let b=(0,i.useRef)(null),E=(0,i.useRef)(null),M=(0,i.useRef)(void 0);(0,i.useEffect)(()=>{for(let e of(B.current=[],p.current.clear(),h))ek(e.iflPath).then(t=>{let r=Array.isArray(e.mesh.material)?e.mesh.material[0]:e.mesh.material;r&&(r.map=t.texture,r.needsUpdate=!0),B.current.push({atlas:t,sequenceName:e.iflSequence,sequenceDuration:e.iflDuration,cyclic:e.iflCyclic,toolBegin:e.iflToolBegin}),p.current.set(e.mesh,t)}).catch(()=>{})},[h]),(0,i.useEffect)(()=>{let e=m.current;function t(e){if(e.mesh.visible=!0,e.mesh.material?.isMeshStandardMaterial){let t=e4(e.mesh.material,e.mesh.userData?.vis??0);e.mesh.material=t.material}e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.transparent=!0,e.mesh.material.depthWrite=!1);let t=p.current.get(e.mesh);t&&e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.map=t.texture,e.mesh.material.needsUpdate=!0)}function r(r,n){let o=n.toLowerCase();i(r);let a=f.get(o),s=A.get(o),l={sequence:o,startTime:tr()};if(a&&d){let e=d.clipAction(a);"deploy"===o?(e.setLoop(c.LoopOnce,1),e.clampWhenFinished=!0):e.setLoop(c.LoopRepeat,1/0),e.reset().play(),l.action=e,!g.current&&"deploy"===o&&(e.time=a.duration,d.update(0),v.current&&queueMicrotask(()=>v.current?.(r)))}if(s){for(let e of s)t(e);l.visNodes=s}e.set(r,l)}function i(t){let r=e.get(t);if(r){if(r.action&&r.action.stop(),r.visNodes)for(let e of r.visNodes)e.mesh.visible=!1,e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.opacity=e.keyframes[0]);e.delete(t)}}if(b.current=r,E.current=i,null!=y.current)return()=>{for(let t of(b.current=null,E.current=null,[...e.keys()]))i(t)};let o=f.has("deploy"),a=!!(l&&o&&n.datablock);function s(e){if(!l)return;let t=n.datablock;if(!t)return;let r=l.getObjectByName(String(t));r&&l.$.call(r,"onEndSequence",n,e)}function u(){for(let r of["ambient","power"]){let n=A.get(r);if(n){let i=tr();for(let e of n)t(e);let o=+("power"!==r);e.set(o,{sequence:r,visNodes:n,startTime:i})}let i=f.get(r);if(i&&d){let t=d.clipAction(i);t.setLoop(c.LoopRepeat,1/0),t.reset().play();let n=+("power"!==r),o=e.get(n);o?o.action=t:e.set(n,{sequence:r,action:t,startTime:tr()})}}}v.current=a?s:()=>u();let h=[],B=d?t=>{for(let[r,n]of e)if(n.action===t.action){a?s(r):u();break}}:null;return B&&d&&d.addEventListener("finished",B),l&&(h.push(l.$.onMethodCalled("ShapeBase","playThread",(e,t,i)=>{e._id===n._id&&r(Number(t),String(i))})),h.push(l.$.onMethodCalled("ShapeBase","stopThread",(e,t)=>{e._id===n._id&&i(Number(t))})),h.push(l.$.onMethodCalled("ShapeBase","pauseThread",(t,r)=>{if(t._id!==n._id)return;let i=e.get(Number(r));i?.action&&(i.action.paused=!0)}))),a?l.$.call(n,"deploy"):o?r(3,"deploy"):u(),()=>{for(let t of(B&&d&&d.removeEventListener("finished",B),h.forEach(e=>e()),v.current=null,b.current=null,E.current=null,[...e.keys()]))i(t)}},[d,f,A,n,l]);let F=(0,i.useMemo)(()=>{let t=e.scene.userData?.dts_sequence_names;if("string"==typeof t)try{return JSON.parse(t).map(e=>e.toLowerCase())}catch{}return e.animations.map(e=>e.name.toLowerCase())},[e]);return(0,eC.useFrame)((e,t)=>{let r=m.current,n=null!=y.current,i=eI.engineStore.getState().playback,o=n?"playing"===i.status?t*i.rate:0:t,a=y.current,l=M.current;if(a!==l){let e=b.current,t=E.current;if(e&&t){M.current=a;let n=[];if(a)for(let e of a)n[e.index]=e;let i=[];if(l)for(let e of l)i[e.index]=e;let o=Math.max(n.length,i.length);for(let a=0;a0)for(let e of(C.current+=o,u)){if(!s){eU(e.atlas,0);continue}if(e.sequenceName&&e.sequenceDuration){let t=0;for(let[,n]of r)if(n.sequence===e.sequenceName){let r=tr()-n.startTime,i=e.sequenceDuration;t=(e.cyclic?r/i%1:Math.min(r/i,1))*i+(e.toolBegin??0);break}eU(e.atlas,eN(e.atlas,t))}else eU(e.atlas,eN(e.atlas,C.current))}}),(0,r.jsxs)("group",{rotation:[0,Math.PI/2,0],children:[(0,r.jsx)("primitive",{object:u}),a?(0,r.jsxs)(eT.FloatingLabel,{children:[n._id,": ",o]}):null]})});function tf(e){let t,i=(0,n.c)(3),{demoThreads:o}=e,{shapeName:a}=eS(),s=to(a);return i[0]!==o||i[1]!==s?(t=(0,r.jsx)(td,{gltf:s,demoThreads:o}),i[0]=o,i[1]=s,i[2]=t):t=i[2],t}},81405,(e,t,r)=>{var n;e.e,(n=function(){function e(e){return i.appendChild(e.dom),e}function t(e){for(var t=0;ta+1e3&&(l.update(1e3*s/(e-a),100),a=e,s=0,c)){var t=performance.memory;c.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){o=this.end()},domElement:i,setMode:t}}).Panel=function(e,t,r){var n=1/0,i=0,o=Math.round,a=o(window.devicePixelRatio||1),s=80*a,l=48*a,u=3*a,c=2*a,d=3*a,f=15*a,A=74*a,h=30*a,m=document.createElement("canvas");m.width=s,m.height=l,m.style.cssText="width:80px;height:48px";var p=m.getContext("2d");return p.font="bold "+9*a+"px Helvetica,Arial,sans-serif",p.textBaseline="top",p.fillStyle=r,p.fillRect(0,0,s,l),p.fillStyle=t,p.fillText(e,u,c),p.fillRect(d,f,A,h),p.fillStyle=r,p.globalAlpha=.9,p.fillRect(d,f,A,h),{dom:m,update:function(l,B){n=Math.min(n,l),i=Math.max(i,l),p.fillStyle=r,p.globalAlpha=1,p.fillRect(0,0,s,f),p.fillStyle=t,p.fillText(o(l)+" "+e+" ("+o(n)+"-"+o(i)+")",u,c),p.drawImage(m,d+a,f,A-a,h,d,f,A-a,h),p.fillRect(d+A-a,f,a,h),p.fillStyle=r,p.globalAlpha=.9,p.fillRect(d+A-a,f,a,o((1-l/B)*h))}}},t.exports=n},55141,e=>{e.v({AxisLabel:"DebugElements-module__Cmeo9W__AxisLabel",StatsPanel:"DebugElements-module__Cmeo9W__StatsPanel"})},86855,e=>{"use strict";var t=e.i(43476),r=e.i(932),n=e.i(71645),i=e.i(40859),i=i,o=i,a=e.i(81405);function s(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}function l({showPanel:e=0,className:t,parent:r}){let l=function(e,t=[],r){let[i,o]=n.useState();return n.useLayoutEffect(()=>{let t=e();return o(t),s(void 0,t),()=>s(void 0,null)},t),i}(()=>new a.default,[]);return n.useEffect(()=>{if(l){let n=r&&r.current||document.body;l.showPanel(e),null==n||n.appendChild(l.dom);let a=(null!=t?t:"").split(" ").filter(e=>e);a.length&&l.dom.classList.add(...a);let s=(0,i.j)(()=>l.begin()),u=(0,o.k)(()=>l.end());return()=>{a.length&&l.dom.classList.remove(...a),null==n||n.removeChild(l.dom),s(),u()}}},[r,l,t,e]),null}var u=e.i(60099),c=e.i(79123),d=e.i(55141);function f(){let e,i,o=(0,r.c)(3),{debugMode:a}=(0,c.useDebug)(),s=(0,n.useRef)(null);return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=()=>{let e=s.current;e&&e.setColors("rgb(153, 255, 0)","rgb(0, 153, 255)","rgb(255, 153, 0)")},o[0]=e):e=o[0],(0,n.useEffect)(e),o[1]!==a?(i=a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l,{className:d.default.StatsPanel}),(0,t.jsx)("axesHelper",{ref:s,args:[70],renderOrder:999,children:(0,t.jsx)("lineBasicMaterial",{depthTest:!1,depthWrite:!1,fog:!1,vertexColors:!0})}),(0,t.jsx)(u.Html,{position:[80,0,0],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"y",children:"Y"})}),(0,t.jsx)(u.Html,{position:[0,80,0],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"z",children:"Z"})}),(0,t.jsx)(u.Html,{position:[0,0,80],center:!0,children:(0,t.jsx)("span",{className:d.default.AxisLabel,"data-axis":"x",children:"X"})})]}):null,o[1]=a,o[2]=i):i=o[2],i}e.s(["DebugElements",()=>f],86855)},38360,(e,t,r)=>{var n={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ả:"A",Ạ:"A",Ẩ:"A",Ẫ:"A",Ậ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ẻ:"E",Ẽ:"E",Ẹ:"E",Ể:"E",Ễ:"E",Ệ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ỉ:"I",Ị:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ỏ:"O",Ọ:"O",Ổ:"O",Ỗ:"O",Ộ:"O",Ờ:"O",Ở:"O",Ỡ:"O",Ớ:"O",Ợ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ủ:"U",Ụ:"U",Ử:"U",Ữ:"U",Ự:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ả:"a",ạ:"a",ẩ:"a",ẫ:"a",ậ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ẻ:"e",ẽ:"e",ẹ:"e",ể:"e",ễ:"e",ệ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ỉ:"i",ị:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ỏ:"o",ọ:"o",ổ:"o",ỗ:"o",ộ:"o",ờ:"o",ở:"o",ỡ:"o",ớ:"o",ợ:"o",ù:"u",ú:"u",û:"u",ü:"u",ủ:"u",ụ:"u",ử:"u",ữ:"u",ự:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},i=Object.keys(n).join("|"),o=RegExp(i,"g"),a=RegExp(i,"");function s(e){return n[e]}var l=function(e){return e.replace(o,s)};t.exports=l,t.exports.has=function(e){return!!e.match(a)},t.exports.remove=l},11889,56373,86447,1559,18364,78440,59129,25998,70238,e=>{"use strict";e.i(47167);var t,r="u">typeof window&&!!(null==(t=window.document)?void 0:t.createElement);function n(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function i(e){return e?"self"in e?e.self:n(e).defaultView||window:self}function o(e,t=!1){var r;let{activeElement:i}=n(e);if(!(null==i?void 0:i.nodeName))return null;if(s(i)&&(null==(r=i.contentDocument)?void 0:r.body))return o(i.contentDocument.body,t);if(t){let e=i.getAttribute("aria-activedescendant");if(e){let t=n(i).getElementById(e);if(t)return t}}return i}function a(e,t){return e===t||e.contains(t)}function s(e){return"IFRAME"===e.tagName}function l(e){let t=e.tagName.toLowerCase();return"button"===t||"input"===t&&!!e.type&&-1!==u.indexOf(e.type)}var u=["button","color","file","image","reset","submit"];function c(e){return"function"==typeof e.checkVisibility?e.checkVisibility():e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0}function d(e){try{let t=e instanceof HTMLInputElement&&null!==e.selectionStart,r="TEXTAREA"===e.tagName;return t||r||!1}catch(e){return!1}}function f(e){return e.isContentEditable||d(e)}function A(e){let t=0,r=0;if(d(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let i=n(e).getSelection();if((null==i?void 0:i.rangeCount)&&i.anchorNode&&a(e,i.anchorNode)&&i.focusNode&&a(e,i.focusNode)){let n=i.getRangeAt(0),o=n.cloneRange();o.selectNodeContents(e),o.setEnd(n.startContainer,n.startOffset),t=o.toString().length,o.setEnd(n.endContainer,n.endOffset),r=o.toString().length}}return{start:t,end:r}}function h(e,t){let r=null==e?void 0:e.getAttribute("role");return r&&-1!==["dialog","menu","listbox","tree","grid"].indexOf(r)?r:t}function m(e){if(!e)return null;let t=e=>"auto"===e||"scroll"===e;if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return m(e.parentElement)||document.scrollingElement||document.body}function p(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function B(e,t){return t&&e.item(t)||null}var C=Symbol("FOCUS_SILENTLY");function g(e,t,r){if(!t||t===r)return!1;let n=e.item(t.id);return!!n&&(!r||n.element!==r)}function v(){}function y(e,t){return"function"==typeof Object.hasOwn?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function b(...e){return(...t)=>{for(let r of e)"function"==typeof r&&r(...t)}}function E(e){return e}function M(e,t){if(!e){if("string"!=typeof t)throw Error("Invariant failed");throw Error(t)}}function F(e,...t){let r="function"==typeof e?e(...t):e;return null!=r&&!r}function S(e){return e.disabled||!0===e["aria-disabled"]||"true"===e["aria-disabled"]}function R(e){let t={};for(let r in e)void 0!==e[r]&&(t[r]=e[r]);return t}function I(...e){for(let t of e)if(void 0!==t)return t}var T=e.i(71645);function x(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function G(){return r&&!!navigator.maxTouchPoints}function D(){return!!r&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}function w(){return r&&D()&&/apple/i.test(navigator.vendor)}function L(e){return!!(e.currentTarget&&!a(e.currentTarget,e.target))}function _(e){return e.target===e.currentTarget}function O(e,t){let r=new FocusEvent("blur",t),n=e.dispatchEvent(r),i={...t,bubbles:!0};return e.dispatchEvent(new FocusEvent("focusout",i)),n}function H(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function P(e,t){let r=t||e.currentTarget,n=e.relatedTarget;return!n||!a(r,n)}function J(e,t,r,n){let i=(e=>{if(n){let t=setTimeout(e,n);return()=>clearTimeout(t)}let t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)})(()=>{e.removeEventListener(t,o,!0),r()}),o=()=>{i(),r()};return e.addEventListener(t,o,{once:!0,capture:!0}),i}function U(e,t,r,n=window){let i=[];try{for(let o of(n.document.addEventListener(e,t,r),Array.from(n.frames)))i.push(U(e,t,r,o))}catch(e){}return()=>{try{n.document.removeEventListener(e,t,r)}catch(e){}for(let e of i)e()}}var N={...T},k=N.useId;N.useDeferredValue;var K=N.useInsertionEffect,j=r?T.useLayoutEffect:T.useEffect;function Q(e){let t=(0,T.useRef)(()=>{throw Error("Cannot call an event handler while rendering.")});return K?K(()=>{t.current=e}):t.current=e,(0,T.useCallback)((...e)=>{var r;return null==(r=t.current)?void 0:r.call(t,...e)},[])}function X(...e){return(0,T.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)x(r,t)}},e)}function V(e){if(k){let t=k();return e||t}let[t,r]=(0,T.useState)(e);return j(()=>{if(e||t)return;let n=Math.random().toString(36).slice(2,8);r(`id-${n}`)},[e,t]),e||t}function q(e,t){let r=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,T.useEffect)(()=>()=>{r.current=!1},[])}function W(){return(0,T.useReducer)(()=>[],[])}function Y(e){return Q("function"==typeof e?e:()=>e)}function Z(e,t,r=[]){let n=(0,T.useCallback)(r=>(e.wrapElement&&(r=e.wrapElement(r)),t(r)),[...r,e.wrapElement]);return{...e,wrapElement:n}}function z(e=!1,t){let[r,n]=(0,T.useState)(null);return{portalRef:X(n,t),portalNode:r,domReady:!e||r}}var $=!1,ee=!1,et=0,er=0;function en(e){let t,r;t=e.movementX||e.screenX-et,r=e.movementY||e.screenY-er,et=e.screenX,er=e.screenY,(t||r||0)&&(ee=!0)}function ei(){ee=!1}var eo=e.i(43476);function ea(e){let t=T.forwardRef((t,r)=>e({...t,ref:r}));return t.displayName=e.displayName||e.name,t}function es(e,t){return T.memo(e,t)}function el(e,t){let r,{wrapElement:n,render:i,...o}=t,a=X(t.ref,i&&(0,T.isValidElement)(i)&&("ref"in i.props||"ref"in i)?({...i.props}).ref||i.ref:null);if(T.isValidElement(i)){let e={...i.props,ref:a};r=T.cloneElement(i,function(e,t){let r={...e};for(let n in t){if(!y(t,n))continue;if("className"===n){let n="className";r[n]=e[n]?`${e[n]} ${t[n]}`:t[n];continue}if("style"===n){let n="style";r[n]=e[n]?{...e[n],...t[n]}:t[n];continue}let i=t[n];if("function"==typeof i&&n.startsWith("on")){let t=e[n];if("function"==typeof t){r[n]=(...e)=>{i(...e),t(...e)};continue}}r[n]=i}return r}(o,e))}else r=i?i(o):(0,eo.jsx)(e,{...o});return n?n(r):r}function eu(e){let t=(t={})=>e(t);return t.displayName=e.name,t}function ec(e=[],t=[]){let r=T.createContext(void 0),n=T.createContext(void 0),i=()=>T.useContext(r),o=t=>e.reduceRight((e,r)=>(0,eo.jsx)(r,{...t,children:e}),(0,eo.jsx)(r.Provider,{...t}));return{context:r,scopedContext:n,useContext:i,useScopedContext:(e=!1)=>{let t=T.useContext(n),r=i();return e?t:t||r},useProviderContext:()=>{let e=T.useContext(n),t=i();if(!e||e!==t)return t},ContextProvider:o,ScopedContextProvider:e=>(0,eo.jsx)(o,{...e,children:t.reduceRight((t,r)=>(0,eo.jsx)(r,{...e,children:t}),(0,eo.jsx)(n.Provider,{...e}))})}}var ed=ec(),ef=ed.useContext;ed.useScopedContext,ed.useProviderContext;var eA=ec([ed.ContextProvider],[ed.ScopedContextProvider]),eh=eA.useContext;eA.useScopedContext;var em=eA.useProviderContext,ep=eA.ContextProvider,eB=eA.ScopedContextProvider,eC=(0,T.createContext)(void 0),eg=(0,T.createContext)(void 0),ev=(0,T.createContext)(!0),ey="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function eb(e){return!(!e.matches(ey)||!c(e)||e.closest("[inert]"))}function eE(e){if(!eb(e)||0>Number.parseInt(e.getAttribute("tabindex")||"0",10))return!1;if(!("form"in e)||!e.form||e.checked||"radio"!==e.type)return!0;let t=e.form.elements.namedItem(e.name);if(!t||!("length"in t))return!0;let r=o(e);return!r||r===e||!("form"in r)||r.form!==e.form||r.name!==e.name}function eM(e,t){let r=Array.from(e.querySelectorAll(ey));t&&r.unshift(e);let n=r.filter(eb);return n.forEach((e,t)=>{var r;if(!s(e))return;let i=null==(r=e.contentDocument)?void 0:r.body;i&&n.splice(t,1,...eM(i))}),n}function eF(e,t,r){let n=Array.from(e.querySelectorAll(ey)),i=n.filter(eE);return(t&&eE(e)&&i.unshift(e),i.forEach((e,t)=>{var n;if(!s(e))return;let o=null==(n=e.contentDocument)?void 0:n.body;if(!o)return;let a=eF(o,!1,r);i.splice(t,1,...a)}),!i.length&&r)?n:i}function eS(e,t){var r;let n,i,a,s;return r=document.body,n=o(r),a=(i=eM(r,!1)).indexOf(n),(s=i.slice(a+1)).find(eE)||(e?i.find(eE):null)||(t?s[0]:null)||null}function eR(e,t){var r;let n,i,a,s;return r=document.body,n=o(r),a=(i=eM(r,!1).reverse()).indexOf(n),(s=i.slice(a+1)).find(eE)||(e?i.find(eE):null)||(t?s[0]:null)||null}function eI(e){let t=o(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&r===e.id}function eT(e){let t=o(e);if(!t)return!1;if(a(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&"id"in e&&(r===e.id||!!e.querySelector(`#${CSS.escape(r)}`))}function ex(e){!eT(e)&&eb(e)&&e.focus()}var eG=w(),eD=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],ew=Symbol("safariFocusAncestor");function eL(e){return"input"===e.tagName.toLowerCase()&&!!e.type&&("radio"===e.type||"checkbox"===e.type)}function e_(e,t){return Q(r=>{null==e||e(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var eO=!1,eH=!0;function eP(e){let t=e.target;t&&"hasAttribute"in t&&!t.hasAttribute("data-focus-visible")&&(eH=!1)}function eJ(e){e.metaKey||e.ctrlKey||e.altKey||(eH=!0)}var eU=eu(function({focusable:e=!0,accessibleWhenDisabled:t,autoFocus:r,onFocusVisible:n,...i}){var o,a,s,u,c;let d=(0,T.useRef)(null);(0,T.useEffect)(()=>{!e||eO||(U("mousedown",eP,!0),U("keydown",eJ,!0),eO=!0)},[e]),eG&&(0,T.useEffect)(()=>{if(!e)return;let t=d.current;if(!t||!eL(t))return;let r="labels"in t?t.labels:null;if(!r)return;let n=()=>queueMicrotask(()=>t.focus());for(let e of r)e.addEventListener("mouseup",n);return()=>{for(let e of r)e.removeEventListener("mouseup",n)}},[e]);let f=e&&S(i),A=!!f&&!t,[h,m]=(0,T.useState)(!1);(0,T.useEffect)(()=>{e&&A&&h&&m(!1)},[e,A,h]),(0,T.useEffect)(()=>{if(!e||!h)return;let t=d.current;if(!t||"u"{eb(t)||m(!1)});return r.observe(t),()=>r.disconnect()},[e,h]);let p=e_(i.onKeyPressCapture,f),B=e_(i.onMouseDownCapture,f),C=e_(i.onClickCapture,f),g=i.onMouseDown,v=Q(t=>{if(null==g||g(t),t.defaultPrevented||!e)return;let r=t.currentTarget;if(!eG||L(t)||!l(r)&&!eL(r))return;let n=!1,i=()=>{n=!0};r.addEventListener("focusin",i,{capture:!0,once:!0});let o=function(e){for(;e&&!eb(e);)e=e.closest(ey);return e||null}(r.parentElement);o&&(o[ew]=!0),J(r,"mouseup",()=>{r.removeEventListener("focusin",i,!0),o&&(o[ew]=!1),n||ex(r)})}),y=(t,r)=>{if(r&&(t.currentTarget=r),!e)return;let i=t.currentTarget;i&&eI(i)&&(null==n||n(t),t.defaultPrevented||(i.dataset.focusVisible="true",m(!0)))},b=i.onKeyDownCapture,E=Q(t=>{if(null==b||b(t),t.defaultPrevented||!e||h||t.metaKey||t.altKey||t.ctrlKey||!_(t))return;let r=t.currentTarget;J(r,"focusout",()=>y(t,r))}),M=i.onFocusCapture,F=Q(t=>{if(null==M||M(t),t.defaultPrevented||!e)return;if(!_(t))return void m(!1);let r=t.currentTarget;eH||function(e){let{tagName:t,readOnly:r,type:n}=e;return"TEXTAREA"===t&&!r||"SELECT"===t&&!r||("INPUT"!==t||r?!!e.isContentEditable||"combobox"===e.getAttribute("role")&&!!e.dataset.name:eD.includes(n))}(t.target)?J(t.target,"focusout",()=>y(t,r)):m(!1)}),I=i.onBlur,x=Q(t=>{null==I||I(t),!e||P(t)&&(t.currentTarget.removeAttribute("data-focus-visible"),m(!1))}),G=(0,T.useContext)(ev),D=Q(t=>{e&&r&&t&&G&&queueMicrotask(()=>{eI(t)||eb(t)&&t.focus()})}),w=function(e,t){let r=e=>{if("string"==typeof e)return e},[n,i]=(0,T.useState)(()=>r(void 0));return j(()=>{let t=e&&"current"in e?e.current:e;i((null==t?void 0:t.tagName.toLowerCase())||r(void 0))},[e,void 0]),n}(d),O=e&&(!w||"button"===w||"summary"===w||"input"===w||"select"===w||"textarea"===w||"a"===w),H=e&&(!w||"button"===w||"input"===w||"select"===w||"textarea"===w),N=i.style,k=(0,T.useMemo)(()=>A?{pointerEvents:"none",...N}:N,[A,N]);return i={"data-focus-visible":e&&h||void 0,"data-autofocus":r||void 0,"aria-disabled":f||void 0,...i,ref:X(d,D,i.ref),style:k,tabIndex:(o=e,a=A,s=O,u=H,c=i.tabIndex,o?a?s&&!u?-1:void 0:s?c:c||0:c),disabled:!!H&&!!A||void 0,contentEditable:f?void 0:i.contentEditable,onKeyPressCapture:p,onClickCapture:C,onMouseDownCapture:B,onMouseDown:v,onKeyDownCapture:E,onFocusCapture:F,onBlur:x},R(i)});function eN(e){let t=[];for(let r of e)t.push(...r);return t}function ek(e){return e.slice().reverse()}function eK(e,t,r){return Q(n=>{var i;let o,a;if(null==t||t(n),n.defaultPrevented||n.isPropagationStopped()||!_(n)||"Shift"===n.key||"Control"===n.key||"Alt"===n.key||"Meta"===n.key||(!(o=n.target)||d(o))&&1===n.key.length&&!n.ctrlKey&&!n.metaKey)return;let s=e.getState(),l=null==(i=B(e,s.activeId))?void 0:i.element;if(!l)return;let{view:u,...c}=n;l!==(null==r?void 0:r.current)&&l.focus(),a=new KeyboardEvent(n.type,c),l.dispatchEvent(a)||n.preventDefault(),n.currentTarget.contains(l)&&n.stopPropagation()})}ea(function(e){return el("div",eU(e))});var ej=eu(function({store:e,composite:t=!0,focusOnMove:r=t,moveOnKeyPress:n=!0,...i}){let a=em();M(e=e||a,!1);let s=(0,T.useRef)(null),l=(0,T.useRef)(null),u=function(e){let[t,r]=(0,T.useState)(!1),n=(0,T.useCallback)(()=>r(!0),[]),i=e.useState(t=>B(e,t.activeId));return(0,T.useEffect)(()=>{let e=null==i?void 0:i.element;!t||e&&(r(!1),e.focus({preventScroll:!0}))},[i,t]),n}(e),c=e.useState("moves"),[,f]=function(e){let[t,r]=(0,T.useState)(null);return j(()=>{if(null==t||!e)return;let r=null;return e(e=>(r=e,t)),()=>{e(r)}},[t,e]),[t,r]}(t?e.setBaseElement:null);(0,T.useEffect)(()=>{var n;if(!e||!c||!t||!r)return;let{activeId:i}=e.getState(),o=null==(n=B(e,i))?void 0:n.element;o&&("scrollIntoView"in o?(o.focus({preventScroll:!0}),o.scrollIntoView({block:"nearest",inline:"nearest",...void 0})):o.focus())},[e,c,t,r]),j(()=>{if(!e||!c||!t)return;let{baseElement:r,activeId:n}=e.getState();if(null!==n||!r)return;let i=l.current;l.current=null,i&&O(i,{relatedTarget:r}),eI(r)||r.focus()},[e,c,t]);let A=e.useState("activeId"),h=e.useState("virtualFocus");j(()=>{var r;if(!e||!t||!h)return;let n=l.current;if(l.current=null,!n)return;let i=(null==(r=B(e,A))?void 0:r.element)||o(n);i!==n&&O(n,{relatedTarget:i})},[e,A,h,t]);let m=eK(e,i.onKeyDownCapture,l),p=eK(e,i.onKeyUpCapture,l),v=i.onFocusCapture,y=Q(t=>{var r;let n;if(null==v||v(t),t.defaultPrevented||!e)return;let{virtualFocus:i}=e.getState();if(!i)return;let o=t.relatedTarget,a=(n=(r=t.currentTarget)[C],delete r[C],n);_(t)&&a&&(t.stopPropagation(),l.current=o)}),b=i.onFocus,E=Q(r=>{if(null==b||b(r),r.defaultPrevented||!t||!e)return;let{relatedTarget:n}=r,{virtualFocus:i}=e.getState();i?_(r)&&!g(e,n)&&queueMicrotask(u):_(r)&&e.setActiveId(null)}),F=i.onBlurCapture,S=Q(t=>{var r;if(null==F||F(t),t.defaultPrevented||!e)return;let{virtualFocus:n,activeId:i}=e.getState();if(!n)return;let o=null==(r=B(e,i))?void 0:r.element,a=t.relatedTarget,s=g(e,a),u=l.current;l.current=null,_(t)&&s?(a===o?u&&u!==a&&O(u,t):o?O(o,t):u&&O(u,t),t.stopPropagation()):!g(e,t.target)&&o&&O(o,t)}),R=i.onKeyDown,I=Y(n),x=Q(t=>{var r;if(null==R||R(t),t.nativeEvent.isComposing||t.defaultPrevented||!e||!_(t))return;let{orientation:n,renderedItems:i,activeId:o}=e.getState(),a=B(e,o);if(null==(r=null==a?void 0:a.element)?void 0:r.isConnected)return;let s="horizontal"!==n,l="vertical"!==n,u=i.some(e=>!!e.rowId);if(("ArrowLeft"===t.key||"ArrowRight"===t.key||"Home"===t.key||"End"===t.key)&&d(t.currentTarget))return;let c={ArrowUp:(u||s)&&(()=>{if(u){let e=eN(ek(function(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}(i))).find(e=>!e.disabled);return null==e?void 0:e.id}return null==e?void 0:e.last()}),ArrowRight:(u||l)&&e.first,ArrowDown:(u||s)&&e.first,ArrowLeft:(u||l)&&e.last,Home:e.first,End:e.last,PageUp:e.first,PageDown:e.last}[t.key];if(c){let r=c();if(void 0!==r){if(!I(t))return;t.preventDefault(),e.move(r)}}});return i=Z(i,t=>(0,eo.jsx)(ep,{value:e,children:t}),[e]),i={"aria-activedescendant":e.useState(r=>{var n;if(e&&t&&r.virtualFocus)return null==(n=B(e,r.activeId))?void 0:n.id}),...i,ref:X(s,f,i.ref),onKeyDownCapture:m,onKeyUpCapture:p,onFocusCapture:y,onFocus:E,onBlurCapture:S,onKeyDown:x},i=eU({focusable:e.useState(e=>t&&(e.virtualFocus||null===e.activeId)),...i})});ea(function(e){return el("div",ej(e))});var eQ=ec();eQ.useContext,eQ.useScopedContext;var eX=eQ.useProviderContext,eV=ec([eQ.ContextProvider],[eQ.ScopedContextProvider]);eV.useContext,eV.useScopedContext;var eq=eV.useProviderContext,eW=eV.ContextProvider,eY=eV.ScopedContextProvider,eZ=(0,T.createContext)(void 0),ez=(0,T.createContext)(void 0),e$=ec([eW],[eY]);e$.useContext,e$.useScopedContext;var e0=e$.useProviderContext,e1=e$.ContextProvider,e9=e$.ScopedContextProvider,e8=eu(function({store:e,...t}){let r=e0();return e=e||r,t={...t,ref:X(null==e?void 0:e.setAnchorElement,t.ref)}});ea(function(e){return el("div",e8(e))});var e2=(0,T.createContext)(void 0),e3=ec([e1,ep],[e9,eB]),e6=e3.useContext,e4=e3.useScopedContext,e7=e3.useProviderContext,e5=e3.ContextProvider,te=e3.ScopedContextProvider,tt=(0,T.createContext)(void 0),tr=(0,T.createContext)(!1);function tn(e,t){let r=e.__unstableInternals;return M(r,"Invalid store"),r[t]}function ti(e,...t){let r=e,n=r,i=Symbol(),o=v,a=new Set,s=new Set,l=new Set,u=new Set,c=new Set,d=new WeakMap,f=new WeakMap,A=(e,t,r=u)=>(r.add(t),f.set(t,e),()=>{var e;null==(e=d.get(t))||e(),d.delete(t),f.delete(t),r.delete(t)}),h=(e,o,a=!1)=>{var l,A;if(!y(r,e))return;let h=(A=r[e],"function"==typeof o?o("function"==typeof A?A():A):o);if(h===r[e])return;if(!a)for(let r of t)null==(l=null==r?void 0:r.setState)||l.call(r,e,h);let m=r;r={...r,[e]:h};let p=Symbol();i=p,s.add(e);let B=(t,n,i)=>{var o;let a=f.get(t);(!a||a.some(t=>i?i.has(t):t===e))&&(null==(o=d.get(t))||o(),d.set(t,t(r,n)))};for(let e of u)B(e,m);queueMicrotask(()=>{if(i!==p)return;let e=r;for(let e of c)B(e,n,s);n=e,s.clear()})},m={getState:()=>r,setState:h,__unstableInternals:{setup:e=>(l.add(e),()=>l.delete(e)),init:()=>{let e=a.size,n=Symbol();a.add(n);let i=()=>{a.delete(n),a.size||o()};if(e)return i;let s=Object.keys(r).map(e=>b(...t.map(t=>{var r;let n=null==(r=null==t?void 0:t.getState)?void 0:r.call(t);if(n&&y(n,e))return tl(t,[e],t=>{h(e,t[e],!0)})}))),u=[];for(let e of l)u.push(e());return o=b(...s,...u,...t.map(ta)),i},subscribe:(e,t)=>A(e,t),sync:(e,t)=>(d.set(t,t(r,r)),A(e,t)),batch:(e,t)=>(d.set(t,t(r,n)),A(e,t,c)),pick:e=>ti(function(e,t){let r={};for(let n of t)y(e,n)&&(r[n]=e[n]);return r}(r,e),m),omit:e=>ti(function(e,t){let r={...e};for(let e of t)y(r,e)&&delete r[e];return r}(r,e),m)}};return m}function to(e,...t){if(e)return tn(e,"setup")(...t)}function ta(e,...t){if(e)return tn(e,"init")(...t)}function ts(e,...t){if(e)return tn(e,"subscribe")(...t)}function tl(e,...t){if(e)return tn(e,"sync")(...t)}function tu(e,...t){if(e)return tn(e,"batch")(...t)}function tc(e,...t){if(e)return tn(e,"omit")(...t)}function td(...e){var t;let r={};for(let n of e){let e=null==(t=null==n?void 0:n.getState)?void 0:t.call(n);e&&Object.assign(r,e)}let n=ti(r,...e);return Object.assign({},...e,n)}function tf(e,t){}function tA(e,t,r){if(!r)return!1;let n=e.find(e=>!e.disabled&&e.value);return(null==n?void 0:n.value)===t}function th(e,t){return!!t&&null!=e&&(e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,""),t.length>e.length&&0===t.toLowerCase().indexOf(e.toLowerCase()))}var tm=eu(function({store:e,focusable:t=!0,autoSelect:r=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:o=0,showOnChange:a,showOnMouseDown:s,showOnClick:l=s,showOnKeyDown:u,showOnKeyPress:c=u,blurActiveItemOnClick:d,setValueOnClick:f=!0,moveOnKeyPress:B=!0,autoComplete:C="list",...g}){var y;let b,E=e7();M(e=e||E,!1);let S=(0,T.useRef)(null),[R,I]=W(),x=(0,T.useRef)(!1),G=(0,T.useRef)(!1),D=e.useState(e=>e.virtualFocus&&r),w="inline"===C||"both"===C,[L,_]=(0,T.useState)(w);y=[w],b=(0,T.useRef)(!1),j(()=>{if(b.current)return(()=>{w&&_(!0)})();b.current=!0},y),j(()=>()=>{b.current=!1},[]);let O=e.useState("value"),H=(0,T.useRef)(void 0);(0,T.useEffect)(()=>tl(e,["selectedValue","activeId"],(e,t)=>{H.current=t.selectedValue}),[]);let U=e.useState(e=>{var t;if(w&&L){if(e.activeValue&&Array.isArray(e.selectedValue)&&(e.selectedValue.includes(e.activeValue)||(null==(t=H.current)?void 0:t.includes(e.activeValue))))return;return e.activeValue}}),N=e.useState("renderedItems"),k=e.useState("open"),K=e.useState("contentElement"),Z=(0,T.useMemo)(()=>{if(!w||!L)return O;if(tA(N,U,D)){if(th(O,U)){let e=(null==U?void 0:U.slice(O.length))||"";return O+e}return O}return U||O},[w,L,N,U,D,O]);(0,T.useEffect)(()=>{let e=S.current;if(!e)return;let t=()=>_(!0);return e.addEventListener("combobox-item-move",t),()=>{e.removeEventListener("combobox-item-move",t)}},[]),(0,T.useEffect)(()=>{if(!w||!L||!U||!tA(N,U,D)||!th(O,U))return;let e=v;return queueMicrotask(()=>{let t=S.current;if(!t)return;let{start:r,end:n}=A(t),i=O.length,o=U.length;p(t,i,o),e=()=>{if(!eI(t))return;let{start:e,end:a}=A(t);e!==i||a===o&&p(t,r,n)}}),()=>e()},[R,w,L,U,N,D,O]);let z=(0,T.useRef)(null),$=Q(n),ee=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(!k||!K)return;let t=m(K);if(!t)return;z.current=t;let r=()=>{x.current=!1},n=()=>{if(!e||!x.current)return;let{activeId:t}=e.getState();null===t||t!==ee.current&&(x.current=!1)},i={passive:!0,capture:!0};return t.addEventListener("wheel",r,i),t.addEventListener("touchmove",r,i),t.addEventListener("scroll",n,i),()=>{t.removeEventListener("wheel",r,!0),t.removeEventListener("touchmove",r,!0),t.removeEventListener("scroll",n,!0)}},[k,K,e]),j(()=>{!O||G.current||(x.current=!0)},[O]),j(()=>{"always"!==D&&k||(x.current=k)},[D,k]);let et=e.useState("resetValueOnSelect");q(()=>{var t,r;let n=x.current;if(!e||!k||!n&&!et)return;let{baseElement:i,contentElement:o,activeId:a}=e.getState();if(!i||eI(i)){if(null==o?void 0:o.hasAttribute("data-placing")){let e=new MutationObserver(I);return e.observe(o,{attributeFilter:["data-placing"]}),()=>e.disconnect()}if(D&&n){let r,n=$(N),i=void 0!==n?n:null!=(t=null==(r=N.find(e=>{var t;return!e.disabled&&(null==(t=e.element)?void 0:t.getAttribute("role"))!=="tab"}))?void 0:r.id)?t:e.first();ee.current=i,e.move(null!=i?i:null)}else{let t=null==(r=e.item(a||e.first()))?void 0:r.element;t&&"scrollIntoView"in t&&t.scrollIntoView({block:"nearest",inline:"nearest"})}}},[e,k,R,O,D,et,$,N]),(0,T.useEffect)(()=>{if(!w)return;let t=S.current;if(!t)return;let r=[t,K].filter(e=>!!e),n=t=>{r.every(e=>P(t,e))&&(null==e||e.setValue(Z))};for(let e of r)e.addEventListener("focusout",n);return()=>{for(let e of r)e.removeEventListener("focusout",n)}},[w,K,e,Z]);let er=e=>e.currentTarget.value.length>=o,en=g.onChange,ei=Y(null!=a?a:er),eo=Y(null!=i?i:!e.tag),ea=Q(t=>{if(null==en||en(t),t.defaultPrevented||!e)return;let r=t.currentTarget,{value:n,selectionStart:i,selectionEnd:o}=r,a=t.nativeEvent;if(x.current=!0,"input"===a.type&&(a.isComposing&&(x.current=!1,G.current=!0),w)){let e="insertText"===a.inputType||"insertCompositionText"===a.inputType,t=i===n.length;_(e&&t)}if(eo(t)){let t=n===e.getState().value;e.setValue(n),queueMicrotask(()=>{p(r,i,o)}),w&&D&&t&&I()}ei(t)&&e.show(),D&&x.current||e.setActiveId(null)}),es=g.onCompositionEnd,el=Q(e=>{x.current=!0,G.current=!1,null==es||es(e),e.defaultPrevented||D&&I()}),eu=g.onMouseDown,ec=Y(null!=d?d:()=>!!(null==e?void 0:e.getState().includesBaseElement)),ed=Y(f),ef=Y(null!=l?l:er),eA=Q(t=>{null==eu||eu(t),t.defaultPrevented||t.button||t.ctrlKey||e&&(ec(t)&&e.setActiveId(null),ed(t)&&e.setValue(Z),ef(t)&&J(t.currentTarget,"mouseup",e.show))}),eh=g.onKeyDown,em=Y(null!=c?c:er),ep=Q(t=>{if(null==eh||eh(t),t.repeat||(x.current=!1),t.defaultPrevented||t.ctrlKey||t.altKey||t.shiftKey||t.metaKey||!e)return;let{open:r}=e.getState();!r&&("ArrowUp"===t.key||"ArrowDown"===t.key)&&em(t)&&(t.preventDefault(),e.show())}),eB=g.onBlur,eC=Q(e=>{if(x.current=!1,null==eB||eB(e),e.defaultPrevented)return}),eg=V(g.id),ev=e.useState(e=>null===e.activeId);return g={id:eg,role:"combobox","aria-autocomplete":"inline"===C||"list"===C||"both"===C||"none"===C?C:void 0,"aria-haspopup":h(K,"listbox"),"aria-expanded":k,"aria-controls":null==K?void 0:K.id,"data-active-item":ev||void 0,value:Z,...g,ref:X(S,g.ref),onChange:ea,onCompositionEnd:el,onMouseDown:eA,onKeyDown:ep,onBlur:eC},g=ej({store:e,focusable:t,...g,moveOnKeyPress:e=>!F(B,e)&&(w&&_(!0),!0)}),{autoComplete:"off",...g=e8({store:e,...g})}}),tp=ea(function(e){return el("input",tm(e))});function tB(e){let t=e.relatedTarget;return(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE?t:null}e.s(["Combobox",()=>tp],11889);var tC=Symbol("composite-hover"),tg=eu(function({store:e,focusOnHover:t=!0,blurOnHoverEnd:r=!!t,...n}){let i=eh();M(e=e||i,!1);let o=((0,T.useEffect)(()=>{$||(U("mousemove",en,!0),U("mousedown",ei,!0),U("mouseup",ei,!0),U("keydown",ei,!0),U("scroll",ei,!0),$=!0)},[]),Q(()=>ee)),s=n.onMouseMove,l=Y(t),u=Q(t=>{if((null==s||s(t),!t.defaultPrevented&&o())&&l(t)){if(!eT(t.currentTarget)){let t=null==e?void 0:e.getState().baseElement;t&&!eI(t)&&t.focus()}null==e||e.setActiveId(t.currentTarget.id)}}),c=n.onMouseLeave,d=Y(r),f=Q(t=>{var r;let n;null==c||c(t),!t.defaultPrevented&&o()&&((n=tB(t))&&a(t.currentTarget,n)||function(e){let t=tB(e);if(!t)return!1;do{if(y(t,tC)&&t[tC])return!0;t=t.parentElement}while(t)return!1}(t)||!l(t)||d(t)&&(null==e||e.setActiveId(null),null==(r=null==e?void 0:e.getState().baseElement)||r.focus()))}),A=(0,T.useCallback)(e=>{e&&(e[tC]=!0)},[]);return R(n={...n,ref:X(A,n.ref),onMouseMove:u,onMouseLeave:f})});es(ea(function(e){return el("div",tg(e))}));var tv=eu(function({store:e,shouldRegisterItem:t=!0,getItem:r=E,element:n,...i}){let o=ef();e=e||o;let a=V(i.id),s=(0,T.useRef)(n);return(0,T.useEffect)(()=>{let n=s.current;if(!a||!n||!t)return;let i=r({id:a,element:n});return null==e?void 0:e.renderItem(i)},[a,t,r,e]),R(i={...i,ref:X(s,i.ref)})});function ty(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return"Enter"===e.key?l(t)||"SUMMARY"===t.tagName||"A"===t.tagName:" "===e.key&&(l(t)||"SUMMARY"===t.tagName||"INPUT"===t.tagName||"SELECT"===t.tagName)}ea(function(e){return el("div",tv(e))});var tb=Symbol("command"),tE=eu(function({clickOnEnter:e=!0,clickOnSpace:t=!0,...n}){let i,o,a=(0,T.useRef)(null),[s,u]=(0,T.useState)(!1);(0,T.useEffect)(()=>{a.current&&u(l(a.current))},[]);let[c,f]=(0,T.useState)(!1),A=(0,T.useRef)(!1),h=S(n),[m,p]=(i=n.onLoadedMetadataCapture,o=(0,T.useMemo)(()=>Object.assign(()=>{},{...i,[tb]:!0}),[i,tb,!0]),[null==i?void 0:i[tb],{onLoadedMetadataCapture:o}]),B=n.onKeyDown,C=Q(n=>{null==B||B(n);let i=n.currentTarget;if(n.defaultPrevented||m||h||!_(n)||d(i)||i.isContentEditable)return;let o=e&&"Enter"===n.key,a=t&&" "===n.key,s="Enter"===n.key&&!e,l=" "===n.key&&!t;if(s||l)return void n.preventDefault();if(o||a){let e=ty(n);if(o){if(!e){n.preventDefault();let{view:e,...t}=n,o=()=>H(i,t);r&&/firefox\//i.test(navigator.userAgent)?J(i,"keyup",o):queueMicrotask(o)}}else a&&(A.current=!0,e||(n.preventDefault(),f(!0)))}}),g=n.onKeyUp,v=Q(e=>{if(null==g||g(e),e.defaultPrevented||m||h||e.metaKey)return;let r=t&&" "===e.key;if(A.current&&r&&(A.current=!1,!ty(e))){e.preventDefault(),f(!1);let t=e.currentTarget,{view:r,...n}=e;queueMicrotask(()=>H(t,n))}});return eU(n={"data-active":c||void 0,type:s?"button":void 0,...p,...n,ref:X(a,n.ref),onKeyDown:C,onKeyUp:v})});ea(function(e){return el("button",tE(e))});var{useSyncExternalStore:tM}=e.i(2239).default,tF=()=>()=>{};function tS(e,t=E){let r=T.useCallback(t=>e?ts(e,null,t):tF(),[e]),n=()=>{let r="string"==typeof t?t:null,n="function"==typeof t?t:null,i=null==e?void 0:e.getState();return n?n(i):i&&r&&y(i,r)?i[r]:void 0};return tM(r,n,n)}function tR(e,t){let r=T.useRef({}),n=T.useCallback(t=>e?ts(e,null,t):tF(),[e]),i=()=>{let n=null==e?void 0:e.getState(),i=!1,o=r.current;for(let e in t){let r=t[e];if("function"==typeof r){let t=r(n);t!==o[e]&&(o[e]=t,i=!0)}if("string"==typeof r){if(!n||!y(n,r))continue;let t=n[r];t!==o[e]&&(o[e]=t,i=!0)}}return i&&(r.current={...o}),r.current};return tM(n,i,i)}function tI(e,t,r,n){var i;let o,a=y(t,r)?t[r]:void 0,s=(i={value:a,setValue:n?t[n]:void 0},o=(0,T.useRef)(i),j(()=>{o.current=i}),o);j(()=>tl(e,[r],(e,t)=>{let{value:n,setValue:i}=s.current;i&&e[r]!==t[r]&&e[r]!==n&&i(e[r])}),[e,r]),j(()=>{if(void 0!==a)return e.setState(r,a),tu(e,[r],()=>{void 0!==a&&e.setState(r,a)})})}function tT(e,t){let[r,n]=T.useState(()=>e(t));j(()=>ta(r),[r]);let i=T.useCallback(e=>tS(r,e),[r]);return[T.useMemo(()=>({...r,useState:i}),[r,i]),Q(()=>{n(r=>e({...t,...r.getState()}))})]}function tx(e,t,r,n=!1){var i;let o,a;if(!t||!r)return;let{renderedItems:s}=t.getState(),l=m(e);if(!l)return;let u=function(e,t=!1){let r=e.clientHeight,{top:n}=e.getBoundingClientRect(),i=1.5*Math.max(.875*r,r-40),o=t?r-i+n:i+n;return"HTML"===e.tagName?o+e.scrollTop:o}(l,n);for(let e=0;e=0){void 0!==a&&at||(e&&(null==B?void 0:B.baseElement)&&B.baseElement===e.baseElement?B.id:void 0),baseElement:e=>(null==e?void 0:e.baseElement)||void 0,isActiveItem:e=>!!e&&e.activeId===m,ariaSetSize:e=>null!=s?s:e&&(null==B?void 0:B.ariaSetSize)&&B.baseElement===e.baseElement?B.ariaSetSize:void 0,ariaPosInSet(e){if(null!=u)return u;if(!e||!(null==B?void 0:B.ariaPosInSet)||B.baseElement!==e.baseElement)return;let t=e.renderedItems.filter(e=>e.rowId===y);return B.ariaPosInSet+t.findIndex(e=>e.id===m)},isTabbable(t){if(!(null==t?void 0:t.renderedItems.length))return!0;if(t.virtualFocus)return!1;if(o)return!0;if(null===t.activeId)return!1;let r=null==e?void 0:e.item(t.activeId);return null!=r&&!!r.disabled||null==r||!r.element||t.activeId===m}}),x=(0,T.useCallback)(e=>{var t;let r={...e,id:m||e.id,rowId:y,disabled:!!v,children:null==(t=e.element)?void 0:t.textContent};return a?a(r):r},[m,y,v,a]),G=c.onFocus,D=(0,T.useRef)(!1),O=Q(t=>{var r,i;if(null==G||G(t),t.defaultPrevented||L(t)||!m||!e||(r=e,!_(t)&&g(r,t.target)))return;let{virtualFocus:o,baseElement:a}=e.getState();e.setActiveId(m),f(t.currentTarget)&&function(e,t=!1){if(d(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=n(e).getSelection();null==r||r.selectAllChildren(e),t&&(null==r||r.collapseToEnd())}}(t.currentTarget),!o||!_(t)||!f(i=t.currentTarget)&&("INPUT"!==i.tagName||l(i))&&(null==a?void 0:a.isConnected)&&((w()&&t.currentTarget.hasAttribute("data-autofocus")&&t.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),D.current=!0,t.relatedTarget===a||g(e,t.relatedTarget))?(a[C]=!0,a.focus({preventScroll:!0})):a.focus())}),H=c.onBlurCapture,P=Q(t=>{if(null==H||H(t),t.defaultPrevented)return;let r=null==e?void 0:e.getState();(null==r?void 0:r.virtualFocus)&&D.current&&(D.current=!1,t.preventDefault(),t.stopPropagation())}),J=c.onKeyDown,U=Y(r),N=Y(i),k=Q(t=>{if(null==J||J(t),t.defaultPrevented||!_(t)||!e)return;let{currentTarget:r}=t,i=e.getState(),o=e.item(m),a=!!(null==o?void 0:o.rowId),s="horizontal"!==i.orientation,l="vertical"!==i.orientation,u=()=>!(!a&&!l&&i.baseElement&&d(i.baseElement)),c={ArrowUp:(a||s)&&e.up,ArrowRight:(a||l)&&e.next,ArrowDown:(a||s)&&e.down,ArrowLeft:(a||l)&&e.previous,Home:()=>{if(u())return!a||t.ctrlKey?null==e?void 0:e.first():null==e?void 0:e.previous(-1)},End:()=>{if(u())return!a||t.ctrlKey?null==e?void 0:e.last():null==e?void 0:e.next(-1)},PageUp:()=>tx(r,e,null==e?void 0:e.up,!0),PageDown:()=>tx(r,e,null==e?void 0:e.down)}[t.key];if(c){if(f(r)){let e=A(r),i=l&&"ArrowLeft"===t.key,o=l&&"ArrowRight"===t.key,a=s&&"ArrowUp"===t.key,u=s&&"ArrowDown"===t.key;if(o||u){let{length:t}=function(e){if(d(e))return e.value;if(e.isContentEditable){let t=n(e).createRange();return t.selectNodeContents(e),t.toString()}return""}(r);if(e.end!==t)return}else if((i||a)&&0!==e.start)return}let i=c();if(U(t)||void 0!==i){if(!N(t))return;t.preventDefault(),e.move(i)}}}),K=(0,T.useMemo)(()=>({id:m,baseElement:b}),[m,b]);return c={id:m,"data-active-item":E||void 0,...c=Z(c,e=>(0,eo.jsx)(eC.Provider,{value:K,children:e}),[K]),ref:X(p,c.ref),tabIndex:I?c.tabIndex:-1,onFocus:O,onBlurCapture:P,onKeyDown:k},c=tE(c),R({...c=tv({store:e,...c,getItem:x,shouldRegisterItem:!!m&&c.shouldRegisterItem}),"aria-setsize":M,"aria-posinset":F})});es(ea(function(e){return el("button",tG(e))}));var tD=eu(function({store:e,value:t,hideOnClick:r,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:o,focusOnHover:a=!1,moveOnKeyPress:s=!0,getItem:l,...u}){var c,f;let A=e4();M(e=e||A,!1);let{resetValueOnSelectState:h,multiSelectable:m,selected:p}=tR(e,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable:e=>Array.isArray(e.selectedValue),selected:e=>(function(e,t){if(null!=t)return null!=e&&(Array.isArray(e)?e.includes(t):e===t)})(e.selectedValue,t)}),B=(0,T.useCallback)(e=>{let r={...e,value:t};return l?l(r):r},[t,l]);n=null!=n?n:!m,r=null!=r?r:null!=t&&!m;let C=u.onClick,g=Y(n),v=Y(i),y=Y(null!=(c=null!=o?o:h)?c:m),b=Y(r),E=Q(r=>{null==C||C(r),r.defaultPrevented||function(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return!!e.altKey&&("a"===r||"button"===r&&"submit"===t.type||"input"===r&&"submit"===t.type)}(r)||!function(e){let t=e.currentTarget;if(!t)return!1;let r=D();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let n=t.tagName.toLowerCase();return"a"===n||"button"===n&&"submit"===t.type||"input"===n&&"submit"===t.type}(r)&&(null!=t&&(v(r)&&(y(r)&&(null==e||e.resetValue()),null==e||e.setSelectedValue(e=>Array.isArray(e)?e.includes(t)?e.filter(e=>e!==t):[...e,t]:t)),g(r)&&(null==e||e.setValue(t))),b(r)&&(null==e||e.hide()))}),F=u.onKeyDown,S=Q(t=>{if(null==F||F(t),t.defaultPrevented)return;let r=null==e?void 0:e.getState().baseElement;!r||eI(r)||(1===t.key.length||"Backspace"===t.key||"Delete"===t.key)&&(queueMicrotask(()=>r.focus()),d(r)&&(null==e||e.setValue(r.value)))});m&&null!=p&&(u={"aria-selected":p,...u}),u=Z(u,e=>(0,eo.jsx)(tt.Provider,{value:t,children:(0,eo.jsx)(tr.Provider,{value:null!=p&&p,children:e})}),[t,p]),u={role:null!=(f=({menu:"menuitem",listbox:"option",tree:"treeitem"})[(0,T.useContext)(e2)])?f:"option",children:t,...u,onClick:E,onKeyDown:S};let R=Y(s);return u=tG({store:e,...u,getItem:B,moveOnKeyPress:t=>{if(!R(t))return!1;let r=new Event("combobox-item-move"),n=null==e?void 0:e.getState().baseElement;return null==n||n.dispatchEvent(r),!0}}),u=tg({store:e,focusOnHover:a,...u})}),tw=es(ea(function(e){return el("div",tD(e))}));e.s(["ComboboxItem",()=>tw],56373);var tL=e.i(74080);function t_(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function tO(...e){return e.join(", ").split(", ").reduce((e,t)=>{let r=t.endsWith("ms")?1:1e3,n=Number.parseFloat(t||"0s")*r;return n>e?n:e},0)}function tH(e,t,r){return!r&&!1!==t&&(!e||!!t)}var tP=eu(function({store:e,alwaysVisible:t,...r}){let n=eX();M(e=e||n,!1);let i=(0,T.useRef)(null),o=V(r.id),[a,s]=(0,T.useState)(null),l=e.useState("open"),u=e.useState("mounted"),c=e.useState("animated"),d=e.useState("contentElement"),f=tS(e.disclosure,"contentElement");j(()=>{i.current&&(null==e||e.setContentElement(i.current))},[e]),j(()=>{let t;return null==e||e.setState("animated",e=>(t=e,!0)),()=>{void 0!==t&&(null==e||e.setState("animated",t))}},[e]),j(()=>{if(c){var e;let t;return(null==d?void 0:d.isConnected)?(e=()=>{s(l?"enter":u?"leave":null)},t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)}),()=>cancelAnimationFrame(t)):void s(null)}},[c,d,l,u]),j(()=>{if(!e||!c||!a||!d)return;let t=()=>null==e?void 0:e.setState("animating",!1),r=()=>(0,tL.flushSync)(t);if("leave"===a&&l||"enter"===a&&!l)return;if("number"==typeof c)return t_(c,r);let{transitionDuration:n,animationDuration:i,transitionDelay:o,animationDelay:s}=getComputedStyle(d),{transitionDuration:u="0",animationDuration:A="0",transitionDelay:h="0",animationDelay:m="0"}=f?getComputedStyle(f):{},p=tO(o,s,h,m)+tO(n,i,u,A);if(!p){"enter"===a&&e.setState("animated",!1),t();return}return t_(Math.max(p-1e3/60,0),r)},[e,c,d,f,l,a]);let A=tH(u,(r=Z(r,t=>(0,eo.jsx)(eY,{value:e,children:t}),[e])).hidden,t),h=r.style,m=(0,T.useMemo)(()=>A?{...h,display:"none"}:h,[A,h]);return R(r={id:o,"data-open":l||void 0,"data-enter":"enter"===a||void 0,"data-leave":"leave"===a||void 0,hidden:A,...r,ref:X(o?e.setContentElement:null,i,r.ref),style:m})}),tJ=ea(function(e){return el("div",tP(e))});ea(function({unmountOnHide:e,...t}){let r=eX();return!1===tS(t.store||r,t=>!e||(null==t?void 0:t.mounted))?null:(0,eo.jsx)(tJ,{...t})});var tU=eu(function({store:e,alwaysVisible:t,...r}){let n=e4(!0),i=e6(),o=!!(e=e||i)&&e===n;M(e,!1);let a=(0,T.useRef)(null),s=V(r.id),l=e.useState("mounted"),u=tH(l,r.hidden,t),c=u?{...r.style,display:"none"}:r.style,d=e.useState(e=>Array.isArray(e.selectedValue)),f=function(e,t,r){let n=function(e){let[t]=(0,T.useState)(e);return t}(r),[i,o]=(0,T.useState)(n);return(0,T.useEffect)(()=>{let r=e&&"current"in e?e.current:e;if(!r)return;let i=()=>{let e=r.getAttribute(t);o(null==e?n:e)},a=new MutationObserver(i);return a.observe(r,{attributeFilter:[t]}),i(),()=>a.disconnect()},[e,t,n]),i}(a,"role",r.role),A="listbox"===f||"tree"===f||"grid"===f,[h,m]=(0,T.useState)(!1),p=e.useState("contentElement");j(()=>{if(!l)return;let e=a.current;if(!e||p!==e)return;let t=()=>{m(!!e.querySelector("[role='listbox']"))},r=new MutationObserver(t);return r.observe(e,{subtree:!0,childList:!0,attributeFilter:["role"]}),t(),()=>r.disconnect()},[l,p]),h||(r={role:"listbox","aria-multiselectable":A&&d||void 0,...r}),r=Z(r,t=>(0,eo.jsx)(te,{value:e,children:(0,eo.jsx)(e2.Provider,{value:f,children:t})}),[e,f]);let B=!s||n&&o?null:e.setContentElement;return R(r={id:s,hidden:u,...r,ref:X(B,a,r.ref),style:c})}),tN=ea(function(e){return el("div",tU(e))});e.s(["ComboboxList",()=>tN,"useComboboxList",()=>tU],86447);var tk=(0,T.createContext)(null),tK=eu(function(e){return{...e,style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px",...e.style}}});ea(function(e){return el("span",tK(e))});var tj=eu(function(e){return tK(e={"data-focus-trap":"",tabIndex:0,"aria-hidden":!0,...e,style:{position:"fixed",top:0,left:0,...e.style}})}),tQ=ea(function(e){return el("span",tj(e))});function tX(e){queueMicrotask(()=>{null==e||e.focus()})}var tV=eu(function({preserveTabOrder:e,preserveTabOrderAnchor:t,portalElement:r,portalRef:i,portal:o=!0,...a}){let s=(0,T.useRef)(null),l=X(s,a.ref),u=(0,T.useContext)(tk),[c,d]=(0,T.useState)(null),[f,A]=(0,T.useState)(null),h=(0,T.useRef)(null),m=(0,T.useRef)(null),p=(0,T.useRef)(null),B=(0,T.useRef)(null);return j(()=>{let e=s.current;if(!e||!o)return void d(null);let t=r?"function"==typeof r?r(e):r:n(e).createElement("div");if(!t)return void d(null);let a=t.isConnected;if(a||(u||n(e).body).appendChild(t),t.id||(t.id=e.id?`portal/${e.id}`:function(e="id"){return`${e?`${e}-`:""}${Math.random().toString(36).slice(2,8)}`}()),d(t),x(i,t),!a)return()=>{t.remove(),x(i,null)}},[o,r,u,i]),j(()=>{if(!o||!e||!t)return;let r=n(t).createElement("span");return r.style.position="fixed",t.insertAdjacentElement("afterend",r),A(r),()=>{r.remove(),A(null)}},[o,e,t]),(0,T.useEffect)(()=>{if(!c||!e)return;let t=0,r=e=>{if(!P(e))return;let r="focusin"===e.type;if(cancelAnimationFrame(t),r){let e=c.querySelectorAll("[data-tabindex]"),t=e=>{let t=e.getAttribute("data-tabindex");e.removeAttribute("data-tabindex"),t?e.setAttribute("tabindex",t):e.removeAttribute("tabindex")};for(let r of(c.hasAttribute("data-tabindex")&&t(c),e))t(r);return}t=requestAnimationFrame(()=>{for(let e of eF(c,!0))!function(e){var t;let r=null!=(t=e.getAttribute("tabindex"))?t:"";e.setAttribute("data-tabindex",r),e.setAttribute("tabindex","-1")}(e)})};return c.addEventListener("focusin",r,!0),c.addEventListener("focusout",r,!0),()=>{cancelAnimationFrame(t),c.removeEventListener("focusin",r,!0),c.removeEventListener("focusout",r,!0)}},[c,e]),a={...a=Z(a,t=>{if(t=(0,eo.jsx)(tk.Provider,{value:c||u,children:t}),!o)return t;if(!c)return(0,eo.jsx)("span",{ref:l,id:a.id,style:{position:"fixed"},hidden:!0});t=(0,eo.jsxs)(eo.Fragment,{children:[e&&c&&(0,eo.jsx)(tQ,{ref:m,"data-focus-trap":a.id,className:"__focus-trap-inner-before",onFocus:e=>{P(e,c)?tX(eS()):tX(h.current)}}),t,e&&c&&(0,eo.jsx)(tQ,{ref:p,"data-focus-trap":a.id,className:"__focus-trap-inner-after",onFocus:e=>{P(e,c)?tX(eR()):tX(B.current)}})]}),c&&(t=(0,tL.createPortal)(t,c));let r=(0,eo.jsxs)(eo.Fragment,{children:[e&&c&&(0,eo.jsx)(tQ,{ref:h,"data-focus-trap":a.id,className:"__focus-trap-outer-before",onFocus:e=>{e.relatedTarget!==B.current&&P(e,c)?tX(m.current):tX(eR())}}),e&&(0,eo.jsx)("span",{"aria-owns":null==c?void 0:c.id,style:{position:"fixed"}}),e&&c&&(0,eo.jsx)(tQ,{ref:B,"data-focus-trap":a.id,className:"__focus-trap-outer-after",onFocus:e=>{if(P(e,c))tX(p.current);else{let e=eS();if(e===m.current)return void requestAnimationFrame(()=>{var e;return null==(e=eS())?void 0:e.focus()});tX(e)}}})]});return f&&e&&(r=(0,tL.createPortal)(r,f)),(0,eo.jsxs)(eo.Fragment,{children:[r,t]})},[c,u,o,a.id,e,f]),ref:l}});ea(function(e){return el("div",tV(e))});var tq=(0,T.createContext)(0);function tW({level:e,children:t}){let r=(0,T.useContext)(tq),n=Math.max(Math.min(e||r+1,6),1);return(0,eo.jsx)(tq.Provider,{value:n,children:t})}var tY=eu(function({autoFocusOnShow:e=!0,...t}){return Z(t,t=>(0,eo.jsx)(ev.Provider,{value:e,children:t}),[e])});ea(function(e){return el("div",tY(e))});var tZ=new WeakMap;function tz(e,t,r){tZ.has(e)||tZ.set(e,new Map);let n=tZ.get(e),i=n.get(t);if(!i)return n.set(t,r()),()=>{var e;null==(e=n.get(t))||e(),n.delete(t)};let o=r(),a=()=>{o(),i(),n.delete(t)};return n.set(t,a),()=>{n.get(t)===a&&(o(),n.set(t,i))}}function t$(e,t,r){return tz(e,t,()=>{let n=e.getAttribute(t);return e.setAttribute(t,r),()=>{null==n?e.removeAttribute(t):e.setAttribute(t,n)}})}function t0(e,t,r){return tz(e,t,()=>{let n=t in e,i=e[t];return e[t]=r,()=>{n?e[t]=i:delete e[t]}})}function t1(e,t){return e?tz(e,"style",()=>{let r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}):()=>{}}var t9=["SCRIPT","STYLE"];function t8(e){return`__ariakit-dialog-snapshot-${e}`}function t2(e,t,r,i){for(let o of t){if(!(null==o?void 0:o.isConnected))continue;let s=t.some(e=>!!e&&e!==o&&e.contains(o)),l=n(o),u=o;for(;o.parentElement&&o!==l.body;){if(null==i||i(o.parentElement,u),!s)for(let i of o.parentElement.children)(function(e,t,r){return!t9.includes(t.tagName)&&!!function(e,t){let r=n(t),i=t8(e);if(!r.body[i])return!0;for(;;){if(t===r.body)return!1;if(t[i])return!0;if(!t.parentElement)return!1;t=t.parentElement}}(e,t)&&!r.some(e=>e&&a(t,e))})(e,i,t)&&r(i,u);o=o.parentElement}}}function t3(e,...t){if(!e)return!1;let r=e.getAttribute("data-backdrop");return null!=r&&(""===r||"true"===r||!t.length||t.some(e=>r===e))}function t6(e="",t=!1){return`__ariakit-dialog-${t?"ancestor":"outside"}${e?`-${e}`:""}`}function t4(e,t=""){return b(t0(e,t6("",!0),!0),t0(e,t6(t,!0),!0))}function t7(e,t){if(e[t6(t,!0)])return!0;let r=t6(t);for(;;){if(e[r])return!0;if(!e.parentElement)return!1;e=e.parentElement}}function t5(e,t){let r=[],n=t.map(e=>null==e?void 0:e.id);return t2(e,t,t=>{t3(t,...n)||r.unshift(function(e,t=""){return b(t0(e,t6(),!0),t0(e,t6(t),!0))}(t,e))},(t,n)=>{n.hasAttribute("data-dialog")&&n.id!==e||r.unshift(t4(t,e))}),()=>{for(let e of r)e()}}function re({store:e,type:t,listener:r,capture:i,domReady:o}){let s=Q(r),l=tS(e,"open"),u=(0,T.useRef)(!1);j(()=>{if(!l||!o)return;let{contentElement:t}=e.getState();if(!t)return;let r=()=>{u.current=!0};return t.addEventListener("focusin",r,!0),()=>t.removeEventListener("focusin",r,!0)},[e,l,o]),(0,T.useEffect)(()=>{if(l)return U(t,t=>{let{contentElement:r,disclosureElement:i}=e.getState(),o=t.target;!r||!o||!(!("HTML"===o.tagName||a(n(o).body,o))||a(r,o)||function(e,t){if(!e)return!1;if(a(e,t))return!0;let r=t.getAttribute("aria-activedescendant");if(r){let t=n(e).getElementById(r);if(t)return a(e,t)}return!1}(i,o)||o.hasAttribute("data-focus-trap")||function(e,t){if(!("clientY"in e))return!1;let r=t.getBoundingClientRect();return 0!==r.width&&0!==r.height&&r.top<=e.clientY&&e.clientY<=r.top+r.height&&r.left<=e.clientX&&e.clientX<=r.left+r.width}(t,r))&&(!u.current||t7(o,r.id))&&(o&&o[ew]||s(t))},i)},[l,i])}function rt(e,t){return"function"==typeof e?e(t):!!e}var rr=(0,T.createContext)({});function rn(){return"inert"in HTMLElement.prototype}function ri(e,t){if(!("style"in e))return v;if(rn())return t0(e,"inert",!0);let r=eF(e,!0).map(e=>{if(null==t?void 0:t.some(t=>t&&a(t,e)))return v;let r=tz(e,"focus",()=>(e.focus=v,()=>{delete e.focus}));return b(t$(e,"tabindex","-1"),r)});return b(...r,t$(e,"aria-hidden","true"),t1(e,{pointerEvents:"none",userSelect:"none",cursor:"default"}))}function ro(e={}){let t=td(e.store,tc(e.disclosure,["contentElement","disclosureElement"]));tf(e,t);let r=null==t?void 0:t.getState(),n=I(e.open,null==r?void 0:r.open,e.defaultOpen,!1),i=I(e.animated,null==r?void 0:r.animated,!1),o=ti({open:n,animated:i,animating:!!i&&n,mounted:n,contentElement:I(null==r?void 0:r.contentElement,null),disclosureElement:I(null==r?void 0:r.disclosureElement,null)},t);return to(o,()=>tl(o,["animated","animating"],e=>{e.animated||o.setState("animating",!1)})),to(o,()=>ts(o,["open"],()=>{o.getState().animated&&o.setState("animating",!0)})),to(o,()=>tl(o,["open","animating"],e=>{o.setState("mounted",e.open||e.animating)})),{...o,disclosure:e.disclosure,setOpen:e=>o.setState("open",e),show:()=>o.setState("open",!0),hide:()=>o.setState("open",!1),toggle:()=>o.setState("open",e=>!e),stopAnimation:()=>o.setState("animating",!1),setContentElement:e=>o.setState("contentElement",e),setDisclosureElement:e=>o.setState("disclosureElement",e)}}function ra(e,t,r){return q(t,[r.store,r.disclosure]),tI(e,r,"open","setOpen"),tI(e,r,"mounted","setMounted"),tI(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}eu(function(e){return e});var rs=ea(function(e){return el("div",e)});function rl({store:e,backdrop:t,alwaysVisible:r,hidden:n}){let i=(0,T.useRef)(null),o=function(e={}){let[t,r]=tT(ro,e);return ra(t,r,e)}({disclosure:e}),a=tS(e,"contentElement");(0,T.useEffect)(()=>{let e=i.current;!e||a&&(e.style.zIndex=getComputedStyle(a).zIndex)},[a]),j(()=>{let e=null==a?void 0:a.id;if(!e)return;let t=i.current;if(t)return t4(t,e)},[a]);let s=tP({ref:i,store:o,role:"presentation","data-backdrop":(null==a?void 0:a.id)||"",alwaysVisible:r,hidden:null!=n?n:void 0,style:{position:"fixed",top:0,right:0,bottom:0,left:0}});if(!t)return null;if((0,T.isValidElement)(t))return(0,eo.jsx)(rs,{...s,render:t});let l="boolean"!=typeof t?t:"div";return(0,eo.jsx)(rs,{...s,render:(0,eo.jsx)(l,{})})}function ru(e={}){return ro(e)}Object.assign(rs,["a","button","details","dialog","div","form","h1","h2","h3","h4","h5","h6","header","img","input","label","li","nav","ol","p","section","select","span","summary","textarea","ul","svg"].reduce((e,t)=>(e[t]=ea(function(e){return el(t,e)}),e),{}));var rc=w();function rd(e,t=!1){if(!e)return null;let r="current"in e?e.current:e;return r?t?eb(r)?r:null:r:null}var rf=eu(function({store:e,open:t,onClose:s,focusable:u=!0,modal:d=!0,portal:f=!!d,backdrop:A=!!d,hideOnEscape:h=!0,hideOnInteractOutside:m=!0,getPersistentElements:p,preventBodyScroll:B=!!d,autoFocusOnShow:C=!0,autoFocusOnHide:g=!0,initialFocus:v,finalFocus:y,unmountOnHide:E,unstable_treeSnapshotKey:M,...F}){var S;let R,I,x,w=eq(),L=(0,T.useRef)(null),_=function(e={}){let[t,r]=tT(ru,e);return ra(t,r,e)}({store:e||w,open:t,setOpen(e){if(e)return;let t=L.current;if(!t)return;let r=new Event("close",{bubbles:!1,cancelable:!0});s&&t.addEventListener("close",s,{once:!0}),t.dispatchEvent(r),r.defaultPrevented&&_.setOpen(!0)}}),{portalRef:O,domReady:H}=z(f,F.portalRef),P=F.preserveTabOrder,N=tS(_,e=>P&&!d&&e.mounted),k=V(F.id),K=tS(_,"open"),q=tS(_,"mounted"),$=tS(_,"contentElement"),ee=tH(q,F.hidden,F.alwaysVisible);R=function({attribute:e,contentId:t,contentElement:r,enabled:i}){let[o,a]=W(),s=(0,T.useCallback)(()=>{if(!i||!r)return!1;let{body:o}=n(r),a=o.getAttribute(e);return!a||a===t},[o,i,r,e,t]);return(0,T.useEffect)(()=>{if(!i||!t||!r)return;let{body:o}=n(r);if(s())return o.setAttribute(e,t),()=>o.removeAttribute(e);let l=new MutationObserver(()=>(0,tL.flushSync)(a));return l.observe(o,{attributeFilter:[e]}),()=>l.disconnect()},[o,i,t,r,s,e]),s}({attribute:"data-dialog-prevent-body-scroll",contentElement:$,contentId:k,enabled:B&&!ee}),(0,T.useEffect)(()=>{var e,t;if(!R()||!$)return;let o=n($),a=i($),{documentElement:s,body:l}=o,u=s.style.getPropertyValue("--scrollbar-width"),c=u?Number.parseInt(u,10):a.innerWidth-s.clientWidth,d=Math.round(s.getBoundingClientRect().left)+s.scrollLeft?"paddingLeft":"paddingRight",f=D()&&!(r&&navigator.platform.startsWith("Mac")&&!G());return b((e="--scrollbar-width",t=`${c}px`,s?tz(s,e,()=>{let r=s.style.getPropertyValue(e);return s.style.setProperty(e,t),()=>{r?s.style.setProperty(e,r):s.style.removeProperty(e)}}):()=>{}),f?(()=>{var e,t;let{scrollX:r,scrollY:n,visualViewport:i}=a,o=null!=(e=null==i?void 0:i.offsetLeft)?e:0,s=null!=(t=null==i?void 0:i.offsetTop)?t:0,u=t1(l,{position:"fixed",overflow:"hidden",top:`${-(n-Math.floor(s))}px`,left:`${-(r-Math.floor(o))}px`,right:"0",[d]:`${c}px`});return()=>{u(),a.scrollTo({left:r,top:n,behavior:"instant"})}})():t1(l,{overflow:"hidden",[d]:`${c}px`}))},[R,$]),S=tS(_,"open"),I=(0,T.useRef)(null),(0,T.useEffect)(()=>{if(!S){I.current=null;return}return U("mousedown",e=>{I.current=e.target},!0)},[S]),re({...x={store:_,domReady:H,capture:!0},type:"click",listener:e=>{let{contentElement:t}=_.getState(),r=I.current;r&&c(r)&&t7(r,null==t?void 0:t.id)&&rt(m,e)&&_.hide()}}),re({...x,type:"focusin",listener:e=>{let{contentElement:t}=_.getState();!t||e.target===n(t)||rt(m,e)&&_.hide()}}),re({...x,type:"contextmenu",listener:e=>{rt(m,e)&&_.hide()}});let{wrapElement:et,nestedDialogs:er}=function(e){let t=(0,T.useContext)(rr),[r,n]=(0,T.useState)([]),i=(0,T.useCallback)(e=>{var r;return n(t=>[...t,e]),b(null==(r=t.add)?void 0:r.call(t,e),()=>{n(t=>t.filter(t=>t!==e))})},[t]);j(()=>tl(e,["open","contentElement"],r=>{var n;if(r.open&&r.contentElement)return null==(n=t.add)?void 0:n.call(t,e)}),[e,t]);let o=(0,T.useMemo)(()=>({store:e,add:i}),[e,i]);return{wrapElement:(0,T.useCallback)(e=>(0,eo.jsx)(rr.Provider,{value:o,children:e}),[o]),nestedDialogs:r}}(_);F=Z(F,et,[et]),j(()=>{if(!K)return;let e=L.current,t=o(e,!0);!t||"BODY"===t.tagName||e&&a(e,t)||_.setDisclosureElement(t)},[_,K]),rc&&(0,T.useEffect)(()=>{if(!q)return;let{disclosureElement:e}=_.getState();if(!e||!l(e))return;let t=()=>{let t=!1,r=()=>{t=!0};e.addEventListener("focusin",r,{capture:!0,once:!0}),J(e,"mouseup",()=>{e.removeEventListener("focusin",r,!0),t||ex(e)})};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}},[_,q]),(0,T.useEffect)(()=>{if(!q||!H)return;let e=L.current;if(!e)return;let t=i(e),r=t.visualViewport||t,n=()=>{var r,n;let i=null!=(n=null==(r=t.visualViewport)?void 0:r.height)?n:t.innerHeight;e.style.setProperty("--dialog-viewport-height",`${i}px`)};return n(),r.addEventListener("resize",n),()=>{r.removeEventListener("resize",n)}},[q,H]),(0,T.useEffect)(()=>{if(!d||!q||!H)return;let e=L.current;if(e&&!e.querySelector("[data-dialog-dismiss]")){var t;let r;return t=_.hide,(r=n(e).createElement("button")).type="button",r.tabIndex=-1,r.textContent="Dismiss popup",Object.assign(r.style,{border:"0px",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute",whiteSpace:"nowrap",width:"1px"}),r.addEventListener("click",t),e.prepend(r),()=>{r.removeEventListener("click",t),r.remove()}}},[_,d,q,H]),j(()=>{if(!rn()||K||!q||!H)return;let e=L.current;if(e)return ri(e)},[K,q,H]);let en=K&&H;j(()=>{if(k&&en)return function(e,t){let{body:r}=n(t[0]),i=[];return t2(e,t,t=>{i.push(t0(t,t8(e),!0))}),b(t0(r,t8(e),!0),()=>{for(let e of i)e()})}(k,[L.current])},[k,en,M]);let ei=Q(p);j(()=>{if(!k||!en)return;let{disclosureElement:e}=_.getState(),t=[L.current,...ei()||[],...er.map(e=>e.getState().contentElement)];if(d){let e,r;return b(t5(k,t),(e=[],r=t.map(e=>null==e?void 0:e.id),t2(k,t,n=>{t3(n,...r)||!function(e,...t){if(!e)return!1;let r=e.getAttribute("data-focus-trap");return null!=r&&(!t.length||""!==r&&t.some(e=>r===e))}(n,...r)&&e.unshift(ri(n,t))},r=>{!r.hasAttribute("role")||t.some(e=>e&&a(e,r))||e.unshift(t$(r,"role","none"))}),()=>{for(let t of e)t()}))}return t5(k,[e,...t])},[k,_,en,ei,er,d,M]);let ea=!!C,es=Y(C),[el,eu]=(0,T.useState)(!1);(0,T.useEffect)(()=>{if(!K||!ea||!H||!(null==$?void 0:$.isConnected))return;let e=rd(v,!0)||$.querySelector("[data-autofocus=true],[autofocus]")||function(e,t,r){let[n]=eF(e,t,r);return n||null}($,!0,f&&N)||$,t=eb(e);es(t?e:null)&&(eu(!0),queueMicrotask(()=>{e.focus(),!rc||t&&e.scrollIntoView({block:"nearest",inline:"nearest"})}))},[K,ea,H,$,v,f,N,es]);let ec=!!g,ed=Y(g),[ef,eA]=(0,T.useState)(!1);(0,T.useEffect)(()=>{if(K)return eA(!0),()=>eA(!1)},[K]);let eh=(0,T.useCallback)((e,t=!0)=>{let r,{disclosureElement:i}=_.getState();if(!(!(r=o())||e&&a(e,r))&&eb(r))return;let s=rd(y)||i;if(null==s?void 0:s.id){let e=n(s),t=`[aria-activedescendant="${s.id}"]`,r=e.querySelector(t);r&&(s=r)}if(s&&!eb(s)){let e=s.closest("[data-dialog]");if(null==e?void 0:e.id){let t=n(e),r=`[aria-controls~="${e.id}"]`,i=t.querySelector(r);i&&(s=i)}}let l=s&&eb(s);!l&&t?requestAnimationFrame(()=>eh(e,!1)):!ed(l?s:null)||l&&(null==s||s.focus({preventScroll:!0}))},[_,y,ed]),em=(0,T.useRef)(!1);j(()=>{if(K||!ef||!ec)return;let e=L.current;em.current=!0,eh(e)},[K,ef,H,ec,eh]),(0,T.useEffect)(()=>{if(!ef||!ec)return;let e=L.current;return()=>{if(em.current){em.current=!1;return}eh(e)}},[ef,ec,eh]);let ep=Y(h);(0,T.useEffect)(()=>{if(H&&q)return U("keydown",e=>{if("Escape"!==e.key||e.defaultPrevented)return;let t=L.current;if(!t||t7(t))return;let r=e.target;if(!r)return;let{disclosureElement:n}=_.getState();!("BODY"===r.tagName||a(t,r)||!n||a(n,r))||ep(e)&&_.hide()},!0)},[_,H,q,ep]);let eB=(F=Z(F,e=>(0,eo.jsx)(tW,{level:d?1:void 0,children:e}),[d])).hidden,eC=F.alwaysVisible;F=Z(F,e=>A?(0,eo.jsxs)(eo.Fragment,{children:[(0,eo.jsx)(rl,{store:_,backdrop:A,hidden:eB,alwaysVisible:eC}),e]}):e,[_,A,eB,eC]);let[eg,ev]=(0,T.useState)(),[ey,eE]=(0,T.useState)();return F=tY({...F={id:k,"data-dialog":"",role:"dialog",tabIndex:u?-1:void 0,"aria-labelledby":eg,"aria-describedby":ey,...F=Z(F,e=>(0,eo.jsx)(eY,{value:_,children:(0,eo.jsx)(eZ.Provider,{value:ev,children:(0,eo.jsx)(ez.Provider,{value:eE,children:e})})}),[_]),ref:X(L,F.ref)},autoFocusOnShow:el}),F=tV({portal:f,...F=eU({...F=tP({store:_,...F}),focusable:u}),portalRef:O,preserveTabOrder:N})});function rA(e,t=eq){return ea(function(r){let n=t();return tS(r.store||n,e=>!r.unmountOnHide||(null==e?void 0:e.mounted)||!!r.open)?(0,eo.jsx)(e,{...r}):null})}rA(ea(function(e){return el("div",rf(e))}),eq);let rh=Math.min,rm=Math.max,rp=Math.round,rB=Math.floor,rC=e=>({x:e,y:e}),rg={left:"right",right:"left",bottom:"top",top:"bottom"},rv={start:"end",end:"start"};function ry(e,t){return"function"==typeof e?e(t):e}function rb(e){return e.split("-")[0]}function rE(e){return e.split("-")[1]}function rM(e){return"x"===e?"y":"x"}function rF(e){return"y"===e?"height":"width"}let rS=new Set(["top","bottom"]);function rR(e){return rS.has(rb(e))?"y":"x"}function rI(e){return e.replace(/start|end/g,e=>rv[e])}let rT=["left","right"],rx=["right","left"],rG=["top","bottom"],rD=["bottom","top"];function rw(e){return e.replace(/left|right|bottom|top/g,e=>rg[e])}function rL(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function r_(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function rO(e,t,r){let n,{reference:i,floating:o}=e,a=rR(t),s=rM(rR(t)),l=rF(s),u=rb(t),c="y"===a,d=i.x+i.width/2-o.width/2,f=i.y+i.height/2-o.height/2,A=i[l]/2-o[l]/2;switch(u){case"top":n={x:d,y:i.y-o.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:f};break;case"left":n={x:i.x-o.width,y:f};break;default:n={x:i.x,y:i.y}}switch(rE(t)){case"start":n[s]-=A*(r&&c?-1:1);break;case"end":n[s]+=A*(r&&c?-1:1)}return n}async function rH(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:o,rects:a,elements:s,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:f=!1,padding:A=0}=ry(t,e),h=rL(A),m=s[f?"floating"===d?"reference":"floating":d],p=r_(await o.getClippingRect({element:null==(r=await (null==o.isElement?void 0:o.isElement(m)))||r?m:m.contextElement||await (null==o.getDocumentElement?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:c,strategy:l})),B="floating"===d?{x:n,y:i,width:a.floating.width,height:a.floating.height}:a.reference,C=await (null==o.getOffsetParent?void 0:o.getOffsetParent(s.floating)),g=await (null==o.isElement?void 0:o.isElement(C))&&await (null==o.getScale?void 0:o.getScale(C))||{x:1,y:1},v=r_(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:B,offsetParent:C,strategy:l}):B);return{top:(p.top-v.top+h.top)/g.y,bottom:(v.bottom-p.bottom+h.bottom)/g.y,left:(p.left-v.left+h.left)/g.x,right:(v.right-p.right+h.right)/g.x}}let rP=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:o=[],platform:a}=r,s=o.filter(Boolean),l=await (null==a.isRTL?void 0:a.isRTL(t)),u=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:d}=rO(u,n,l),f=n,A={},h=0;for(let r=0;rtypeof window}function rk(e){return rQ(e)?(e.nodeName||"").toLowerCase():"#document"}function rK(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function rj(e){var t;return null==(t=(rQ(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function rQ(e){return!!rN()&&(e instanceof Node||e instanceof rK(e).Node)}function rX(e){return!!rN()&&(e instanceof Element||e instanceof rK(e).Element)}function rV(e){return!!rN()&&(e instanceof HTMLElement||e instanceof rK(e).HTMLElement)}function rq(e){return!(!rN()||"u"{try{return e.matches(t)}catch(e){return!1}})}let r0=["transform","translate","scale","rotate","perspective"],r1=["transform","translate","scale","rotate","perspective","filter"],r9=["paint","layout","strict","content"];function r8(e){let t=r2(),r=rX(e)?r4(e):e;return r0.some(e=>!!r[e]&&"none"!==r[e])||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||r1.some(e=>(r.willChange||"").includes(e))||r9.some(e=>(r.contain||"").includes(e))}function r2(){return!("u"rX(e)&&"body"!==rk(e)),i=null,o="fixed"===r4(e).position,a=o?r5(e):e;for(;rX(a)&&!r6(a);){let t=r4(a),r=r8(a);r||"fixed"!==t.position||(i=null),(o?!r&&!i:!r&&"static"===t.position&&!!i&&nc.has(i.position)||rY(a)&&!r&&function e(t,r){let n=r5(t);return!(n===r||!rX(n)||r6(n))&&("fixed"===r4(n).position||e(n,r))}(e,a))?n=n.filter(e=>e!==a):i=t,a=r5(a)}return t.set(e,n),n}(t,this._c):[].concat(r),n],a=o[0],s=o.reduce((e,r)=>{let n=nd(t,r,i);return e.top=rm(n.top,e.top),e.right=rh(n.right,e.right),e.bottom=rh(n.bottom,e.bottom),e.left=rm(n.left,e.left),e},nd(t,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:nh,getElementRects:nm,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=nr(e);return{width:t,height:r}},getScale:ni,isElement:rX,isRTL:function(e){return"rtl"===r4(e).direction}};function nB(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function nC(e=0,t=0,r=0,n=0){if("function"==typeof DOMRect)return new DOMRect(e,t,r,n);let i={x:e,y:t,width:r,height:n,top:t,right:e+r,bottom:t+n,left:e};return{...i,toJSON:()=>i}}function ng(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}function nv(e){let t=window.devicePixelRatio||1;return Math.round(e*t)/t}var ny=eu(function({store:e,modal:t=!1,portal:r=!!t,preserveTabOrder:n=!0,autoFocusOnShow:i=!0,wrapperProps:o,fixed:a=!1,flip:s=!0,shift:l=0,slide:u=!0,overlap:c=!1,sameWidth:d=!1,fitViewport:f=!1,gutter:A,arrowPadding:h=4,overflowPadding:m=8,getAnchorRect:p,updatePosition:B,...C}){let g=e0();M(e=e||g,!1);let v=e.useState("arrowElement"),y=e.useState("anchorElement"),b=e.useState("disclosureElement"),E=e.useState("popoverElement"),F=e.useState("contentElement"),S=e.useState("placement"),R=e.useState("mounted"),I=e.useState("rendered"),x=(0,T.useRef)(null),[G,D]=(0,T.useState)(!1),{portalRef:w,domReady:L}=z(r,C.portalRef),_=Q(p),O=Q(B),H=!!B;j(()=>{if(!(null==E?void 0:E.isConnected))return;E.style.setProperty("--popover-overflow-padding",`${m}px`);let t={contextElement:y||void 0,getBoundingClientRect:()=>{let e=null==_?void 0:_(y);return e||!y?function(e){if(!e)return nC();let{x:t,y:r,width:n,height:i}=e;return nC(t,r,n,i)}(e):y.getBoundingClientRect()}},r=async()=>{var r,n,i,o,p;let B,C,g;if(!R)return;v||(x.current=x.current||document.createElement("div"));let y=v||x.current,b=[(r={gutter:A,shift:l},void 0===(n=({placement:e})=>{var t;let n=((null==y?void 0:y.clientHeight)||0)/2,i="number"==typeof r.gutter?r.gutter+n:null!=(t=r.gutter)?t:n;return{crossAxis:e.split("-")[1]?void 0:r.shift,mainAxis:i,alignmentAxis:r.shift}})&&(n=0),{name:"offset",options:n,async fn(e){var t,r;let{x:i,y:o,placement:a,middlewareData:s}=e,l=await rU(e,n);return a===(null==(t=s.offset)?void 0:t.placement)&&null!=(r=s.arrow)&&r.alignmentOffset?{}:{x:i+l.x,y:o+l.y,data:{...l,placement:a}}}}),function(e){var t;if(!1===e.flip)return;let r="string"==typeof e.flip?e.flip.split(" "):void 0;return M(!r||r.every(ng),!1),{name:"flip",options:t={padding:e.overflowPadding,fallbackPlacements:r},async fn(e){var r,n,i,o,a,s,l,u;let c,d,f,{placement:A,middlewareData:h,rects:m,initialPlacement:p,platform:B,elements:C}=e,{mainAxis:g=!0,crossAxis:v=!0,fallbackPlacements:y,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:E="none",flipAlignment:M=!0,...F}=ry(t,e);if(null!=(r=h.arrow)&&r.alignmentOffset)return{};let S=rb(A),R=rR(p),I=rb(p)===p,T=await (null==B.isRTL?void 0:B.isRTL(C.floating)),x=y||(I||!M?[rw(p)]:(c=rw(p),[rI(p),c,rI(c)])),G="none"!==E;!y&&G&&x.push(...(d=rE(p),f=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?rx:rT;return t?rT:rx;case"left":case"right":return t?rG:rD;default:return[]}}(rb(p),"start"===E,T),d&&(f=f.map(e=>e+"-"+d),M&&(f=f.concat(f.map(rI)))),f));let D=[p,...x],w=await B.detectOverflow(e,F),L=[],_=(null==(n=h.flip)?void 0:n.overflows)||[];if(g&&L.push(w[S]),v){let e,t,r,n,i=(s=A,l=m,void 0===(u=T)&&(u=!1),e=rE(s),r=rF(t=rM(rR(s))),n="x"===t?e===(u?"end":"start")?"right":"left":"start"===e?"bottom":"top",l.reference[r]>l.floating[r]&&(n=rw(n)),[n,rw(n)]);L.push(w[i[0]],w[i[1]])}if(_=[..._,{placement:A,overflows:L}],!L.every(e=>e<=0)){let e=((null==(i=h.flip)?void 0:i.index)||0)+1,t=D[e];if(t&&("alignment"!==v||R===rR(t)||_.every(e=>rR(e.placement)!==R||e.overflows[0]>0)))return{data:{index:e,overflows:_},reset:{placement:t}};let r=null==(o=_.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:o.placement;if(!r)switch(b){case"bestFit":{let e=null==(a=_.filter(e=>{if(G){let t=rR(e.placement);return t===R||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:a[0];e&&(r=e);break}case"initialPlacement":r=p}if(A!==r)return{reset:{placement:r}}}return{}}}}({flip:s,overflowPadding:m}),function(e){if(e.slide||e.overlap){var t,r;return{name:"shift",options:r={mainAxis:e.slide,crossAxis:e.overlap,padding:e.overflowPadding,limiter:(void 0===t&&(t={}),{options:t,fn(e){let{x:r,y:n,placement:i,rects:o,middlewareData:a}=e,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=ry(t,e),c={x:r,y:n},d=rR(i),f=rM(d),A=c[f],h=c[d],m=ry(s,e),p="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){let e="y"===f?"height":"width",t=o.reference[f]-o.floating[e]+p.mainAxis,r=o.reference[f]+o.reference[e]-p.mainAxis;Ar&&(A=r)}if(u){var B,C;let e="y"===f?"width":"height",t=rJ.has(rb(i)),r=o.reference[d]-o.floating[e]+(t&&(null==(B=a.offset)?void 0:B[d])||0)+(t?0:p.crossAxis),n=o.reference[d]+o.reference[e]+(t?0:(null==(C=a.offset)?void 0:C[d])||0)-(t?p.crossAxis:0);hn&&(h=n)}return{[f]:A,[d]:h}}})},async fn(e){let{x:t,y:n,placement:i,platform:o}=e,{mainAxis:a=!0,crossAxis:s=!1,limiter:l={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...u}=ry(r,e),c={x:t,y:n},d=await o.detectOverflow(e,u),f=rR(rb(i)),A=rM(f),h=c[A],m=c[f];if(a){let e="y"===A?"top":"left",t="y"===A?"bottom":"right",r=h+d[e],n=h-d[t];h=rm(r,rh(h,n))}if(s){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",r=m+d[e],n=m-d[t];m=rm(r,rh(m,n))}let p=l.fn({...e,[A]:h,[f]:m});return{...p,data:{x:p.x-t,y:p.y-n,enabled:{[A]:a,[f]:s}}}}}}}({slide:u,shift:l,overlap:c,overflowPadding:m}),function(e,t){if(e){let r;return{name:"arrow",options:r={element:e,padding:t.arrowPadding},async fn(e){let{x:t,y:n,placement:i,rects:o,platform:a,elements:s,middlewareData:l}=e,{element:u,padding:c=0}=ry(r,e)||{};if(null==u)return{};let d=rL(c),f={x:t,y:n},A=rM(rR(i)),h=rF(A),m=await a.getDimensions(u),p="y"===A,B=p?"clientHeight":"clientWidth",C=o.reference[h]+o.reference[A]-f[A]-o.floating[h],g=f[A]-o.reference[A],v=await (null==a.getOffsetParent?void 0:a.getOffsetParent(u)),y=v?v[B]:0;y&&await (null==a.isElement?void 0:a.isElement(v))||(y=s.floating[B]||o.floating[h]);let b=y/2-m[h]/2-1,E=rh(d[p?"top":"left"],b),M=rh(d[p?"bottom":"right"],b),F=y-m[h]-M,S=y/2-m[h]/2+(C/2-g/2),R=rm(E,rh(S,F)),I=!l.arrow&&null!=rE(i)&&S!==R&&o.reference[h]/2-(S{},...d}=ry(o,e),f=await l.detectOverflow(e,d),A=rb(a),h=rE(a),m="y"===rR(a),{width:p,height:B}=s.floating;"top"===A||"bottom"===A?(n=A,i=h===(await (null==l.isRTL?void 0:l.isRTL(u.floating))?"start":"end")?"left":"right"):(i=A,n="end"===h?"top":"bottom");let C=B-f.top-f.bottom,g=p-f.left-f.right,v=rh(B-f[n],C),y=rh(p-f[i],g),b=!e.middlewareData.shift,E=v,M=y;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(M=g),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(E=C),b&&!h){let e=rm(f.left,0),t=rm(f.right,0),r=rm(f.top,0),n=rm(f.bottom,0);m?M=p-2*(0!==e||0!==t?e+t:rm(f.left,f.right)):E=B-2*(0!==r||0!==n?r+n:rm(f.top,f.bottom))}await c({...e,availableWidth:M,availableHeight:E});let F=await l.getDimensions(u.floating);return p!==F.width||B!==F.height?{reset:{rects:!0}}:{}}}],F=await (p={placement:S,strategy:a?"fixed":"absolute",middleware:b},B=new Map,g={...(C={platform:np,...p}).platform,_c:B},rP(t,E,{...C,platform:g}));null==e||e.setState("currentPlacement",F.placement),D(!0);let I=nv(F.x),T=nv(F.y);if(Object.assign(E.style,{top:"0",left:"0",transform:`translate3d(${I}px,${T}px,0)`}),y&&F.middlewareData.arrow){let{x:e,y:t}=F.middlewareData.arrow,r=F.placement.split("-")[0],n=y.clientWidth/2,i=y.clientHeight/2,o=null!=e?e+n:-n,a=null!=t?t+i:-i;E.style.setProperty("--popover-transform-origin",{top:`${o}px calc(100% + ${i}px)`,bottom:`${o}px ${-i}px`,left:`calc(100% + ${n}px) ${a}px`,right:`${-n}px ${a}px`}[r]),Object.assign(y.style,{left:null!=e?`${e}px`:"",top:null!=t?`${t}px`:"",[r]:"100%"})}},n=function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:s="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:u=!1}=n,c=nn(e),d=o||a?[...c?ne(c):[],...ne(t)]:[];d.forEach(e=>{o&&e.addEventListener("scroll",r,{passive:!0}),a&&e.addEventListener("resize",r)});let f=c&&l?function(e,t){let r,n=null,i=rj(e);function o(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function a(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),o();let u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:A}=u;if(s||t(),!f||!A)return;let h={rootMargin:-rB(d)+"px "+-rB(i.clientWidth-(c+f))+"px "+-rB(i.clientHeight-(d+A))+"px "+-rB(c)+"px",threshold:rm(0,rh(1,l))||1},m=!0;function p(t){let n=t[0].intersectionRatio;if(n!==l){if(!m)return a();n?a(!1,n):r=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==n||nB(u,e.getBoundingClientRect())||a(),m=!1}try{n=new IntersectionObserver(p,{...h,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(p,h)}n.observe(e)}(!0),o}(c,r):null,A=-1,h=null;s&&(h=new ResizeObserver(e=>{let[n]=e;n&&n.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(A),A=requestAnimationFrame(()=>{var e;null==(e=h)||e.observe(t)})),r()}),c&&!u&&h.observe(c),h.observe(t));let m=u?ns(e):null;return u&&function t(){let n=ns(e);m&&!nB(m,n)&&r(),m=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{o&&e.removeEventListener("scroll",r),a&&e.removeEventListener("resize",r)}),null==f||f(),null==(e=h)||e.disconnect(),h=null,u&&cancelAnimationFrame(i)}}(t,E,async()=>{H?(await O({updatePosition:r}),D(!0)):await r()},{elementResize:"function"==typeof ResizeObserver});return()=>{D(!1),n()}},[e,I,E,v,y,E,S,R,L,a,s,l,u,c,d,f,A,h,m,_,H,O]),j(()=>{if(!R||!L||!(null==E?void 0:E.isConnected)||!(null==F?void 0:F.isConnected))return;let e=()=>{E.style.zIndex=getComputedStyle(F).zIndex};e();let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)},[R,L,E,F]);let P=a?"fixed":"absolute";return C=Z(C,t=>(0,eo.jsx)("div",{...o,style:{position:P,top:0,left:0,width:"max-content",...null==o?void 0:o.style},ref:null==e?void 0:e.setPopoverElement,children:t}),[e,P,o]),C={"data-placing":!G||void 0,...C=Z(C,t=>(0,eo.jsx)(e9,{value:e,children:t}),[e]),style:{position:"relative",...C.style}},C=rf({store:e,modal:t,portal:r,preserveTabOrder:n,preserveTabOrderAnchor:b||y,autoFocusOnShow:G&&i,...C,portalRef:w})});rA(ea(function(e){return el("div",ny(e))}),e0);var nb=eu(function({store:e,modal:t,tabIndex:r,alwaysVisible:i,autoFocusOnHide:o=!0,hideOnInteractOutside:a=!0,...s}){let l=e7();M(e=e||l,!1);let u=e.useState("baseElement"),c=(0,T.useRef)(!1),d=tS(e.tag,e=>null==e?void 0:e.renderedItems.length);return s=tU({store:e,alwaysVisible:i,...s}),s=ny({store:e,modal:t,alwaysVisible:i,backdrop:!1,autoFocusOnShow:!1,finalFocus:u,preserveTabOrderAnchor:null,unstable_treeSnapshotKey:d,...s,getPersistentElements(){var r;let i=(null==(r=s.getPersistentElements)?void 0:r.call(s))||[];if(!t||!e)return i;let{contentElement:o,baseElement:a}=e.getState();if(!a)return i;let l=n(a),u=[];if((null==o?void 0:o.id)&&u.push(`[aria-controls~="${o.id}"]`),(null==a?void 0:a.id)&&u.push(`[aria-controls~="${a.id}"]`),!u.length)return[...i,a];let c=u.join(",");return[...i,...l.querySelectorAll(c)]},autoFocusOnHide:e=>!F(o,e)&&(!c.current||(c.current=!1,!1)),hideOnInteractOutside(t){var r,n;let i=null==e?void 0:e.getState(),o=null==(r=null==i?void 0:i.contentElement)?void 0:r.id,s=null==(n=null==i?void 0:i.baseElement)?void 0:n.id;if(function(e,...t){if(!e)return!1;if("id"in e){let r=t.filter(Boolean).map(e=>`[aria-controls~="${e}"]`).join(", ");return!!r&&e.matches(r)}return!1}(t.target,o,s))return!1;let l="function"==typeof a?a(t):a;return l&&(c.current="click"===t.type),l}})}),nE=rA(ea(function(e){return el("div",nb(e))}),e7);e.s(["ComboboxPopover",()=>nE],1559),(0,T.createContext)(null),(0,T.createContext)(null);var nM=ec([ep],[eB]),nF=nM.useContext;nM.useScopedContext,nM.useProviderContext,nM.ContextProvider,nM.ScopedContextProvider;var nS={id:null};function nR(e,t){return e.find(e=>t?!e.disabled&&e.id!==t:!e.disabled)}function nI(e,t){return e.filter(e=>e.rowId===t)}function nT(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}function nx(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}var nG=w()&&G();function nD({tag:e,...t}={}){let r=td(t.store,function(e,...t){if(e)return tn(e,"pick")(...t)}(e,["value","rtl"]));tf(t,r);let i=null==e?void 0:e.getState(),o=null==r?void 0:r.getState(),a=I(t.activeId,null==o?void 0:o.activeId,t.defaultActiveId,null),s=function(e={}){var t;let r=null==(t=e.store)?void 0:t.getState(),i=function(e={}){var t,r;tf(e,e.store);let i=null==(t=e.store)?void 0:t.getState(),o=I(e.items,null==i?void 0:i.items,e.defaultItems,[]),a=new Map(o.map(e=>[e.id,e])),s={items:o,renderedItems:I(null==i?void 0:i.renderedItems,[])},l=null==(r=e.store)?void 0:r.__unstablePrivateStore,u=ti({items:o,renderedItems:s.renderedItems},l),c=ti(s,e.store),d=e=>{var t;let r,n,i=(t=e=>e.element,r=e.map((e,t)=>[t,e]),n=!1,(r.sort(([e,r],[i,o])=>{var a;let s=t(r),l=t(o);return s!==l&&s&&l?(a=s,l.compareDocumentPosition(a)&Node.DOCUMENT_POSITION_PRECEDING)?(e>i&&(n=!0),-1):(et):e);u.setState("renderedItems",i),c.setState("renderedItems",i)};to(c,()=>ta(u)),to(u,()=>tu(u,["items"],e=>{c.setState("items",e.items)})),to(u,()=>tu(u,["renderedItems"],e=>{let t=!0,r=requestAnimationFrame(()=>{let{renderedItems:t}=c.getState();e.renderedItems!==t&&d(e.renderedItems)});if("function"!=typeof IntersectionObserver)return()=>cancelAnimationFrame(r);let i=new IntersectionObserver(()=>{if(t){t=!1;return}cancelAnimationFrame(r),r=requestAnimationFrame(()=>d(e.renderedItems))},{root:function(e){var t;let r=e.find(e=>!!e.element),i=[...e].reverse().find(e=>!!e.element),o=null==(t=null==r?void 0:r.element)?void 0:t.parentElement;for(;o&&(null==i?void 0:i.element);){let e=o;if(i&&e.contains(i.element))return o;o=o.parentElement}return n(o).body}(e.renderedItems)});for(let t of e.renderedItems)t.element&&i.observe(t.element);return()=>{cancelAnimationFrame(r),i.disconnect()}}));let f=(e,t,r=!1)=>{let n;return t(t=>{let r=t.findIndex(({id:t})=>t===e.id),i=t.slice();if(-1!==r){let o={...n=t[r],...e};i[r]=o,a.set(e.id,o)}else i.push(e),a.set(e.id,e);return i}),()=>{t(t=>{if(!n)return r&&a.delete(e.id),t.filter(({id:t})=>t!==e.id);let i=t.findIndex(({id:t})=>t===e.id);if(-1===i)return t;let o=t.slice();return o[i]=n,a.set(e.id,n),o})}},A=e=>f(e,e=>u.setState("items",e),!0);return{...c,registerItem:A,renderItem:e=>b(A(e),f(e,e=>u.setState("renderedItems",e))),item:e=>{if(!e)return null;let t=a.get(e);if(!t){let{items:r}=u.getState();(t=r.find(t=>t.id===e))&&a.set(e,t)}return t||null},__unstablePrivateStore:u}}(e),o=I(e.activeId,null==r?void 0:r.activeId,e.defaultActiveId),a=ti({...i.getState(),id:I(e.id,null==r?void 0:r.id,`id-${Math.random().toString(36).slice(2,8)}`),activeId:o,baseElement:I(null==r?void 0:r.baseElement,null),includesBaseElement:I(e.includesBaseElement,null==r?void 0:r.includesBaseElement,null===o),moves:I(null==r?void 0:r.moves,0),orientation:I(e.orientation,null==r?void 0:r.orientation,"both"),rtl:I(e.rtl,null==r?void 0:r.rtl,!1),virtualFocus:I(e.virtualFocus,null==r?void 0:r.virtualFocus,!1),focusLoop:I(e.focusLoop,null==r?void 0:r.focusLoop,!1),focusWrap:I(e.focusWrap,null==r?void 0:r.focusWrap,!1),focusShift:I(e.focusShift,null==r?void 0:r.focusShift,!1)},i,e.store);to(a,()=>tl(a,["renderedItems","activeId"],e=>{a.setState("activeId",t=>{var r;return void 0!==t?t:null==(r=nR(e.renderedItems))?void 0:r.id})}));let s=(e="next",t={})=>{var r,n;let i=a.getState(),{skip:o=0,activeId:s=i.activeId,focusShift:l=i.focusShift,focusLoop:u=i.focusLoop,focusWrap:c=i.focusWrap,includesBaseElement:d=i.includesBaseElement,renderedItems:f=i.renderedItems,rtl:A=i.rtl}=t,h="up"===e||"down"===e,m="next"===e||"down"===e,p=h?eN(function(e,t,r){let n=nx(e);for(let i of e)for(let e=0;ee.id===s);if(!B)return null==(n=nR(p))?void 0:n.id;let C=p.some(e=>e.rowId),g=p.indexOf(B),v=p.slice(g+1),y=nI(v,B.rowId);if(o){let e=y.filter(e=>s?!e.disabled&&e.id!==s:!e.disabled),t=e.slice(o)[0]||e[e.length-1];return null==t?void 0:t.id}let b=u&&(h?"horizontal"!==u:"vertical"!==u),E=C&&c&&(h?"horizontal"!==c:"vertical"!==c),M=m?(!C||h)&&b&&d:!!h&&d;if(b){let e=nR(function(e,t,r=!1){let n=e.findIndex(e=>e.id===t);return[...e.slice(n+1),...r?[nS]:[],...e.slice(0,n)]}(E&&!M?p:nI(p,B.rowId),s,M),s);return null==e?void 0:e.id}if(E){let e=nR(M?y:v,s);return M?(null==e?void 0:e.id)||null:null==e?void 0:e.id}let F=nR(y,s);return!F&&M?null:null==F?void 0:F.id};return{...i,...a,setBaseElement:e=>a.setState("baseElement",e),setActiveId:e=>a.setState("activeId",e),move:e=>{void 0!==e&&(a.setState("activeId",e),a.setState("moves",e=>e+1))},first:()=>{var e;return null==(e=nR(a.getState().renderedItems))?void 0:e.id},last:()=>{var e;return null==(e=nR(ek(a.getState().renderedItems)))?void 0:e.id},next:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("next",e)),previous:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("previous",e)),down:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("down",e)),up:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("up",e))}}({...t,activeId:a,includesBaseElement:I(t.includesBaseElement,null==o?void 0:o.includesBaseElement,!0),orientation:I(t.orientation,null==o?void 0:o.orientation,"vertical"),focusLoop:I(t.focusLoop,null==o?void 0:o.focusLoop,!0),focusWrap:I(t.focusWrap,null==o?void 0:o.focusWrap,!0),virtualFocus:I(t.virtualFocus,null==o?void 0:o.virtualFocus,!0)}),l=function({popover:e,...t}={}){let r=td(t.store,tc(e,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));tf(t,r);let n=null==r?void 0:r.getState(),i=ru({...t,store:r}),o=I(t.placement,null==n?void 0:n.placement,"bottom"),a=ti({...i.getState(),placement:o,currentPlacement:o,anchorElement:I(null==n?void 0:n.anchorElement,null),popoverElement:I(null==n?void 0:n.popoverElement,null),arrowElement:I(null==n?void 0:n.arrowElement,null),rendered:Symbol("rendered")},i,r);return{...i,...a,setAnchorElement:e=>a.setState("anchorElement",e),setPopoverElement:e=>a.setState("popoverElement",e),setArrowElement:e=>a.setState("arrowElement",e),render:()=>a.setState("rendered",Symbol("rendered"))}}({...t,placement:I(t.placement,null==o?void 0:o.placement,"bottom-start")}),u=I(t.value,null==o?void 0:o.value,t.defaultValue,""),c=I(t.selectedValue,null==o?void 0:o.selectedValue,null==i?void 0:i.values,t.defaultSelectedValue,""),d=Array.isArray(c),f={...s.getState(),...l.getState(),value:u,selectedValue:c,resetValueOnSelect:I(t.resetValueOnSelect,null==o?void 0:o.resetValueOnSelect,d),resetValueOnHide:I(t.resetValueOnHide,null==o?void 0:o.resetValueOnHide,d&&!e),activeValue:null==o?void 0:o.activeValue},A=ti(f,s,l,r);return nG&&to(A,()=>tl(A,["virtualFocus"],()=>{A.setState("virtualFocus",!1)})),to(A,()=>{if(e)return b(tl(A,["selectedValue"],t=>{Array.isArray(t.selectedValue)&&e.setValues(t.selectedValue)}),tl(e,["values"],e=>{A.setState("selectedValue",e.values)}))}),to(A,()=>tl(A,["resetValueOnHide","mounted"],e=>{!e.resetValueOnHide||e.mounted||A.setState("value",u)})),to(A,()=>tl(A,["open"],e=>{e.open||(A.setState("activeId",a),A.setState("moves",0))})),to(A,()=>tl(A,["moves","activeId"],(e,t)=>{e.moves===t.moves&&A.setState("activeValue",void 0)})),to(A,()=>tu(A,["moves","renderedItems"],(e,t)=>{if(e.moves===t.moves)return;let{activeId:r}=A.getState(),n=s.item(r);A.setState("activeValue",null==n?void 0:n.value)})),{...l,...s,...A,tag:e,setValue:e=>A.setState("value",e),resetValue:()=>A.setState("value",f.value),setSelectedValue:e=>A.setState("selectedValue",e)}}function nw(e={}){var t,r,n,i,o,a,s,l;let u;t=e,u=nF();let[c,d]=tT(nD,e={id:V((r=t={...t,tag:void 0!==t.tag?t.tag:u}).id),...r});return q(d,[(n=e).tag]),tI(c,n,"value","setValue"),tI(c,n,"selectedValue","setSelectedValue"),tI(c,n,"resetValueOnHide"),tI(c,n,"resetValueOnSelect"),Object.assign((a=c,q(s=d,[(l=n).popover]),tI(a,l,"placement"),i=ra(a,s,l),o=i,q(d,[n.store]),tI(o,n,"items","setItems"),tI(i=o,n,"activeId","setActiveId"),tI(i,n,"includesBaseElement"),tI(i,n,"virtualFocus"),tI(i,n,"orientation"),tI(i,n,"rtl"),tI(i,n,"focusLoop"),tI(i,n,"focusWrap"),tI(i,n,"focusShift"),i),{tag:n.tag})}function nL(e={}){let t=nw(e);return(0,eo.jsx)(e5,{value:t,children:e.children})}e.s(["useComboboxStore",()=>nw],18364),e.s(["ComboboxProvider",()=>nL],78440);var n_=(0,T.createContext)(void 0),nO=eu(function(e){let[t,r]=(0,T.useState)();return R(e={role:"group","aria-labelledby":t,...e=Z(e,e=>(0,eo.jsx)(n_.Provider,{value:r,children:e}),[])})});ea(function(e){return el("div",nO(e))});var nH=eu(function({store:e,...t}){return nO(t)});ea(function(e){return el("div",nH(e))});var nP=eu(function({store:e,...t}){let r=e4();return M(e=e||r,!1),"grid"===h(e.useState("contentElement"))&&(t={role:"rowgroup",...t}),t=nH({store:e,...t})}),nJ=ea(function(e){return el("div",nP(e))});e.s(["ComboboxGroup",()=>nJ],59129);var nU=eu(function(e){let t=(0,T.useContext)(n_),r=V(e.id);return j(()=>(null==t||t(r),()=>null==t?void 0:t(void 0)),[t,r]),R(e={id:r,"aria-hidden":!0,...e})});ea(function(e){return el("div",nU(e))});var nN=eu(function({store:e,...t}){return nU(t)});ea(function(e){return el("div",nN(e))});var nk=eu(function(e){return nN(e)}),nK=ea(function(e){return el("div",nk(e))});e.s(["ComboboxGroupLabel",()=>nK],25998);var nj=e.i(38360);let nQ={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0},nX=(e,t)=>String(e.rankedValue).localeCompare(String(t.rankedValue));function nV(e,t,r={}){let{keys:n,threshold:i=nQ.MATCHES,baseSort:o=nX,sorter:a=e=>e.sort((e,t)=>(function(e,t,r){let{rank:n,keyIndex:i}=e,{rank:o,keyIndex:a}=t;return n!==o?n>o?-1:1:i===a?r(e,t):i{let s=nq(i,u,c),l=t,{minRanking:d,maxRanking:f,threshold:A}=o;return s=nQ.MATCHES?s=d:s>f&&(s=f),s>e&&(e=s,r=a,n=A,l=i),{rankedValue:l,rank:e,keyIndex:r,keyThreshold:n}},{rankedValue:s,rank:nQ.NO_MATCH,keyIndex:-1,keyThreshold:c.threshold}):{rankedValue:s,rank:nq(s,u,c),keyIndex:-1,keyThreshold:c.threshold}),{rank:f,keyThreshold:A=i}=d;return f>=A&&e.push({...d,item:o,index:a}),e},[])).map(({item:e})=>e)}function nq(e,t,r){if(e=nW(e,r),(t=nW(t,r)).length>e.length)return nQ.NO_MATCH;if(e===t)return nQ.CASE_SENSITIVE_EQUAL;let n=function*(e,t){let r=-1;for(;(r=e.indexOf(t,r+1))>-1;)yield r;return -1}(e=e.toLowerCase(),t=t.toLowerCase()),i=n.next(),o=i.value;if(e.length===t.length&&0===o)return nQ.EQUAL;if(0===o)return nQ.STARTS_WITH;let a=i;for(;!a.done;){if(a.value>0&&" "===e[a.value-1])return nQ.WORD_STARTS_WITH;a=n.next()}return o>0?nQ.CONTAINS:1===t.length?nQ.NO_MATCH:(function(e){let t="",r=" ";for(let n=0;n-1))return nQ.NO_MATCH;return r=o-s,n=i/t.length,nQ.MATCHES+1/r*n}(e,t)}function nW(e,{keepDiacritics:t}){return e=`${e}`,t||(e=(0,nj.default)(e)),e}nV.rankings=nQ;let nY={maxRanking:1/0,minRanking:-1/0};e.s(["matchSorter",()=>nV],70238)},29402,(e,t,r)=>{var n,i,o,a,s="__lodash_hash_undefined__",l=1/0,u="[object Arguments]",c="[object Array]",d="[object Boolean]",f="[object Date]",A="[object Error]",h="[object Function]",m="[object Map]",p="[object Number]",B="[object Object]",C="[object Promise]",g="[object RegExp]",v="[object Set]",y="[object String]",b="[object Symbol]",E="[object WeakMap]",M="[object ArrayBuffer]",F="[object DataView]",S=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,R=/^\w*$/,I=/^\./,T=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,x=/\\(\\)?/g,G=/^\[object .+?Constructor\]$/,D=/^(?:0|[1-9]\d*)$/,w={};w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w[u]=w[c]=w[M]=w[d]=w[F]=w[f]=w[A]=w[h]=w[m]=w[p]=w[B]=w[g]=w[v]=w[y]=w[E]=!1;var L=e.g&&e.g.Object===Object&&e.g,_="object"==typeof self&&self&&self.Object===Object&&self,O=L||_||Function("return this")(),H=r&&!r.nodeType&&r,P=H&&t&&!t.nodeType&&t,J=P&&P.exports===H&&L.process,U=function(){try{return J&&J.binding("util")}catch(e){}}(),N=U&&U.isTypedArray;function k(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r-1},eb.prototype.set=function(e,t){var r=this.__data__,n=eS(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},eE.prototype.clear=function(){this.__data__={hash:new ey,map:new(el||eb),string:new ey}},eE.prototype.delete=function(e){return eL(this,e).delete(e)},eE.prototype.get=function(e){return eL(this,e).get(e)},eE.prototype.has=function(e){return eL(this,e).has(e)},eE.prototype.set=function(e,t){return eL(this,e).set(e,t),this},eM.prototype.add=eM.prototype.push=function(e){return this.__data__.set(e,s),this},eM.prototype.has=function(e){return this.__data__.has(e)},eF.prototype.clear=function(){this.__data__=new eb},eF.prototype.delete=function(e){return this.__data__.delete(e)},eF.prototype.get=function(e){return this.__data__.get(e)},eF.prototype.has=function(e){return this.__data__.has(e)},eF.prototype.set=function(e,t){var r=this.__data__;if(r instanceof eb){var n=r.__data__;if(!el||n.length<199)return n.push([e,t]),this;r=this.__data__=new eE(n)}return r.set(e,t),this};var eR=(n=function(e,t){return e&&eI(e,t,e0)},function(e,t){if(null==e)return e;if(!eV(e))return n(e,t);for(var r=e.length,i=-1,o=Object(e);++is))return!1;var u=o.get(e);if(u&&o.get(t))return u==t;var c=-1,d=!0,f=1&i?new eM:void 0;for(o.set(e,t),o.set(t,e);++c-1&&e%1==0&&e-1&&e%1==0&&e<=0x1fffffffffffff}function eY(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function eZ(e){return!!e&&"object"==typeof e}function ez(e){return"symbol"==typeof e||eZ(e)&&ee.call(e)==b}var e$=N?K(N):function(e){return eZ(e)&&eW(e.length)&&!!w[ee.call(e)]};function e0(e){return eV(e)?function(e,t){var r=eX(e)||eQ(e)?function(e,t){for(var r=-1,n=Array(e);++rt||o&&a&&l&&!s&&!u||n&&a&&l||!r&&l||!i)return 1;if(!n&&!o&&!u&&e=s)return l;return l*("desc"==r[n]?-1:1)}}return e.index-t.index}(e,t,r)});l--;)s[l]=s[l].value;return s}(e,t,r))}},97442,e=>{e.v({Group:"MissionSelect-module__N_AIjG__Group",GroupLabel:"MissionSelect-module__N_AIjG__GroupLabel",Input:"MissionSelect-module__N_AIjG__Input",InputWrapper:"MissionSelect-module__N_AIjG__InputWrapper",Item:"MissionSelect-module__N_AIjG__Item",ItemHeader:"MissionSelect-module__N_AIjG__ItemHeader",ItemMissionName:"MissionSelect-module__N_AIjG__ItemMissionName",ItemName:"MissionSelect-module__N_AIjG__ItemName",ItemType:"MissionSelect-module__N_AIjG__ItemType",ItemTypes:"MissionSelect-module__N_AIjG__ItemTypes",List:"MissionSelect-module__N_AIjG__List",NoResults:"MissionSelect-module__N_AIjG__NoResults",Popover:"MissionSelect-module__N_AIjG__Popover",SelectedName:"MissionSelect-module__N_AIjG__SelectedName",SelectedValue:"MissionSelect-module__N_AIjG__SelectedValue",Shortcut:"MissionSelect-module__N_AIjG__Shortcut"})},38847,e=>{"use strict";var t=e.i(80902),r=e.i(22289),n=e.i(71645);function i(e,t,n){try{return e(t)}catch(e){return(0,r.l)("[nuqs] Error while parsing value `%s`: %O"+(n?" (for key `%s`)":""),t,e,n),null}}function o(e){function t(t){if(void 0===t)return null;let r="";if(Array.isArray(t)){if(void 0===t[0])return null;r=t[0]}return"string"==typeof t&&(r=t),i(e.parse,r)}return{type:"single",eq:(e,t)=>e===t,...e,parseServerSide:t,withDefault(e){return{...this,defaultValue:e,parseServerSide:r=>t(r)??e}},withOptions(e){return{...this,...e}}}}o({parse:e=>e,serialize:String}),o({parse:e=>{let t=parseInt(e);return t==t?t:null},serialize:e=>""+Math.round(e)}),o({parse:e=>{let t=parseInt(e);return t==t?t-1:null},serialize:e=>""+Math.round(e+1)}),o({parse:e=>{let t=parseInt(e,16);return t==t?t:null},serialize:e=>{let t=Math.round(e).toString(16);return(1&t.length?"0":"")+t}}),o({parse:e=>{let t=parseFloat(e);return t==t?t:null},serialize:String});let a=o({parse:e=>"true"===e.toLowerCase(),serialize:String});function s(e,t){return e.valueOf()===t.valueOf()}o({parse:e=>{let t=parseInt(e);return t==t?new Date(t):null},serialize:e=>""+e.valueOf(),eq:s}),o({parse:e=>{let t=new Date(e);return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString(),eq:s}),o({parse:e=>{let t=new Date(e.slice(0,10));return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString().slice(0,10),eq:s});let l=(0,t.r)(),u={};function c(e,r,n,o,a,s){let l=!1,u=Object.entries(e).reduce((e,[u,c])=>{var d;let f=r?.[u]??u,A=o[f],h="multi"===c.type?[]:null,m=void 0===A?("multi"===c.type?n?.getAll(f):n?.get(f))??h:A;return a&&s&&((d=a[f]??h)===m||null!==d&&null!==m&&"string"!=typeof d&&"string"!=typeof m&&d.length===m.length&&d.every((e,t)=>e===m[t]))?e[u]=s[u]??null:(l=!0,e[u]=((0,t.i)(m)?null:i(c.parse,m,f))??null,a&&(a[f]=m)),e},{});if(!l){let t=Object.keys(e),r=Object.keys(s??{});l=t.length!==r.length||t.some(e=>!r.includes(e))}return{state:u,hasChanged:l}}function d(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,e[r]??t[r]??null]))}function f(e,i={}){let{parse:o,type:a,serialize:s,eq:A,defaultValue:h,...m}=i,[{[e]:p},B]=function(e,i={}){let o=(0,n.useId)(),a=(0,r.i)(),s=(0,r.a)(),{history:f="replace",scroll:A=a?.scroll??!1,shallow:h=a?.shallow??!0,throttleMs:m=t.s.timeMs,limitUrlUpdates:p=a?.limitUrlUpdates,clearOnDefault:B=a?.clearOnDefault??!0,startTransition:C,urlKeys:g=u}=i,v=Object.keys(e).join(","),y=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(e=>[e,g[e]??e])),[v,JSON.stringify(g)]),b=(0,r.r)(Object.values(y)),E=b.searchParams,M=(0,n.useRef)({}),F=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(t=>[t,e[t].defaultValue??null])),[Object.values(e).map(({defaultValue:e})=>e).join(",")]),S=t.t.useQueuedQueries(Object.values(y)),[R,I]=(0,n.useState)(()=>c(e,g,E??new URLSearchParams,S).state),T=(0,n.useRef)(R);if((0,r.c)("[nuq+ %s `%s`] render - state: %O, iSP: %s",o,v,R,E),Object.keys(M.current).join("&")!==Object.values(y).join("&")){let{state:t,hasChanged:n}=c(e,g,E,S,M.current,T.current);n&&((0,r.c)("[nuq+ %s `%s`] State changed: %O",o,v,{state:t,initialSearchParams:E,queuedQueries:S,queryRef:M.current,stateRef:T.current}),T.current=t,I(t)),M.current=Object.fromEntries(Object.entries(y).map(([t,r])=>[r,e[t]?.type==="multi"?E?.getAll(r):E?.get(r)??null]))}(0,n.useEffect)(()=>{let{state:t,hasChanged:n}=c(e,g,E,S,M.current,T.current);n&&((0,r.c)("[nuq+ %s `%s`] State changed: %O",o,v,{state:t,initialSearchParams:E,queuedQueries:S,queryRef:M.current,stateRef:T.current}),T.current=t,I(t))},[Object.values(y).map(e=>`${e}=${E?.getAll(e)}`).join("&"),JSON.stringify(S)]),(0,n.useEffect)(()=>{let t=Object.keys(e).reduce((t,n)=>(t[n]=({state:t,query:i})=>{I(a=>{let{defaultValue:s}=e[n],l=y[n],u=t??s??null;return Object.is(a[n]??s??null,u)?((0,r.c)("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). no change, skipping, resolved: %O",o,v,l,t,s,T.current),a):(T.current={...T.current,[n]:u},M.current[l]=i,(0,r.c)("[nuq+ %s `%s`] Cross-hook key sync %s: %O (default: %O). updateInternalState, resolved: %O",o,v,l,t,s,T.current),T.current)})},t),{});for(let n of Object.keys(e)){let e=y[n];(0,r.c)("[nuq+ %s `%s`] Subscribing to sync for `%s`",o,e,v),l.on(e,t[n])}return()=>{for(let n of Object.keys(e)){let e=y[n];(0,r.c)("[nuq+ %s `%s`] Unsubscribing to sync for `%s`",o,e,v),l.off(e,t[n])}}},[v,y]);let x=(0,n.useCallback)((n,i={})=>{let a,u=Object.fromEntries(Object.keys(e).map(e=>[e,null])),c="function"==typeof n?n(d(T.current,F))??u:n??u;(0,r.c)("[nuq+ %s `%s`] setState: %O",o,v,c);let g=0,E=!1,M=[];for(let[n,o]of Object.entries(c)){let u=e[n],c=y[n];if(!u||void 0===o)continue;(i.clearOnDefault??u.clearOnDefault??B)&&null!==o&&void 0!==u.defaultValue&&(u.eq??((e,t)=>e===t))(o,u.defaultValue)&&(o=null);let d=null===o?null:(u.serialize??String)(o);l.emit(c,{state:o,query:d});let v={key:c,query:d,options:{history:i.history??u.history??f,shallow:i.shallow??u.shallow??h,scroll:i.scroll??u.scroll??A,startTransition:i.startTransition??u.startTransition??C}};if(i?.limitUrlUpdates?.method==="debounce"||p?.method==="debounce"||u.limitUrlUpdates?.method==="debounce"){!0===v.options.shallow&&console.warn((0,r.s)(422));let e=i?.limitUrlUpdates?.timeMs??p?.timeMs??u.limitUrlUpdates?.timeMs??t.s.timeMs,n=t.t.push(v,e,b,s);gt(e),E?t.n.flush(b,s):t.n.getPendingPromise(b));return a??S},[v,f,h,A,m,p?.method,p?.timeMs,C,y,b.updateUrl,b.getSearchParamsSnapshot,b.rateLimitFactor,s,F]);return[(0,n.useMemo)(()=>d(R,F),[R,F]),x]}({[e]:{parse:o??(e=>e),type:a,serialize:s,eq:A,defaultValue:h}},m);return[p,(0,n.useCallback)((t,r={})=>B(r=>({[e]:"function"==typeof t?t(r[e]):t}),r),[e,B])]}e.s(["createParser",()=>o,"parseAsBoolean",()=>a,"useQueryState",()=>f],38847)},32424,e=>{"use strict";var t=e.i(12979);function r(){return async e=>{let r;try{r=(0,t.getUrlForPath)(e)}catch(t){return console.warn(`Script not in manifest: ${e} (${t})`),null}try{let t=await fetch(r);if(!t.ok)return console.error(`Script fetch failed: ${e} (${t.status})`),null;return await t.text()}catch(t){return console.error(`Script fetch error: ${e}`),console.error(t),null}}}e.s(["createScriptLoader",()=>r])},7368,e=>{"use strict";e.s(["ignoreScripts",0,["scripts/admin.cs","scripts/ai.cs","scripts/aiBotProfiles.cs","scripts/aiBountyGame.cs","scripts/aiChat.cs","scripts/aiCnH.cs","scripts/aiCTF.cs","scripts/aiDeathMatch.cs","scripts/aiDebug.cs","scripts/aiDefaultTasks.cs","scripts/aiDnD.cs","scripts/aiHumanTasks.cs","scripts/aiHunters.cs","scripts/aiInventory.cs","scripts/aiObjectiveBuilder.cs","scripts/aiObjectives.cs","scripts/aiRabbit.cs","scripts/aiSiege.cs","scripts/aiTDM.cs","scripts/aiTeamHunters.cs","scripts/deathMessages.cs","scripts/graphBuild.cs","scripts/navGraph.cs","scripts/serverTasks.cs","scripts/spdialog.cs"]])}]); \ No newline at end of file diff --git a/docs/_not-found/__next._full.txt b/docs/_not-found/__next._full.txt index 88667d3a..dd66f8ee 100644 --- a/docs/_not-found/__next._full.txt +++ b/docs/_not-found/__next._full.txt @@ -8,7 +8,7 @@ a:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] c:I[68027,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -0:{"P":null,"b":"Dy_yQyXNreDeI2LPQRYzt","c":["","_not-found",""],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c","$undefined"],"S":true} +0:{"P":null,"b":"6xhnTWazjCi9htjLDl3f1","c":["","_not-found",""],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c","$undefined"],"S":true} 9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]] d:I[27201,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] 7:null diff --git a/docs/_not-found/__next._head.txt b/docs/_not-found/__next._head.txt index 9baf074d..ffbf2151 100644 --- a/docs/_not-found/__next._head.txt +++ b/docs/_not-found/__next._head.txt @@ -3,4 +3,4 @@ 3:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] 4:"$Sreact.suspense" 5:I[27201,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MapGenius – Explore maps for Tribes 2"}],["$","meta","1",{"name":"description","content":"Tribes 2 forever."}],["$","link","2",{"rel":"icon","href":"/t2-mapper/icon.png?icon.2911bba1.png","sizes":"108x128","type":"image/png"}],["$","$L5","3",{}]]}]}]}],null]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MapGenius – Explore maps for Tribes 2"}],["$","meta","1",{"name":"description","content":"Tribes 2 forever."}],["$","link","2",{"rel":"icon","href":"/t2-mapper/icon.png?icon.2911bba1.png","sizes":"108x128","type":"image/png"}],["$","$L5","3",{}]]}]}]}],null]}],"loading":null,"isPartial":false} diff --git a/docs/_not-found/__next._index.txt b/docs/_not-found/__next._index.txt index 96bc87a4..f8230d2e 100644 --- a/docs/_not-found/__next._index.txt +++ b/docs/_not-found/__next._index.txt @@ -3,4 +3,4 @@ 3:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 4:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/docs/_not-found/__next._not-found.__PAGE__.txt b/docs/_not-found/__next._not-found.__PAGE__.txt index 7c8a6fb9..680c3341 100644 --- a/docs/_not-found/__next._not-found.__PAGE__.txt +++ b/docs/_not-found/__next._not-found.__PAGE__.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/docs/_not-found/__next._not-found.txt b/docs/_not-found/__next._not-found.txt index 171efd89..0b76f1d5 100644 --- a/docs/_not-found/__next._not-found.txt +++ b/docs/_not-found/__next._not-found.txt @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 3:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/docs/_not-found/__next._tree.txt b/docs/_not-found/__next._tree.txt index 4a3e3c87..7b3d425a 100644 --- a/docs/_not-found/__next._tree.txt +++ b/docs/_not-found/__next._tree.txt @@ -1,2 +1,2 @@ :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/docs/_not-found/index.html b/docs/_not-found/index.html index 6f55ee4d..b69d086f 100644 --- a/docs/_not-found/index.html +++ b/docs/_not-found/index.html @@ -1 +1 @@ -404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.MapGenius – Explore maps for Tribes 2

404

This page could not be found.

\ No newline at end of file diff --git a/docs/_not-found/index.txt b/docs/_not-found/index.txt index 88667d3a..dd66f8ee 100644 --- a/docs/_not-found/index.txt +++ b/docs/_not-found/index.txt @@ -8,7 +8,7 @@ a:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] c:I[68027,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -0:{"P":null,"b":"Dy_yQyXNreDeI2LPQRYzt","c":["","_not-found",""],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c","$undefined"],"S":true} +0:{"P":null,"b":"6xhnTWazjCi9htjLDl3f1","c":["","_not-found",""],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c","$undefined"],"S":true} 9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]] d:I[27201,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] 7:null diff --git a/docs/index.html b/docs/index.html index 98040bc0..7382a60c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -MapGenius – Explore maps for Tribes 2 \ No newline at end of file +MapGenius – Explore maps for Tribes 2 \ No newline at end of file diff --git a/docs/index.txt b/docs/index.txt index b6f41c39..f349044e 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -3,16 +3,16 @@ 3:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 4:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 5:I[47257,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] -6:I[31713,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/f4c5b6b3116ac3bb.js","/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","/t2-mapper/_next/static/chunks/19dee6e9ded353fa.js","/t2-mapper/_next/static/chunks/94212136ebe55507.js","/t2-mapper/_next/static/chunks/1f24b5e35a3d7706.js","/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js"],"default"] +6:I[31713,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/29cbf5720c3c6313.js","/t2-mapper/_next/static/chunks/90c5f23d057a7dda.js","/t2-mapper/_next/static/chunks/c0475cead0a67c33.js","/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","/t2-mapper/_next/static/chunks/d96f10e4606ed566.js","/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/94212136ebe55507.js"],"default"] 9:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] a:"$Sreact.suspense" c:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] e:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] 10:I[68027,[],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -:HL["/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","style"] +:HL["/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","style"] :HL["/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","style"] -0:{"P":null,"b":"Dy_yQyXNreDeI2LPQRYzt","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/f4c5b6b3116ac3bb.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/19dee6e9ded353fa.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/94212136ebe55507.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/1f24b5e35a3d7706.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","async":true,"nonce":"$undefined"}],["$","script","script-6",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"6xhnTWazjCi9htjLDl3f1","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3a7943ba4f8effca.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/29cbf5720c3c6313.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/90c5f23d057a7dda.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/c0475cead0a67c33.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/07f1e4bb8e7d8066.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/d96f10e4606ed566.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/44bbdd420cb3ec27.js","async":true,"nonce":"$undefined"}],["$","script","script-6",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true,"nonce":"$undefined"}],["$","script","script-7",{"src":"/t2-mapper/_next/static/chunks/94212136ebe55507.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]] diff --git a/docs/shapes/__next._full.txt b/docs/shapes/__next._full.txt index 09220c53..970a188e 100644 --- a/docs/shapes/__next._full.txt +++ b/docs/shapes/__next._full.txt @@ -3,15 +3,15 @@ 3:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 4:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 5:I[47257,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] -6:I[39724,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/f299abcdb625bb54.js","/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","/t2-mapper/_next/static/chunks/325897a61efa2ade.js"],"default"] +6:I[39724,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/91476c9d2f29d071.js","/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","/t2-mapper/_next/static/chunks/fe8d2153bfb8c263.js"],"default"] 9:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] a:"$Sreact.suspense" c:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] e:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] 10:I[68027,[],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -:HL["/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","style"] -0:{"P":null,"b":"Dy_yQyXNreDeI2LPQRYzt","c":["","shapes",""],"q":"","i":false,"f":[[["",{"children":["shapes",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/f299abcdb625bb54.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/325897a61efa2ade.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +:HL["/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","style"] +0:{"P":null,"b":"6xhnTWazjCi9htjLDl3f1","c":["","shapes",""],"q":"","i":false,"f":[[["",{"children":["shapes",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/91476c9d2f29d071.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/fe8d2153bfb8c263.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]] diff --git a/docs/shapes/__next._head.txt b/docs/shapes/__next._head.txt index d8bb0d98..171861f4 100644 --- a/docs/shapes/__next._head.txt +++ b/docs/shapes/__next._head.txt @@ -3,4 +3,4 @@ 3:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] 4:"$Sreact.suspense" 5:I[27201,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"IconMark"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MapGenius – Explore maps for Tribes 2"}],["$","meta","1",{"name":"description","content":"Tribes 2 forever."}],["$","link","2",{"rel":"icon","href":"/t2-mapper/icon.png?icon.2911bba1.png","sizes":"108x128","type":"image/png"}],["$","$L5","3",{}]]}]}]}],null]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MapGenius – Explore maps for Tribes 2"}],["$","meta","1",{"name":"description","content":"Tribes 2 forever."}],["$","link","2",{"rel":"icon","href":"/t2-mapper/icon.png?icon.2911bba1.png","sizes":"108x128","type":"image/png"}],["$","$L5","3",{}]]}]}]}],null]}],"loading":null,"isPartial":false} diff --git a/docs/shapes/__next._index.txt b/docs/shapes/__next._index.txt index 96bc87a4..f8230d2e 100644 --- a/docs/shapes/__next._index.txt +++ b/docs/shapes/__next._index.txt @@ -3,4 +3,4 @@ 3:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 4:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/docs/shapes/__next._tree.txt b/docs/shapes/__next._tree.txt index ce718e79..48adfd6c 100644 --- a/docs/shapes/__next._tree.txt +++ b/docs/shapes/__next._tree.txt @@ -1,3 +1,3 @@ :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -:HL["/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","style"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"shapes","paramType":null,"paramKey":"shapes","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +:HL["/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","style"] +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"shapes","paramType":null,"paramKey":"shapes","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/docs/shapes/__next.shapes.__PAGE__.txt b/docs/shapes/__next.shapes.__PAGE__.txt index d36e94da..9dbdd6d6 100644 --- a/docs/shapes/__next.shapes.__PAGE__.txt +++ b/docs/shapes/__next.shapes.__PAGE__.txt @@ -1,10 +1,10 @@ 1:"$Sreact.fragment" 2:I[47257,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] -3:I[39724,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/f299abcdb625bb54.js","/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","/t2-mapper/_next/static/chunks/325897a61efa2ade.js"],"default"] +3:I[39724,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/91476c9d2f29d071.js","/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","/t2-mapper/_next/static/chunks/fe8d2153bfb8c263.js"],"default"] 6:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] 7:"$Sreact.suspense" -:HL["/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","style"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","async":true}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/f299abcdb625bb54.js","async":true}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","async":true}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","async":true}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/325897a61efa2ade.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +:HL["/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","style"] +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","precedence":"next"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","async":true}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/91476c9d2f29d071.js","async":true}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","async":true}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","async":true}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/fe8d2153bfb8c263.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/docs/shapes/__next.shapes.txt b/docs/shapes/__next.shapes.txt index 171efd89..0b76f1d5 100644 --- a/docs/shapes/__next.shapes.txt +++ b/docs/shapes/__next.shapes.txt @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 3:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] -0:{"buildId":"Dy_yQyXNreDeI2LPQRYzt","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"6xhnTWazjCi9htjLDl3f1","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/docs/shapes/index.html b/docs/shapes/index.html index 2011bd49..6d92c190 100644 --- a/docs/shapes/index.html +++ b/docs/shapes/index.html @@ -1 +1 @@ -MapGenius – Explore maps for Tribes 2 \ No newline at end of file +MapGenius – Explore maps for Tribes 2 \ No newline at end of file diff --git a/docs/shapes/index.txt b/docs/shapes/index.txt index 09220c53..970a188e 100644 --- a/docs/shapes/index.txt +++ b/docs/shapes/index.txt @@ -3,15 +3,15 @@ 3:I[39756,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 4:I[37457,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"default"] 5:I[47257,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ClientPageRoot"] -6:I[39724,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/f299abcdb625bb54.js","/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","/t2-mapper/_next/static/chunks/325897a61efa2ade.js"],"default"] +6:I[39724,["/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","/t2-mapper/_next/static/chunks/153d5796298dee1e.js","/t2-mapper/_next/static/chunks/91476c9d2f29d071.js","/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","/t2-mapper/_next/static/chunks/fe8d2153bfb8c263.js"],"default"] 9:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"OutletBoundary"] a:"$Sreact.suspense" c:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"ViewportBoundary"] e:I[97367,["/t2-mapper/_next/static/chunks/2f236954d6a65e12.js"],"MetadataBoundary"] 10:I[68027,[],"default"] :HL["/t2-mapper/_next/static/chunks/e620039d1c837dab.css","style"] -:HL["/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","style"] -0:{"P":null,"b":"Dy_yQyXNreDeI2LPQRYzt","c":["","shapes",""],"q":"","i":false,"f":[[["",{"children":["shapes",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/b238e7ff5406aa8f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/f299abcdb625bb54.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/325897a61efa2ade.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +:HL["/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","style"] +0:{"P":null,"b":"6xhnTWazjCi9htjLDl3f1","c":["","shapes",""],"q":"","i":false,"f":[[["",{"children":["shapes",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/e620039d1c837dab.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/89fcb9c19e93d0ef.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"defaultOptions":{"clearOnDefault":false},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/t2-mapper/_next/static/chunks/3e57999e46d7efb4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/t2-mapper/_next/static/chunks/b00acbf8afd8b4b6.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/t2-mapper/_next/static/chunks/153d5796298dee1e.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/t2-mapper/_next/static/chunks/91476c9d2f29d071.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/t2-mapper/_next/static/chunks/53a9c1169e187e33.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/t2-mapper/_next/static/chunks/20b7c805b0b1f5f3.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/t2-mapper/_next/static/chunks/fe8d2153bfb8c263.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]] diff --git a/src/components/AudioContext.tsx b/src/components/AudioContext.tsx index 9f9f1a8f..f9d259ca 100644 --- a/src/components/AudioContext.tsx +++ b/src/components/AudioContext.tsx @@ -7,6 +7,7 @@ import { } from "react"; import { useThree } from "@react-three/fiber"; import { AudioListener, AudioLoader } from "three"; +import { engineStore } from "../state"; interface AudioContextType { audioLoader: AudioLoader | null; @@ -44,6 +45,26 @@ export function AudioProvider({ children }: { children: ReactNode }) { audioLoader, audioListener: listener, }); + + // Suspend/resume the Web AudioContext when demo playback pauses/resumes. + // This freezes all playing sounds at their current position rather than + // stopping them, so they resume seamlessly. + const unsubscribe = engineStore.subscribe( + (state) => state.playback.status, + (status) => { + const ctx = listener?.context; + if (!ctx) return; + if (status === "paused") { + ctx.suspend(); + } else if (status === "playing" && ctx.state === "suspended") { + ctx.resume(); + } + }, + ); + + return () => { + unsubscribe(); + }; }, [camera]); return ( diff --git a/src/components/AudioEmitter.tsx b/src/components/AudioEmitter.tsx index 93fa29b9..277081ac 100644 --- a/src/components/AudioEmitter.tsx +++ b/src/components/AudioEmitter.tsx @@ -14,10 +14,44 @@ import { audioToUrl } from "../loaders"; import { useAudio } from "./AudioContext"; import { useDebug, useSettings } from "./SettingsProvider"; import { FloatingLabel } from "./FloatingLabel"; +import { engineStore } from "../state"; // Global audio buffer cache shared across all audio components. export const audioBufferCache = new Map(); +// ── Demo sound rate tracking ── +// Track active demo sounds so their playbackRate can be updated when the +// playback rate changes (e.g. slow-motion or fast-forward). +// Maps each sound to its intrinsic pitch (1.0 for normal sounds, or the +// voice pitch multiplier for chat sounds). +const _activeDemoSounds = new Map, number>(); + +/** Register a sound for automatic playback rate tracking. */ +export function trackDemoSound( + sound: Audio, + basePitch = 1, +): void { + _activeDemoSounds.set(sound, basePitch); +} + +/** Unregister a tracked demo sound. */ +export function untrackDemoSound(sound: Audio): void { + _activeDemoSounds.delete(sound); +} + +engineStore.subscribe( + (state) => state.playback.rate, + (rate) => { + for (const [sound, basePitch] of _activeDemoSounds) { + try { + sound.setPlaybackRate(basePitch * rate); + } catch { + // Sound may have been disposed. + } + } + }, +); + export interface ResolvedAudioProfile { filename: string; is3D: boolean; @@ -73,6 +107,7 @@ export function playOneShotSound( // File not in manifest — skip silently. return; } + const rate = engineStore.getState().playback.rate; getCachedAudioBuffer(url, audioLoader, (buffer) => { try { if (resolved.is3D && parent) { @@ -85,12 +120,15 @@ export function playOneShotSound( sound.setMaxDistance(resolved.maxDist); sound.setRolloffFactor(1); sound.setVolume(resolved.volume); + sound.setPlaybackRate(rate); if (position) { sound.position.copy(position); } parent.add(sound); + _activeDemoSounds.set(sound, 1); sound.play(); sound.source!.onended = () => { + _activeDemoSounds.delete(sound); sound.disconnect(); parent.remove(sound); }; @@ -98,8 +136,11 @@ export function playOneShotSound( const sound = new Audio(audioListener); sound.setBuffer(buffer); sound.setVolume(resolved.volume); + sound.setPlaybackRate(rate); + _activeDemoSounds.set(sound, 1); sound.play(); sound.source!.onended = () => { + _activeDemoSounds.delete(sound); sound.disconnect(); }; } diff --git a/src/components/ChatSoundPlayer.tsx b/src/components/ChatSoundPlayer.tsx index df73c208..ec150b6d 100644 --- a/src/components/ChatSoundPlayer.tsx +++ b/src/components/ChatSoundPlayer.tsx @@ -2,9 +2,9 @@ import { useEffect, useRef } from "react"; import { Audio } from "three"; import { audioToUrl } from "../loaders"; import { useAudio } from "./AudioContext"; -import { getCachedAudioBuffer } from "./AudioEmitter"; +import { getCachedAudioBuffer, trackDemoSound, untrackDemoSound } from "./AudioEmitter"; import { useSettings } from "./SettingsProvider"; -import { useEngineSelector } from "../state"; +import { engineStore, useEngineSelector } from "../state"; import type { DemoChatMessage } from "../demo/types"; /** @@ -21,7 +21,12 @@ export function ChatSoundPlayer() { const timeSec = useEngineSelector( (state) => state.playback.streamSnapshot?.timeSec, ); - const playedCountRef = useRef(0); + const playedSetRef = useRef(new WeakSet()); + // Track active voice chat sound per sender so a new voice bind from the + // same player stops their previous one (matching Tribes 2 behavior). + const activeBySenderRef = useRef( + new Map>(), + ); useEffect(() => { if ( @@ -33,32 +38,51 @@ export function ChatSoundPlayer() { ) { return; } - const startIdx = playedCountRef.current; - for (let i = startIdx; i < messages.length; i++) { - const msg: DemoChatMessage = messages[i]; + const played = playedSetRef.current; + const activeBySender = activeBySenderRef.current; + for (const msg of messages) { + if (played.has(msg)) continue; + played.add(msg); if (!msg.soundPath) continue; // Skip sounds that are too old (e.g. after seeking). if (Math.abs(timeSec - msg.timeSec) > 2) continue; try { const url = audioToUrl(msg.soundPath); const pitch = msg.soundPitch ?? 1; + const rate = engineStore.getState().playback.rate; + const sender = msg.sender; getCachedAudioBuffer(url, audioLoader, (buffer) => { + // Stop the sender's previous voice chat sound. + if (sender) { + const prev = activeBySender.get(sender); + if (prev) { + try { prev.stop(); } catch {} + untrackDemoSound(prev); + prev.disconnect(); + activeBySender.delete(sender); + } + } const sound = new Audio(audioListener); sound.setBuffer(buffer); - if (pitch !== 1) { - sound.setPlaybackRate(pitch); + sound.setPlaybackRate(pitch * rate); + trackDemoSound(sound, pitch); + if (sender) { + activeBySender.set(sender, sound); } sound.play(); // Clean up the source node once playback finishes. sound.source!.onended = () => { + untrackDemoSound(sound); sound.disconnect(); + if (sender && activeBySender.get(sender) === sound) { + activeBySender.delete(sender); + } }; }); } catch { // File not in manifest — skip silently. } } - playedCountRef.current = messages.length; }, [audioEnabled, audioLoader, audioListener, messages, timeSec]); return null; diff --git a/src/components/DemoEntities.tsx b/src/components/DemoEntities.tsx index 124430db..b2f9eca0 100644 --- a/src/components/DemoEntities.tsx +++ b/src/components/DemoEntities.tsx @@ -1,14 +1,15 @@ -import { Component, Suspense } from "react"; +import { Component, memo, Suspense } from "react"; import type { ErrorInfo, MutableRefObject, ReactNode } from "react"; import { entityTypeColor } from "../demo/demoPlaybackUtils"; import { FloatingLabel } from "./FloatingLabel"; import { useDebug } from "./SettingsProvider"; import { DemoPlayerModel } from "./DemoPlayerModel"; -import { DemoShapeModel, DemoWeaponModel } from "./DemoShapeModel"; +import { DemoShapeModel, DemoWeaponModel, DemoExplosionShape } from "./DemoShapeModel"; import { DemoSpriteProjectile, DemoTracerProjectile } from "./DemoProjectiles"; import { PlayerNameplate } from "./PlayerNameplate"; +import { FlagMarker } from "./FlagMarker"; import { useEngineSelector } from "../state"; -import type { DemoEntity } from "../demo/types"; +import type { DemoEntity, DemoStreamingPlayback } from "../demo/types"; /** * Renders a non-camera demo entity. @@ -16,12 +17,14 @@ import type { DemoEntity } from "../demo/types"; * Player entities use DemoPlayerModel for skeletal animation; others use * DemoShapeModel. */ -export function DemoEntityGroup({ +export const DemoEntityGroup = memo(function DemoEntityGroup({ entity, timeRef, + playback, }: { entity: DemoEntity; timeRef: MutableRefObject; + playback?: DemoStreamingPlayback; }) { const debug = useDebug(); const debugMode = debug?.debugMode ?? false; @@ -57,6 +60,7 @@ export function DemoEntityGroup({ } if (!entity.dataBlock) { + const isFlag = ((entity.targetRenderFlags ?? 0) & 0x2) !== 0; return ( @@ -66,6 +70,11 @@ export function DemoEntityGroup({ {debugMode ? : null} + {isFlag && ( + + + + )} ); } @@ -80,6 +89,7 @@ export function DemoEntityGroup({ // Player entities use skeleton-preserving DemoPlayerModel for animation. if (entity.type === "Player") { const isControlPlayer = entity.id === controlPlayerGhostId; + const hasFlag = ((entity.targetRenderFlags ?? 0) & 0x2) !== 0; return ( @@ -93,11 +103,34 @@ export function DemoEntityGroup({ )} + {hasFlag && ( + + + + )} ); } + // Explosion entities with DTS shapes use a specialized renderer + // that handles faceViewer, size keyframes, and fade-out. + if (entity.type === "Explosion" && entity.dataBlock && playback) { + return ( + + + + + + + + + + ); + } + + const isFlag = ((entity.targetRenderFlags ?? 0) & 0x2) !== 0; + return ( @@ -119,9 +152,14 @@ export function DemoEntityGroup({ )} + {isFlag && ( + + + + )} ); -} +}); export function DemoMissingShapeLabel({ entity }: { entity: DemoEntity }) { const id = String(entity.id); diff --git a/src/components/DemoParticleEffects.tsx b/src/components/DemoParticleEffects.tsx index 85bc95ca..ea4e94e8 100644 --- a/src/components/DemoParticleEffects.tsx +++ b/src/components/DemoParticleEffects.tsx @@ -3,7 +3,9 @@ import { useFrame, useThree } from "@react-three/fiber"; import { AdditiveBlending, BoxGeometry, + BufferAttribute, BufferGeometry, + CanvasTexture, DataTexture, DoubleSide, Float32BufferAttribute, @@ -15,6 +17,8 @@ import { RGBAFormat, ShaderMaterial, SphereGeometry, + Sprite, + SpriteMaterial, Texture, Uint16BufferAttribute, UnsignedByteType, @@ -42,7 +46,10 @@ import { resolveAudioProfile, playOneShotSound, getCachedAudioBuffer, + trackDemoSound, + untrackDemoSound, } from "./AudioEmitter"; +import { demoEffectNow, engineStore } from "../state"; // ── Constants ── @@ -92,10 +99,357 @@ const _debugOriginMat = new MeshBasicMaterial({ color: 0xff0000, wireframe: true const _debugParticleGeo = new BoxGeometry(0.3, 0.3, 0.3); const _debugParticleMat = new MeshBasicMaterial({ color: 0x00ff00, wireframe: true }); -// ── sRGB → linear conversion for shader attributes ── +// ── Explosion wireframe sphere geometry (reusable) ── -function srgbToLinear(c: number): number { - return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4); +const _explosionSphereGeo = new SphereGeometry(1, 12, 8); + +interface ActiveExplosionSphere { + entityId: string; + mesh: Mesh; + material: MeshBasicMaterial; + label: Sprite; + labelMaterial: SpriteMaterial; + creationTime: number; + lifetimeMS: number; + targetRadius: number; +} + +/** Create a text label sprite for an explosion sphere. */ +function createExplosionLabel(text: string, color: number): { sprite: Sprite; material: SpriteMaterial } { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d")!; + const fontSize = 32; + ctx.font = `bold ${fontSize}px monospace`; + const metrics = ctx.measureText(text); + const padding = 8; + canvas.width = Math.ceil(metrics.width) + padding * 2; + canvas.height = fontSize + padding * 2; + + // Redraw with correct canvas size. + ctx.font = `bold ${fontSize}px monospace`; + ctx.fillStyle = `#${color.toString(16).padStart(6, "0")}`; + ctx.textBaseline = "middle"; + ctx.fillText(text, padding, canvas.height / 2); + + const texture = new CanvasTexture(canvas); + const material = new SpriteMaterial({ + map: texture, + transparent: true, + depthTest: false, + depthWrite: false, + }); + const sprite = new Sprite(material); + // Scale to be readable in world space (roughly 1 unit tall). + const aspect = canvas.width / canvas.height; + sprite.scale.set(aspect * 2, 2, 1); + return { sprite, material }; +} + +// ── Shockwave ring rendering ── + +interface ShockwaveData { + width: number; + numSegments: number; + velocity: number; + height: number; + verticalCurve: number; + acceleration: number; + texWrap: number; + lifetimeMS: number; + is2D: boolean; + renderSquare: boolean; + renderBottom: boolean; + mapToTerrain: boolean; + colors: { r: number; g: number; b: number; a: number }[]; + times: number[]; + textureName: string; + mapToTexture: string; +} + +interface ActiveShockwave { + entityId: string; + mesh: Mesh; + bottomMesh: Mesh | null; + geometry: BufferGeometry; + bottomGeometry: BufferGeometry | null; + material: ShaderMaterial; + creationTime: number; + lifetimeMS: number; + data: ShockwaveData; + radius: number; + velocity: number; +} + +/** Resolve a ShockwaveData datablock from an explosion's shockwave ref. */ +function resolveShockwaveData( + shockwaveId: number, + getDataBlockData: (id: number) => Record | undefined, +): ShockwaveData | null { + const raw = getDataBlockData(shockwaveId); + if (!raw) return null; + + const colors = (raw.colors as ShockwaveData["colors"]) ?? []; + const times = (raw.times as number[]) ?? [0, 0.5, 1, 1]; + + return { + width: (raw.width as number) ?? 1, + numSegments: Math.max((raw.numSegments as number) ?? 16, 4), + velocity: (raw.velocity as number) ?? 0, + height: (raw.height as number) ?? 0, + verticalCurve: (raw.verticalCurve as number) ?? 0, + acceleration: (raw.acceleration as number) ?? 0, + texWrap: (raw.texWrap as number) ?? 1, + lifetimeMS: (raw.lifetimeMS as number) ?? 500, + is2D: !!raw.is2D, + renderSquare: !!raw.renderSquare, + renderBottom: !!raw.renderBottom, + mapToTerrain: !!raw.mapToTerrain, + colors, + times, + textureName: (raw.textureName as string) ?? "", + mapToTexture: (raw.mapToTexture as string) ?? "", + }; +} + +/** Interpolate RGBA color from shockwave keyframes at normalized time t. */ +function interpolateShockwaveColor( + data: ShockwaveData, + t: number, +): [number, number, number, number] { + const { colors, times } = data; + if (colors.length === 0) return [1, 1, 1, 1]; + + // Find the active keyframe segment. + let idx = 0; + for (let i = 0; i < times.length - 1; i++) { + if (t >= times[i]) idx = i; + } + const nextIdx = Math.min(idx + 1, colors.length - 1); + + const t0 = times[idx] ?? 0; + const t1 = times[nextIdx] ?? 1; + const span = t1 - t0; + const frac = span > 0 ? Math.min((t - t0) / span, 1) : 0; + + const c0 = colors[idx] ?? colors[0]; + const c1 = colors[nextIdx] ?? colors[0]; + + return [ + c0.r + (c1.r - c0.r) * frac, + c0.g + (c1.g - c0.g) * frac, + c0.b + (c1.b - c0.b) * frac, + c0.a + (c1.a - c0.a) * frac, + ]; +} + +// Shockwave ring shader — additive blending, vertex colors with alpha. +const shockwaveVertexShader = /* glsl */ ` + attribute vec4 vertexColor; + attribute vec2 texCoord; + varying vec4 vColor; + varying vec2 vUV; + void main() { + vColor = vertexColor; + vUV = texCoord; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } +`; + +const shockwaveFragmentShader = /* glsl */ ` + uniform sampler2D uTexture; + varying vec4 vColor; + varying vec2 vUV; + void main() { + vec4 tex = texture2D(uTexture, vUV); + gl_FragColor = vec4(vColor.rgb * tex.rgb, vColor.a * tex.a); + } +`; + +/** + * Create ring geometry buffers for a shockwave with the given segment count. + * Each segment is a quad (2 triangles) between inner and outer ring vertices. + * Returns the geometry with position, texCoord, vertexColor attributes and + * index buffer pre-allocated for numSegments quads. + */ +function createShockwaveGeometry(numSegments: number): BufferGeometry { + // 2 vertices per segment (inner + outer) + 2 to close the loop. + const numVerts = (numSegments + 1) * 2; + const positions = new Float32Array(numVerts * 3); + const texCoords = new Float32Array(numVerts * 2); + const vertexColors = new Float32Array(numVerts * 4); + + // 2 triangles per segment = 6 indices. + const numIndices = numSegments * 6; + const indices = new Uint16Array(numIndices); + + for (let i = 0; i < numSegments; i++) { + const base = i * 2; + const j = i * 6; + // Outer-inner-outer, inner-inner-outer (CCW winding). + indices[j] = base; + indices[j + 1] = base + 1; + indices[j + 2] = base + 2; + indices[j + 3] = base + 1; + indices[j + 4] = base + 3; + indices[j + 5] = base + 2; + } + + const geo = new BufferGeometry(); + const posAttr = new BufferAttribute(positions, 3); + posAttr.setUsage(35048); // DynamicDrawUsage + geo.setAttribute("position", posAttr); + + const texAttr = new BufferAttribute(texCoords, 2); + texAttr.setUsage(35048); + geo.setAttribute("texCoord", texAttr); + + const colorAttr = new BufferAttribute(vertexColors, 4); + colorAttr.setUsage(35048); + geo.setAttribute("vertexColor", colorAttr); + + geo.setIndex(new BufferAttribute(indices, 1)); + + return geo; +} + +/** + * Update shockwave ring vertex positions, UVs, and colors for the current + * frame. Implements the V12 renderWave algorithm: an expanding annular ring + * with optional height on the outer edge. + */ +function updateShockwaveGeometry( + geo: BufferGeometry, + sw: ShockwaveData, + radius: number, + color: [number, number, number, number], + is2D: boolean, +): void { + const posArr = (geo.getAttribute("position") as BufferAttribute) + .array as Float32Array; + const texArr = (geo.getAttribute("texCoord") as BufferAttribute) + .array as Float32Array; + const colArr = (geo.getAttribute("vertexColor") as BufferAttribute) + .array as Float32Array; + + const innerRad = Math.max(radius - sw.width * 0.5, 0); + const outerRad = radius + sw.width * 0.5; + const numSegs = sw.numSegments; + + // Pass colors as-is (gamma space) — ShaderMaterial has no automatic + // output encoding, matching V12's direct gamma-space rendering. + const lr = color[0]; + const lg = color[1]; + const lb = color[2]; + const la = color[3]; + + for (let i = 0; i <= numSegs; i++) { + const angle = (i / numSegs) * Math.PI * 2; + const cos = Math.cos(angle); + const sin = Math.sin(angle); + + // In Three.js space: ring lies in XZ plane, Y is up. + const outerIdx = i * 2; + const innerIdx = outerIdx + 1; + + // Outer vertex — raised by height along Y. + const opi = outerIdx * 3; + posArr[opi] = cos * outerRad; + posArr[opi + 1] = is2D ? 0 : sw.height; + posArr[opi + 2] = sin * outerRad; + + // Inner vertex — on ground plane. + const ipi = innerIdx * 3; + posArr[ipi] = cos * innerRad; + posArr[ipi + 1] = 0; + posArr[ipi + 2] = sin * innerRad; + + // UV: U wraps around ring, V spans inner→outer. + const u = (i / numSegs) * sw.texWrap; + const oti = outerIdx * 2; + texArr[oti] = u; + texArr[oti + 1] = 0.05; // outer edge + + const iti = innerIdx * 2; + texArr[iti] = u; + texArr[iti + 1] = 0.95; // inner edge + + // Vertex colors (uniform across ring). + const oci = outerIdx * 4; + colArr[oci] = lr; + colArr[oci + 1] = lg; + colArr[oci + 2] = lb; + colArr[oci + 3] = la; + + const ici = innerIdx * 4; + colArr[ici] = lr; + colArr[ici + 1] = lg; + colArr[ici + 2] = lb; + colArr[ici + 3] = la; + } + + geo.getAttribute("position").needsUpdate = true; + geo.getAttribute("texCoord").needsUpdate = true; + geo.getAttribute("vertexColor").needsUpdate = true; + geo.computeBoundingSphere(); +} + +/** Create the ShaderMaterial for a shockwave ring. */ +function createShockwaveMaterial(texture: Texture): ShaderMaterial { + return new ShaderMaterial({ + vertexShader: shockwaveVertexShader, + fragmentShader: shockwaveFragmentShader, + uniforms: { uTexture: { value: texture } }, + transparent: true, + depthWrite: false, + blending: AdditiveBlending, + side: DoubleSide, + }); +} + +/** Map explosion dataBlock shape name to a debug wireframe color. */ +function getExplosionColor(dataBlock: string | undefined): number { + if (!dataBlock) return 0xff00ff; + const name = dataBlock.toLowerCase(); + if (name.includes("disc")) return 0x4488ff; + if (name.includes("grenade")) return 0xff8800; + if (name.includes("mortar")) return 0xff4400; + if (name.includes("plasma")) return 0x44ff44; + if (name.includes("laser")) return 0xff2222; + if (name.includes("blaster")) return 0xffff00; + if (name.includes("missile")) return 0xff6600; + if (name.includes("bomb")) return 0xff0000; + if (name.includes("mine")) return 0xff8844; + if (name.includes("concussion")) return 0xffaa00; + if (name.includes("shocklance")) return 0x8844ff; + if (name.includes("chaingun") || name.includes("bullet")) return 0xcccccc; + return 0xff00ff; +} + +/** + * Extract approximate radius from an ExplosionData datablock's `sizes` array. + * Each entry is `{x, y, z}` with values in range 0–16000 (scale multiplier). + * Falls back to `particleRadius` or a default of 5. + */ +function getExplosionRadius( + expBlock: Record, +): number { + const sizes = expBlock.sizes as Array<{ x: number; y: number; z: number }> | undefined; + if (Array.isArray(sizes) && sizes.length > 0) { + let maxVal = 0; + for (const s of sizes) { + maxVal = Math.max(maxVal, s.x, s.y, s.z); + } + if (maxVal > 0) { + // Values are in 0–16000 range, treat as a scale factor. + // Typical explosions have values like 2000–8000; map to reasonable world radii. + return maxVal / 1000; + } + } + const particleRadius = expBlock.particleRadius as number | undefined; + if (typeof particleRadius === "number" && particleRadius > 0) { + return particleRadius; + } + return 5; } // ── Geometry builder ── @@ -129,6 +483,7 @@ function createParticleGeometry(maxParticles: number): BufferGeometry { const colors = new Float32Array(vertCount * 4); const sizes = new Float32Array(vertCount); const spins = new Float32Array(vertCount); + const orientDirs = new Float32Array(vertCount * 3); geo.setIndex(new Uint16BufferAttribute(indices, 1)); geo.setAttribute("quadCorner", new Float32BufferAttribute(corners, 2)); @@ -136,6 +491,7 @@ function createParticleGeometry(maxParticles: number): BufferGeometry { geo.setAttribute("particleColor", new Float32BufferAttribute(colors, 4)); geo.setAttribute("particleSize", new Float32BufferAttribute(sizes, 1)); geo.setAttribute("particleSpin", new Float32BufferAttribute(spins, 1)); + geo.setAttribute("orientDir", new Float32BufferAttribute(orientDirs, 3)); geo.setDrawRange(0, 0); return geo; @@ -144,6 +500,7 @@ function createParticleGeometry(maxParticles: number): BufferGeometry { function createParticleMaterial( texture: Texture, useInvAlpha: boolean, + orientParticles = false, ): ShaderMaterial { // Use the placeholder until the real texture's image data is ready. const ready = _texturesReady.has(texture); @@ -153,6 +510,8 @@ function createParticleMaterial( uniforms: { particleTexture: { value: ready ? texture : _placeholderTexture }, hasTexture: { value: true }, + debugOpacity: { value: 1.0 }, + uOrientParticles: { value: orientParticles }, }, transparent: true, depthWrite: false, @@ -178,6 +537,8 @@ interface ActiveEmitter { shaderChecked?: boolean; /** Entity ID this emitter follows (for projectile trails). */ followEntityId?: string; + /** Emission axis in Torque space (defaults to [0,0,1] = up). */ + emitAxis?: [number, number, number]; /** Debug: origin marker mesh. */ debugOriginMesh?: Mesh; /** Debug: particle marker meshes. */ @@ -268,13 +629,16 @@ function syncBuffers(active: ActiveEmitter): void { const colorAttr = geo.getAttribute("particleColor") as Float32BufferAttribute; const sizeAttr = geo.getAttribute("particleSize") as Float32BufferAttribute; const spinAttr = geo.getAttribute("particleSpin") as Float32BufferAttribute; + const orientAttr = geo.getAttribute("orientDir") as Float32BufferAttribute; const posArr = posAttr.array as Float32Array; const colArr = colorAttr.array as Float32Array; const sizeArr = sizeAttr.array as Float32Array; const spinArr = spinAttr.array as Float32Array; + const orientArr = orientAttr.array as Float32Array; const count = Math.min(particles.length, MAX_PARTICLES_PER_EMITTER); + const useVelocity = active.emitter.data.orientOnVelocity; for (let i = 0; i < count; i++) { const p = particles[i]; @@ -284,10 +648,19 @@ function syncBuffers(active: ActiveEmitter): void { const ty = p.pos[2]; const tz = p.pos[0]; - // Convert sRGB particle colors to linear for the shader. - const lr = srgbToLinear(p.r); - const lg = srgbToLinear(p.g); - const lb = srgbToLinear(p.b); + // Orient direction: use velocity or initial orientDir, swizzled. + const dir = useVelocity ? p.vel : p.orientDir; + const odx = dir[1]; + const ody = dir[2]; + const odz = dir[0]; + + // Pass particle colors as-is (sRGB / gamma space). ShaderMaterial does + // not get automatic linear→sRGB output encoding, so linearizing here + // would darken colors without compensation — matching V12's direct + // gamma-space rendering. + const lr = p.r; + const lg = p.g; + const lb = p.b; const la = p.a; // Write the same values to all 4 vertices of the quad. @@ -304,6 +677,11 @@ function syncBuffers(active: ActiveEmitter): void { colArr[ci + 2] = lb; colArr[ci + 3] = la; + const oi = vi * 3; + orientArr[oi] = odx; + orientArr[oi + 1] = ody; + orientArr[oi + 2] = odz; + sizeArr[vi] = p.size; spinArr[vi] = p.currentSpin; } @@ -320,6 +698,7 @@ function syncBuffers(active: ActiveEmitter): void { colorAttr.needsUpdate = true; sizeAttr.needsUpdate = true; spinAttr.needsUpdate = true; + orientAttr.needsUpdate = true; geo.setDrawRange(0, count * 6); } @@ -349,12 +728,20 @@ export function DemoParticleEffects({ const projectileSoundsRef = useRef>(new Map()); /** Track processed audio event keys to prevent replays on seek. */ const processedAudioEventsRef = useRef>(new Set()); - useFrame((_, delta) => { + /** Active wireframe explosion spheres. */ + const activeExplosionSpheresRef = useRef([]); + /** Active shockwave ring effects. */ + const activeShockwavesRef = useRef([]); + useFrame((state, delta) => { const group = groupRef.current; const snapshot = snapshotRef.current; if (!group || !snapshot) return; - const dtMS = delta * 1000; + const playbackState = engineStore.getState().playback; + const isPlaying = playbackState.status === "playing"; + // Scale delta by playback rate; 0 when paused. + const effectDelta = isPlaying ? delta * playbackState.rate : 0; + const dtMS = effectDelta * 1000; const getDataBlockData = playback.getDataBlockData.bind(playback); // Detect new explosion entities and create emitters. @@ -390,6 +777,7 @@ export function DemoParticleEffects({ const material = createParticleMaterial( texture, burst.data.particles.useInvAlpha, + burst.data.orientParticles, ); const mesh = new Mesh(geometry, material); mesh.frustumCulled = false; @@ -420,6 +808,7 @@ export function DemoParticleEffects({ const material = createParticleMaterial( texture, emitterData.particles.useInvAlpha, + emitterData.orientParticles, ); const mesh = new Mesh(geometry, material); mesh.frustumCulled = false; @@ -436,6 +825,91 @@ export function DemoParticleEffects({ hasBurst: false, }); } + + const expBlock = getDataBlockData(entity.explosionDataBlockId); + + // Debug mode: show wireframe spheres and labels. + if (debugMode) { + const radius = expBlock ? getExplosionRadius(expBlock) : 5; + const color = getExplosionColor(entity.dataBlock); + const sphereMat = new MeshBasicMaterial({ + color, + wireframe: true, + transparent: true, + opacity: 1, + depthWrite: false, + }); + const sphereMesh = new Mesh(_explosionSphereGeo, sphereMat); + sphereMesh.frustumCulled = false; + sphereMesh.scale.setScalar(radius); + sphereMesh.position.set(origin[1], origin[2], origin[0]); + group.add(sphereMesh); + + const labelText = `${entity.id}: ${entity.dataBlock ?? `expId:${entity.explosionDataBlockId}`}`; + const { sprite: labelSprite, material: labelMat } = createExplosionLabel(labelText, color); + labelSprite.position.set(origin[1], origin[2] + radius + 2, origin[0]); + labelSprite.frustumCulled = false; + group.add(labelSprite); + + activeExplosionSpheresRef.current.push({ + entityId: entity.id as string, + mesh: sphereMesh, + material: sphereMat, + label: labelSprite, + labelMaterial: labelMat, + creationTime: demoEffectNow(), + lifetimeMS: Math.max(resolved.lifetimeMS, 3000), + targetRadius: radius, + }); + } + + // Spawn shockwave ring if the explosion datablock references one. + const shockwaveId = expBlock?.shockwave as number | null | undefined; + if (typeof shockwaveId === "number") { + const swData = resolveShockwaveData(shockwaveId, getDataBlockData); + if (swData) { + const texture = getParticleTexture(swData.textureName); + const geo = createShockwaveGeometry(swData.numSegments); + const mat = createShockwaveMaterial(texture); + const mesh = new Mesh(geo, mat); + mesh.frustumCulled = false; + mesh.position.set(origin[1], origin[2], origin[0]); + group.add(mesh); + + // Optional bottom face (renders the underside of the ring). + let bottomMesh: Mesh | null = null; + let bottomGeo: BufferGeometry | null = null; + if (swData.renderBottom) { + bottomGeo = createShockwaveGeometry(swData.numSegments); + bottomMesh = new Mesh(bottomGeo, mat); + bottomMesh.frustumCulled = false; + bottomMesh.position.set(origin[1], origin[2], origin[0]); + // Flip Y to render the underside. + bottomMesh.scale.y = -1; + group.add(bottomMesh); + } + + // Clamp denormalized velocity values (parser bug workaround). + const initVelocity = Math.abs(swData.velocity) > 1e-10 + ? swData.velocity + : 0; + + activeShockwavesRef.current.push({ + entityId: entity.id as string, + mesh, + bottomMesh, + geometry: geo, + bottomGeometry: bottomGeo, + material: mat, + creationTime: demoEffectNow(), + lifetimeMS: swData.lifetimeMS, + data: swData, + radius: 0, + velocity: initVelocity, + }); + } + } + } // Detect projectile entities with trail emitters (maintainEmitterId). @@ -465,6 +939,7 @@ export function DemoParticleEffects({ const material = createParticleMaterial( texture, emitterData.particles.useInvAlpha, + emitterData.orientParticles, ); const mesh = new Mesh(geometry, material); mesh.frustumCulled = false; @@ -508,7 +983,7 @@ export function DemoParticleEffects({ entry.shaderChecked = true; } - // Update trail emitter origin to follow the projectile's position. + // Update trail emitter origin and direction to follow the projectile. if (entry.followEntityId) { const tracked = snapshot.entities.find( (e) => e.id === entry.followEntityId, @@ -518,11 +993,14 @@ export function DemoParticleEffects({ entry.origin[1] = tracked.position[1]; entry.origin[2] = tracked.position[2]; } + if (tracked?.direction) { + entry.emitAxis = tracked.direction; + } } // Streaming emitters emit periodically. if (!entry.isBurst) { - entry.emitter.emitPeriodic(entry.origin, dtMS); + entry.emitter.emitPeriodic(entry.origin, dtMS, entry.emitAxis); } // Advance physics and interpolation. @@ -536,6 +1014,9 @@ export function DemoParticleEffects({ entry.material.uniforms.particleTexture.value = entry.targetTexture; } + // Reduce particle opacity in debug mode for visibility. + entry.material.uniforms.debugOpacity.value = debugMode ? 0.2 : 1.0; + // Sync GPU buffers. syncBuffers(entry); @@ -604,8 +1085,87 @@ export function DemoParticleEffects({ } } + // ── Update explosion wireframe spheres ── + const spheres = activeExplosionSpheresRef.current; + const now = demoEffectNow(); + for (let i = spheres.length - 1; i >= 0; i--) { + const sphere = spheres[i]; + const elapsed = now - sphere.creationTime; + const frac = Math.min(elapsed / sphere.lifetimeMS, 1); + + // Quick scale-up in first 10%, then hold. + const scaleFrac = Math.min(frac / 0.1, 1); + sphere.mesh.scale.setScalar(sphere.targetRadius * scaleFrac); + + // Fade opacity over lifetime. + sphere.material.opacity = 1 - frac; + sphere.labelMaterial.opacity = 1 - frac; + + // Remove when lifetime expires. + if (frac >= 1) { + group.remove(sphere.mesh); + group.remove(sphere.label); + sphere.material.dispose(); + sphere.labelMaterial.dispose(); + spheres.splice(i, 1); + } + } + + // ── Update shockwave rings ── + const shockwaves = activeShockwavesRef.current; + for (let i = shockwaves.length - 1; i >= 0; i--) { + const sw = shockwaves[i]; + const elapsed = now - sw.creationTime; + const t = Math.min(elapsed / sw.lifetimeMS, 1); + const dtSec = effectDelta; + + // V12 expansion physics: velocity += acceleration * dt; radius += velocity * dt + sw.velocity += sw.data.acceleration * dtSec; + sw.radius += sw.velocity * dtSec; + + // Interpolate color from keyframes. + const color = interpolateShockwaveColor(sw.data, t); + + // Update ring geometry. + updateShockwaveGeometry( + sw.geometry, + sw.data, + sw.radius, + color, + sw.data.is2D, + ); + + // Update bottom ring if present. + if (sw.bottomGeometry) { + updateShockwaveGeometry( + sw.bottomGeometry, + sw.data, + sw.radius, + color, + sw.data.is2D, + ); + } + + // For is2D mode: billboard the ring to face the camera. + if (sw.data.is2D) { + sw.mesh.lookAt(state.camera.position); + } + + // Remove when lifetime expires. + if (t >= 1) { + group.remove(sw.mesh); + if (sw.bottomMesh) group.remove(sw.bottomMesh); + sw.geometry.dispose(); + sw.bottomGeometry?.dispose(); + sw.material.dispose(); + shockwaves.splice(i, 1); + } + } + // ── Audio: explosion impact sounds ── - if (audioEnabled && audioLoader && audioListener && groupRef.current) { + // Only process new audio events while playing to avoid triggering + // sounds during pause (existing sounds are frozen via AudioContext.suspend). + if (isPlaying && audioEnabled && audioLoader && audioListener && groupRef.current) { for (const entity of snapshot.entities) { if ( entity.type !== "Explosion" || @@ -684,6 +1244,7 @@ export function DemoParticleEffects({ sound.setMaxDistance(resolved.maxDist); sound.setRolloffFactor(1); sound.setVolume(resolved.volume); + sound.setPlaybackRate(playbackState.rate); sound.setLoop(true); sound.position.set( entity.position![1], @@ -691,6 +1252,7 @@ export function DemoParticleEffects({ entity.position![0], ); group.add(sound); + trackDemoSound(sound); sound.play(); projSounds.set(entity.id, sound); }); @@ -702,6 +1264,7 @@ export function DemoParticleEffects({ // Despawn: stop sounds for entities no longer present. for (const [entityId, sound] of projSounds) { if (!currentEntityIds.has(entityId)) { + untrackDemoSound(sound); try { sound.stop(); } catch {} sound.disconnect(); groupRef.current?.remove(sound); @@ -768,10 +1331,32 @@ export function DemoParticleEffects({ entry.material.dispose(); } activeEmittersRef.current = []; + // Clean up explosion spheres. + for (const sphere of activeExplosionSpheresRef.current) { + if (group) { + group.remove(sphere.mesh); + group.remove(sphere.label); + } + sphere.material.dispose(); + sphere.labelMaterial.dispose(); + } + activeExplosionSpheresRef.current = []; + // Clean up shockwave rings. + for (const sw of activeShockwavesRef.current) { + if (group) { + group.remove(sw.mesh); + if (sw.bottomMesh) group.remove(sw.bottomMesh); + } + sw.geometry.dispose(); + sw.bottomGeometry?.dispose(); + sw.material.dispose(); + } + activeShockwavesRef.current = []; processedExplosionsRef.current.clear(); trailEntitiesRef.current.clear(); // Clean up projectile sounds. for (const [, sound] of projectileSoundsRef.current) { + untrackDemoSound(sound); try { sound.stop(); } catch {} sound.disconnect(); if (group) group.remove(sound); diff --git a/src/components/DemoPlaybackStreaming.tsx b/src/components/DemoPlaybackStreaming.tsx index e3319ef3..dad17b80 100644 --- a/src/components/DemoPlaybackStreaming.tsx +++ b/src/components/DemoPlaybackStreaming.tsx @@ -17,7 +17,7 @@ import { TickProvider } from "./TickProvider"; import { DemoEntityGroup } from "./DemoEntities"; import { DemoParticleEffects } from "./DemoParticleEffects"; import { PlayerEyeOffset } from "./DemoPlayerModel"; -import { useEngineStoreApi } from "../state"; +import { useEngineStoreApi, advanceEffectClock } from "../state"; import type { DemoEntity, DemoRecording, @@ -67,14 +67,13 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording const prevMap = entityMapRef.current; const nextMap = new Map(); - // Derive shouldRebuild from the entity loop itself instead of computing - // an O(n) string signature every frame. Entity count change catches - // add/remove; identity check catches per-entity changes. - let shouldRebuild = snapshot.entities.length !== prevMap.size; + let shouldRebuild = false; for (const entity of snapshot.entities) { let renderEntity = prevMap.get(entity.id); - if ( + + // Identity change → new component (unmount/remount) + const needsNewIdentity = !renderEntity || renderEntity.type !== entity.type || renderEntity.dataBlock !== entity.dataBlock || @@ -82,8 +81,9 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording renderEntity.className !== entity.className || renderEntity.ghostIndex !== entity.ghostIndex || renderEntity.dataBlockId !== entity.dataBlockId || - renderEntity.shapeHint !== entity.shapeHint - ) { + renderEntity.shapeHint !== entity.shapeHint; + + if (needsNewIdentity) { renderEntity = buildStreamDemoEntity( entity.id, entity.type, @@ -96,26 +96,57 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording entity.ghostIndex, entity.dataBlockId, entity.shapeHint, + entity.explosionDataBlockId, + entity.faceViewer, ); + renderEntity.playerName = entity.playerName; + renderEntity.iffColor = entity.iffColor; + renderEntity.targetRenderFlags = entity.targetRenderFlags; + renderEntity.threads = entity.threads; + renderEntity.weaponImageState = entity.weaponImageState; + renderEntity.weaponImageStates = entity.weaponImageStates; + renderEntity.headPitch = entity.headPitch; + renderEntity.headYaw = entity.headYaw; + renderEntity.direction = entity.direction; + renderEntity.visual = entity.visual; + renderEntity.explosionDataBlockId = entity.explosionDataBlockId; + renderEntity.faceViewer = entity.faceViewer; + renderEntity.spawnTime = snapshot.timeSec; + shouldRebuild = true; + } else if ( + renderEntity.playerName !== entity.playerName || + renderEntity.iffColor !== entity.iffColor || + renderEntity.targetRenderFlags !== entity.targetRenderFlags || + renderEntity.threads !== entity.threads || + renderEntity.weaponImageState !== entity.weaponImageState || + renderEntity.weaponImageStates !== entity.weaponImageStates || + renderEntity.headPitch !== entity.headPitch || + renderEntity.headYaw !== entity.headYaw || + renderEntity.direction !== entity.direction || + renderEntity.visual !== entity.visual + ) { + // Render-affecting field changed → new object so React.memo sees + // a different reference and re-renders this entity's component. + renderEntity = { + ...renderEntity, + playerName: entity.playerName, + iffColor: entity.iffColor, + targetRenderFlags: entity.targetRenderFlags, + threads: entity.threads, + weaponImageState: entity.weaponImageState, + weaponImageStates: entity.weaponImageStates, + headPitch: entity.headPitch, + headYaw: entity.headYaw, + direction: entity.direction, + visual: entity.visual, + }; shouldRebuild = true; } + // else: no render-affecting changes, keep same object reference + // so React.memo can skip re-rendering this entity. - renderEntity.playerName = entity.playerName; - renderEntity.iffColor = entity.iffColor; - renderEntity.dataBlock = entity.dataBlock; - renderEntity.visual = entity.visual; - renderEntity.direction = entity.direction; - renderEntity.weaponShape = entity.weaponShape; - renderEntity.className = entity.className; - renderEntity.ghostIndex = entity.ghostIndex; - renderEntity.dataBlockId = entity.dataBlockId; - renderEntity.shapeHint = entity.shapeHint; - renderEntity.threads = entity.threads; - renderEntity.weaponImageState = entity.weaponImageState; - renderEntity.weaponImageStates = entity.weaponImageStates; - renderEntity.headPitch = entity.headPitch; - renderEntity.headYaw = entity.headYaw; - + // Keyframe update (mutable — only used as fallback position for + // retained explosion entities; useFrame reads from snapshot entities). if (renderEntity.keyframes.length === 0) { renderEntity.keyframes.push({ time: snapshot.timeSec, @@ -123,7 +154,6 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording rotation: entity.rotation ?? [0, 0, 0, 1], }); } - const kf = renderEntity.keyframes[0]; kf.time = snapshot.timeSec; if (entity.position) kf.position = entity.position; @@ -138,6 +168,28 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording nextMap.set(entity.id, renderEntity); } + // Retain explosion entities with DTS shapes after they leave the snapshot. + // These entities are ephemeral (~1 tick) but the visual effect lasts seconds. + for (const [id, entity] of prevMap) { + if (nextMap.has(id)) continue; + if ( + entity.type === "Explosion" && + entity.dataBlock && + entity.spawnTime != null + ) { + const age = snapshot.timeSec - entity.spawnTime; + if (age < 5) { + nextMap.set(id, entity); + continue; + } + } + // Entity removed (or retention expired). + shouldRebuild = true; + } + + // Detect new entities added. + if (nextMap.size !== prevMap.size) shouldRebuild = true; + entityMapRef.current = nextMap; if (shouldRebuild) { setEntities(Array.from(nextMap.values())); @@ -209,7 +261,10 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording playbackClockRef.current = requestedTimeSec; } + // Advance the shared effect clock so all effect timers (particles, + // explosions, shockwaves, shape animations) respect pause and rate. if (isPlaying) { + advanceEffectClock(delta, playback.rate); playbackClockRef.current += delta * playback.rate; } @@ -269,7 +324,12 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording renderCurrent.camera?.orbitTargetId !== publishedSnapshot.camera?.orbitTargetId || renderCurrent.chatMessages.length !== publishedSnapshot.chatMessages.length || - renderCurrent.teamScores !== publishedSnapshot.teamScores; + renderCurrent.teamScores.length !== publishedSnapshot.teamScores.length || + renderCurrent.teamScores.some( + (ts, i) => + ts.score !== publishedSnapshot.teamScores[i]?.score || + ts.playerCount !== publishedSnapshot.teamScores[i]?.playerCount, + ); if (shouldPublish) { publishedSnapshotRef.current = renderCurrent; @@ -335,10 +395,23 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording const currentEntities = getEntityMap(renderCurrent); const previousEntities = getEntityMap(renderPrev); + const renderEntities = entityMapRef.current; const root = rootRef.current; if (root) { for (const child of root.children) { - const entity = currentEntities.get(child.name); + let entity = currentEntities.get(child.name); + // Retained entities (e.g. explosion shapes kept alive past their + // snapshot lifetime) won't be in the snapshot entity map. Fall back + // to their last-known keyframe position from the render entity. + if (!entity) { + const renderEntity = renderEntities.get(child.name); + if (renderEntity?.keyframes[0]?.position) { + const kf = renderEntity.keyframes[0]; + child.visible = true; + child.position.set(kf.position[1], kf.position[2], kf.position[0]); + continue; + } + } if (!entity?.position) { child.visible = false; continue; @@ -448,7 +521,7 @@ export function StreamingDemoPlayback({ recording }: { recording: DemoRecording {entities.map((entity) => ( - + ))} , @@ -47,6 +62,7 @@ function stopLoopingSound( ) { const sound = soundRef.current; if (!sound) return; + untrackDemoSound(sound); try { sound.stop(); } catch {} sound.disconnect(); parent?.remove(sound); @@ -105,10 +121,12 @@ export function DemoPlayerModel({ // Build case-insensitive clip lookup with alias support. const animActionsRef = useRef(new Map()); const blendActionsRef = useRef<{ - look: AnimationAction | null; head: AnimationAction | null; headside: AnimationAction | null; - }>({ look: null, head: null, headside: null }); + }>({ head: null, headside: null }); + // Arm pose blend actions keyed by animation name (lookde, lookms, looksn). + const armActionsRef = useRef(new Map()); + const activeArmRef = useRef(null); const currentAnimRef = useRef({ name: "root", timeScale: 1 }); const isDeadRef = useRef(false); @@ -126,20 +144,18 @@ export function DemoPlayerModel({ // Set up additive blend animations for aim/head articulation. // These clips must be cloned before makeClipAdditive (which mutates in // place) since multiple player entities share the same GLTF cache. - const blendNames: Array<{ key: keyof typeof blendActionsRef.current; names: string[] }> = [ - { key: "look", names: ["lookde", "look"] }, - { key: "head", names: ["head"] }, - { key: "headside", names: ["headside"] }, - ]; - const blendRefs: typeof blendActionsRef.current = { look: null, head: null, headside: null }; - for (const { key, names } of blendNames) { + + // Head blend actions. + const blendRefs: typeof blendActionsRef.current = { head: null, headside: null }; + for (const { key, names } of [ + { key: "head" as const, names: ["head"] }, + { key: "headside" as const, names: ["headside"] }, + ]) { const clip = gltf.animations.find((c) => names.includes(c.name.toLowerCase()), ); if (!clip) continue; const cloned = clip.clone(); - // Reference frame at clip midpoint = neutral pose. The second arg is a - // frame index (not time), so convert via fps. const fps = 30; const neutralFrame = Math.round((clip.duration * fps) / 2); AnimationUtils.makeClipAdditive(cloned, neutralFrame, clip, fps); @@ -152,13 +168,53 @@ export function DemoPlayerModel({ } blendActionsRef.current = blendRefs; + // Arm pose blend actions: create one per available arm animation so we + // can switch between them when the equipped weapon changes. + // All arm clips use the lookde midpoint as the additive reference, so + // switching from lookde to lookms captures the shoulder repositioning. + const armActions = new Map(); + const lookdeClip = gltf.animations.find( + (c) => c.name.toLowerCase() === "lookde", + ); + const fps = 30; + const lookdeRefFrame = lookdeClip + ? Math.round((lookdeClip.duration * fps) / 2) + : 0; + for (const armName of ["lookde", "lookms", "looksn"]) { + const clip = gltf.animations.find( + (c) => c.name.toLowerCase() === armName, + ); + if (!clip) continue; + const cloned = clip.clone(); + // Use lookde's midpoint as reference for all arm clips so that + // lookms/looksn capture the absolute shoulder offset. + const refClip = lookdeClip ?? clip; + AnimationUtils.makeClipAdditive(cloned, lookdeRefFrame, refClip, fps); + const action = mixer.clipAction(cloned); + action.blendMode = AdditiveAnimationBlendMode; + action.timeScale = 0; + action.weight = 0; + action.play(); + armActions.set(armName, action); + } + armActionsRef.current = armActions; + + // Start with default arm pose. + const defaultArm = armActions.get("lookde"); + if (defaultArm) { + defaultArm.weight = 1; + activeArmRef.current = "lookde"; + } + // Force initial pose evaluation. mixer.update(0); return () => { mixer.stopAllAction(); animActionsRef.current = new Map(); - blendActionsRef.current = { look: null, head: null, headside: null }; + blendActionsRef.current = { head: null, headside: null }; + armActionsRef.current = new Map(); + activeArmRef.current = null; }; }, [mixer, gltf.animations, shapeAliases]); @@ -252,8 +308,26 @@ export function DemoPlayerModel({ } } + // Switch arm blend animation based on equipped weapon. + const desiredArm = getArmThread(entity.weaponShape); + if (desiredArm !== activeArmRef.current) { + const armActions = armActionsRef.current; + const prev = activeArmRef.current + ? armActions.get(activeArmRef.current) + : null; + const next = armActions.get(desiredArm); + if (next) { + if (prev) prev.weight = 0; + next.weight = isDead ? 0 : 1; + activeArmRef.current = desiredArm; + } + } + // Drive additive blend animations for aim/head articulation. - const { look, head, headside } = blendActionsRef.current; + const { head, headside } = blendActionsRef.current; + const armAction = activeArmRef.current + ? armActionsRef.current.get(activeArmRef.current) + : null; const blendWeight = isDead ? 0 : 1; const headPitch = entity.headPitch ?? 0; @@ -261,9 +335,9 @@ export function DemoPlayerModel({ const pitchPos = (headPitch + 1) / 2; const yawPos = (headYaw + 1) / 2; - if (look) { - look.time = pitchPos * look.getClip().duration; - look.weight = blendWeight; + if (armAction) { + armAction.time = pitchPos * armAction.getClip().duration; + armAction.weight = blendWeight; } if (head) { head.time = pitchPos * head.getClip().duration; @@ -545,8 +619,10 @@ function AnimatedWeaponModel({ sound.setMaxDistance(resolved.maxDist); sound.setRolloffFactor(1); sound.setVolume(resolved.volume); + sound.setPlaybackRate(playback.rate); sound.setLoop(true); weaponClone.add(sound); + trackDemoSound(sound); sound.play(); loopingSoundRef.current = sound; loopingSoundStateRef.current = currentIdx; diff --git a/src/components/DemoShapeModel.tsx b/src/components/DemoShapeModel.tsx index e23b02ff..2b0da7cf 100644 --- a/src/components/DemoShapeModel.tsx +++ b/src/components/DemoShapeModel.tsx @@ -1,17 +1,34 @@ -import { useMemo } from "react"; -import { Quaternion, Vector3 } from "three"; +import { useEffect, useMemo, useRef } from "react"; +import { useFrame } from "@react-three/fiber"; +import { + AnimationMixer, + LoopOnce, + Quaternion, + Vector3, +} from "three"; +import type { Group, Material } from "three"; +import { demoEffectNow, engineStore } from "../state"; +import * as SkeletonUtils from "three/examples/jsm/utils/SkeletonUtils.js"; import { _r90, _r90inv, getPosedNodeTransform, + processShapeScene, } from "../demo/demoPlaybackUtils"; +import { + loadIflAtlas, + getFrameIndexForTime, + updateAtlasFrame, +} from "./useIflTexture"; +import type { IflAtlas } from "./useIflTexture"; import { ShapeRenderer, useStaticShape, } from "./GenericShape"; import { ShapeInfoProvider } from "./ShapeInfoProvider"; import type { TorqueObject } from "../torqueScript"; -import type { DemoThreadState } from "../demo/types"; +import type { DemoThreadState, DemoStreamEntity } from "../demo/types"; +import type { DemoStreamingPlayback } from "../demo/types"; /** Renders a shape model for a demo entity using the existing shape pipeline. */ export function DemoShapeModel({ @@ -43,13 +60,27 @@ export function DemoShapeModel({ ); } +/** + * Map weapon shape to the arm blend animation (armThread). + * Only missile launcher and sniper rifle have custom arm poses; all others + * use the default `lookde`. + */ +function getArmThread(weaponShape: string | undefined): string { + if (!weaponShape) return "lookde"; + const lower = weaponShape.toLowerCase(); + if (lower.includes("missile")) return "lookms"; + if (lower.includes("sniper")) return "looksn"; + return "lookde"; +} + /** * Renders a mounted weapon using the Torque engine's mount system. * * The weapon's `Mountpoint` node is aligned to the player's `Mount0` node * (right hand). Both nodes come from the GLB skeleton in its idle ("Root" - * animation) pose. The mount transform is conjugated by ShapeRenderer's 90° Y - * rotation: T_mount = R90 * M0 * MP^(-1) * R90^(-1). + * animation) pose, with the weapon-specific arm animation applied additively. + * The mount transform is conjugated by ShapeRenderer's 90° Y rotation: + * T_mount = R90 * M0 * MP^(-1) * R90^(-1). */ export function DemoWeaponModel({ shapeName, @@ -62,11 +93,13 @@ export function DemoWeaponModel({ const weaponGltf = useStaticShape(shapeName); const mountTransform = useMemo(() => { - // Get Mount0 from the player's posed (Root animation) skeleton. + // Get Mount0 from the player's posed skeleton with arm animation applied. + const armThread = getArmThread(shapeName); const m0 = getPosedNodeTransform( playerGltf.scene, playerGltf.animations, "Mount0", + [armThread], ); if (!m0) return { position: undefined, quaternion: undefined }; @@ -126,3 +159,322 @@ export function DemoWeaponModel({ ); } + +// ── Explosion shape rendering ── +// +// Explosion DTS shapes are flat billboard planes with IFL-animated textures, +// vis-keyframed opacity, and size keyframe interpolation. They use +// useStaticShape (shared GLTF cache via drei's useGLTF) but render directly +// rather than through ShapeRenderer, because: +// - faceViewer billboarding needs to control the shape orientation +// - ShapeModel's fixed 90° Y rotation conflicts with billboard orientation +// - Explosion shapes need LoopOnce animation, not the deploy/ambient lifecycle + +interface VisNode { + mesh: any; + keyframes: number[]; + duration: number; + cyclic: boolean; +} + +interface IflInfo { + mesh: any; + iflPath: string; + sequenceName?: string; + duration?: number; + cyclic?: boolean; + toolBegin?: number; +} + +function extractSizeKeyframes(expBlock: Record): { + times: number[]; + sizes: [number, number, number][]; +} { + const rawSizes = expBlock.sizes as + | Array<{ x: number; y: number; z: number }> + | undefined; + const rawTimes = expBlock.times as number[] | undefined; + + if (!Array.isArray(rawSizes) || rawSizes.length === 0) { + return { times: [0, 1], sizes: [[1, 1, 1], [1, 1, 1]] }; + } + + // sizes are packed as value*100 integers on the wire; divide by 100. + const sizes: [number, number, number][] = rawSizes.map((s) => [ + s.x / 100, + s.y / 100, + s.z / 100, + ]); + // times are written via writeFloat(8) and are already [0,1] floats. + const times = Array.isArray(rawTimes) + ? rawTimes + : sizes.map((_, i) => i / Math.max(sizes.length - 1, 1)); + + return { times, sizes }; +} + +function interpolateSize( + keyframes: { times: number[]; sizes: [number, number, number][] }, + t: number, +): [number, number, number] { + const { times, sizes } = keyframes; + if (times.length === 0) return [1, 1, 1]; + if (t <= times[0]) return sizes[0]; + if (t >= times[times.length - 1]) return sizes[sizes.length - 1]; + + for (let i = 0; i < times.length - 1; i++) { + if (t >= times[i] && t <= times[i + 1]) { + const frac = (t - times[i]) / (times[i + 1] - times[i]); + return [ + sizes[i][0] + (sizes[i + 1][0] - sizes[i][0]) * frac, + sizes[i][1] + (sizes[i + 1][1] - sizes[i][1]) * frac, + sizes[i][2] + (sizes[i + 1][2] - sizes[i][2]) * frac, + ]; + } + } + return sizes[sizes.length - 1]; +} + +/** + * Renders an explosion DTS shape using useStaticShape (shared GLTF cache) + * with custom rendering for faceViewer, vis/IFL animation, and size keyframes. + */ +export function DemoExplosionShape({ + entity, + playback, +}: { + entity: DemoStreamEntity; + playback: DemoStreamingPlayback; +}) { + const gltf = useStaticShape(entity.dataBlock!); + const groupRef = useRef(null); + const startTimeRef = useRef(demoEffectNow()); + const randAngleRef = useRef(Math.random() * Math.PI * 2); + const iflAtlasesRef = useRef>([]); + + const expBlock = useMemo(() => { + if (!entity.explosionDataBlockId) return undefined; + return playback.getDataBlockData(entity.explosionDataBlockId); + }, [entity.explosionDataBlockId, playback]); + + const sizeKeyframes = useMemo( + () => (expBlock ? extractSizeKeyframes(expBlock) : undefined), + [expBlock], + ); + + const baseScale = useMemo<[number, number, number]>(() => { + const explosionScale = expBlock?.explosionScale as + | { x: number; y: number; z: number } + | undefined; + return explosionScale + ? [explosionScale.x / 100, explosionScale.y / 100, explosionScale.z / 100] + : [1, 1, 1]; + }, [expBlock]); + + // lifetimeMS is packed as value >> 5 (ticks); recover with << 5 (× 32). + const lifetimeTicks = (expBlock?.lifetimeMS as number) ?? 31; + const lifetimeMS = lifetimeTicks * 32; + const faceViewer = entity.faceViewer !== false; + + // Clone scene, process materials, collect vis nodes and IFL info. + const { scene, mixer, visNodes, iflInfos, materials } = useMemo(() => { + const scene = SkeletonUtils.clone(gltf.scene) as Group; + + // Collect IFL info BEFORE processShapeScene replaces materials. + const iflInfos: IflInfo[] = []; + scene.traverse((node: any) => { + if (!node.isMesh || !node.material) return; + const mat = Array.isArray(node.material) ? node.material[0] : node.material; + if (!mat?.userData) return; + const flags = new Set(mat.userData.flag_names ?? []); + const rp: string | undefined = mat.userData.resource_path; + if (flags.has("IflMaterial") && rp) { + const ud = node.userData; + iflInfos.push({ + mesh: node, + iflPath: `textures/${rp}.ifl`, + sequenceName: ud?.ifl_sequence + ? String(ud.ifl_sequence).toLowerCase() + : undefined, + duration: ud?.ifl_duration ? Number(ud.ifl_duration) : undefined, + cyclic: ud?.ifl_sequence ? !!ud.ifl_cyclic : undefined, + toolBegin: ud?.ifl_tool_begin != null ? Number(ud.ifl_tool_begin) : undefined, + }); + } + }); + + processShapeScene(scene); + + // Collect vis-animated nodes keyed by sequence name. + const visNodes: VisNode[] = []; + scene.traverse((node: any) => { + if (!node.isMesh) return; + const ud = node.userData; + if (!ud) return; + const kf = ud.vis_keyframes; + const dur = ud.vis_duration; + const seqName = (ud.vis_sequence ?? "").toLowerCase(); + if (!seqName || !Array.isArray(kf) || kf.length <= 1 || !dur || dur <= 0) + return; + // Only include vis nodes tied to the "ambient" sequence. + if (seqName === "ambient") { + visNodes.push({ mesh: node, keyframes: kf, duration: dur, cyclic: !!ud.vis_cyclic }); + } + }); + + // Activate vis nodes: make visible, ensure transparent material. + for (const v of visNodes) { + v.mesh.visible = true; + if (v.mesh.material && !Array.isArray(v.mesh.material)) { + v.mesh.material.transparent = true; + v.mesh.material.depthWrite = false; + } + } + + // Also un-hide IFL meshes that don't have vis_sequence (always visible). + for (const info of iflInfos) { + if (!info.mesh.userData?.vis_sequence) { + info.mesh.visible = true; + } + } + + // Set up animation mixer with the ambient clip (LoopOnce). + const clips = new Map(); + for (const clip of gltf.animations) { + clips.set(clip.name.toLowerCase(), clip); + } + const ambientClip = clips.get("ambient"); + let mixer: AnimationMixer | null = null; + if (ambientClip) { + mixer = new AnimationMixer(scene); + const action = mixer.clipAction(ambientClip); + action.setLoop(LoopOnce, 1); + action.clampWhenFinished = true; + // playSpeed is packed as value*20 on the wire; divide by 20. + const playSpeed = ((expBlock?.playSpeed as number) ?? 20) / 20; + action.timeScale = playSpeed; + action.play(); + } + + // Collect all materials for fade-out. + const materials: Material[] = []; + scene.traverse((child: any) => { + if (!child.isMesh) return; + if (Array.isArray(child.material)) { + materials.push(...child.material); + } else if (child.material) { + materials.push(child.material); + } + }); + + // Disable frustum culling (explosion may scale beyond bounds). + scene.traverse((child) => { child.frustumCulled = false; }); + + return { scene, mixer, visNodes, iflInfos, materials }; + }, [gltf, expBlock]); + + // Load IFL texture atlases. + useEffect(() => { + iflAtlasesRef.current = []; + for (const info of iflInfos) { + loadIflAtlas(info.iflPath) + .then((atlas) => { + const mat = Array.isArray(info.mesh.material) + ? info.mesh.material[0] + : info.mesh.material; + if (mat) { + mat.map = atlas.texture; + mat.needsUpdate = true; + } + iflAtlasesRef.current.push({ atlas, info }); + }) + .catch(() => {}); + } + }, [iflInfos]); + + useFrame((state, delta) => { + const group = groupRef.current; + if (!group) return; + + const playbackState = engineStore.getState().playback; + const effectDelta = playbackState.status === "playing" + ? delta * playbackState.rate : 0; + + const elapsed = demoEffectNow() - startTimeRef.current; + const t = Math.min(elapsed / lifetimeMS, 1); + const elapsedSec = elapsed / 1000; + + // Advance skeleton animation. + if (mixer) { + mixer.update(effectDelta); + } + + // Fade multiplier for the last 20% of lifetime. + const fadeAlpha = t > 0.8 ? 1 - (t - 0.8) / 0.2 : 1; + + // Drive vis opacity animation. + for (const { mesh, keyframes, duration, cyclic } of visNodes) { + const mat = mesh.material; + if (!mat || Array.isArray(mat)) continue; + const rawT = elapsedSec / duration; + const vt = cyclic ? rawT % 1 : Math.min(rawT, 1); + const n = keyframes.length; + const pos = vt * n; + const lo = Math.floor(pos) % n; + const hi = (lo + 1) % n; + const frac = pos - Math.floor(pos); + const visOpacity = keyframes[lo] + (keyframes[hi] - keyframes[lo]) * frac; + mat.opacity = visOpacity * fadeAlpha; + } + + // Also fade non-vis materials. + if (fadeAlpha < 1) { + for (const mat of materials) { + if ("opacity" in mat) { + mat.transparent = true; + (mat as any).opacity *= fadeAlpha; + } + } + } + + // Advance IFL texture atlases. + for (const { atlas, info } of iflAtlasesRef.current) { + let iflTime: number; + if (info.sequenceName && info.duration) { + const pos = info.cyclic + ? (elapsedSec / info.duration) % 1 + : Math.min(elapsedSec / info.duration, 1); + iflTime = pos * info.duration + (info.toolBegin ?? 0); + } else { + iflTime = elapsedSec; + } + updateAtlasFrame(atlas, getFrameIndexForTime(atlas, iflTime)); + } + + // Size keyframe interpolation. + if (sizeKeyframes) { + const size = interpolateSize(sizeKeyframes, t); + group.scale.set( + size[0] * baseScale[0], + size[1] * baseScale[1], + size[2] * baseScale[2], + ); + } + + // faceViewer: billboard toward camera with random Z rotation. + if (faceViewer) { + group.lookAt(state.camera.position); + group.rotateZ(randAngleRef.current); + } + }); + + return ( + + {/* Flip 180° around Y so the face (GLB +Z normal) points toward the + camera after the parent group's lookAt (which aims -Z at camera). */} + + + + + ); +} diff --git a/src/components/FlagMarker.module.css b/src/components/FlagMarker.module.css new file mode 100644 index 00000000..345161ae --- /dev/null +++ b/src/components/FlagMarker.module.css @@ -0,0 +1,32 @@ +.Root { + pointer-events: none; + display: inline-flex; + flex-direction: column; + align-items: center; + white-space: nowrap; + gap: 1px; +} +.Distance { + color: #fff; + font-size: 10px; + text-shadow: + 0 1px 3px rgba(0, 0, 0, 0.9), + 0 0 1px rgba(0, 0, 0, 0.7); + opacity: 0.5; +} + +.Icon { + width: 16px; + height: 16px; + image-rendering: pixelated; + opacity: 0.5; + filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.8)); + mask-image: var(--flag-icon-url); + mask-size: contain; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-image: var(--flag-icon-url); + -webkit-mask-size: contain; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; +} diff --git a/src/components/FlagMarker.tsx b/src/components/FlagMarker.tsx new file mode 100644 index 00000000..e1b42c38 --- /dev/null +++ b/src/components/FlagMarker.tsx @@ -0,0 +1,67 @@ +import { useRef } from "react"; +import type { MutableRefObject } from "react"; +import { useFrame, useThree } from "@react-three/fiber"; +import { Html } from "@react-three/drei"; +import { Group, Vector3 } from "three"; +import { textureToUrl } from "../loaders"; +import type { DemoEntity } from "../demo/types"; +import styles from "./FlagMarker.module.css"; + +const FLAG_ICON_HEIGHT = 1.5; + +const FLAG_ICON_URL = textureToUrl("commander/MiniIcons/com_flag_grey"); + +const _tmpVec = new Vector3(); + +/** + * Floating flag icon above a flag entity, tinted by IFF color (green for + * friendly, red for enemy — matching Tribes 2's sensor group color system). + * Always visible regardless of distance. + */ +export function FlagMarker({ + entity, +}: { + entity: DemoEntity; + timeRef: MutableRefObject; +}) { + const markerRef = useRef(null); + const iconRef = useRef(null); + const distRef = useRef(null); + const { camera } = useThree(); + + useFrame(() => { + // Tint imperatively — iffColor is mutated in-place by streaming playback. + if (iconRef.current && entity.iffColor) { + const { r, g, b } = entity.iffColor; + iconRef.current.style.backgroundColor = `rgb(${r},${g},${b})`; + } + // Update distance label. + if (distRef.current && markerRef.current) { + markerRef.current.getWorldPosition(_tmpVec); + const distance = camera.position.distanceTo(_tmpVec); + distRef.current.textContent = distance.toFixed(1); + } + }); + + const initialColor = entity.iffColor + ? `rgb(${entity.iffColor.r},${entity.iffColor.g},${entity.iffColor.b})` + : "rgb(200,200,200)"; + + return ( + + +
+ +
+
+ + + ); +} diff --git a/src/components/GenericShape.tsx b/src/components/GenericShape.tsx index 9044f145..5c26a84a 100644 --- a/src/components/GenericShape.tsx +++ b/src/components/GenericShape.tsx @@ -21,7 +21,7 @@ import * as SkeletonUtils from "three/examples/jsm/utils/SkeletonUtils.js"; import { setupTexture } from "../textureUtils"; import { useDebug, useSettings } from "./SettingsProvider"; import { useShapeInfo, isOrganicShape } from "./ShapeInfoProvider"; -import { useEngineSelector } from "../state"; +import { useEngineSelector, demoEffectNow, engineStore } from "../state"; import { FloatingLabel } from "./FloatingLabel"; import { useIflTexture, @@ -39,6 +39,14 @@ import { } from "../demo/demoPlaybackUtils"; import type { DemoThreadState } from "../demo/types"; +/** Returns pausable time in seconds for demo mode, real time otherwise. */ +function shapeNowSec(): number { + const status = engineStore.getState().playback.status; + return status !== "stopped" + ? demoEffectNow() / 1000 + : performance.now() / 1000; +} + /** Shared props for texture rendering components */ interface TextureProps { material: MeshStandardMaterial; @@ -687,7 +695,7 @@ export const ShapeModel = memo(function ShapeModel({ const vNodes = visNodesBySequence.get(seqLower); const thread: ThreadState = { sequence: seqLower, - startTime: performance.now() / 1000, + startTime: shapeNowSec(), }; if (clip && mixer) { @@ -773,7 +781,7 @@ export const ShapeModel = memo(function ShapeModel({ for (const seqName of autoPlaySequences) { const vNodes = visNodesBySequence.get(seqName); if (vNodes) { - const startTime = performance.now() / 1000; + const startTime = shapeNowSec(); for (const v of vNodes) prepareVisNode(v); const slot = seqName === "power" ? 0 : 1; threads.set(slot, { sequence: seqName, visNodes: vNodes, startTime }); @@ -791,7 +799,7 @@ export const ShapeModel = memo(function ShapeModel({ threads.set(slot, { sequence: seqName, action, - startTime: performance.now() / 1000, + startTime: shapeNowSec(), }); } } @@ -893,6 +901,13 @@ export const ShapeModel = memo(function ShapeModel({ useFrame((_, delta) => { const threads = threadsRef.current; + // In demo mode, scale animation by playback rate; freeze when paused. + const inDemo = demoThreadsRef.current != null; + const playbackState = engineStore.getState().playback; + const effectDelta = !inDemo ? delta + : playbackState.status === "playing" ? delta * playbackState.rate + : 0; + // React to demo thread state changes. The ghost ThreadMask data tells us // exactly which DTS sequences are playing/stopped on each of 4 thread slots. const currentDemoThreads = demoThreadsRef.current; @@ -976,7 +991,7 @@ export const ShapeModel = memo(function ShapeModel({ } if (animationEnabled) { - mixer.update(delta); + mixer.update(effectDelta); } } @@ -993,7 +1008,7 @@ export const ShapeModel = memo(function ShapeModel({ continue; } - const elapsed = performance.now() / 1000 - thread.startTime; + const elapsed = shapeNowSec() - thread.startTime; const t = cyclic ? (elapsed % duration) / duration : Math.min(elapsed / duration, 1); @@ -1016,7 +1031,7 @@ export const ShapeModel = memo(function ShapeModel({ // with the desired frames (e.g. skipping a long "off" period). const iflAnimInfos = iflAnimInfosRef.current; if (iflAnimInfos.length > 0) { - iflTimeRef.current += delta; + iflTimeRef.current += effectDelta; for (const info of iflAnimInfos) { if (!animationEnabled) { updateAtlasFrame(info.atlas, 0); @@ -1029,7 +1044,7 @@ export const ShapeModel = memo(function ShapeModel({ let iflTime = 0; for (const [, thread] of threads) { if (thread.sequence === info.sequenceName) { - const elapsed = performance.now() / 1000 - thread.startTime; + const elapsed = shapeNowSec() - thread.startTime; const dur = info.sequenceDuration; // Reproduce th->pos: cyclic wraps [0,1), non-cyclic clamps [0,1] const pos = info.cyclic diff --git a/src/components/InspectorControls.tsx b/src/components/InspectorControls.tsx index 577546a6..d01170b8 100644 --- a/src/components/InspectorControls.tsx +++ b/src/components/InspectorControls.tsx @@ -5,12 +5,12 @@ import { type TouchMode, } from "./SettingsProvider"; import { MissionSelect } from "./MissionSelect"; -import { RefObject, useEffect, useState, useRef } from "react"; -import { Camera } from "three"; +import { useEffect, useState, useRef, RefObject } from "react"; import { CopyCoordinatesButton } from "./CopyCoordinatesButton"; import { LoadDemoButton } from "./LoadDemoButton"; import { useDemoRecording } from "./DemoProvider"; import { FiInfo, FiSettings } from "react-icons/fi"; +import { Camera } from "three"; import styles from "./InspectorControls.module.css"; export function InspectorControls({ @@ -18,8 +18,8 @@ export function InspectorControls({ missionType, onChangeMission, onOpenMapInfo, - cameraRef, isTouch, + cameraRef, }: { missionName: string; missionType: string; @@ -31,8 +31,8 @@ export function InspectorControls({ missionType: string; }) => void; onOpenMapInfo: () => void; - cameraRef: RefObject; isTouch: boolean | null; + cameraRef: RefObject; }) { const { fogEnabled, @@ -117,9 +117,9 @@ export function InspectorControls({ >
-
- - setFov(parseInt(event.target.value))} - /> - {fov} -
-
- - - setSpeedMultiplier(parseFloat(event.target.value)) - } - /> -
+ {isDemoLoaded ? null : ( +
+ + setFov(parseInt(event.target.value))} + /> + {fov} +
+ )} + {isDemoLoaded ? null : ( +
+ + + setSpeedMultiplier(parseFloat(event.target.value)) + } + /> +
+ )}
{isTouch && (
diff --git a/src/components/PlayerHUD.tsx b/src/components/PlayerHUD.tsx index 9712068e..8b5184a6 100644 --- a/src/components/PlayerHUD.tsx +++ b/src/components/PlayerHUD.tsx @@ -9,12 +9,9 @@ import type { WeaponsHudSlot, } from "../demo/types"; import styles from "./PlayerHUD.module.css"; - // ── Compass ── - const COMPASS_URL = textureToUrl("gui/hud_new_compass"); const NSEW_URL = textureToUrl("gui/hud_new_NSEW"); - function Compass({ yaw }: { yaw: number | undefined }) { if (yaw == null) return null; // The ring notch is the fixed heading indicator (always "forward" at top). @@ -34,9 +31,7 @@ function Compass({ yaw }: { yaw: number | undefined }) {
); } - // ── Health / Energy bars ── - function HealthBar({ value }: { value: number }) { const pct = Math.max(0, Math.min(100, value * 100)); return ( @@ -45,7 +40,6 @@ function HealthBar({ value }: { value: number }) {
); } - function EnergyBar({ value }: { value: number }) { const pct = Math.max(0, Math.min(100, value * 100)); return ( @@ -54,20 +48,16 @@ function EnergyBar({ value }: { value: number }) { ); } - // ── Reticle ── - const RETICLE_TEXTURES: Record = { weapon_sniper: "gui/hud_ret_sniper", weapon_shocklance: "gui/hud_ret_shocklance", weapon_targeting: "gui/hud_ret_targlaser", }; - function normalizeWeaponName(shape: string | undefined): string { if (!shape) return ""; return shape.replace(/\.dts$/i, "").toLowerCase(); } - function Reticle() { const weaponShape = useEngineSelector((state) => { const snap = state.playback.streamSnapshot; @@ -98,9 +88,7 @@ function Reticle() { ); } - // ── Weapon HUD (right side weapon list) ── - /** Maps $WeaponsHudData indices to simple icon textures (no baked background) * and labels. Mortar uses hud_new_ because no simple variant exists. */ const WEAPON_HUD_SLOTS: Record = { @@ -124,7 +112,6 @@ const WEAPON_HUD_SLOTS: Record = { 16: { icon: "gui/hud_shocklance", label: "Shocklance" }, 17: { icon: "gui/hud_new_mortar", label: "Mortar" }, }; - // Precompute URLs so we don't call textureToUrl on every render. const WEAPON_HUD_ICON_URLS = new Map( Object.entries(WEAPON_HUD_SLOTS).map(([idx, w]) => [ @@ -132,12 +119,9 @@ const WEAPON_HUD_ICON_URLS = new Map( textureToUrl(w.icon), ]), ); - /** Targeting laser HUD indices (standard + TR2 variants). */ const TARGETING_LASER_INDICES = new Set([9, 14, 15]); - const INFINITY_ICON_URL = textureToUrl("gui/hud_infinity"); - function WeaponSlotIcon({ slot, isSelected, @@ -171,7 +155,6 @@ function WeaponSlotIcon({ ); } - function WeaponHUD() { const weaponsHud = useEngineSelector( (state) => state.playback.streamSnapshot?.weaponsHud, @@ -206,9 +189,7 @@ function WeaponHUD() { ); } - // ── Team Scores (bottom-left) ── - /** Default team names from serverDefaults.cs. */ const DEFAULT_TEAM_NAMES: Record = { 1: "Storm", @@ -218,7 +199,6 @@ const DEFAULT_TEAM_NAMES: Record = { 5: "Blood Eagle", 6: "Phoenix", }; - function TeamScores() { const teamScores = useEngineSelector( (state) => state.playback.streamSnapshot?.teamScores, @@ -227,7 +207,6 @@ function TeamScores() { (state) => state.playback.streamSnapshot?.playerSensorGroup, ); if (!teamScores?.length) return null; - // Sort: friendly team first (if known), then by teamId. const sorted = [...teamScores].sort((a, b) => { if (playerSensorGroup) { @@ -236,7 +215,6 @@ function TeamScores() { } return a.teamId - b.teamId; }); - return (
{sorted.map((team: TeamScore) => { @@ -262,9 +240,7 @@ function TeamScores() {
); } - // ── Chat Window (top-left) ── - /** Map a colorCode to a CSS module class name (c0–c9 GuiChatHudProfile). */ const CHAT_COLOR_CLASSES: Record = { 0: styles.ChatColor0, @@ -278,11 +254,9 @@ const CHAT_COLOR_CLASSES: Record = { 8: styles.ChatColor8, 9: styles.ChatColor9, }; - function segmentColorClass(colorCode: number): string { return CHAT_COLOR_CLASSES[colorCode] ?? CHAT_COLOR_CLASSES[0]; } - function chatColorClass(msg: DemoChatMessage): string { if (msg.colorCode != null && CHAT_COLOR_CLASSES[msg.colorCode]) { return CHAT_COLOR_CLASSES[msg.colorCode]; @@ -292,7 +266,6 @@ function chatColorClass(msg: DemoChatMessage): string { // byte color code, so the correct default for server messages is c0. return CHAT_COLOR_CLASSES[0]; } - function ChatWindow() { const messages = useEngineSelector( (state) => state.playback.streamSnapshot?.chatMessages, @@ -340,9 +313,7 @@ function ChatWindow() { ); } - // ── Backpack + Inventory HUD (bottom-right) ── - /** Maps $BackpackHudData indices to icon textures. */ const BACKPACK_ICONS: Record = { 0: "gui/hud_new_packammo", @@ -366,7 +337,6 @@ const BACKPACK_ICONS: Record = { 18: "gui/hud_satchel_unarmed", 19: "gui/hud_new_packenergy", }; - /** Pack indices that have an armed/activated icon variant. */ const BACKPACK_ARMED_ICONS: Record = { 1: "gui/hud_new_packcloak_armed", @@ -375,7 +345,6 @@ const BACKPACK_ARMED_ICONS: Record = { 5: "gui/hud_new_packshield_armed", 11: "gui/hud_new_packsensjam_armed", }; - // Precompute URLs. const BACKPACK_ICON_URLS = new Map( Object.entries(BACKPACK_ICONS).map(([idx, tex]) => [ @@ -389,7 +358,6 @@ const BACKPACK_ARMED_ICON_URLS = new Map( textureToUrl(tex), ]), ); - /** Simple icons per inventory display slot (no baked-in background). */ const INVENTORY_SLOT_ICONS: Record = { 0: { icon: "gui/hud_handgren", label: "Grenade" }, @@ -397,14 +365,12 @@ const INVENTORY_SLOT_ICONS: Record = { 2: { icon: "gui/hud_beacon", label: "Beacon" }, 3: { icon: "gui/hud_medpack", label: "Repair Kit" }, }; - const INVENTORY_ICON_URLS = new Map( Object.entries(INVENTORY_SLOT_ICONS).map(([slot, info]) => [ Number(slot), textureToUrl(info.icon), ]), ); - function PackAndInventoryHUD() { const backpackHud = useEngineSelector( (state) => state.playback.streamSnapshot?.backpackHud, @@ -412,9 +378,7 @@ function PackAndInventoryHUD() { const inventoryHud = useEngineSelector( (state) => state.playback.streamSnapshot?.inventoryHud, ); - const hasPack = backpackHud && backpackHud.packIndex >= 0; - // Resolve pack icon. let packIconUrl: string | undefined; if (hasPack) { @@ -423,7 +387,6 @@ function PackAndInventoryHUD() { : undefined; packIconUrl = armedUrl ?? BACKPACK_ICON_URLS.get(backpackHud.packIndex); } - // Build count lookup from snapshot data. const countBySlot = new Map(); if (inventoryHud) { @@ -431,14 +394,11 @@ function PackAndInventoryHUD() { countBySlot.set(s.slot, s.count); } } - // Always show all inventory slot types, defaulting to 0. const allSlotIds = Object.keys(INVENTORY_SLOT_ICONS) .map(Number) .sort((a, b) => a - b); - if (!hasPack && !countBySlot.size) return null; - return (
{packIconUrl && ( @@ -473,19 +433,15 @@ function PackAndInventoryHUD() {
); } - // ── Main HUD ── - export function PlayerHUD() { const recording = useDemoRecording(); const streamSnapshot = useEngineSelector( (state) => state.playback.streamSnapshot, ); - if (!recording) return null; const status = streamSnapshot?.status; if (!status) return null; - return (
diff --git a/src/demo/demoPlaybackUtils.ts b/src/demo/demoPlaybackUtils.ts index 408e8d20..0469d199 100644 --- a/src/demo/demoPlaybackUtils.ts +++ b/src/demo/demoPlaybackUtils.ts @@ -151,6 +151,7 @@ export function getPosedNodeTransform( scene: Group, animations: AnimationClip[], nodeName: string, + overrideClipNames?: string[], ): { position: Vector3; quaternion: Quaternion } | null { const clone = scene.clone(true); @@ -158,6 +159,21 @@ export function getPosedNodeTransform( if (rootClip) { const mixer = new AnimationMixer(clone); mixer.clipAction(rootClip).play(); + // Play override clips (e.g. arm pose) which replace bone transforms + // on the bones they animate, at clip midpoint (neutral pose). + if (overrideClipNames) { + for (const name of overrideClipNames) { + const clip = animations.find( + (a) => a.name.toLowerCase() === name.toLowerCase(), + ); + if (clip) { + const action = mixer.clipAction(clip); + action.time = clip.duration / 2; + action.setEffectiveTimeScale(0); + action.play(); + } + } + } mixer.setTime(0); } @@ -398,6 +414,8 @@ export function buildStreamDemoEntity( ghostIndex: number | undefined, dataBlockId: number | undefined, shapeHint: string | undefined, + explosionDataBlockId?: number, + faceViewer?: boolean, ): DemoEntity { return { id, @@ -411,6 +429,8 @@ export function buildStreamDemoEntity( ghostIndex, dataBlockId, shapeHint, + explosionDataBlockId, + faceViewer, keyframes: [ { time: 0, diff --git a/src/demo/streaming.ts b/src/demo/streaming.ts index 60ac85da..a0b95f08 100644 --- a/src/demo/streaming.ts +++ b/src/demo/streaming.ts @@ -7,6 +7,7 @@ import { import { Matrix4, Quaternion } from "three"; import { getTerrainHeightAt } from "../terrainHeight"; import type { + BackpackHudState, ChatSegment, DemoChatMessage, DemoThreadState, @@ -96,6 +97,10 @@ interface MutableStreamEntity { headPitch?: number; /** Head yaw for blend animations (freelook), normalized [-1,1]. */ headYaw?: number; + /** Target render flags bitmask from the Target Manager. */ + targetRenderFlags?: number; + /** True when FlagImage is mounted in slot 3 (player is carrying a flag). */ + carryingFlag?: boolean; /** Item physics simulation state (dropped weapons/items). */ itemPhysics?: { velocity: [number, number, number]; @@ -153,6 +158,8 @@ interface StreamState { }; /** Team scores aggregated from the PLAYERLIST demoValues section. */ teamScores: TeamScore[]; + /** Live player roster keyed by clientId, updated by ServerMessage events. */ + playerRoster: Map; } const TICK_DURATION_MS = 32; @@ -293,7 +300,10 @@ interface ParsedDemoValues { activeSlot: number; } | null; teamScores: TeamScore[]; + /** Initial player roster from PLAYERLIST section, keyed by clientId. */ + playerRoster: Map; chatMessages: string[]; + gravity: number; } /** @@ -309,7 +319,9 @@ function parseDemoValues(demoValues: string[]): ParsedDemoValues { backpackHud: null, inventoryHud: null, teamScores: [], + playerRoster: new Map(), chatMessages: [], + gravity: -20, }; if (!demoValues.length) return result; @@ -330,7 +342,12 @@ function parseDemoValues(demoValues: string[]): ParsedDemoValues { const playerCountByTeam = new Map(); for (let i = 0; i < playerCount; i++) { const fields = next().split("\t"); + const name = fields[0] ?? ""; + const clientId = parseInt(fields[2], 10); const teamId = parseInt(fields[4], 10); + if (!isNaN(clientId) && !isNaN(teamId)) { + result.playerRoster.set(clientId, { name, teamId }); + } if (!isNaN(teamId) && teamId > 0) { playerCountByTeam.set(teamId, (playerCountByTeam.get(teamId) ?? 0) + 1); } @@ -458,7 +475,13 @@ function parseDemoValues(demoValues: string[]): ParsedDemoValues { } } - // GRAVITY: 1 value — skip + // GRAVITY: 1 value (the server's getGravity() value). + if (idx < demoValues.length) { + const g = parseFloat(next()); + if (Number.isFinite(g)) { + result.gravity = g; + } + } return result; } @@ -983,6 +1006,7 @@ class StreamingPlayback implements DemoStreamingPlayback { targetId: number; name?: string; sensorGroup: number; + targetData: number; }>; sensorGroupColors: Array<{ group: number; @@ -1002,6 +1026,7 @@ class StreamingPlayback implements DemoStreamingPlayback { private readonly netStrings = new Map(); private readonly targetNames = new Map(); private readonly targetTeams = new Map(); + private readonly targetRenderFlags = new Map(); /** IFF color map: for the viewer's sensorGroup, map target sensorGroup → RGB. */ private readonly sensorGroupColors = new Map< number, @@ -1009,6 +1034,31 @@ class StreamingPlayback implements DemoStreamingPlayback { >(); private state: StreamState; + // Generation counters for derived-array caching in buildSnapshot(). + private _teamScoresGen = 0; + private _rosterGen = 0; + private _weaponsHudGen = 0; + private _inventoryHudGen = 0; + + // Cached snapshot returned when no ticks advance between stepToTime() calls. + private _cachedSnapshot: DemoStreamSnapshot | null = null; + private _cachedSnapshotTick = -1; + + // Cached derived arrays from the last buildSnapshot() call. + private _snap: { + teamScoresGen: number; + rosterGen: number; + teamScores: TeamScore[]; + weaponsHudGen: number; + weaponsHud: { slots: WeaponsHudSlot[]; activeIndex: number }; + inventoryHudGen: number; + inventoryHud: { slots: InventoryHudSlot[]; activeSlot: number }; + backpackPackIndex: number; + backpackActive: boolean; + backpackText: string; + backpackHud: BackpackHudState | null; + } | null = null; + constructor(parser: DemoParser) { this.parser = parser; this.registry = parser.getRegistry(); @@ -1055,6 +1105,7 @@ class StreamingPlayback implements DemoStreamingPlayback { backpackHud: { packIndex: -1, active: false, text: "" }, inventoryHud: { slots: new Map(), activeSlot: -1 }, teamScores: [], + playerRoster: new Map(), }; this.reset(); @@ -1062,10 +1113,14 @@ class StreamingPlayback implements DemoStreamingPlayback { reset(): void { this.parser.reset(); + this._cachedSnapshot = null; + this._cachedSnapshotTick = -1; + this._snap = null; this.netStrings.clear(); this.targetNames.clear(); this.targetTeams.clear(); + this.targetRenderFlags.clear(); this.sensorGroupColors.clear(); this.state.entitiesById.clear(); this.state.entityIdByGhostIndex.clear(); @@ -1081,6 +1136,7 @@ class StreamingPlayback implements DemoStreamingPlayback { ); } this.targetTeams.set(entry.targetId, entry.sensorGroup); + this.targetRenderFlags.set(entry.targetId, entry.targetData); } // Seed IFF color table from the initial block. for (const c of this.initialBlock.sensorGroupColors) { @@ -1099,6 +1155,7 @@ class StreamingPlayback implements DemoStreamingPlayback { this.state.backpackHud = { packIndex: -1, active: false, text: "" }; this.state.inventoryHud = { slots: new Map(), activeSlot: -1 }; this.state.teamScores = []; + this.state.playerRoster = new Map(); this.state.moveTicks = 0; this.state.absoluteYaw = 0; this.state.absolutePitch = 0; @@ -1227,6 +1284,9 @@ class StreamingPlayback implements DemoStreamingPlayback { evt.parsedData.funcName as string, ); const args = evt.parsedData.args as string[]; + if (funcName === "ServerMessage") { + this.handleServerMessage(args); + } this.handleHudRemoteCommand(funcName, args); } } @@ -1248,6 +1308,7 @@ class StreamingPlayback implements DemoStreamingPlayback { this.state.inventoryHud.activeSlot = parsed.inventoryHud.activeSlot; } this.state.teamScores = parsed.teamScores; + this.state.playerRoster = new Map(parsed.playerRoster); // Seed chat messages at time 0 so they appear at start and fade naturally. // Raw lines from HudMessageVector contain Torque control chars: collapsed // color bytes (0x02–0x0e via collapseRemap), tagged string markup @@ -1293,17 +1354,37 @@ class StreamingPlayback implements DemoStreamingPlayback { } getSnapshot(): DemoStreamSnapshot { - return this.buildSnapshot(); + if (this._cachedSnapshot && this._cachedSnapshotTick === this.state.moveTicks) { + return this._cachedSnapshot; + } + const snapshot = this.buildSnapshot(); + this._cachedSnapshot = snapshot; + this._cachedSnapshotTick = this.state.moveTicks; + return snapshot; } getEffectShapes(): string[] { const shapes = new Set(); + const collectShapesFromExplosion = (expBlock: Record) => { + const shape = expBlock.dtsFileName as string | undefined; + if (shape) shapes.add(shape); + // Sub-explosions also have DTS shapes (e.g. mortar sub-explosions). + const subExplosions = expBlock.subExplosions as (number | null)[] | undefined; + if (Array.isArray(subExplosions)) { + for (const subId of subExplosions) { + if (subId == null) continue; + const subBlock = this.getDataBlockData(subId); + if (subBlock?.dtsFileName) { + shapes.add(subBlock.dtsFileName as string); + } + } + } + }; for (const [, block] of this.initialBlock.dataBlocks) { const explosionId = block.data?.explosion as number | undefined; if (explosionId == null) continue; const expBlock = this.getDataBlockData(explosionId); - const shape = expBlock?.dtsFileName as string | undefined; - if (shape) shapes.add(shape); + if (expBlock) collectShapesFromExplosion(expBlock); } return [...shapes]; } @@ -1317,10 +1398,13 @@ class StreamingPlayback implements DemoStreamingPlayback { : 0; const targetTicks = Math.floor((safeTargetSec * 1000) / TICK_DURATION_MS); + let didReset = false; if (targetTicks < this.state.moveTicks) { this.reset(); + didReset = true; } + const wasExhausted = this.state.exhausted; let movesProcessed = 0; while ( !this.state.exhausted && @@ -1333,7 +1417,20 @@ class StreamingPlayback implements DemoStreamingPlayback { movesProcessed += 1; } - return this.buildSnapshot(); + if ( + movesProcessed === 0 && + !didReset && + wasExhausted === this.state.exhausted && + this._cachedSnapshot && + this._cachedSnapshotTick === this.state.moveTicks + ) { + return this._cachedSnapshot; + } + + const snapshot = this.buildSnapshot(); + this._cachedSnapshot = snapshot; + this._cachedSnapshotTick = this.state.moveTicks; + return snapshot; } private stepOneMoveTick(): boolean { @@ -1468,6 +1565,18 @@ class StreamingPlayback implements DemoStreamingPlayback { if (targetId != null && sensorGroup != null) { this.targetTeams.set(targetId, sensorGroup); } + const renderFlags = evt.parsedData.renderFlags as number | undefined; + if (targetId != null && renderFlags != null) { + this.targetRenderFlags.set(targetId, renderFlags); + // Propagate to any entity bound to this target so render flags + // take effect immediately (e.g. clearing bit 0x2 when a player + // drops a flag) rather than waiting for the next ghost update. + for (const entity of this.state.entitiesById.values()) { + if (entity.targetId === targetId) { + entity.targetRenderFlags = renderFlags; + } + } + } } else if (eventName === "SetSensorGroupEvent" && evt.parsedData) { const sg = evt.parsedData.sensorGroup as number | undefined; if (sg != null) this.state.playerSensorGroup = sg; @@ -1633,6 +1742,7 @@ class StreamingPlayback implements DemoStreamingPlayback { }); } } else if (funcName === "ServerMessage" && args.length >= 2) { + this.handleServerMessage(args); const rawTemplate = this.resolveNetString(args[1]); const serverColorCode = detectColorCode(rawTemplate); const rawText = this.formatRemoteArgs(args[1], args.slice(2)); @@ -1718,19 +1828,18 @@ class StreamingPlayback implements DemoStreamingPlayback { // When a projectile entity is being removed (ghost delete, ghost index // reuse, or same-class index reuse), spawn an explosion at its last known - // position if it hasn't already exploded. The Torque engine's KillGhost - // mechanism silently drops pending ExplosionMask data when a ghost goes - // out of scope, so explosion positions almost never arrive in the demo - // stream. The original client compensated with client-side raycast - // collision detection in processTick(); we approximate by triggering the - // explosion when the ghost disappears. + // position if it hasn't already exploded. Explosion positions usually + // arrive via ExplosionMask in ghost updates (the server has a 13-tick / + // 416ms DeleteWaitTicks window before KillGhost fires), but this fallback + // catches cases where the explicit data was missed — e.g. network + // congestion or the projectile going out of scope before the update. if (prevEntityId) { const prevEntity = this.state.entitiesById.get(prevEntityId); if ( prevEntity && prevEntity.type === "Projectile" && !prevEntity.hasExploded && - prevEntity.explosionShape && + prevEntity.explosionDataBlockId != null && prevEntity.position && // Ghost is being deleted or its index is being reassigned to a new // ghost (either a different class or a fresh create of the same class). @@ -1784,6 +1893,27 @@ class StreamingPlayback implements DemoStreamingPlayback { existingEntity.dataBlockId = undefined; existingEntity.shapeHint = undefined; existingEntity.visual = undefined; + existingEntity.targetId = undefined; + existingEntity.targetRenderFlags = undefined; + existingEntity.carryingFlag = undefined; + existingEntity.sensorGroup = undefined; + existingEntity.playerName = undefined; + existingEntity.weaponShape = undefined; + existingEntity.weaponImageState = undefined; + existingEntity.weaponImageStates = undefined; + existingEntity.weaponImageStatesDbId = undefined; + existingEntity.itemPhysics = undefined; + existingEntity.threads = undefined; + existingEntity.headPitch = undefined; + existingEntity.headYaw = undefined; + existingEntity.health = undefined; + existingEntity.energy = undefined; + existingEntity.maxEnergy = undefined; + existingEntity.damageState = undefined; + existingEntity.actionAnim = undefined; + existingEntity.actionAtEnd = undefined; + existingEntity.explosionDataBlockId = undefined; + existingEntity.maintainEmitterId = undefined; entity = existingEntity; } else if (existingEntity) { entity = existingEntity; @@ -1866,12 +1996,15 @@ class StreamingPlayback implements DemoStreamingPlayback { } | undefined { const projBlock = this.getDataBlockData(projDataBlockId); - const explosionId = projBlock?.explosion as number | undefined; + if (!projBlock) return undefined; + const explosionId = projBlock.explosion as number | undefined; if (explosionId == null) return undefined; const expBlock = this.getDataBlockData(explosionId); if (!expBlock) return undefined; - const shape = expBlock.dtsFileName as string | undefined; - if (!shape) return undefined; + // dtsFileName may be empty for particle-only explosions (e.g. grenades, + // energy projectiles). Still return info so we can spawn the explosion + // entity for position tracking and particle effects. + const shape = (expBlock.dtsFileName as string | undefined) || undefined; // The parser's lifetimeMS field is actually in ticks (32ms each), not ms. const lifetimeTicks = (expBlock.lifetimeMS as number | undefined) ?? 31; return { @@ -1915,14 +2048,15 @@ class StreamingPlayback implements DemoStreamingPlayback { entity.projectilePhysics = "linear"; } else if (ballisticProjectileClassNames.has(entity.className)) { entity.projectilePhysics = "ballistic"; - entity.gravityMod = getNumberField(blockData, ["gravityMod"]) ?? 1.0; + entity.gravityMod = + getNumberField(blockData, ["gravityMod"]) ?? 1.0; } else if (seekerProjectileClassNames.has(entity.className)) { entity.projectilePhysics = "seeker"; } } // Resolve explosion shape info for projectiles (once per entity). - if (entity.type === "Projectile" && !entity.explosionShape) { + if (entity.type === "Projectile" && entity.explosionDataBlockId == null) { const info = this.resolveExplosionInfo(dataBlockId); if (info) { entity.explosionShape = info.shape; @@ -2000,6 +2134,24 @@ class StreamingPlayback implements DemoStreamingPlayback { entity.weaponImageState = undefined; entity.weaponImageStates = undefined; } + + // Track FlagImage in slot 3 ($FlagSlot). The server mounts FlagImage + // when a player picks up a flag and unmounts it on drop. buildSnapshot + // uses carryingFlag to gate the flag icon on Players, which prevents + // dead corpses (sharing the same targetId) from showing duplicate icons. + const flagImage = images.find((img) => img.index === 3); + if (flagImage) { + const hasFlag = !!flagImage.dataBlockId && flagImage.dataBlockId > 0; + entity.carryingFlag = hasFlag; + if (entity.targetId != null && entity.targetId >= 0) { + const prev = this.targetRenderFlags.get(entity.targetId) ?? 0; + const updated = hasFlag ? prev | 0x2 : prev & ~0x2; + if (updated !== prev) { + this.targetRenderFlags.set(entity.targetId, updated); + entity.targetRenderFlags = updated; + } + } + } } } @@ -2093,8 +2245,10 @@ class StreamingPlayback implements DemoStreamingPlayback { // Item physics: simulate dropped items falling under gravity and bouncing. if (entity.type === "Item") { const atRest = data.atRest as boolean | undefined; - if (atRest === true) { - // Server says item is at rest — stop simulating. + const warp = data.warp as boolean | undefined; + if (atRest === true || warp === false) { + // At rest, or position authoritatively set (e.g. flag returned to + // base via setTransform → NoWarpMask) — stop simulating. entity.itemPhysics = undefined; } else if (atRest === false && isVec3Like(data.velocity)) { // Item is moving — initialize or update physics simulation. @@ -2115,7 +2269,11 @@ class StreamingPlayback implements DemoStreamingPlayback { } } - // Compute simulatedVelocity for projectile physics. + // Compute simulatedVelocity for projectile physics. Mirrors the engine's + // unpackUpdate: velocity is only set on InitialUpdateMask or BounceMask, + // so we only (re)initialize when this update actually transmits velocity + // or direction data. Between updates, advanceProjectiles() accumulates + // gravity on the existing simulatedVelocity. if (entity.projectilePhysics) { if (entity.projectilePhysics === "linear") { // Linear projectiles transmit direction + dryVelocity from datablock, @@ -2147,14 +2305,18 @@ class StreamingPlayback implements DemoStreamingPlayback { vz += excessDir.z * excessVel; } entity.simulatedVelocity = [vx, vy, vz]; - } else if (entity.velocity) { - // Ballistic and seeker: use the transmitted velocity directly. + } else if (isVec3Like(data.velocity)) { + // Ballistic/seeker: set velocity only when this ghost update transmits + // it (initial create or BounceMask). The engine's unpackUpdate only + // writes mCurrVelocity on these two mask bits. entity.simulatedVelocity = [ - entity.velocity[0], - entity.velocity[1], - entity.velocity[2], + data.velocity.x, + data.velocity.y, + data.velocity.z, ]; } + } + if (entity.projectilePhysics) { // Fast-forward by currTick: the initial position is the firing point // and currTick tells us how many ticks have already elapsed. @@ -2172,10 +2334,12 @@ class StreamingPlayback implements DemoStreamingPlayback { entity.position[2] += v[2] * dt; // For ballistic projectiles, also apply gravity during fast-forward. if (entity.projectilePhysics === "ballistic") { - const g = 9.81 * (entity.gravityMod ?? 1); + // GrenadeProjectile::computeNewState uses -9.81 * gravityMod + // (globalGravity * 0.4905 * gravityMod, where 0.4905 = 9.81/20). + const g = -9.81 * (entity.gravityMod ?? 1); // v.z changes linearly, position.z changes quadratically. - entity.position[2] -= 0.5 * g * dt * dt; - v[2] -= g * dt; + entity.position[2] += 0.5 * g * dt * dt; + v[2] += g * dt; } } } @@ -2193,7 +2357,7 @@ class StreamingPlayback implements DemoStreamingPlayback { entity.type === "Projectile" && !entity.hasExploded && explodePos && - entity.explosionShape + entity.explosionDataBlockId != null ) { this.spawnExplosion(entity, [explodePos.x, explodePos.y, explodePos.z]); } @@ -2252,6 +2416,10 @@ class StreamingPlayback implements DemoStreamingPlayback { this.state.playerSensorGroup = team; } } + const renderFlags = this.targetRenderFlags.get(data.targetId); + if (renderFlags != null) { + entity.targetRenderFlags = renderFlags; + } } // SoundMask: ghost-level playAudio() calls (e.g. station activation). @@ -2285,8 +2453,8 @@ class StreamingPlayback implements DemoStreamingPlayback { const p = entity.position; if (entity.projectilePhysics === "ballistic") { - const g = 9.81 * (entity.gravityMod ?? 1); - v[2] -= g * dt; + // GrenadeProjectile::computeNewState: -9.81 * gravityMod per tick. + v[2] += -9.81 * (entity.gravityMod ?? 1) * dt; } p[0] += v[0] * dt; @@ -2346,8 +2514,10 @@ class StreamingPlayback implements DemoStreamingPlayback { position: [number, number, number], ): void { entity.hasExploded = true; - const fxId = `fx_${this.state.nextExplosionId++}`; const lifetimeTicks = entity.explosionLifetimeTicks ?? 31; + + // Spawn the main explosion entity. + const fxId = `fx_${this.state.nextExplosionId++}`; const fxEntity: MutableStreamEntity = { id: fxId, ghostIndex: -1, @@ -2363,6 +2533,56 @@ class StreamingPlayback implements DemoStreamingPlayback { expiryTick: this.state.moveTicks + lifetimeTicks, }; this.state.entitiesById.set(fxId, fxEntity); + + // Spawn sub-explosion entities (e.g. MortarSubExplosion1/2/3 carry the + // actual DTS shapes while the main MortarExplosion has none). + if (entity.explosionDataBlockId != null) { + const expBlock = this.getDataBlockData(entity.explosionDataBlockId); + const subExplosions = expBlock?.subExplosions as + | (number | null)[] + | undefined; + if (Array.isArray(subExplosions)) { + for (const subId of subExplosions) { + if (subId == null) continue; + const subBlock = this.getDataBlockData(subId); + if (!subBlock) continue; + const subShape = + (subBlock.dtsFileName as string | undefined) || undefined; + if (!subShape) continue; + + const subLifetimeTicks = + (subBlock.lifetimeMS as number | undefined) ?? 31; + const offset = (subBlock.offset as number | undefined) ?? 0; + + // Randomize position offset in XY plane (Torque convention). + const angle = Math.random() * Math.PI * 2; + const subPos: [number, number, number] = [ + position[0] + Math.cos(angle) * offset, + position[1] + Math.sin(angle) * offset, + position[2], + ]; + + const subFxId = `fx_${this.state.nextExplosionId++}`; + const subFxEntity: MutableStreamEntity = { + id: subFxId, + ghostIndex: -1, + className: "Explosion", + spawnTick: this.state.moveTicks, + type: "Explosion", + dataBlock: subShape, + explosionDataBlockId: subId, + position: subPos, + rotation: [0, 0, 0, 1], + isExplosion: true, + faceViewer: + subBlock.faceViewer !== false && subBlock.faceViewer !== 0, + expiryTick: this.state.moveTicks + subLifetimeTicks, + }; + this.state.entitiesById.set(subFxId, subFxEntity); + } + } + } + // Stop the projectile — the explosion takes over visually. entity.position = undefined; entity.simulatedVelocity = undefined; @@ -2517,6 +2737,81 @@ class StreamingPlayback implements DemoStreamingPlayback { } } + /** Process ServerMessage events that update team scores and player roster. */ + private handleServerMessage(args: string[]): void { + if (args.length < 2) return; + const msgType = this.resolveNetString(args[0]); + + if (msgType === "MsgTeamScoreIs" && args.length >= 4) { + // args: [msgType, "", teamId, newScore] + const teamId = parseInt(this.resolveNetString(args[2]), 10); + const newScore = parseInt(this.resolveNetString(args[3]), 10); + if (!isNaN(teamId) && !isNaN(newScore)) { + const entry = this.state.teamScores.find((t) => t.teamId === teamId); + if (entry) { + entry.score = newScore; + this._teamScoresGen++; + } + } + } else if (msgType === "MsgCTFAddTeam" && args.length >= 6) { + // args: [msgType, "", teamIdx, teamName, flagStatus, score] + const teamIdx = parseInt(this.resolveNetString(args[2]), 10); + const teamName = stripTaggedStringMarkup(this.resolveNetString(args[3])); + const score = parseInt(this.resolveNetString(args[5]), 10); + if (!isNaN(teamIdx)) { + const teamId = teamIdx + 1; + const existing = this.state.teamScores.find( + (t) => t.teamId === teamId, + ); + if (existing) { + existing.name = teamName; + existing.score = isNaN(score) ? existing.score : score; + this._teamScoresGen++; + } else { + this.state.teamScores.push({ + teamId, + name: teamName, + score: isNaN(score) ? 0 : score, + playerCount: 0, + }); + this._teamScoresGen++; + } + } + } else if (msgType === "MsgClientJoin" && args.length >= 4) { + // args: [msgType, "", clientId, name, ...] + const clientId = parseInt(this.resolveNetString(args[2]), 10); + const name = stripTaggedStringMarkup(this.resolveNetString(args[3])); + if (!isNaN(clientId)) { + const existing = this.state.playerRoster.get(clientId); + this.state.playerRoster.set(clientId, { + name, + teamId: existing?.teamId ?? 0, + }); + this._rosterGen++; + } + } else if (msgType === "MsgClientDrop" && args.length >= 3) { + // args: [msgType, "", clientId, ...] + const clientId = parseInt(this.resolveNetString(args[2]), 10); + if (!isNaN(clientId)) { + this.state.playerRoster.delete(clientId); + this._rosterGen++; + } + } else if (msgType === "MsgClientJoinTeam" && args.length >= 4) { + // args: [msgType, "", clientId, teamId, ...] + const clientId = parseInt(this.resolveNetString(args[2]), 10); + const teamId = parseInt(this.resolveNetString(args[3]), 10); + if (!isNaN(clientId) && !isNaN(teamId)) { + const existing = this.state.playerRoster.get(clientId); + if (existing) { + existing.teamId = teamId; + } else { + this.state.playerRoster.set(clientId, { name: "", teamId }); + } + this._rosterGen++; + } + } + } + private handleHudRemoteCommand(funcName: string, args: string[]): void { // ── Weapons HUD ── if (funcName === "setWeaponsHudItem" && args.length >= 3) { @@ -2529,6 +2824,7 @@ class StreamingPlayback implements DemoStreamingPlayback { } else { this.state.weaponsHud.slots.delete(slot); } + this._weaponsHudGen++; } } else if (funcName === "setWeaponsHudAmmo" && args.length >= 2) { const slot = parseInt(args[0], 10); @@ -2537,6 +2833,7 @@ class StreamingPlayback implements DemoStreamingPlayback { // Treat ammo updates as implicit inventory presence — the // initial setWeaponsHudItem may have been sent before recording. this.state.weaponsHud.slots.set(slot, isNaN(ammo) ? -1 : ammo); + this._weaponsHudGen++; } } else if (funcName === "setWeaponsHudActive" && args.length >= 1) { const slot = parseInt(args[0], 10); @@ -2547,9 +2844,11 @@ class StreamingPlayback implements DemoStreamingPlayback { this.state.weaponsHud.slots.set(slot, -1); } } + this._weaponsHudGen++; } else if (funcName === "setWeaponsHudClearAll") { this.state.weaponsHud.slots.clear(); this.state.weaponsHud.activeIndex = -1; + this._weaponsHudGen++; // ── Backpack HUD ── } else if (funcName === "setBackpackHudItem" && args.length >= 2) { @@ -2594,16 +2893,19 @@ class StreamingPlayback implements DemoStreamingPlayback { } else { this.state.inventoryHud.slots.delete(slot); } + this._inventoryHudGen++; } } else if (funcName === "setInventoryHudAmount" && args.length >= 2) { const slot = parseInt(args[0], 10); const amount = parseInt(args[1], 10); if (!isNaN(slot) && !isNaN(amount)) { this.state.inventoryHud.slots.set(slot, amount); + this._inventoryHudGen++; } } else if (funcName === "setInventoryHudClearAll") { this.state.inventoryHud.slots.clear(); this.state.inventoryHud.activeSlot = -1; + this._inventoryHudGen++; } } @@ -2613,6 +2915,20 @@ class StreamingPlayback implements DemoStreamingPlayback { if (!shouldRenderGhostEntity(entity)) { continue; } + // Read the latest targetRenderFlags from the map (source of truth + // from TargetInfoEvents and FlagImage slot tracking) rather than the + // entity cache, which may be stale. + let renderFlags = + entity.targetId != null && entity.targetId >= 0 + ? (this.targetRenderFlags.get(entity.targetId) ?? + entity.targetRenderFlags) + : entity.targetRenderFlags; + // For Players, only show the flag icon if this specific entity has + // FlagImage mounted in slot 3. Dead corpses share the same targetId as + // the alive player but don't have FlagImage, so this prevents duplicates. + if (entity.type === "Player" && !entity.carryingFlag) { + renderFlags = renderFlags != null ? renderFlags & ~0x2 : renderFlags; + } entities.push({ id: entity.id, type: entity.type, @@ -2625,8 +2941,11 @@ class StreamingPlayback implements DemoStreamingPlayback { dataBlock: entity.dataBlock, weaponShape: entity.weaponShape, playerName: entity.playerName, + targetRenderFlags: renderFlags, iffColor: - entity.type === "Player" && entity.sensorGroup != null + (entity.type === "Player" || + ((renderFlags ?? 0) & 0x2) !== 0) && + entity.sensorGroup != null ? this.resolveIffColor(entity.sensorGroup) : undefined, // Only clone position for entities whose position is mutated in-place @@ -2658,6 +2977,80 @@ class StreamingPlayback implements DemoStreamingPlayback { } const timeSec = this.state.moveTicks * (TICK_DURATION_MS / 1000); + const prev = this._snap; + + const chatMessages = this.state.chatMessages.filter( + (m) => m.timeSec > timeSec - 15, + ); + + const audioEvents = this.state.pendingAudioEvents.filter( + (e) => e.timeSec > timeSec - 0.5 && e.timeSec <= timeSec, + ); + + const weaponsHud = + prev && prev.weaponsHudGen === this._weaponsHudGen + ? prev.weaponsHud + : { + slots: Array.from(this.state.weaponsHud.slots.entries()).map( + ([index, ammo]): WeaponsHudSlot => ({ index, ammo }), + ), + activeIndex: this.state.weaponsHud.activeIndex, + }; + + const inventoryHud = + prev && prev.inventoryHudGen === this._inventoryHudGen + ? prev.inventoryHud + : { + slots: Array.from(this.state.inventoryHud.slots.entries()).map( + ([slot, count]): InventoryHudSlot => ({ slot, count }), + ), + activeSlot: this.state.inventoryHud.activeSlot, + }; + + const backpackHud = + prev && + prev.backpackPackIndex === this.state.backpackHud.packIndex && + prev.backpackActive === this.state.backpackHud.active && + prev.backpackText === this.state.backpackHud.text + ? prev.backpackHud + : this.state.backpackHud.packIndex >= 0 + ? { ...this.state.backpackHud } + : null; + + let teamScores: TeamScore[]; + if ( + prev && + prev.teamScoresGen === this._teamScoresGen && + prev.rosterGen === this._rosterGen + ) { + teamScores = prev.teamScores; + } else { + teamScores = this.state.teamScores.map((ts) => ({ ...ts })); + const teamCounts = new Map(); + for (const { teamId } of this.state.playerRoster.values()) { + if (teamId > 0) { + teamCounts.set(teamId, (teamCounts.get(teamId) ?? 0) + 1); + } + } + for (const ts of teamScores) { + ts.playerCount = teamCounts.get(ts.teamId) ?? 0; + } + } + + this._snap = { + teamScoresGen: this._teamScoresGen, + rosterGen: this._rosterGen, + teamScores, + weaponsHudGen: this._weaponsHudGen, + weaponsHud, + inventoryHudGen: this._inventoryHudGen, + inventoryHud, + backpackPackIndex: this.state.backpackHud.packIndex, + backpackActive: this.state.backpackHud.active, + backpackText: this.state.backpackHud.text, + backpackHud, + }; + return { timeSec, exhausted: this.state.exhausted, @@ -2666,29 +3059,12 @@ class StreamingPlayback implements DemoStreamingPlayback { controlPlayerGhostId: this.state.controlPlayerGhostId, playerSensorGroup: this.state.playerSensorGroup, status: this.state.lastStatus, - chatMessages: this.state.chatMessages.filter( - (m) => m.timeSec > timeSec - 15, - ), - audioEvents: this.state.pendingAudioEvents.filter( - (e) => e.timeSec > timeSec - 0.5 && e.timeSec <= timeSec, - ), - weaponsHud: { - slots: Array.from(this.state.weaponsHud.slots.entries()).map( - ([index, ammo]): WeaponsHudSlot => ({ index, ammo }), - ), - activeIndex: this.state.weaponsHud.activeIndex, - }, - backpackHud: - this.state.backpackHud.packIndex >= 0 - ? { ...this.state.backpackHud } - : null, - inventoryHud: { - slots: Array.from(this.state.inventoryHud.slots.entries()).map( - ([slot, count]): InventoryHudSlot => ({ slot, count }), - ), - activeSlot: this.state.inventoryHud.activeSlot, - }, - teamScores: this.state.teamScores, + chatMessages, + audioEvents, + weaponsHud, + backpackHud, + inventoryHud, + teamScores, }; } @@ -2787,6 +3163,10 @@ class StreamingPlayback implements DemoStreamingPlayback { ); } } + // Torque drops trailing empty string args from commandToClient, so the + // template may reference %N tokens beyond the supplied args (e.g. a + // plural "s" that evaluates to ""). Replace any remaining placeholders. + resolved = resolved.replace(/%\d+/g, ""); return stripTaggedStringMarkup(resolved); } } diff --git a/src/demo/types.ts b/src/demo/types.ts index 49ea1c08..bc5aded8 100644 --- a/src/demo/types.ts +++ b/src/demo/types.ts @@ -117,6 +117,8 @@ export interface DemoEntity { playerName?: string; /** IFF color resolved from the sensor group color table (sRGB 0-255). */ iffColor?: { r: number; g: number; b: number }; + /** Target render flags bitmask from the Target Manager. */ + targetRenderFlags?: number; /** Weapon image condition flags from ghost ImageMask data. */ weaponImageState?: WeaponImageState; /** Weapon image state machine states from the ShapeBaseImageData datablock. */ @@ -125,6 +127,10 @@ export interface DemoEntity { headPitch?: number; /** Head yaw for blend animations (freelook), normalized [-1,1]. -1 = max right, 1 = max left. */ headYaw?: number; + /** Numeric ID of the ExplosionData datablock (for explosion shape rendering). */ + explosionDataBlockId?: number; + /** Billboard toward camera (Torque's faceViewer). */ + faceViewer?: boolean; } export interface DemoRecording { @@ -147,6 +153,8 @@ export interface DemoStreamEntity { playerName?: string; /** IFF color resolved from the sensor group color table (sRGB 0-255). */ iffColor?: { r: number; g: number; b: number }; + /** Target render flags bitmask from the Target Manager. */ + targetRenderFlags?: number; ghostIndex?: number; className?: string; dataBlockId?: number; diff --git a/src/particles/ParticleSystem.ts b/src/particles/ParticleSystem.ts index dbc16829..14323a07 100644 --- a/src/particles/ParticleSystem.ts +++ b/src/particles/ParticleSystem.ts @@ -295,6 +295,17 @@ export class EmitterInstance { if (this.particles.length < this.maxParticles) { this.addParticle(pos, axis); + + // V12: when overrideAdvances is false, immediately age the newly + // spawned particle by the remaining time in this frame. If that + // exceeds its lifetime, kill it immediately (never rendered). + if (!this.data.overrideAdvances && timeLeft > 0) { + const p = this.particles[this.particles.length - 1]; + p.currentAge += timeLeft; + if (p.currentAge >= p.totalLifetime) { + this.particles.pop(); + } + } } // Compute next emission time. @@ -310,10 +321,10 @@ export class EmitterInstance { update(dtMS: number): void { this.emitterAge += dtMS; - // Check emitter lifetime. + // Check emitter lifetime (V12 uses strictly greater). if ( this.emitterLifetime > 0 && - this.emitterAge >= this.emitterLifetime + this.emitterAge > this.emitterLifetime ) { this.emitterDead = true; } @@ -339,9 +350,9 @@ export class EmitterInstance { // a = acc - vel*drag - wind*windCoeff + gravity*gravCoeff // We skip wind for now (no wind system yet). - const ax = -p.vel[0] * drag; - const ay = -p.vel[1] * drag; - const az = -p.vel[2] * drag + GRAVITY_Z * gravCoeff; + const ax = p.acc[0] - p.vel[0] * drag; + const ay = p.acc[1] - p.vel[1] * drag; + const az = p.acc[2] - p.vel[2] * drag + GRAVITY_Z * gravCoeff; // Symplectic Euler: update vel first, then pos with new vel. p.vel[0] += ax * dt; @@ -430,14 +441,13 @@ export class EmitterInstance { ejZ * speed, ]; - // V12: acc = vel * constantAcceleration (set once, never changes). - // We fold this into the initial velocity for simplicity since the - // constant acceleration just biases the starting velocity direction. - // Actually, in V12 acc is a separate constant vector added each frame. - // For faithfulness, we should track it. But since it's constant, we can - // just apply it in the update loop as a per-particle property. - // For now, bake it into the velocity since most Tribes 2 datablocks - // have constantAcceleration = 0. + // V12: acc = vel * constantAcceleration, set once at spawn, applied every frame. + const ca = pData.constantAcceleration; + const acc: [number, number, number] = [ + vel[0] * ca, + vel[1] * ca, + vel[2] * ca, + ]; // Particle lifetime with variance. let lifetime = pData.lifetimeMS; @@ -456,6 +466,7 @@ export class EmitterInstance { this.particles.push({ pos: spawnPos, vel, + acc, orientDir: [ejX, ejY, ejZ], currentAge: 0, totalLifetime: lifetime, diff --git a/src/particles/shaders.ts b/src/particles/shaders.ts index 603f28f8..c0d24a1a 100644 --- a/src/particles/shaders.ts +++ b/src/particles/shaders.ts @@ -4,6 +4,10 @@ attribute vec4 particleColor; attribute float particleSize; attribute float particleSpin; attribute vec2 quadCorner; // (-0.5,-0.5) to (0.5,0.5) +attribute vec3 orientDir; + +uniform bool uOrientParticles; +// cameraPosition is a built-in Three.js uniform. varying vec2 vUv; varying vec4 vColor; @@ -12,27 +16,47 @@ void main() { vUv = quadCorner + 0.5; // [0,1] range vColor = particleColor; - // Transform particle center to view space for billboarding. - vec3 viewPos = (modelViewMatrix * vec4(position, 1.0)).xyz; + if (uOrientParticles) { + if (length(orientDir) < 0.0001) { + // V12: don't render oriented particles with zero velocity. + gl_Position = vec4(0.0, 0.0, 0.0, 0.0); + return; + } + // V12 oriented particle: quad aligned along direction, facing camera. + vec3 worldPos = (modelMatrix * vec4(position, 1.0)).xyz; + vec3 dir = normalize(orientDir); + vec3 dirFromCam = worldPos - cameraPosition; + vec3 crossDir = normalize(cross(dirFromCam, dir)); - // Apply spin rotation to quad corner. - float c = cos(particleSpin); - float s = sin(particleSpin); - vec2 rotated = vec2( - c * quadCorner.x - s * quadCorner.y, - s * quadCorner.x + c * quadCorner.y - ); + // V12 maps U along dir (velocity) — match by using quadCorner.x for dir. + vec3 offset = dir * quadCorner.x + crossDir * quadCorner.y; + worldPos += offset * particleSize; - // Offset in view space (camera-facing billboard). - viewPos.xy += rotated * particleSize; + gl_Position = projectionMatrix * viewMatrix * vec4(worldPos, 1.0); + } else { + // Standard camera-facing billboard. + vec3 viewPos = (modelViewMatrix * vec4(position, 1.0)).xyz; - gl_Position = projectionMatrix * vec4(viewPos, 1.0); + // Apply spin rotation to quad corner. + float c = cos(particleSpin); + float s = sin(particleSpin); + vec2 rotated = vec2( + c * quadCorner.x - s * quadCorner.y, + s * quadCorner.x + c * quadCorner.y + ); + + // Offset in view space (camera-facing billboard). + viewPos.xy += rotated * particleSize; + + gl_Position = projectionMatrix * vec4(viewPos, 1.0); + } } `; export const particleFragmentShader = /* glsl */ ` uniform sampler2D particleTexture; uniform bool hasTexture; +uniform float debugOpacity; varying vec2 vUv; varying vec4 vColor; @@ -44,5 +68,6 @@ void main() { } else { gl_FragColor = vColor; } + gl_FragColor.a *= debugOpacity; } `; diff --git a/src/particles/types.ts b/src/particles/types.ts index 0acd25a6..af309383 100644 --- a/src/particles/types.ts +++ b/src/particles/types.ts @@ -48,6 +48,8 @@ export interface EmitterDataResolved { export interface Particle { pos: [number, number, number]; vel: [number, number, number]; + /** V12: constant acceleration = vel * constantAcceleration, set once at spawn. */ + acc: [number, number, number]; orientDir: [number, number, number]; currentAge: number; totalLifetime: number; diff --git a/src/state/engineStore.ts b/src/state/engineStore.ts index 1e63d8fc..e7aed38b 100644 --- a/src/state/engineStore.ts +++ b/src/state/engineStore.ts @@ -305,6 +305,49 @@ export const engineStore = createStore()( })), ); +// ── Rate-scaled effect clock ── +// +// A monotonic clock that advances by (frameDelta × playbackRate) each frame. +// Components use demoEffectNow() instead of performance.now() so that effect +// timers (explosions, particles, shockwaves, animation threads) automatically +// pause when the demo is paused and speed up / slow down with the playback +// rate. The main DemoPlaybackStreaming component calls advanceEffectClock() +// once per frame. + +let _effectClockMs = 0; + +/** + * Returns the current effect clock value in milliseconds. + * Analogous to performance.now() but only advances when playing, + * scaled by the playback rate. + */ +export function demoEffectNow(): number { + return _effectClockMs; +} + +/** + * Advance the effect clock. Called once per frame from + * DemoPlaybackStreaming before other useFrame callbacks run. + */ +export function advanceEffectClock(deltaSec: number, rate: number): void { + _effectClockMs += deltaSec * rate * 1000; +} + +/** Reset the effect clock (call when demo recording changes or stops). */ +export function resetEffectClock(): void { + _effectClockMs = 0; +} + +// Reset on stop. +engineStore.subscribe( + (state) => state.playback.status, + (status) => { + if (status === "stopped") { + resetEffectClock(); + } + }, +); + export function useEngineStoreApi() { return engineStore; } diff --git a/src/state/index.ts b/src/state/index.ts index 66d418ca..5dc8f6a4 100644 --- a/src/state/index.ts +++ b/src/state/index.ts @@ -8,6 +8,9 @@ export type { export { engineStore, + demoEffectNow, + advanceEffectClock, + resetEffectClock, useEngineSelector, useEngineStoreApi, useRuntimeObjectById,