From ec2af6e71bcba7fbc907967e6938ef926c711717 Mon Sep 17 00:00:00 2001 From: Sam Valladares Date: Sun, 22 Feb 2026 15:50:47 -0600 Subject: [PATCH] fix: comprehensive audit fixes for dashboard and backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backend: - Emit WebSocket events from REST delete/promote/demote handlers - Emit DreamStarted/ConsolidationStarted from MCP tool dispatch - Add path validation in backup_to() for defense-in-depth Dashboard: - Fix ConnectionDiscovered field names (source_id/target_id) - Fix $effect → onMount in settings (prevents infinite loop) - Fix $derived → $derived.by in RetentionCurve - Fix field name mismatches in settings (nodesProcessed, etc.) - Fix nested '),Be=y('
No matches
'),Je=y('
esc
'),Ue=y('
',1);function lt(m,T){Me(T,!0);const Q=()=>L(Ve,"$page",k),B=()=>L(Re,"$isConnected",k),pe=()=>L(ze,"$memoryCount",k),ve=()=>L(je,"$avgRetention",k),[k,ue]=De();let c=oe(!1),x=oe(""),p;Ee(()=>{ce.connect();function r(e){if((e.metaKey||e.ctrlKey)&&e.key==="k"){e.preventDefault(),d(c,!a(c)),d(x,""),a(c)&&requestAnimationFrame(()=>p==null?void 0:p.focus());return}if(e.key==="Escape"&&a(c)){d(c,!1);return}if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)return;if(e.key==="/"){e.preventDefault();const l=document.querySelector('input[type="text"]');l==null||l.focus();return}const n={g:"/",m:"/memories",t:"/timeline",f:"/feed",e:"/explore",i:"/intentions",s:"/stats"}[e.key.toLowerCase()];n&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),de(`${O}${n}`))}return window.addEventListener("keydown",r),()=>{ce.disconnect(),window.removeEventListener("keydown",r)}});const $=[{href:"/",label:"Graph",icon:"◎",shortcut:"G"},{href:"/memories",label:"Memories",icon:"◈",shortcut:"M"},{href:"/timeline",label:"Timeline",icon:"◷",shortcut:"T"},{href:"/feed",label:"Feed",icon:"◉",shortcut:"F"},{href:"/explore",label:"Explore",icon:"◬",shortcut:"E"},{href:"/intentions",label:"Intentions",icon:"◇",shortcut:"I"},{href:"/stats",label:"Stats",icon:"◫",shortcut:"S"},{href:"/settings",label:"Settings",icon:"⚙",shortcut:","}],fe=$.slice(0,5);function J(r,e){const v=e.startsWith(O)?e.slice(O.length)||"/":e;return r==="/"?v==="/"||v==="/graph":v.startsWith(r)}let C=z(()=>a(x)?$.filter(r=>r.label.toLowerCase().includes(a(x).toLowerCase())):$);function U(r){d(c,!1),d(x,""),de(r)}var X=Ue(),q=Ke(X),F=s(q),S=i(s(F),2);H(S,21,()=>$,V,(r,e)=>{const v=z(()=>J(a(e).href,Q().url.pathname));var n=We(),l=s(n),b=s(l,!0);t(l);var f=i(l,2),w=s(f,!0);t(f);var E=i(f,2),o=s(E,!0);t(E),t(n),K(()=>{le(n,"href",a(e).href),W(n,1,`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 text-sm - ${a(v)?"bg-synapse/15 text-synapse-glow border border-synapse/30 shadow-[0_0_12px_rgba(99,102,241,0.15)]":"text-dim hover:text-text hover:bg-surface border border-transparent"}`),u(b,a(e).icon),u(w,a(e).label),u(o,a(e).shortcut)}),h(r,n)}),t(S);var A=i(S,2),xe=s(A);t(A);var Y=i(A,2),N=s(Y),Z=s(N),P=i(Z,2),me=s(P,!0);t(P),t(N);var I=i(N,2),D=s(I),be=s(D);t(D);var ee=i(D,2),ge=s(ee);t(ee),t(I),t(Y),t(F);var G=i(F,2),te=s(G),he=s(te);Fe(he,()=>T.children),t(te),t(G);var se=i(G,2),ae=s(se),re=s(ae);H(re,17,()=>fe,V,(r,e)=>{const v=z(()=>J(a(e).href,Q().url.pathname));var n=Oe(),l=s(n),b=s(l,!0);t(l);var f=i(l,2),w=s(f,!0);t(f),t(n),K(()=>{le(n,"href",a(e).href),W(n,1,`flex flex-col items-center gap-0.5 px-3 py-2 rounded-lg transition-all min-w-[3.5rem] - ${a(v)?"text-synapse-glow":"text-muted"}`),u(b,a(e).icon),u(w,a(e).label)}),h(r,n)});var _e=i(re,2);t(ae),t(se),t(q);var ye=i(q,2);{var we=r=>{var e=Je(),v=s(e),n=s(v),l=i(s(n),2);Se(l),Ne(l,o=>p=o,()=>p),Te(2),t(n);var b=i(n,2),f=s(b);H(f,17,()=>a(C),V,(o,g)=>{var M=Qe(),j=s(M),ke=s(j,!0);t(j);var R=i(j,2),$e=s(R,!0);t(R);var ne=i(R,2),Ce=s(ne,!0);t(ne),t(M),K(()=>{u(ke,a(g).icon),u($e,a(g).label),u(Ce,a(g).shortcut)}),_("click",M,()=>U(a(g).href)),h(o,M)});var w=i(f,2);{var E=o=>{var g=Be();h(o,g)};ie(w,o=>{a(C).length===0&&o(E)})}t(b),t(v),t(e),_("keydown",e,o=>{o.key==="Escape"&&d(c,!1)}),_("click",e,o=>{o.target===o.currentTarget&&d(c,!1)}),_("keydown",l,o=>{o.key==="Enter"&&a(C).length>0&&U(a(C)[0].href)}),Ae(l,()=>a(x),o=>d(x,o)),h(r,e)};ie(ye,r=>{a(c)&&r(we)})}K(r=>{W(Z,1,`w-2 h-2 rounded-full ${B()?"bg-recall animate-pulse-glow":"bg-decay"}`),u(me,B()?"Connected":"Offline"),u(be,`${pe()??""} memories`),u(ge,`${r??""}% retention`)},[()=>(ve()*100).toFixed(0)]),_("click",xe,()=>{d(c,!0),d(x,""),requestAnimationFrame(()=>p==null?void 0:p.focus())}),_("click",_e,()=>{d(c,!0),d(x,""),requestAnimationFrame(()=>p==null?void 0:p.focus())}),h(m,X),Le(),ue()}qe(["click","keydown"]);export{lt as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/0.CVv5sZN_.js.br b/apps/dashboard/build/_app/immutable/nodes/0.CVv5sZN_.js.br deleted file mode 100644 index 29ae6b95953aa47544fce12f67d927c2702b9652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2717 zcmV;O3S#vedmaFs18&O<7uu_^BczD3GpDnrr;dax3Ad*rwkrubc^r!EcNxss=0BegpP0$j5CU-n6#e8^S^zg`z28)We-FMu zTAt?9r2SmBhJ4{cxHuH3^8GMhvkuM041+B1r{ARWwL9a^?hnW%3S@LP40whIe#`UK z$IAMz6SZ)7dPYLLvX|yR1c7C#J@mL-G zi9sh^B$qh;tnli5Y!B`GcFQoL3c?9`>Ele>*QX5ZcunbpVW}`qWv7K*?G=7Rc1=LD10JHN(q`>> zfPj0sMP#U;40qdNIqX8o&$f<9?s%*$&|j364O%tLN}U+>%C00^E6C4XtC#i3pYp2! zI8}wq#+hpIY~aT0o>8M(wLjY1qlk#i1(qzdQkntpLgQt#GrOKVNo6-~J>AHv-O$?a zCHD}8v&YC~narB30D=8MCcG!-iMXn3y_MlYJSvR2g|gNUtYyCEY+*9f-LpX-_dVO%6=`ZD7DhdadcXT(?1Ox^Z8YN zSKJ-O$McNlhO5rj?sfs}o#(HmEiu`0d;{8w7IPQFt%eilw1?;|I-h1COnV8eSBqx9 zClz7&iV^PGji8(-VCyAhg{03uqD5H@_3|Sw6DjZ~e+)95qBXt?AZ^IhGh6h=*6W>~ z?)Jp^4MZ8P%zvz)kYkb3JEAGtV0z3=Ie%1XvRCJvO7@-$_ck+Jk6mC6p0Ia&mr~aH7b>JRDjyfK zEE&eut1|*WP#V$=E!Eym$_~Ez$jYXYYsV%1PMF|3Lt}91KeE-G#?FGU*eRYzunD1^S9yan?yGQ>xKaVT!YnzjKcI055mkx z!`26!9n8n3NwE27kov^1PXO*VLJVZX%-tYw=7~VHbQ!NaER-o`g4Krh zI&RfWopMGsmwUe)EeD0W`ySQFBSyi~G=wmo_gfJ97@ojC3`{6YJT^si+i?!M)=kGh7qBz9DXZ78CVj*VPFRN#_T94)U#vImjOYrVY3sPx>V7*~uQ#6@4V zl<31`4#Wk>ZLS0@3u0+u=zi??rm`WdZtLM4~>JnQ6>XNJPw zQDYzGCO1W2v0@LwflK@^{$8Y@Di7 zrXY+ZlnxB4RGQoHrJ4s4Q)C$l3E?vviZ*nS9&C~tw%#rBmdX=&;ar^)%Cne<%Nx#? z0mVy7!ZMlz%Mr|FSBxx zXB3OFH02sH`y8RRuC5af!x}ov9HZkEUzm~mT{mENGEg zC6XVAP>+wZ=f~TNLmLon$6@H;}ET*{e6qp+tI9V&$j*#`G7}b diff --git a/apps/dashboard/build/_app/immutable/nodes/0.CVv5sZN_.js.gz b/apps/dashboard/build/_app/immutable/nodes/0.CVv5sZN_.js.gz deleted file mode 100644 index 8f50419627cc283d13d664001f7769b63429bd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3102 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 diff --git a/apps/dashboard/build/_app/immutable/nodes/0.DZQ2ZPtV.js b/apps/dashboard/build/_app/immutable/nodes/0.DZQ2ZPtV.js new file mode 100644 index 0000000..bba6cf0 --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/0.DZQ2ZPtV.js @@ -0,0 +1,3 @@ +import"../chunks/Bzak7iHL.js";import{o as Ee}from"../chunks/BycUxjt3.js";import{p as Me,f as Ke,t as K,a as Le,h as d,g as s,d as a,e as i,r as t,s as oe,u as z,G as Te}from"../chunks/DEYVqDYQ.js";import{d as qe,a as h,s as u}from"../chunks/ZM2C7QQX.js";import{i as ie}from"../chunks/CpubbTHs.js";import{e as H,i as V}from"../chunks/CiJhRXcr.js";import{a as _,f as y}from"../chunks/D5-kFxsM.js";import{s as Fe}from"../chunks/DngRZTwo.js";import{s as le,r as Se,b as Ae}from"../chunks/Bew31VOg.js";import{s as W}from"../chunks/zt9hmg4X.js";import{b as Ne}from"../chunks/BbhZG17W.js";import{s as De,a as L}from"../chunks/DUZi1B8N.js";import{s as Ge,g as de,b as O}from"../chunks/B-yQpXHS.js";import{w as ce,a as je,i as Re,m as ze}from"../chunks/DmEsXEQB.js";const He=()=>{const m=Ge;return{page:{subscribe:m.page.subscribe},navigating:{subscribe:m.navigating.subscribe},updated:m.updated}},Ve={subscribe(m){return He().page.subscribe(m)}};var We=y(' '),Oe=y(' '),Qe=y(''),Be=y('
No matches
'),Je=y('
esc
'),Ue=y('
',1);function dt(m,T){Me(T,!0);const Q=()=>L(Ve,"$page",k),B=()=>L(Re,"$isConnected",k),pe=()=>L(ze,"$memoryCount",k),ve=()=>L(je,"$avgRetention",k),[k,ue]=De();let c=oe(!1),x=oe(""),p;Ee(()=>{ce.connect();function r(e){if((e.metaKey||e.ctrlKey)&&e.key==="k"){e.preventDefault(),d(c,!s(c)),d(x,""),s(c)&&requestAnimationFrame(()=>p==null?void 0:p.focus());return}if(e.key==="Escape"&&s(c)){d(c,!1);return}if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)return;if(e.key==="/"){e.preventDefault();const l=document.querySelector('input[type="text"]');l==null||l.focus();return}const n={g:"/graph",m:"/memories",t:"/timeline",f:"/feed",e:"/explore",i:"/intentions",s:"/stats"}[e.key.toLowerCase()];n&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),de(`${O}${n}`))}return window.addEventListener("keydown",r),()=>{ce.disconnect(),window.removeEventListener("keydown",r)}});const $=[{href:"/graph",label:"Graph",icon:"◎",shortcut:"G"},{href:"/memories",label:"Memories",icon:"◈",shortcut:"M"},{href:"/timeline",label:"Timeline",icon:"◷",shortcut:"T"},{href:"/feed",label:"Feed",icon:"◉",shortcut:"F"},{href:"/explore",label:"Explore",icon:"◬",shortcut:"E"},{href:"/intentions",label:"Intentions",icon:"◇",shortcut:"I"},{href:"/stats",label:"Stats",icon:"◫",shortcut:"S"},{href:"/settings",label:"Settings",icon:"⚙",shortcut:","}],fe=$.slice(0,5);function J(r,e){const v=e.startsWith(O)?e.slice(O.length)||"/":e;return r==="/graph"?v==="/"||v==="/graph":v.startsWith(r)}let C=z(()=>s(x)?$.filter(r=>r.label.toLowerCase().includes(s(x).toLowerCase())):$);function U(r){d(c,!1),d(x,""),de(r)}var X=Ue(),q=Ke(X),F=a(q),S=i(a(F),2);H(S,21,()=>$,V,(r,e)=>{const v=z(()=>J(s(e).href,Q().url.pathname));var n=We(),l=a(n),b=a(l,!0);t(l);var f=i(l,2),w=a(f,!0);t(f);var E=i(f,2),o=a(E,!0);t(E),t(n),K(()=>{le(n,"href",s(e).href),W(n,1,`flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 text-sm + ${s(v)?"bg-synapse/15 text-synapse-glow border border-synapse/30 shadow-[0_0_12px_rgba(99,102,241,0.15)]":"text-dim hover:text-text hover:bg-surface border border-transparent"}`),u(b,s(e).icon),u(w,s(e).label),u(o,s(e).shortcut)}),_(r,n)}),t(S);var A=i(S,2),xe=a(A);t(A);var Y=i(A,2),N=a(Y),Z=a(N),P=i(Z,2),me=a(P,!0);t(P),t(N);var I=i(N,2),D=a(I),be=a(D);t(D);var ee=i(D,2),ge=a(ee);t(ee),t(I),t(Y),t(F);var G=i(F,2),te=a(G),he=a(te);Fe(he,()=>T.children),t(te),t(G);var ae=i(G,2),se=a(ae),re=a(se);H(re,17,()=>fe,V,(r,e)=>{const v=z(()=>J(s(e).href,Q().url.pathname));var n=Oe(),l=a(n),b=a(l,!0);t(l);var f=i(l,2),w=a(f,!0);t(f),t(n),K(()=>{le(n,"href",s(e).href),W(n,1,`flex flex-col items-center gap-0.5 px-3 py-2 rounded-lg transition-all min-w-[3.5rem] + ${s(v)?"text-synapse-glow":"text-muted"}`),u(b,s(e).icon),u(w,s(e).label)}),_(r,n)});var _e=i(re,2);t(se),t(ae),t(q);var ye=i(q,2);{var we=r=>{var e=Je(),v=a(e),n=a(v),l=i(a(n),2);Se(l),Ne(l,o=>p=o,()=>p),Te(2),t(n);var b=i(n,2),f=a(b);H(f,17,()=>s(C),V,(o,g)=>{var M=Qe(),j=a(M),ke=a(j,!0);t(j);var R=i(j,2),$e=a(R,!0);t(R);var ne=i(R,2),Ce=a(ne,!0);t(ne),t(M),K(()=>{u(ke,s(g).icon),u($e,s(g).label),u(Ce,s(g).shortcut)}),h("click",M,()=>U(s(g).href)),_(o,M)});var w=i(f,2);{var E=o=>{var g=Be();_(o,g)};ie(w,o=>{s(C).length===0&&o(E)})}t(b),t(v),t(e),h("keydown",e,o=>{o.key==="Escape"&&d(c,!1)}),h("click",e,o=>{o.target===o.currentTarget&&d(c,!1)}),h("keydown",l,o=>{o.key==="Enter"&&s(C).length>0&&U(s(C)[0].href)}),Ae(l,()=>s(x),o=>d(x,o)),_(r,e)};ie(ye,r=>{s(c)&&r(we)})}K(r=>{W(Z,1,`w-2 h-2 rounded-full ${B()?"bg-recall animate-pulse-glow":"bg-decay"}`),u(me,B()?"Connected":"Offline"),u(be,`${pe()??""} memories`),u(ge,`${r??""}% retention`)},[()=>(ve()*100).toFixed(0)]),h("click",xe,()=>{d(c,!0),d(x,""),requestAnimationFrame(()=>p==null?void 0:p.focus())}),h("click",_e,()=>{d(c,!0),d(x,""),requestAnimationFrame(()=>p==null?void 0:p.focus())}),_(m,X),Le(),ue()}qe(["click","keydown"]);export{dt as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/0.DZQ2ZPtV.js.br b/apps/dashboard/build/_app/immutable/nodes/0.DZQ2ZPtV.js.br new file mode 100644 index 0000000000000000000000000000000000000000..37ab153e63e9bca6867a9580f366e2dd401dc6d4 GIT binary patch literal 2721 zcmV;S3SRXatsWqp18&ni()B*!;kKOGee`EI+JT}Y|mMRrQ* zObqc8W`sZi)PnxucCnr;^oX(7BUCogkZv~jmyOhYjEDelk+YaX7u~$x!W2(Z0ba&) zna}NimzGyjr0?<$rW243;Cj;$++z;1zw{-KG~;t=Z@hJUrInGkk5gJl_YS3@z{b*P z5J_k{Kw&uQ4YuwV@m2dKF73ADznooTkU?O}3Y8=dzqJd)=%(3S)! zJD8@bUScOodx&rNCveh3nfT8A?&&(bfnkhL=cyX>apx@!46KB{=1NGiY3PR?VSVd4 zFi~b0xy*NXfUEL$1j!g9-K{V1Px1LP>~bKuzY<&jWk+r>Uj`Ea6|!t|no2((+DLL? ziPG#kIfznoBvfOL7`*MAzeT*wsI&2(A4o8|wsiE^S=loj8D&P<>Bm2^6312Oxh@wGmYdIWFV91Tf$pRocrNCD3(_6e0FLX_r1l2;0)-aok#{<*wp#~J+w`mDz={Q z@QB4M{4?5@WsrFV-|#1yvsI@^Q){hy&j{AoY(*thd~<;Eg>rV@s9@)~rLHT5Txl|X%Ichc`sh5wP>yjLdsY8+s)P0XK*Q=D88>gjJHO^-o=eN_VHh0;lin99z!wTow*6<@ePin7H`sa<>= zDcCTL-K|mOq?(>yil}^6m2dQ=`x170U2OX!-R0UbdRrDlO*T?_r}bSQLiYqE*I~D9 zlP`KJL#3RMe(%Y6Sxi;uZ&^(lo|b@FC};VMm7KXGUKj1%-QGWSDUVM;Ft(u^x>JkV6FuxlG%%qfQBRLIY0w;MRIgPb;+5>#Btlbm#(lJ4A@!&?9(C+ zcm2u=&7k*In=XJ|JJ;cUe{5OPUktA_%O+3gk&3w_FW_1F?N`byr$cc;lN;t0xSP1r zagCm&|MFj-xSlNXW(P0HJBkA7l3(Bu@M%eBJPfNCpjfdk1t`ZIG>exfy?ZI4-o@!` z+~*QWgk649LISzC6y7`a9$ZGg(hSJn;_G4-M0Rqbsd=pvE@k}3 zAZ03vWT#j37uFBwCmCfL1+(M!thAau3`b%ohYzkDp|ZEXT4{%C33syIFdvD3qP+GkVwLGQ3Y`0>{o| zeDoD$VzGpA?1x=X)19x&r$ zd57ehsZQ0>BY8HG;q^CW16AVjsDnJwt{cM)YfneNrT{|illcTE1q%}ZPQU7pj1uA9 z7Bd{Bp+T5eHWz2e&&pTjM=+o%g?RZH`$8sU_84@Xlo*24TF~Z(A?x}U%3aqcyd3&O z_#H(_*X1Yl1b8G>V zS|wLpDzjvdFsD3^nF;fdC``OCGdr1yk$3JXKA+t{pI%{?ucnl<{FMu-l*q=8IcD65 zEH`*4OHr$x?usdnhazL%Gur(l;xSTq02Mt&Y`=60F+Qq0(Y#-pg-O_-q;YE0c66!Q zP5iY#JL06Q{mkxP*IQ3A#e=ntDAp31Qr*-Q==Y#^GUnZeYL2>Uz#*PXzA2!{zE(+2 zv?;DS#|Lr2fVTftDc53j>UEaXhx4n{N2h$DKf}5nrm;l)!$JS|N7J|CYJbM;>p})_ z|6cM5HN(~fwPChr;Ync;rl&}NrM+s2Pd)GPpPbpRAH6DtG+{BTyoApt{BrxQh`J=4 zoC~A+J>$FpYW(V@{>D!)C0cyrQiJ}~Kl|xFC13nZw9}yWsat`SSn;VtWm=*qUV16n z;uDu8^s?rKuU<-|_(HLehPIzPG+@b0{6v=1^pp0Z!bV_P?1%FMP6POSPa- zFCj@kJsZC9EBL+9++p$raFMxv=OW(iT;yV4`=0B~l<)Rr<$j~v?N$L#isw}0o_&it zWbN2!9oN&!ll|YOmVLdYU05%VJgM*N5Q2Du-^d)F)rk4JInzyND?`?3`uW8o^Fi0r z*(*@QB3Mivi)(~p5?Ef0L?TxRMQOAzfgq@F>0Orm=$AAQ;E*O~i%r+zva3V8GFp*C zHt@%_eamcjX*t#4i7k7y>5YtG1^y7{{M=zaiEzet|-U-WUL{t zkJPbl*9thr?r|_0>`k9aC^u^Shxv0Yi=4j0JA{`z63=(wqP)&rOj(tD`K2$(alAic znJ7ULN(lPo7RhY*l5dpMoXwu)AN5kNPmko1h11|RSJ2RpAsxuKKnDhDTg7+G2&@e| zQ^707Gz!?3Fg00G9DC;{BVAC*Vu+SBTB2}O90(8*@95?Q`l=>iAoLR47xOn2f5 zlQA@FsLmMwVz=38m_tKQ_v8TSXE^|gX+f1+ugE(NX(x6cSSzu$L`j3s_Op?pzM^%- zJ{NkF-e1;|gE4p)ZC{5K1W=FWs;=R?DbxTl3QP9<-yd7pDx7sb&@~0TMd7x8oIPOu zm~L=pcwjY~G*@!%20W<|;`_q-q9-GxK)5!QQi+&weWiz8E@l5e|B^oIA5{{uXhIlF beT)BB-{+>;Vt>X7*lf}@!>l*Z$3FQ5pL$s@ literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/0.DZQ2ZPtV.js.gz b/apps/dashboard/build/_app/immutable/nodes/0.DZQ2ZPtV.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..4eccb210fa53d5d3f01a45120899ab9254adb9bc GIT binary patch literal 3114 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 literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/1.DRopMp8H.js b/apps/dashboard/build/_app/immutable/nodes/1.DRopMp8H.js new file mode 100644 index 0000000..8c10d73 --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/1.DRopMp8H.js @@ -0,0 +1 @@ +import"../chunks/Bzak7iHL.js";import{i as h}from"../chunks/dR5TMuCX.js";import{p as g,f as d,t as l,a as v,d as s,r as o,e as _}from"../chunks/DEYVqDYQ.js";import{s as p}from"../chunks/ZM2C7QQX.js";import{a as x,f as $}from"../chunks/D5-kFxsM.js";import{s as k,p as m}from"../chunks/B-yQpXHS.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var E=$("

",1);function B(f,n){g(n,!1),h();var t=E(),r=d(t),c=s(r,!0);o(r);var a=_(r,2),u=s(a,!0);o(a),l(()=>{var e;p(c,i.status),p(u,(e=i.error)==null?void 0:e.message)}),x(f,t),v()}export{B as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/1.DRopMp8H.js.br b/apps/dashboard/build/_app/immutable/nodes/1.DRopMp8H.js.br new file mode 100644 index 0000000..2f98f21 --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/1.DRopMp8H.js.br @@ -0,0 +1,3 @@ +f`qcUvTyUD > UÑz'Z,kQr1&%z}[[O$בf隭͕Nv!U:7mȗR覤{gEہn2pX @a +"Qb\fB֐A޳=->߷6PVҎO<,v +˿ZܿU(791QkZc:ݫ `q"随c.5z#-"IY! 16t0!u@C'G/R񬙉D}ÈtY:aIᴋ2g}fx`\۰h& \ No newline at end of file diff --git a/apps/dashboard/build/_app/immutable/nodes/1.DRopMp8H.js.gz b/apps/dashboard/build/_app/immutable/nodes/1.DRopMp8H.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..41f8523cf0d46c1b8b697062deebfb5079d89302 GIT binary patch literal 380 zcmV-?0fYV@iwFP!000026J=0MPvbBUz4I$f#bHJoQi_C-2<}RSt~hKDWf6kCAd@(a zH;wJ}M^%XO-&an1DCOd3&3p6S%&68H7e-k&F6yWoKc0Px=2|`c%KrLMt_HSKOn6rJ zl{4*uvV6RHTEx4TL#0j16;%mJ3JKOE5^ShU;K?O0Bon+Hd*07qpa0#zE)P9@QrctX zpT*_f^>Xx}jm}_PAko{;{+#55I?o!e}4ZJMUI9FzK9e zfSr>eI?dW_DD;##A4G`$kla=JK5w#UOA%z56}2pyy{F>u`9?T4=VvgwttV4GzUHhB*#k#NCo%c==1_}18&C){sxXNks|jX z_MAXk10bJvNg{I#1*!eGNERZ2

",1);function A(i,c){v(c,!1),l();var t=E(),r=d(t),n=s(r,!0);o(r);var a=$(r,2),u=s(a,!0);o(a),_(()=>{var e;p(n,f.status),p(u,(e=f.error)==null?void 0:e.message)}),h(i,t),x()}export{A as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/1.wR9SFDr_.js.br b/apps/dashboard/build/_app/immutable/nodes/1.wR9SFDr_.js.br deleted file mode 100644 index a7dee39ef8eb59d839bd9af22abad1020af84bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmV-90ml9tNCF^a)nN=9Rv-mn?t)#f2h(jZh70aEvf~?1J>5JiDi!M~v1{TwnQB|BU8`kT( zyOI`GvJqyxP6{p^^?m>@>DX7G)0%=5K<51@*a;wI%zy$ZVmV~ACgU=OjK$+@6YHx; zC7I2A@H+A!ILlV%~3_MpL!cxG)GNJS!=WQjEDX?IKB*vg~y2mxuQ7vJ?5Q ziXj!{<}&lKQM;9p>+?(> zNqb4&{r+=!+Hc?fBWs$5XfGSw^Hcv`XWvtUG};ID$%jG(rkpblaBwPgPO~lLO3-0TZ}1CDNyI_^Q7Jb|ozV_n${YvbQsgC Mf7wc@i%9|i06$8w(EtDd diff --git a/apps/dashboard/build/_app/immutable/nodes/10.MRR5NpnA.js b/apps/dashboard/build/_app/immutable/nodes/10.MRR5NpnA.js deleted file mode 100644 index 7e306ee..0000000 --- a/apps/dashboard/build/_app/immutable/nodes/10.MRR5NpnA.js +++ /dev/null @@ -1 +0,0 @@ -import{a as g,f as b}from"../chunks/wmwKEafM.js";import{o as $t}from"../chunks/DZf5toYK.js";import{p as Rt,a as Ct,j as X,s as y,e as r,c as a,g as t,r as e,d as G,f as ot,G as O,t as T,u as U}from"../chunks/DleE0ac1.js";import{d as Mt,s as i,a as kt}from"../chunks/8PSwG_AU.js";import{i as Y}from"../chunks/BHs8FnOA.js";import{e as q,i as z}from"../chunks/BsRos8Kb.js";import{s as k}from"../chunks/D6n3ggvw.js";import{a as w}from"../chunks/BcuCGYSa.js";var Dt=b('
'),Ft=b('
'),St=b('
'),Tt=b('
'),jt=b('
'),At=b('

'),Et=b('

Retention Distribution

Memory Types

',1),Pt=b('
Total Memories
Avg Retention
Due for Review
Embedding Coverage
',1),Gt=b('

System Stats

');function Kt(vt,nt){Rt(nt,!0);let n=G(null),l=G(null),c=G(null),Z=G(!0);$t(async()=>{try{await(async d=>{var s=X(d,3);y(n,s[0],!0),y(l,s[1],!0),y(c,s[2],!0)})(await Promise.all([w.stats(),w.health(),w.retentionDistribution()]))}catch{}finally{y(Z,!1)}});function j(d){return{healthy:"#10b981",degraded:"#f59e0b",critical:"#ef4444",empty:"#6b7280"}[d]||"#6b7280"}async function lt(){try{await w.consolidate()}catch{}await(async d=>{var s=X(d,3);y(n,s[0],!0),y(l,s[1],!0),y(c,s[2],!0)})(await Promise.all([w.stats(),w.health(),w.retentionDistribution()]))}var B=Gt(),ct=r(a(B),2);{var ut=d=>{var s=Ft();q(s,20,()=>Array(8),z,($,H)=>{var R=Dt();g($,R)}),e(s),g(d,s)},xt=d=>{var s=Pt(),$=ot(s),H=a($),R=r(H,2),gt=a(R,!0);e(R);var tt=r(R,2),bt=a(tt);e(tt),e($);var I=r($,2),J=a(I),et=a(J),pt=a(et,!0);e(et),O(2),e(J);var K=r(J,2),L=a(K),mt=a(L);e(L),O(2),e(K);var N=r(K,2),at=a(N),ft=a(at,!0);e(at),O(2),e(N);var rt=r(N,2),st=a(rt),_t=a(st);e(st),O(2),e(rt),e(I);var it=r(I,2);{var ht=D=>{var A=Et(),F=ot(A),E=r(a(F),2);q(E,21,()=>t(c).distribution,z,(p,u,v)=>{const C=U(()=>Math.max(...t(c).distribution.map(W=>W.count),1)),M=U(()=>t(u).count/t(C)*100),m=U(()=>v<3?"#ef4444":v<5?"#f59e0b":v<7?"#10b981":"#6366f1");var x=St(),o=a(x),f=a(o,!0);e(o);var _=r(o,2),h=r(_,2),V=a(h,!0);e(h),e(x),T(()=>{i(f,t(u).count),k(_,`height: ${t(M)??""}%; background: ${t(m)??""}; opacity: 0.7; min-height: 2px`),i(V,t(u).range)}),g(p,x)}),e(E),e(F);var S=r(F,2),P=r(a(S),2);q(P,21,()=>Object.entries(t(c).byType),z,(p,u)=>{var v=U(()=>X(t(u),2));let C=()=>t(v)[0],M=()=>t(v)[1];var m=Tt(),x=a(m),o=r(x,2),f=a(o,!0);e(o);var _=r(o,2),h=a(_,!0);e(_),e(m),T(()=>{k(x,`background: ${({fact:"#3b82f6",concept:"#8b5cf6",event:"#f59e0b",person:"#10b981",note:"#6b7280",pattern:"#ec4899",decision:"#ef4444"}[C()]||"#6b7280")??""}`),i(f,C()),i(h,M())}),g(p,m)}),e(P),e(S);var Q=r(S,2);{var wt=p=>{var u=At(),v=a(u),C=a(v);e(v);var M=r(v,2);q(M,21,()=>t(c).endangered.slice(0,20),z,(m,x)=>{var o=jt(),f=a(o),_=a(f);e(f);var h=r(f,2),V=a(h,!0);e(h),e(o),T(W=>{i(_,`${W??""}%`),i(V,t(x).content)},[()=>(t(x).retentionStrength*100).toFixed(0)]),g(m,o)}),e(M),e(u),T(()=>i(C,`Endangered Memories (${t(c).endangered.length??""})`)),g(p,u)};Y(Q,p=>{t(c).endangered.length>0&&p(wt)})}g(D,A)};Y(it,D=>{t(c)&&D(ht)})}var dt=r(it,2),yt=a(dt);e(dt),T((D,A,F,E,S,P,Q)=>{k($,`border-color: ${D??""}40; background: ${A??""}10`),k(H,`background: ${F??""}`),k(R,`color: ${E??""}`),i(gt,S),i(bt,`v${t(l).version??""}`),i(pt,t(n).totalMemories),k(L,`color: ${t(n).averageRetention>.7?"#10b981":t(n).averageRetention>.4?"#f59e0b":"#ef4444"}`),i(mt,`${P??""}%`),i(ft,t(n).dueForReview),i(_t,`${Q??""}%`)},[()=>j(t(l).status),()=>j(t(l).status),()=>j(t(l).status),()=>j(t(l).status),()=>t(l).status.toUpperCase(),()=>(t(n).averageRetention*100).toFixed(1),()=>t(n).embeddingCoverage.toFixed(0)]),kt("click",yt,lt),g(d,s)};Y(ct,d=>{t(Z)?d(ut):t(n)&&t(l)&&d(xt,1)})}e(B),g(vt,B),Ct()}Mt(["click"]);export{Kt as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/10.MRR5NpnA.js.br b/apps/dashboard/build/_app/immutable/nodes/10.MRR5NpnA.js.br deleted file mode 100644 index 916ca9328bbaa3ea06383b730a65c743149950a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2040 zcmVU1$N`h2UG~R5-giTwdQckJoC$+=GU)=OL;r9I@5#WD5Z9aD2c!x zv)COXSXZj|@SIh`M^HPcSNkv10r<7j(J7p!;G=u!-dO&%_BwUD`-3h86pD-?R3;f=*hygO~B}yPnAMn?U^BE}oA^#CC8l zi=y)i*5-w*%mWznVh-nNs5(QLjB*GwZ@qZlVM+Rth|-*WWaMQ)R3wo|w`fUs$S)&% zyU(7y%RaGEuh3=Oe;Q?vy*DM%DgrLF_Mg(m_h`&s$RtX4SST$WqNdqw2}sZIu3AnH znCl);rF{&UknJYqCGl|sM^Rp zLWjyVHxTMK`d+Ew_iHD(}DVg7g`!tbm_Wz0iLu#DXGHxdN-Skw06un>r_1fd-)gh zRI;d;GbvQrr+&N((tm zo{VzoYg!cjylJ5*;`ap^r$U?!T49f40*dS3Td{-shK{nGa~5B{t{tlObO+Vy*k|bf zQy5|Um4iLOGV;gNzNAL1yfl^D*BKKVJwJb?<42LrQMSq z@}P~~B51QBCIkRZOem)7yyR|3{3b1E zF9Jk7@wwGD*@fizfp6l6TQz10c;3##zh$7tI}&0I5n({(h=g;bcvH_ca}uZ-vL;83 zcxTpNc|sUs0CpzmKPz0&}&c%H<6mcPafAngY|gAk5_4evb`q6 zx*e9yTbQ*tXRn_~PaQaF$vz;iyr#5`} zq+mSxA>U!3X=R1X4lA6^?JuW{s4Fq14olzr1POigo(Tx*2EGrF4-al`P4BcNIZ8ou zv9ZxdwB)Ukwy;i7n%05GzmuCimmfq1ASZMKfF!IVp!#=u1(K>_?jUdF^kJBQo=Iqh zwF4!$94+WfYaQW~GC%&Y*7aWuiSow_t8&%(1-W_9U6fAOan;C@q4|r_p&NXPgRS%K zFR_Kwe85#>lW4u`bKV9Jrrxl?kAVYCcwWwyaW}rnnBY-T zzqsNZ3pYWT*WNa+HCM=lgwC(?Nyhef!el51ng0+il~GoeU|SNhg#=rbCtDSwDTenz zGsT`aywzD$i`eV6@T!qyo;3DtfQG#}f&bTTq_VoM(Vviyb`rt~lr&zPI|xDh{7P`I W94|=2fEL=$b88C{q}2<~IsO8gUGath diff --git a/apps/dashboard/build/_app/immutable/nodes/10.MRR5NpnA.js.gz b/apps/dashboard/build/_app/immutable/nodes/10.MRR5NpnA.js.gz deleted file mode 100644 index b95d16bf79dc2829eee3e3cbbc199f972396b49e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2281 zcmV=K?VzH{d?>=)1cO@wc-wG(l(=xZa}!{1(TrJjG$cB@T+) zI0)|H09@f9xr4)L&MF3eisMHPI9&1!htF#S0(o2&cCAc6t2u{!M?dFrw?=*UqBlCd zKKxvk^bz{)KJxXOboV6scvwbiGk$U{@cWuT+KtoQvwm4Xlet@?zY{e)Z#XI=HQ&*i zPCM(Ie(MR1912B_!0OW%`;I>(b|BK!G6rV7N&23dX37<|+}f@Z6=#tn9W(HVi2P81 zG?OeyrP1Esa{OWY1>+}cdOYPj1b<9B4pOsD0&j2m+9aMx%w|bLZ%u<6$gx=?IOrdg zBtFP6HEkJzR9Z*PXz!H$6$_AqDRLMjW*feLO`38m5)p}3xdKlAfQB)`ryZr zDT07FnG*VCyINhaB#&6L%$yf4hj2aL(>@4S92vzge}d9Stp?wn*+1COX8ta zZV->m$=sJY>w^37W84>I)u`U1pJsgs_gOUc-5k_5YX-!n%-MSkR=DXS(f7Mj(Z&-{IH z@Rb|G0BP-&lr^fQ+l0~XW)bPcQ5pxnBl29y87+>1P zb9eidto99VD<6DY1bfDF={B3qrom;H07~ujU)Fc4#_Y=Z@y8#_*W4AwjsZ}%bQBp? z>>^PlEja%Vc@ejMZJh#T+y+ZgL0>aoXD!Vs18Yg|1So6$q$#ggIp)KmQer}P8ULNr z4gQABfnDnefgau9T{dG}(v)$JIy_}FJ}xV~z)d%-7!dKs5_E&{uBGT3UT53`OVF-P zS4q1}f7}2P?BZ%4R{?Mh0QcC)5pOL;HxTg767((O5^?VsPjHklS0{n-kF<_*?{c{_ zOVM{I_udlpjPVfh?-BdHfS%>h50;{52o;F=z_^Q}Sm+i@-5+uRg{(iIM2biSj9=qJ zs_CaoywaAu&82*ldRs(d0M^mmafjA1I_?A=cgXm$4%&$h+E04S>opx6pf;;GrEp`I z5}xrP1`4whNXPn25qmCRPzlADRw|V>xk@M!`o(I0sn~HA0pm5s`1xECXvXsSEubCt zk6N|LcsO4i?l%sKI@%lVZyywewl~~=c~Dd$R##(Z$E_K;?PIHl7RHvKW5!)e(0K0M zI0sx?ipJ>Cfu-m*KKy10I+%k7=*BVQmzu@Yr!HUeWc-d^^P7Rhp1Maira;fx!GU4S z{@x;eVc&WBB*<67e5FO=MA$w|_DHqzvPD8aG8YQ!$@qqGpZ=Ebp+w|KOnZ+ee4OY1 zG5(z7%zKuiCrJ20hpjgc+r=VmAN#k`hKh^;?@Clhqd&oGGn)r+QD?)sm%mcnnAcg} z*E?1omm$Lza=v`4{m=wL>k@rCwge5)#fpxR&aa&;==FT<8f^&+-`>$NzghJfow~w? zJ>z+!zgu^A3~tAfEfbvC?Qh#SBZo4AQrAtSO5>>1nWGrwvgPtb07!)ZX*YLYy~5UQ z`>C&G=J_?d>QGkh%z5Z^Y+T-<3?BykoU%o9!aO<`_|wZx{$wfID{5{8Rx)>XW*wr} zhL%8IcPv4N=#616c5W#;%maD8QhzdXFdvk3Drw-`l2&=WsskDF@gk71b&I-n1Q@@z z1a(ojo9o65cOT5~7^Cn-C-^nL*_eLGv$)8{F=l*(ji1f<6>_3_vN#NSpk(C1Kv!)A z;uC)?9a?2S&_5xMbN`&BRbH_=pP6Bqz~w!33gRScU1>8;Uj*?PxvwK z@eBSb&({rpGrtkqaS$ua*dtA`S-oHXhkCwNy}_RG=6;@^Eb{A)cKJ=A?0A`W9`GKH zec(4kbWgx4L#Z%tm!JeV&4V0t zrfqGZC}I`4_`+CxV5}zh9Zd&DH*3EjiZz+MemZsqHvS;z&j?YyIs{*dN1qYZm|j DF_~-> diff --git a/apps/dashboard/build/_app/immutable/nodes/10.d6KMeS24.js b/apps/dashboard/build/_app/immutable/nodes/10.d6KMeS24.js new file mode 100644 index 0000000..156b150 --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/10.d6KMeS24.js @@ -0,0 +1 @@ +import"../chunks/Bzak7iHL.js";import{o as $t}from"../chunks/BycUxjt3.js";import{p as Rt,a as Ct,j as X,h as y,e as r,d as a,g as t,r as e,s as G,f as ot,G as O,t as T,u as U}from"../chunks/DEYVqDYQ.js";import{d as Mt,s as i,a as kt}from"../chunks/ZM2C7QQX.js";import{i as Y}from"../chunks/CpubbTHs.js";import{e as q,i as z}from"../chunks/CiJhRXcr.js";import{a as g,f as b}from"../chunks/D5-kFxsM.js";import{s as k}from"../chunks/B9t3YtL9.js";import{a as w}from"../chunks/BcuCGYSa.js";var Dt=b('
'),Ft=b('
'),St=b('
'),Tt=b('
'),jt=b('
'),At=b('

'),Et=b('

Retention Distribution

Memory Types

',1),Pt=b('
Total Memories
Avg Retention
Due for Review
Embedding Coverage
',1),Gt=b('

System Stats

');function Lt(vt,nt){Rt(nt,!0);let n=G(null),l=G(null),c=G(null),Z=G(!0);$t(async()=>{try{await(async d=>{var s=X(d,3);y(n,s[0],!0),y(l,s[1],!0),y(c,s[2],!0)})(await Promise.all([w.stats(),w.health(),w.retentionDistribution()]))}catch{}finally{y(Z,!1)}});function j(d){return{healthy:"#10b981",degraded:"#f59e0b",critical:"#ef4444",empty:"#6b7280"}[d]||"#6b7280"}async function lt(){try{await w.consolidate(),await(async d=>{var s=X(d,3);y(n,s[0],!0),y(l,s[1],!0),y(c,s[2],!0)})(await Promise.all([w.stats(),w.health(),w.retentionDistribution()]))}catch{}}var B=Gt(),ct=r(a(B),2);{var ut=d=>{var s=Ft();q(s,20,()=>Array(8),z,($,H)=>{var R=Dt();g($,R)}),e(s),g(d,s)},xt=d=>{var s=Pt(),$=ot(s),H=a($),R=r(H,2),gt=a(R,!0);e(R);var tt=r(R,2),bt=a(tt);e(tt),e($);var I=r($,2),J=a(I),et=a(J),pt=a(et,!0);e(et),O(2),e(J);var K=r(J,2),L=a(K),mt=a(L);e(L),O(2),e(K);var N=r(K,2),at=a(N),ft=a(at,!0);e(at),O(2),e(N);var rt=r(N,2),st=a(rt),_t=a(st);e(st),O(2),e(rt),e(I);var it=r(I,2);{var ht=D=>{var A=Et(),F=ot(A),E=r(a(F),2);q(E,21,()=>t(c).distribution,z,(p,u,v)=>{const C=U(()=>Math.max(...t(c).distribution.map(W=>W.count),1)),M=U(()=>t(u).count/t(C)*100),m=U(()=>v<3?"#ef4444":v<5?"#f59e0b":v<7?"#10b981":"#6366f1");var x=St(),o=a(x),f=a(o,!0);e(o);var _=r(o,2),h=r(_,2),V=a(h,!0);e(h),e(x),T(()=>{i(f,t(u).count),k(_,`height: ${t(M)??""}%; background: ${t(m)??""}; opacity: 0.7; min-height: 2px`),i(V,t(u).range)}),g(p,x)}),e(E),e(F);var S=r(F,2),P=r(a(S),2);q(P,21,()=>Object.entries(t(c).byType),z,(p,u)=>{var v=U(()=>X(t(u),2));let C=()=>t(v)[0],M=()=>t(v)[1];var m=Tt(),x=a(m),o=r(x,2),f=a(o,!0);e(o);var _=r(o,2),h=a(_,!0);e(_),e(m),T(()=>{k(x,`background: ${({fact:"#3b82f6",concept:"#8b5cf6",event:"#f59e0b",person:"#10b981",note:"#6b7280",pattern:"#ec4899",decision:"#ef4444"}[C()]||"#6b7280")??""}`),i(f,C()),i(h,M())}),g(p,m)}),e(P),e(S);var Q=r(S,2);{var wt=p=>{var u=At(),v=a(u),C=a(v);e(v);var M=r(v,2);q(M,21,()=>t(c).endangered.slice(0,20),z,(m,x)=>{var o=jt(),f=a(o),_=a(f);e(f);var h=r(f,2),V=a(h,!0);e(h),e(o),T(W=>{i(_,`${W??""}%`),i(V,t(x).content)},[()=>(t(x).retentionStrength*100).toFixed(0)]),g(m,o)}),e(M),e(u),T(()=>i(C,`Endangered Memories (${t(c).endangered.length??""})`)),g(p,u)};Y(Q,p=>{t(c).endangered.length>0&&p(wt)})}g(D,A)};Y(it,D=>{t(c)&&D(ht)})}var dt=r(it,2),yt=a(dt);e(dt),T((D,A,F,E,S,P,Q)=>{k($,`border-color: ${D??""}40; background: ${A??""}10`),k(H,`background: ${F??""}`),k(R,`color: ${E??""}`),i(gt,S),i(bt,`v${t(l).version??""}`),i(pt,t(n).totalMemories),k(L,`color: ${t(n).averageRetention>.7?"#10b981":t(n).averageRetention>.4?"#f59e0b":"#ef4444"}`),i(mt,`${P??""}%`),i(ft,t(n).dueForReview),i(_t,`${Q??""}%`)},[()=>j(t(l).status),()=>j(t(l).status),()=>j(t(l).status),()=>j(t(l).status),()=>t(l).status.toUpperCase(),()=>(t(n).averageRetention*100).toFixed(1),()=>t(n).embeddingCoverage.toFixed(0)]),kt("click",yt,lt),g(d,s)};Y(ct,d=>{t(Z)?d(ut):t(n)&&t(l)&&d(xt,1)})}e(B),g(vt,B),Ct()}Mt(["click"]);export{Lt as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/10.d6KMeS24.js.br b/apps/dashboard/build/_app/immutable/nodes/10.d6KMeS24.js.br new file mode 100644 index 0000000000000000000000000000000000000000..2b273b5e02bf2ef25a88d9fddc2a09eafc0b193e GIT binary patch literal 2038 zcmV34k(&`;nfQs}z z+WKwdJNt*Z-e?u6TAF1rtMW^>Pp?MQ@7jHQK zc93;<%Q<=Ety)&R>PW^>c-3Imw>j*h)?%7*cpI2W3^)BoZl%yX1}8M>#AFNEI}`4E=GnFNtPTo|xjFqkG*rm-AC2Z*8S!j!{Qr?BvZpIOAESwpDCG12zec zsLa?68?Suat#6dK%UNrp%xmGFXE8Q@q(6Xj1ljB@a~+jQhou=H1*hL*#>hVq?}@;5 z&)JjX6fXMlcOq}*vcSCvHmCa+#5=f}*wGWikIoM-@fsd);J7K^eI(vMbraRdqSIzd zGwU0y8oUr$6epg?Cw>v*09P0+Tp=<;r>)=leG$0UEa;vXxx6r}*e^3p)AlABFwGg1 z`SQkhbThHB3ezL4Vp^B4Z=x7i?H+r0VYLwGAyT^WX_lRJ2)@NwN-74jaw#Pci<)JA z}RezB+- zbNCsBI)-^hCK+myoVCxyEzi5{Cdeuv%8@*=NYq~@fdxa{>UWBykShIPrZPp_Are#?c^bp0o@2d=} zMop8_5A^H*|G>y0kG0enWMb`cSp^EqezNi^`QdB~P7ywP9VHtj>Bnqg0 zv@1o;u3$83_lg?++=h;?sTn`0$oG8%7M7v?yBx^(OG`!!W^{naEKyX7=M9v9hl2XT zegKeFE<=ny4Wpv~u#{O3W9gUBIFi~Dg4hn%i!< zQ`FB!*L#UHiKSzLe5r8PG8X_i4U#VzzkZXkv z;G>rm0qZ8+9{IzIO_Vee|tzwCsgm(*O$So~M`Qi83jJ z98{LHjc!qut0PshF3n1X=u-P#5mv2yZ5RNAkpzH{!bS+x@D^f(R8`#r+5VlkMr!*MV;gO7p3g6~eo~YIH$+tY!szAGjQc z8j<*`(!+K<;K^~+B=ufIp#!MnVRW&_E7H~HtSeX*&Y2TPdUUY>M;v=Q?`*0} zLESU<0e{kj<@7+Q%L(UDJ|*+~6<*jYy+c_+BqX8XrUB4fZ6&poB1SqWo{;qPD<(Qv zi>GJUR~gZ5MHFZ>YRsHVDcmre>&FCz_>GW!g5Bwfl#@`~1uE2@{JE24St5~;9Du$h zp77F9AWsnF^oX7@4kSzi2d@G9(i#;d-xowD{g>nmlWNUZ=>P&1No2zzi89 zJW3j}0~RE14#Pb2xOR9OA(JIbuVrmEc6nkuR)CbX;Zho1}s zyX`n$TJsKDzx`qx8!NT1P9%2MM zxCqkud-Px~`kF~}yAqAq@JM03#kR7}65B}GlIq@1L) U4Qc#k8Q!>Vow1_4^ubNpH-850u>b%7 literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/10.d6KMeS24.js.gz b/apps/dashboard/build/_app/immutable/nodes/10.d6KMeS24.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e47cc6f560840a76345e7178d24304782962defd GIT binary patch literal 2295 zcmV;9L8MYptysB;4Tip z6%LXoI2`jn4iWHU96xcu;ew|)e0~U^eR%ohNBi=u2teEJKyJ>o>+}bV^ z6{Vpg9n*J-2)#gnG~?7yq|w~la=c;l1>;9+c3kB-1b<9B@)NU4e0O*GS|_fE&3eJY z`I?2kFEg`3aL_-fNj#82V%jnUskDuX(cDX75ze(hW?*Is(WB!9Mw9Gqp+J)qjgQQJ z>iY}VfPfNV;(-^1rtp2@q)O})J0u!P)%T;3IiAHbN4>y)_$%!5vZ|FIz)#X1`0}avd&+YMu&spI=k>YTBTd(jM!zZ9B*^^_q~oQ(uii(S+9OGNYUf?a>%*S^q`Vd^ zXk^vQU(YONRpVU)`p_#90Jigs2!u~G13b+BFS+<{!~Cz|JQ%uUQEdMSn14OA?NpL} zq)1l|JvsXSzx%^Bbpx<*p`kTJuvXR z8JXLePl8MzG-Q4jy~MU!Sq+{4>$Yk%&&LVKfSiK>?5GtTv-x?|=%=Br&x{kGL*OB> zNf&4c{8^bbdQgKc0-~cmAxxrqhD+chq4MB_UPeBsV(VHJ(?> zz1KSxgFDhy!jaCd@w~tNT9$hTx0MH;E&N^Mx$M{L^}4}j5Cdwx?7gb)l#S_?bN$C3 z%hx;=tv8wFju!MkkAxTFc=E_HaqraUVeJjG2ntO!uzttIFN z<6TS9x4g=@3znc=%~wggOn=<~0_@^y4_5(j4FLDp$R*xcif*95drQ!Fj7yYz&v=ZZ zgqb-BjDMn4)O(-neXtaLk9sGTpdT0yQ2qpEPZpvda?y{Lq90IHpv*_c`#6fZZLzfd zF;`HC`Xg#2D5-$)8+=GK{A4Mwv?uR!Ef2NcEiy3xt33)K~9i<^K zUSW)PW|}}#md|eiZLxn;%4Nob+2U}ow!bK(-QnK${-V-$hkLK~7o~{hReSleUompu zGwU2Zj4VMj#`~6_(JZ=AE^uQh8ev2SmZCTK@Wm2zFcTVJ7&FE%G>VBw`+SL$@q2p1 zZwC^a>Mq%s0PV2-eZ!dky+L}yzIXLekgo*!N`pkPuss;>l5*))g9Kh^&J9%K?3Qtl ze#!SxB6KCv-lZ|ma{eFU&ry#2+*0%i0iWu$ozK#CI#1iD-kr3eBtyW<64lx0jq%>h zW(l0v*>D!+ZxlD?RhBpQmX+sa$gq`kmT#474Ir>CFt(W`Xn-MBG($MQ53-;)v$Y%a zC0NAvo@V@ZHEMLy7dGq~&uhJ%YX7Cd?I^Tmj59mEZ5wCgP=-)wyRlSB6c$=@7=c{& zTpkMmsZc=L^_|zRv3J{E;%S{3zou6$%8IQyPo2(9pSLK(hXL3H8%n)o&`I#4lrs%OJJ;9mY_q7#xPgwSc(qwM0Qr{PlgWiK}n~S_?|6knODm? zkpa)D1_>CoKA8q$@+sN?#qYRHQ3tu(CZ}{!TEKT~&$vfh{Pu9+*5X=EDAvoW%f7a* zQL$T=2R&ue#w9)D7}&?C9#YyE+r1FmnoWIeMXLHFJo9?Lg2rnLK!uVgBDom6h z`W(knwM2qfrWtP^ac-5imARpimE`;rWB!G)O7450hV6Uyy}`%8eOO#i8kf`t?r5HU zXZsFKf$6|*ZX&?VO^0T{D@Z+w*CZG3)^8YZ0cFz;(5so*Yu1pN{@eCM|FLaHK^%oL RglXe%e**kCc&v&S000g!jVb^D literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/11.BQP2Ra5z.js b/apps/dashboard/build/_app/immutable/nodes/11.BQP2Ra5z.js new file mode 100644 index 0000000..c1b4740 --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/11.BQP2Ra5z.js @@ -0,0 +1 @@ +import"../chunks/Bzak7iHL.js";import{o as pe}from"../chunks/BycUxjt3.js";import{p as ce,s as b,c as me,g as e,a as ue,e as r,d as a,h as c,r as t,t as g}from"../chunks/DEYVqDYQ.js";import{d as _e,a as K,s as m}from"../chunks/ZM2C7QQX.js";import{i as P}from"../chunks/CpubbTHs.js";import{e as h,i as R}from"../chunks/CiJhRXcr.js";import{a as l,f as v}from"../chunks/D5-kFxsM.js";import{s as Q}from"../chunks/B9t3YtL9.js";import{b as fe}from"../chunks/DNwVrE-V.js";import{a as xe}from"../chunks/BcuCGYSa.js";import{N as U}from"../chunks/Dwpy08gq.js";var be=v('
'),ge=v('
'),he=v('

No memories in the selected time range.

'),ye=v('
'),we=v(' '),ke=v('
'),Te=v('
'),je=v('
'),Ne=v('
'),Oe=v('

Timeline

');function Ye(V,W){ce(W,!0);let u=b(me([])),y=b(!0),w=b(14),k=b(null);pe(()=>Y());async function Y(){c(y,!0);try{const s=await xe.timeline(e(w),500);c(u,s.timeline,!0)}catch{c(u,[],!0)}finally{c(y,!1)}}var T=Oe(),j=a(T),_=r(a(j),2),N=a(_);N.value=N.__value=7;var O=r(N);O.value=O.__value=14;var S=r(O);S.value=S.__value=30;var q=r(S);q.value=q.__value=90,t(_),t(j);var X=r(j,2);{var Z=s=>{var d=ge();h(d,20,()=>Array(7),R,(f,x)=>{var i=be();l(f,i)}),t(d),l(s,d)},ee=s=>{var d=he();l(s,d)},te=s=>{var d=Ne(),f=r(a(d),2);h(f,21,()=>e(u),x=>x.date,(x,i)=>{var D=je(),E=r(a(D),2),$=a(E),A=a($),C=a(A),ae=a(C,!0);t(C);var z=r(C,2),se=a(z);t(z),t(A);var B=r(A,2),G=a(B);h(G,17,()=>e(i).memories.slice(0,10),R,(n,o)=>{var p=ye();g(()=>Q(p,`background: ${(U[e(o).nodeType]||"#6b7280")??""}; opacity: ${.3+e(o).retentionStrength*.7}`)),l(n,p)});var re=r(G,2);{var ie=n=>{var o=we(),p=a(o);t(o),g(()=>m(p,`+${e(i).memories.length-10}`)),l(n,o)};P(re,n=>{e(i).memories.length>10&&n(ie)})}t(B),t($);var oe=r($,2);{var le=n=>{var o=Te();h(o,21,()=>e(i).memories,R,(p,F)=>{var L=ke(),H=a(L),M=r(H,2),I=a(M),ve=a(I,!0);t(I),t(M);var J=r(M,2),de=a(J);t(J),t(L),g(ne=>{Q(H,`background: ${(U[e(F).nodeType]||"#6b7280")??""}`),m(ve,e(F).content),m(de,`${ne??""}%`)},[()=>(e(F).retentionStrength*100).toFixed(0)]),l(p,L)}),t(o),l(n,o)};P(oe,n=>{e(k)===e(i).date&&n(le)})}t(E),t(D),g(()=>{m(ae,e(i).date),m(se,`${e(i).count??""} memories`)}),K("click",E,()=>c(k,e(k)===e(i).date?null:e(i).date,!0)),l(x,D)}),t(f),t(d),l(s,d)};P(X,s=>{e(y)?s(Z):e(u).length===0?s(ee,1):s(te,!1)})}t(T),K("change",_,Y),fe(_,()=>e(w),s=>c(w,s)),l(V,T),ue()}_e(["change","click"]);export{Ye as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/11.BQP2Ra5z.js.br b/apps/dashboard/build/_app/immutable/nodes/11.BQP2Ra5z.js.br new file mode 100644 index 0000000000000000000000000000000000000000..7d486ada2466a2af867716257ce3cf8d845084a3 GIT binary patch literal 1542 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'),ge=v('
'),he=v('

No memories in the selected time range.

'),ye=v('
'),we=v(' '),ke=v('
'),Te=v('
'),je=v('
'),Ne=v('
'),Oe=v('

Timeline

');function Re(V,W){ce(W,!0);let u=b(me([])),y=b(!0),w=b(14),k=b(null);pe(()=>Y());async function Y(){c(y,!0);try{const s=await xe.timeline(e(w),500);c(u,s.timeline,!0)}catch{c(u,[],!0)}finally{c(y,!1)}}var T=Oe(),j=a(T),_=r(a(j),2),N=a(_);N.value=N.__value=7;var O=r(N);O.value=O.__value=14;var S=r(O);S.value=S.__value=30;var q=r(S);q.value=q.__value=90,t(_),t(j);var X=r(j,2);{var Z=s=>{var d=ge();h(d,20,()=>Array(7),R,(f,x)=>{var i=be();l(f,i)}),t(d),l(s,d)},ee=s=>{var d=he();l(s,d)},te=s=>{var d=Ne(),f=r(a(d),2);h(f,21,()=>e(u),x=>x.date,(x,i)=>{var D=je(),E=r(a(D),2),$=a(E),A=a($),C=a(A),ae=a(C,!0);t(C);var z=r(C,2),se=a(z);t(z),t(A);var B=r(A,2),G=a(B);h(G,17,()=>e(i).memories.slice(0,10),R,(n,o)=>{var p=ye();g(()=>Q(p,`background: ${(U[e(o).nodeType]||"#6b7280")??""}; opacity: ${.3+e(o).retentionStrength*.7}`)),l(n,p)});var re=r(G,2);{var ie=n=>{var o=we(),p=a(o);t(o),g(()=>m(p,`+${e(i).memories.length-10}`)),l(n,o)};P(re,n=>{e(i).memories.length>10&&n(ie)})}t(B),t($);var oe=r($,2);{var le=n=>{var o=Te();h(o,21,()=>e(i).memories,R,(p,F)=>{var L=ke(),H=a(L),M=r(H,2),I=a(M),ve=a(I,!0);t(I),t(M);var J=r(M,2),de=a(J);t(J),t(L),g(ne=>{Q(H,`background: ${(U[e(F).nodeType]||"#6b7280")??""}`),m(ve,e(F).content),m(de,`${ne??""}%`)},[()=>(e(F).retentionStrength*100).toFixed(0)]),l(p,L)}),t(o),l(n,o)};P(oe,n=>{e(k)===e(i).date&&n(le)})}t(E),t(D),g(()=>{m(ae,e(i).date),m(se,`${e(i).count??""} memories`)}),K("click",E,()=>c(k,e(k)===e(i).date?null:e(i).date,!0)),l(x,D)}),t(f),t(d),l(s,d)};P(X,s=>{e(y)?s(Z):e(u).length===0?s(ee,1):s(te,!1)})}t(T),K("change",_,Y),fe(_,()=>e(w),s=>c(w,s)),l(V,T),ue()}_e(["change","click"]);export{Re as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/11.DwFmilUf.js.br b/apps/dashboard/build/_app/immutable/nodes/11.DwFmilUf.js.br deleted file mode 100644 index b215de95efa968fcde8142261390542283edf63e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmV+b2LJgRF%JM71#Z*xbfm6GTCc_l*9b3dSX=)0d1ZoE(GJ0APB3SdzkSsPe21Mk zImCh%jg_XQ_?IJE?=P*|XVzw<5N{CrIF(6IRLO%Vii!WYJ@Gr_)ewiREIcky=fH!-RR`TL0q~+10B@ zeE%E5x94xjvl1-UrBTKatL$?o8;n2)Ygve1!}cSM0}8| zJz@`$EvqrTYEJI2mS{`Edc>kMS0viha+%oANyGtUlnav`YZ#nkesVx?kQ zYp9+v8AH?PMo`7Kn+)rum*~4uTRwg7l4nJ4zWXK`vaG7$7p71JS;zBNf}#oXf)!;W zWjW#ITEbj9nh`W%FXq16iMg{vsr=1ihI^IQBk>~Y`Cd@3JHb3O<7YdP&a~$ONt!ZU z@>(l4m=2qNsv%!(S)U>AOT64 zvT3fnnU(uF=w>sU6`@HL6efi5+Fop1l@sr0ExF>)RzDGJ58d&dH>rh%ilDy1XLKk+U z=Ivk~n3Ce$*eT!ZgwBuGE`Wi zR^w>o`*W11LPi)&+v1loe6m1HE?y1_p8rsQd!P3&ta2*jjYcA@f?{_H z1S1H+Ng{}_$=5b<@_Aa^>`c}Yho{k4!PEs+N0(%pw=7te2uiPHnRhL?zBI4o z5J3(jV$ zXn~Q0Q+B4H$o$PhOK(ro(HlQBvZghjFhAu&)Pmjc6VSfhA@GpUa zQ}58NrWqR*37?vx<6nzs>0^9d9}PFYkPUvK*e`v*>67|C3!9oozn?xn*sa?J!z4A| zLg}36xf^ws^B_#Q_nq}EaIbVoIS(n%F42|ksP1%Jm7C!d(nN4MCoU%w&QB<1BagZ& zr*R;l#GPU@OwC-kO+engIG?{jcR2io2DG`4+9j>vF~EwhbdI=L0@jFcJ!QumrO62G zEg1#J>7geu+8-JR1F^>XGS~fE?wAf>tVt|A*uy}Na42+qdYt2jtXkYzwgqhjW>nGo zLT^IO|7D}&vy*e4^T?boUbd6vbfAiaw|@?!_lp(em6RhS^N=fm{Pw&V-Au5sf*|sF z7PR9n`Ob?rkQo^X%wf!%wT&5}$`aRCC1-{>enV`RZK<4ifXTCd|D)oR7Xpve4o7SS z?T3}F0y2>KN48lKNB@aKv@5yLp1~~V!+<5S3D9Q9G8$NltSI7Na`QD5xeqFas4OOo me9s>cl2P!L4OcH+t0b$J(;7@?hnp1#b(5-h=kC0NA@O;I{dTh1>Gb;ZNEea8s;Kw=+4b3toQIkM2P@D+ zuQ)orzg>V{BJ|5L^5`u1cKP+WVURtU6Bk5}zTNY~9`Pcnl&EwqXPdYkOBHz_J*aKj zBu|UP2j7Z1L?&S@HCR~@DX6seYJS*jy=A1fB+;=r9J7%cKLB!8gm;MTCSwkn* zmQ&qYU_~&FrMh{Tyjb>>BU#R5IV27ft8XAHy!|jHQJ8?`MKaDT=au?2+|Ns0Cb8)K zmhrol@?&jnk_>;`H1{F5^z=d%u8yEqx5;!M>T}XRuSCirk~-`G$s)^XED9%Gl}3dI z5<#G?2GMC|ZIZsVMY`6Kj+5;58I55gGX*%<(j6*A<{CB`zvn{fFc?m5*SBmjM`s## zTG3Qrx6nFGUY!lx2#m~0W;NzdSi_#MT-9vu; za;ZocbRQro;cI3{#U)=i4?A5=f;7=q41QR|uk-MeIl>W)BW(5Z=qY#M^x=^)J`^r}V>8|tE_E7=zX+EmMHI1S29z?@qRLf;(muKhumqxzc;-m~*#FHb(Tz z1JIOJlhlX1VFr)?{#*HV+ufOT897Ik}XMGJpBokVx=%Z+vkTk`rQ^re*F;e_y_X6%tOWwQUx?-(zDvT+;e!^~|` h%_D2Vzt.children),p(r,o)}export{d as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/2.CsdNgH7Y.js.br b/apps/dashboard/build/_app/immutable/nodes/2.CsdNgH7Y.js.br new file mode 100644 index 0000000000000000000000000000000000000000..2b0e59b7b195635c8fd643c7fb12e7570bfadf1a GIT binary patch literal 143 zcmV;A0C4{s_5gt7YFnL>7}6e^;KijOW;!{)X-r|>7I1+UP!#9favKAWV>zm@)CZmk zmgQt4_3W6NSEAi9w@22Bi9xm18ZO4T+pe9R!gBR{hs)m$a(J{TdoaN9jJ+=66XM+j x_4NDynfvCy6o}{~uCG7x0MX*e1s@Ge5NSZ8al#(vhz^)OYSqFP6pK090R~^lNP++W literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/2.CsdNgH7Y.js.gz b/apps/dashboard/build/_app/immutable/nodes/2.CsdNgH7Y.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..5100b59c0bdbc5e1d64e6e51569fbac02eacf1c0 GIT binary patch literal 185 zcmV;q07m~GiwFP!000026J^b@4uUWk1mNALAWUsi%VZn~4hD^b4jN;ETT?(P_Wx^J zlt_4Y0}~0;4fkD6X@k~>oJX>1pmx#rC+f929Qo6Qu^QX141^1GUs}`?neMXNJI&5h zDF+Em3}I%2)w15V?lc{^L8_UA$K`(g;wZ}oq*n+*PAv1Z`v@Cg0)#S=Xo56WL@+{= njpwpbuiO?unIV=T?TdDN$%hw-+8`9*`*`sO>K|Fx_W%F@mSRyk literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/2.VW3Ep--L.js b/apps/dashboard/build/_app/immutable/nodes/2.VW3Ep--L.js deleted file mode 100644 index a0fb974..0000000 --- a/apps/dashboard/build/_app/immutable/nodes/2.VW3Ep--L.js +++ /dev/null @@ -1 +0,0 @@ -import{c as m,a as n}from"../chunks/wmwKEafM.js";import{f as p}from"../chunks/DleE0ac1.js";import{s as e}from"../chunks/CVDMn5X_.js";function c(r,a){var o=m(),t=p(o);e(t,()=>a.children),n(r,o)}export{c as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/2.VW3Ep--L.js.br b/apps/dashboard/build/_app/immutable/nodes/2.VW3Ep--L.js.br deleted file mode 100644 index e29d20efc221141f4e89370389b39ce2d1337c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143 zcmV;A0C4{s*Z>%e#5hLslW1k5Yn$DYIMP2jGe=UBXSI$wy2b~qj84vv8dzv~Tb>ng zKmkS+N;&1QB~}#Ze>$em{Y^={l3tDJ!=KMo*NwE=hjum2{`B0q@bzY;LZTQaCpg`% x8K)LjHYaxA_ydKus1z18u6;+@1FD;xU__C_rUFW1{T8SWSR?-VHMDmALIEBDM7sb0 diff --git a/apps/dashboard/build/_app/immutable/nodes/2.VW3Ep--L.js.gz b/apps/dashboard/build/_app/immutable/nodes/2.VW3Ep--L.js.gz deleted file mode 100644 index 20cb6e32d38be1761d3053cfec1d7bfaaf8bf1d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmV;c095}UiwFP!000026J5`-3c@fHh2h<&2%QoLsSZx1F1C|&6*mbnq0#2vkfc^9 zeRqitN~g1YXZWr27}BhWjKp!72No016+)D%AK?+p$xWwLnoitfQQ7aoWa-zk8Fagq zYWFW=mU=CZ=ca@G<@%9k1eGiTQ8aML=BEq#(@To ZY|*b@fI{aHG^C~4ya7?bi@ezY0011CP5%G@ diff --git a/apps/dashboard/build/_app/immutable/nodes/3.DD49Kzda.js b/apps/dashboard/build/_app/immutable/nodes/3.DD49Kzda.js new file mode 100644 index 0000000..93c7bd1 --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/3.DD49Kzda.js @@ -0,0 +1 @@ +import"../chunks/Bzak7iHL.js";import{i as p}from"../chunks/dR5TMuCX.js";import{o as r}from"../chunks/BycUxjt3.js";import{p as t,a}from"../chunks/DEYVqDYQ.js";import{g as m}from"../chunks/B-yQpXHS.js";function g(i,o){t(o,!1),r(()=>m("/graph",{replaceState:!0})),p(),a()}export{g as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/3.DD49Kzda.js.br b/apps/dashboard/build/_app/immutable/nodes/3.DD49Kzda.js.br new file mode 100644 index 0000000000000000000000000000000000000000..05056bf906bf5069197dcc8dd9246daaa1cebfcd GIT binary patch literal 164 zcmV;V09*eXBmpqwa9f>{VCnXz5)m_-ou6r9p&i#2cv~b<9N;Ve9{JtiFrgqU8pe6C zb?^oAtCaj}Z zqCr;c|Hoea?+|z0kmdMp{dUhNeiuP5nK<>pEKzk_ascpnq64Zv-V2q|4cZ;`H=t@c S#w81Ii3XhWQ5=J0J|qB!TTZM1 literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/3.DD49Kzda.js.gz b/apps/dashboard/build/_app/immutable/nodes/3.DD49Kzda.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6c2bfe7cef1124c3cae216fb8a376c38be3599fc GIT binary patch literal 201 zcmV;)05<<0iwFP!000026J^a!3xY5J#_@Zf!aQxTw1^0bI+%fnI+zu99Bb;dy)-9i z;&%_bBz1m%Jb%WO)W&ukmt>VFO4obgV#$Jolb80Ieb$y)xU^K4Xvqiiep;N5)h-@N z*-QN^y@p)s+{}kk_0k~xYyJK0`t)z%(5AiRf3K4!RB;e}WKs!Ym=snD7?Q9xK%(&s zA`JlCY&o#qRAZIdsMSR!1*54eFTuDKN>DHq+Iq9H#B>?~c D2B~0R literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/3.DlJxvrxN.js b/apps/dashboard/build/_app/immutable/nodes/3.DlJxvrxN.js deleted file mode 100644 index 093c0a4..0000000 --- a/apps/dashboard/build/_app/immutable/nodes/3.DlJxvrxN.js +++ /dev/null @@ -1,3 +0,0 @@ -import{a as u,f as m}from"../chunks/wmwKEafM.js";import{o as xe}from"../chunks/DZf5toYK.js";import{p as ge,t as g,a as fe,s as n,c as t,d as h,g as e,e as i,r as a}from"../chunks/DleE0ac1.js";import{d as be,a as D,s as d}from"../chunks/8PSwG_AU.js";import{i as $}from"../chunks/BHs8FnOA.js";import{e as _e,i as he}from"../chunks/BsRos8Kb.js";import{s as ye}from"../chunks/BK028jHP.js";import{s as we}from"../chunks/D6n3ggvw.js";import{s as De,a as $e}from"../chunks/M1z6VHZC.js";import{G as ke}from"../chunks/CVZIBdRK.js";import{a as f}from"../chunks/BcuCGYSa.js";import{e as Se}from"../chunks/kVvujbiQ.js";var je=m('

Loading memory graph...

'),Ce=m('

Your Mind Awaits

'),Fe=m("
"),Me=m(' '),ze=m("
"),Ae=m('

Memory Detail

Retention
'),Ge=m('
');function Je(B,E){ge(E,!0);const H=()=>$e(Se,"$eventFeed",J),[J,K]=De();let v=h(null),s=h(null),I=h(!0),k=h(""),x=h(!1);xe(async()=>{try{n(v,await f.graph({max_nodes:150,depth:3}),!0)}catch{n(k,"No memories yet. Start using Vestige to see your memory graph.")}finally{n(I,!1)}});async function O(){n(x,!0);try{const r=await f.dream();n(v,await f.graph({max_nodes:150,depth:3}),!0)}catch{}finally{n(x,!1)}}async function Q(r){try{n(s,await f.memories.get(r),!0)}catch{n(s,null)}}var S=Ge(),P=t(S);{var U=r=>{var o=je();u(r,o)},W=r=>{var o=Ce(),l=t(o),y=i(t(l),4),w=t(y,!0);a(y),a(l),a(o),g(()=>d(w,e(k))),u(r,o)},X=r=>{ke(r,{get nodes(){return e(v).nodes},get edges(){return e(v).edges},get centerId(){return e(v).center_id},get events(){return H()},get isDreaming(){return e(x)},onSelect:Q})};$(P,r=>{e(I)?r(U):e(k)?r(W,1):e(v)&&r(X,2)})}var j=i(P,2),b=t(j),Z=t(b,!0);a(b),a(j);var C=i(j,2),ee=t(C);{var te=r=>{var o=Fe(),l=t(o);a(o),g(()=>d(l,`${e(v).nodeCount??""} nodes / ${e(v).edgeCount??""} edges`)),u(r,o)};$(ee,r=>{e(v)&&r(te)})}a(C);var ae=i(C,2);{var re=r=>{var o=Ae(),l=t(o),y=i(t(l),2);a(l);var w=i(l,2),F=t(w),M=t(F),se=t(M,!0);a(M);var ie=i(M,2);_e(ie,17,()=>e(s).tags,he,(c,p)=>{var _=Me(),me=t(_,!0);a(_),g(()=>d(me,e(p))),u(c,_)}),a(F);var z=i(F,2),oe=t(z,!0);a(z);var A=i(z,2),G=t(A),T=i(t(G),2),de=t(T);a(T),a(G);var V=i(G,2),ve=t(V);a(V),a(A);var L=i(A,2),N=t(L),ne=t(N);a(N);var R=i(N,2),le=t(R);a(R);var ce=i(R,2);{var pe=c=>{var p=ze(),_=t(p);a(p),g(()=>d(_,`Source: ${e(s).source??""}`)),u(c,p)};$(ce,c=>{e(s).source&&c(pe)})}a(L);var Y=i(L,2),q=t(Y),ue=i(q,2);a(Y),a(w),a(o),g((c,p)=>{d(se,e(s).nodeType),d(oe,e(s).content),d(de,`${c??""}%`),we(ve,`width: ${e(s).retentionStrength*100}%; background: ${e(s).retentionStrength>.7?"#10b981":e(s).retentionStrength>.4?"#f59e0b":"#ef4444"}`),d(ne,`Created: ${p??""}`),d(le,`Reviews: ${e(s).reviewCount??0??""}`)},[()=>(e(s).retentionStrength*100).toFixed(1),()=>new Date(e(s).createdAt).toLocaleDateString()]),D("click",y,()=>n(s,null)),D("click",q,()=>e(s)&&f.memories.promote(e(s).id)),D("click",ue,()=>e(s)&&f.memories.demote(e(s).id)),u(r,o)};$(ae,r=>{e(s)&&r(re)})}a(S),g(()=>{b.disabled=e(x),ye(b,1,`px-4 py-2 rounded-lg bg-dream/20 border border-dream/40 text-dream-glow text-sm - hover:bg-dream/30 transition-all disabled:opacity-50 backdrop-blur-sm - ${e(x)?"glow-dream animate-pulse-glow":""}`),d(Z,e(x)?"◎ Dreaming...":"◎ Dream")}),D("click",b,O),u(B,S),fe(),K()}be(["click"]);export{Je as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/3.DlJxvrxN.js.br b/apps/dashboard/build/_app/immutable/nodes/3.DlJxvrxN.js.br deleted file mode 100644 index b6423fee4fd4bd425fde442d914885f7f7f667fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1938 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 XalAN8;s_!&ZU6Fb2GCL95flIbc&1cj diff --git a/apps/dashboard/build/_app/immutable/nodes/4.JZRJcAXm.js b/apps/dashboard/build/_app/immutable/nodes/4.DjYrYj6K.js similarity index 80% rename from apps/dashboard/build/_app/immutable/nodes/4.JZRJcAXm.js rename to apps/dashboard/build/_app/immutable/nodes/4.DjYrYj6K.js index 0df847e..31d44fc 100644 --- a/apps/dashboard/build/_app/immutable/nodes/4.JZRJcAXm.js +++ b/apps/dashboard/build/_app/immutable/nodes/4.DjYrYj6K.js @@ -1,6 +1,6 @@ -import{a as p,f as u,c as ze}from"../chunks/wmwKEafM.js";import{p as Ae,d as I,h as Pe,g as e,a as Qe,c as r,e as a,s as f,r as t,i as qe,t as y,f as ge,u as se,j as Be}from"../chunks/DleE0ac1.js";import{d as De,a as q,s as n}from"../chunks/8PSwG_AU.js";import{i as S}from"../chunks/BHs8FnOA.js";import{e as oe,i as ie}from"../chunks/BsRos8Kb.js";import{b as ne,r as ye}from"../chunks/ChQRIhGP.js";import{s as de}from"../chunks/BK028jHP.js";import{s as Ke}from"../chunks/D6n3ggvw.js";import{a as X}from"../chunks/BcuCGYSa.js";var Re=u(''),Ue=u('
Source

'),Ve=u('
Target

'),Ge=u(`
'),Ue=u('
Source

'),Ve=u('
Target

'),Ge=u(`
`,1),He=u('

'),Je=u(' '),Le=u(" "),We=u(" "),Xe=u(" "),Ye=u(' '),Ze=u('

'),et=u('

'),tt=u('

No connections found for this query.

'),rt=u('
'),at=u('
'),st=u('
'),ot=u(`

Explore Connections

Importance Scorer

4-channel neuroscience scoring: novelty, arousal, reward, attention

`);function mt(he,we){Ae(we,!0);let V=I(""),G=I(""),F=I(null),C=I(null),B=I(Pe([])),$=I("associations"),O=I(!1),H=I(""),D=I(null);const le={associations:{icon:"◎",desc:"Spreading activation — find related memories via graph traversal"},chains:{icon:"⟿",desc:"Build reasoning path from source to target memory"},bridges:{icon:"⬡",desc:"Find connecting memories between two concepts"}};async function ve(){if(e(V).trim()){f(O,!0);try{const s=await X.search(e(V),1);s.results.length>0&&(f(F,s.results[0],!0),await Y())}catch{}finally{f(O,!1)}}}async function ce(){if(e(G).trim()){f(O,!0);try{const s=await X.search(e(G),1);s.results.length>0&&(f(C,s.results[0],!0),e(F)&&await Y())}catch{}finally{f(O,!1)}}}async function Y(){if(e(F)){f(O,!0);try{const s=(e($)==="chains"||e($)==="bridges")&&e(C)?e(C).id:void 0,o=await X.explore(e(F).id,e($),s);f(B,o.results||o.nodes||o.chain||o.bridges||[],!0)}catch{f(B,[],!0)}finally{f(O,!1)}}}async function Se(){e(H).trim()&&f(D,await X.importance(e(H)),!0)}function ke(s){f($,s,!0),e(F)&&Y()}var Z=ot(),ee=a(r(Z),2);oe(ee,20,()=>["associations","chains","bridges"],ie,(s,o)=>{var d=Re(),b=r(d),h=r(b,!0);t(b);var _=a(b,2),c=r(_,!0);t(_);var i=a(_,2),g=r(i,!0);t(i),t(d),y(w=>{de(d,1,`flex flex-col items-center gap-1 p-3 rounded-lg text-sm transition - ${e($)===o?"bg-synapse/15 text-synapse-glow border border-synapse/40":"bg-surface/30 text-dim border border-subtle/20 hover:border-subtle/40"}`),n(h,le[o].icon),n(c,w),n(g,le[o].desc)},[()=>o.charAt(0).toUpperCase()+o.slice(1)]),q("click",d,()=>ke(o)),p(s,d)}),t(ee);var te=a(ee,2),pe=a(r(te),2),J=r(pe);ye(J);var Fe=a(J,2);t(pe),t(te);var xe=a(te,2);{var Te=s=>{var o=Ue(),d=a(r(o),2),b=r(d,!0);t(d);var h=a(d,2),_=r(h),c=r(_,!0);t(_);var i=a(_,2),g=r(i);t(i),t(h),t(o),y((w,z)=>{n(b,w),n(c,e(F).nodeType),n(g,`${z??""}% retention`)},[()=>e(F).content.slice(0,200),()=>(e(F).retentionStrength*100).toFixed(0)]),p(s,o)};S(xe,s=>{e(F)&&s(Te)})}var ue=a(xe,2);{var $e=s=>{var o=Ge(),d=ge(o),b=r(d),h=a(r(b)),_=r(h);t(h),t(b);var c=a(b,2),i=r(c);ye(i);var g=a(i,2);t(c),t(d);var w=a(d,2);{var z=m=>{var E=Ve(),x=a(r(E),2),K=r(x,!0);t(x);var M=a(x,2),k=r(M),A=r(k,!0);t(k);var T=a(k,2),P=r(T);t(T),t(M),t(E),y((Q,j)=>{n(K,Q),n(A,e(C).nodeType),n(P,`${j??""}% retention`)},[()=>e(C).content.slice(0,200),()=>(e(C).retentionStrength*100).toFixed(0)]),p(m,E)};S(w,m=>{e(C)&&m(z)})}y(()=>n(_,`(for ${e($)??""})`)),q("keydown",i,m=>m.key==="Enter"&&ce()),ne(i,()=>e(G),m=>f(G,m)),q("click",g,ce),p(s,o)};S(ue,s=>{(e($)==="chains"||e($)==="bridges")&&s($e)})}var me=a(ue,2);{var Ee=s=>{var o=ze(),d=ge(o);{var b=c=>{var i=He(),g=a(r(i),2),w=r(g);t(g),t(i),y(()=>n(w,`Exploring ${e($)??""}...`)),p(c,i)},h=c=>{var i=et(),g=r(i),w=r(g),z=r(w);t(w),t(g);var m=a(g,2);oe(m,21,()=>e(B),ie,(E,x,K)=>{var M=Ze(),k=r(M);k.textContent=K+1;var A=a(k,2),T=r(A),P=r(T,!0);t(T);var Q=a(T,2),j=r(Q);{var L=l=>{var v=Je(),N=r(v,!0);t(v),y(()=>n(N,e(x).nodeType)),p(l,v)};S(j,l=>{e(x).nodeType&&l(L)})}var R=a(j,2);{var ae=l=>{var v=Le(),N=r(v);t(v),y(U=>n(N,`Score: ${U??""}`),[()=>Number(e(x).score).toFixed(3)]),p(l,v)};S(R,l=>{e(x).score&&l(ae)})}var W=a(R,2);{var Ie=l=>{var v=We(),N=r(v);t(v),y(U=>n(N,`Similarity: ${U??""}`),[()=>Number(e(x).similarity).toFixed(3)]),p(l,v)};S(W,l=>{e(x).similarity&&l(Ie)})}var fe=a(W,2);{var je=l=>{var v=Xe(),N=r(v);t(v),y(U=>n(N,`${U??""}% retention`),[()=>(Number(e(x).retention)*100).toFixed(0)]),p(l,v)};S(fe,l=>{e(x).retention&&l(je)})}var Ce=a(fe,2);{var Oe=l=>{var v=Ye(),N=r(v,!0);t(v),y(()=>n(N,e(x).connectionType)),p(l,v)};S(Ce,l=>{e(x).connectionType&&l(Oe)})}t(Q),t(A),t(M),y(()=>n(P,e(x).content)),p(E,M)}),t(m),t(i),y(()=>n(z,`${e(B).length??""} Connections Found`)),p(c,i)},_=c=>{var i=tt();p(c,i)};S(d,c=>{e(O)?c(b):e(B).length>0?c(h,1):c(_,!1)})}p(s,o)};S(me,s=>{e(F)&&s(Ee)})}var be=a(me,2),re=a(r(be),4);qe(re);var _e=a(re,2),Me=a(_e,2);{var Ne=s=>{const o=se(()=>e(D).channels),d=se(()=>Number(e(D).composite||e(D).compositeScore||0));var b=st(),h=r(b),_=r(h),c=r(_,!0);t(_);var i=a(_,2),g=r(i,!0);t(i),t(h);var w=a(h,2);{var z=m=>{var E=at();oe(E,21,()=>Object.entries(e(o)),ie,(x,K)=>{var M=se(()=>Be(e(K),2));let k=()=>e(M)[0],A=()=>e(M)[1];var T=rt(),P=r(T),Q=r(P,!0);t(P);var j=a(P,2),L=r(j);t(j);var R=a(j,2),ae=r(R,!0);t(R),t(T),y(W=>{n(Q,k()),de(L,1,`h-full rounded-full transition-all duration-500 - ${k()==="novelty"?"bg-synapse":k()==="arousal"?"bg-dream":k()==="reward"?"bg-recall":"bg-amber-400"}`),Ke(L,`width: ${A()*100}%`),n(ae,W)},[()=>A().toFixed(2)]),p(x,T)}),t(E),p(m,E)};S(w,m=>{e(o)&&m(z)})}t(b),y(m=>{n(c,m),de(i,1,`px-2 py-1 rounded text-xs ${e(d)>.6?"bg-recall/20 text-recall border border-recall/30":"bg-surface text-dim border border-subtle/30"}`),n(g,e(d)>.6?"SAVE":"SKIP")},[()=>e(d).toFixed(2)]),p(s,b)};S(Me,s=>{e(D)&&s(Ne)})}t(be),t(Z),q("keydown",J,s=>s.key==="Enter"&&ve()),ne(J,()=>e(V),s=>f(V,s)),q("click",Fe,ve),ne(re,()=>e(H),s=>f(H,s)),q("click",_e,Se),p(he,Z),Qe()}De(["click","keydown"]);export{mt as component}; + placeholder:text-muted resize-none focus:outline-none focus:border-synapse/60 transition">
`);function bt(he,we){ze(we,!0);let V=I(""),G=I(""),F=I(null),C=I(null),B=I(Ae([])),$=I("associations"),O=I(!1),H=I(""),D=I(null);const le={associations:{icon:"◎",desc:"Spreading activation — find related memories via graph traversal"},chains:{icon:"⟿",desc:"Build reasoning path from source to target memory"},bridges:{icon:"⬡",desc:"Find connecting memories between two concepts"}};async function ve(){if(e(V).trim()){f(O,!0);try{const s=await X.search(e(V),1);s.results.length>0&&(f(F,s.results[0],!0),await Y())}catch{}finally{f(O,!1)}}}async function ce(){if(e(G).trim()){f(O,!0);try{const s=await X.search(e(G),1);s.results.length>0&&(f(C,s.results[0],!0),e(F)&&await Y())}catch{}finally{f(O,!1)}}}async function Y(){if(e(F)){f(O,!0);try{const s=(e($)==="chains"||e($)==="bridges")&&e(C)?e(C).id:void 0,o=await X.explore(e(F).id,e($),s);f(B,o.results||o.nodes||o.chain||o.bridges||[],!0)}catch{f(B,[],!0)}finally{f(O,!1)}}}async function Se(){e(H).trim()&&f(D,await X.importance(e(H)),!0)}function ke(s){f($,s,!0),e(F)&&Y()}var Z=ot(),ee=a(r(Z),2);oe(ee,20,()=>["associations","chains","bridges"],ie,(s,o)=>{var d=Re(),b=r(d),h=r(b,!0);t(b);var _=a(b,2),c=r(_,!0);t(_);var i=a(_,2),g=r(i,!0);t(i),t(d),y(w=>{de(d,1,`flex flex-col items-center gap-1 p-3 rounded-lg text-sm transition + ${e($)===o?"bg-synapse/15 text-synapse-glow border border-synapse/40":"bg-surface/30 text-dim border border-subtle/20 hover:border-subtle/40"}`),n(h,le[o].icon),n(c,w),n(g,le[o].desc)},[()=>o.charAt(0).toUpperCase()+o.slice(1)]),q("click",d,()=>ke(o)),p(s,d)}),t(ee);var te=a(ee,2),pe=a(r(te),2),J=r(pe);ye(J);var Fe=a(J,2);t(pe),t(te);var xe=a(te,2);{var Te=s=>{var o=Ue(),d=a(r(o),2),b=r(d,!0);t(d);var h=a(d,2),_=r(h),c=r(_,!0);t(_);var i=a(_,2),g=r(i);t(i),t(h),t(o),y((w,z)=>{n(b,w),n(c,e(F).nodeType),n(g,`${z??""}% retention`)},[()=>e(F).content.slice(0,200),()=>(e(F).retentionStrength*100).toFixed(0)]),p(s,o)};S(xe,s=>{e(F)&&s(Te)})}var ue=a(xe,2);{var $e=s=>{var o=Ge(),d=ge(o),b=r(d),h=a(r(b)),_=r(h);t(h),t(b);var c=a(b,2),i=r(c);ye(i);var g=a(i,2);t(c),t(d);var w=a(d,2);{var z=m=>{var E=Ve(),x=a(r(E),2),K=r(x,!0);t(x);var M=a(x,2),k=r(M),A=r(k,!0);t(k);var T=a(k,2),P=r(T);t(T),t(M),t(E),y((Q,j)=>{n(K,Q),n(A,e(C).nodeType),n(P,`${j??""}% retention`)},[()=>e(C).content.slice(0,200),()=>(e(C).retentionStrength*100).toFixed(0)]),p(m,E)};S(w,m=>{e(C)&&m(z)})}y(()=>n(_,`(for ${e($)??""})`)),q("keydown",i,m=>m.key==="Enter"&&ce()),ne(i,()=>e(G),m=>f(G,m)),q("click",g,ce),p(s,o)};S(ue,s=>{(e($)==="chains"||e($)==="bridges")&&s($e)})}var me=a(ue,2);{var Ee=s=>{var o=De(),d=ge(o);{var b=c=>{var i=He(),g=a(r(i),2),w=r(g);t(g),t(i),y(()=>n(w,`Exploring ${e($)??""}...`)),p(c,i)},h=c=>{var i=et(),g=r(i),w=r(g),z=r(w);t(w),t(g);var m=a(g,2);oe(m,21,()=>e(B),ie,(E,x,K)=>{var M=Ze(),k=r(M);k.textContent=K+1;var A=a(k,2),T=r(A),P=r(T,!0);t(T);var Q=a(T,2),j=r(Q);{var L=l=>{var v=Je(),N=r(v,!0);t(v),y(()=>n(N,e(x).nodeType)),p(l,v)};S(j,l=>{e(x).nodeType&&l(L)})}var R=a(j,2);{var ae=l=>{var v=Le(),N=r(v);t(v),y(U=>n(N,`Score: ${U??""}`),[()=>Number(e(x).score).toFixed(3)]),p(l,v)};S(R,l=>{e(x).score&&l(ae)})}var W=a(R,2);{var Ie=l=>{var v=We(),N=r(v);t(v),y(U=>n(N,`Similarity: ${U??""}`),[()=>Number(e(x).similarity).toFixed(3)]),p(l,v)};S(W,l=>{e(x).similarity&&l(Ie)})}var fe=a(W,2);{var je=l=>{var v=Xe(),N=r(v);t(v),y(U=>n(N,`${U??""}% retention`),[()=>(Number(e(x).retention)*100).toFixed(0)]),p(l,v)};S(fe,l=>{e(x).retention&&l(je)})}var Ce=a(fe,2);{var Oe=l=>{var v=Ye(),N=r(v,!0);t(v),y(()=>n(N,e(x).connectionType)),p(l,v)};S(Ce,l=>{e(x).connectionType&&l(Oe)})}t(Q),t(A),t(M),y(()=>n(P,e(x).content)),p(E,M)}),t(m),t(i),y(()=>n(z,`${e(B).length??""} Connections Found`)),p(c,i)},_=c=>{var i=tt();p(c,i)};S(d,c=>{e(O)?c(b):e(B).length>0?c(h,1):c(_,!1)})}p(s,o)};S(me,s=>{e(F)&&s(Ee)})}var be=a(me,2),re=a(r(be),4);Qe(re);var _e=a(re,2),Me=a(_e,2);{var Ne=s=>{const o=se(()=>e(D).channels),d=se(()=>Number(e(D).composite||e(D).compositeScore||0));var b=st(),h=r(b),_=r(h),c=r(_,!0);t(_);var i=a(_,2),g=r(i,!0);t(i),t(h);var w=a(h,2);{var z=m=>{var E=at();oe(E,21,()=>Object.entries(e(o)),ie,(x,K)=>{var M=se(()=>qe(e(K),2));let k=()=>e(M)[0],A=()=>e(M)[1];var T=rt(),P=r(T),Q=r(P,!0);t(P);var j=a(P,2),L=r(j);t(j);var R=a(j,2),ae=r(R,!0);t(R),t(T),y(W=>{n(Q,k()),de(L,1,`h-full rounded-full transition-all duration-500 + ${k()==="novelty"?"bg-synapse":k()==="arousal"?"bg-dream":k()==="reward"?"bg-recall":"bg-amber-400"}`),Ke(L,`width: ${A()*100}%`),n(ae,W)},[()=>A().toFixed(2)]),p(x,T)}),t(E),p(m,E)};S(w,m=>{e(o)&&m(z)})}t(b),y(m=>{n(c,m),de(i,1,`px-2 py-1 rounded text-xs ${e(d)>.6?"bg-recall/20 text-recall border border-recall/30":"bg-surface text-dim border border-subtle/30"}`),n(g,e(d)>.6?"SAVE":"SKIP")},[()=>e(d).toFixed(2)]),p(s,b)};S(Me,s=>{e(D)&&s(Ne)})}t(be),t(Z),q("keydown",J,s=>s.key==="Enter"&&ve()),ne(J,()=>e(V),s=>f(V,s)),q("click",Fe,ve),ne(re,()=>e(H),s=>f(H,s)),q("click",_e,Se),p(he,Z),Pe()}Be(["click","keydown"]);export{bt as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/4.DjYrYj6K.js.br b/apps/dashboard/build/_app/immutable/nodes/4.DjYrYj6K.js.br new file mode 100644 index 0000000000000000000000000000000000000000..da6b3d0ecca9d23e6cfe2585bc0fe4036f56f311 GIT binary patch literal 2995 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 diff --git a/apps/dashboard/build/_app/immutable/nodes/4.JZRJcAXm.js.gz b/apps/dashboard/build/_app/immutable/nodes/4.JZRJcAXm.js.gz deleted file mode 100644 index 8293da3375791954b7eb819733062fcc4348d065..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3474 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 diff --git a/apps/dashboard/build/_app/immutable/nodes/5.CJ3qOnwc.js.gz b/apps/dashboard/build/_app/immutable/nodes/5.CJ3qOnwc.js.gz deleted file mode 100644 index 27369a23583388754ecd525b5e475ab9f8690d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1823 zcmV+)2jKW0iwFP!000026Qx&MZ`;Tfe(wH?3F~fV+954Fi5p0!0>_s)7dwufI9VHk zG$N0vvB@DbGt?zs7U;{Oc`48fkoK|9?R($bf0AEP%#e~O$=K|o225(c^PT&dA<2_0 zmHLJurcglp<`x%ynI?|stp|f#T&wj_GJ3wx`bXZCa$3Ap;D-5enYpV^qn+UGMV*-$ z=3}bOZH-z-Pbiohr-8XKDrsbXq|4^^V%Tr6V54p>G|cCvomW(uTe7V8@Z@atq_gv8 zCE&ef=Ho;4@IbuWsWWYC@2FL{SW!@?se1UlS68q>3|4~Q68EBLI9g!>l+kNgRyo@E zxOIMbv0GOe8LEV`Vr)g_`h1vQ_4up0%D$nFS9){Uzc_w(b>A|FOdZcL~ zX(YJjLqISDp_S)(+v}O3Em%@X=_koGgecMOrqkZH3W#MHFo^~r0davOu-Mf+vBfwC zrFjHM54gBi)^ZufT|(0`HWszq3J?J8HA_b1ckG-pF})j)D_?KW)MWxJNL zbvIDLg*$SW{I2>jrPws>Z+H)!_N{g9r$W04ggj5?g+|+V+Ot`?bqMURp?NdQYnM>5 zGOj9P0k{)0F0;mmE3C}jLJ1qYqjF-$F3WX_rn*~S%XC`N9_SH(aN660jm1>sGVq?{ z(Lk4JD@b@RjYFsX!c6}GK)Ag=*jTN2Ia9Y)FyvK1)I#}sxz_2A%rq)z%mU_88!o54 z8v~Qu>!po_`p)}um$dr12#f-n06w5c4k})LFAT+a&1F zYeFxt>G69X0N1RXU`=i$=v)dUV1)LV2CRvv(-&#LVtCCHIMb4g2$N!_wLjOoIf5jW zlU)f+L)dhFWkE_6R*oyx8dx!1>nh#4inFMAH{mY?G?W2H+0M3H6WPkprLl1#T z-2Rc!znKH`|rPZ{_}5VUijCh@MWjL*IvjpYpD^}!2oMdPck4k0aM^CG{tF_ zt?C}b2(8_KC(;l)hFvs~vvyPU7rY=9Cc{o9VaQ=bJQec*aD#3&Na1;&(`{MnOD&n% zFL4NsQSd(GASZ=`zWnfK>s5lvW8DeTT<8LoD}}HTO;6QMqKZV3%1yn;GanX2szlL< z>wz_%*o3FX?TUk{8=7@<$y89`O=~BZHB)u^<|Hpr4WgFAg)*m!>O>$wnhFV)tWj<+kS+`=^m@2NJ zql|39+)teH2a8j_ctXuwPl0N#@hk!XqmG;&5#-k!jmA8P1}T1pX2Jyr)oC}MO8EcH zhtOwvtSgh~+1bluPucu=e}ZA2vawPWA2G2noqaz9OlagY+$Z$R=a}J$&`m-oKEr2( zKJ^)%kd`zTqwvD#ctSS~az?1cQ3=2FIgSi`V^&wb_S^Os_{uzd0<0;Jf}Yj{!U*1B zpbuz=UQm2a6{&=o&rMWApW%$q4?e>~dZ%H04oi2tKF327WzT1Lm(bj2xJT%Y&v0Hb z^OAY!bDYltd*+MEMd+u-#ao}@u+j(#UBln`?F7H2-w}Fg9;+v~8ln^{Vh>->yzeT_ zl8lh|ga%m9kQA*wd`OM$TX^4oEATT?kV4{K8Pv$cB-cg-a;fmpkK z`(}VM+O6JEW9aK9x|fZS-S=i##+TNk*=**~@yo5=Z#N${9P;Rq;}l&&2Y5)kJr-O? z_ARyfRh`X73k7MM%H~fopWqKv7%w^P{v53xI%AmS8&kuw;`_KJF~DmJl(jym87WMO zz^v>{wf68!YNo1#i5G*2^uYK1#v_fdNK@le^QL5L-?vpIroT^Vcdf>^VO8HmT|($9 z>;y3nt{wWqMj*ip%&S`Y5rm2HeL(w!KEZ?@V^TcFmzBnQ(t@%5>YLb)B6~&&5V~l6 N^FLSNxtZJ#008;0m@WVS diff --git a/apps/dashboard/build/_app/immutable/nodes/5.CJ3qOnwc.js b/apps/dashboard/build/_app/immutable/nodes/5.CzxPa_Z5.js similarity index 75% rename from apps/dashboard/build/_app/immutable/nodes/5.CJ3qOnwc.js rename to apps/dashboard/build/_app/immutable/nodes/5.CzxPa_Z5.js index f304d2c..794af06 100644 --- a/apps/dashboard/build/_app/immutable/nodes/5.CJ3qOnwc.js +++ b/apps/dashboard/build/_app/immutable/nodes/5.CzxPa_Z5.js @@ -1,2 +1,2 @@ -import{a as c,f as l}from"../chunks/wmwKEafM.js";import{i as z}from"../chunks/CtRgAcWZ.js";import{p as B,t as $,a as G,e as i,c as a,r,g as o}from"../chunks/DleE0ac1.js";import{d as K,a as Q,s as m}from"../chunks/8PSwG_AU.js";import{i as D}from"../chunks/BHs8FnOA.js";import{e as X,i as Z}from"../chunks/BsRos8Kb.js";import{s as h}from"../chunks/D6n3ggvw.js";import{s as ee,a as te}from"../chunks/M1z6VHZC.js";import{w as re,e as ae}from"../chunks/kVvujbiQ.js";import{E as x}from"../chunks/CHfZNXj4.js";var se=l('

Waiting for cognitive events...

Events appear here in real-time as Vestige thinks.

'),oe=l(' '),ie=l(`

`),ne=l('
'),de=l('

Live Feed

');function ye(F,M){B(M,!1);const _=()=>te(ae,"$eventFeed",k),[k,N]=ee();function P(t){return new Date(t).toLocaleTimeString()}function E(t){return{MemoryCreated:"+",MemoryUpdated:"~",MemoryDeleted:"×",MemoryPromoted:"↑",MemoryDemoted:"↓",SearchPerformed:"◎",DreamStarted:"◈",DreamProgress:"◈",DreamCompleted:"◈",ConsolidationStarted:"◉",ConsolidationCompleted:"◉",RetentionDecayed:"↘",ConnectionDiscovered:"━",ActivationSpread:"◬",ImportanceScored:"◫",Heartbeat:"♡"}[t]||"·"}function T(t){const e=t.data;switch(t.type){case"MemoryCreated":return`New ${e.node_type}: "${String(e.content_preview).slice(0,60)}..."`;case"SearchPerformed":return`Searched "${e.query}" → ${e.result_count} results (${e.duration_ms}ms)`;case"DreamStarted":return`Dream started with ${e.memory_count} memories`;case"DreamCompleted":return`Dream complete: ${e.connections_found} connections, ${e.insights_generated} insights (${e.duration_ms}ms)`;case"ConsolidationStarted":return"Consolidation cycle started";case"ConsolidationCompleted":return`Consolidated ${e.nodes_processed} nodes, ${e.decay_applied} decayed (${e.duration_ms}ms)`;case"ConnectionDiscovered":return`Connection: ${String(e.connection_type)} (weight: ${Number(e.weight).toFixed(2)})`;case"ImportanceScored":return`Scored ${Number(e.composite_score).toFixed(2)}: "${String(e.content_preview).slice(0,50)}..."`;case"MemoryPromoted":return`Promoted → ${(Number(e.new_retention)*100).toFixed(0)}% retention`;case"MemoryDemoted":return`Demoted → ${(Number(e.new_retention)*100).toFixed(0)}% retention`;default:return JSON.stringify(e).slice(0,100)}}z();var f=de(),g=a(f),S=i(a(g),2),y=a(S),I=a(y);r(y);var L=i(y,2);r(S),r(g);var O=i(g,2);{var j=t=>{var e=se();c(t,e)},R=t=>{var e=ne();X(e,5,_,Z,(V,s)=>{var p=ie(),v=a(p),q=a(v,!0);r(v);var C=i(v,2),b=a(C),u=a(b),A=a(u,!0);r(u);var H=i(u,2);{var J=n=>{var d=oe(),W=a(d,!0);r(d),$(Y=>m(W,Y),[()=>P(String(o(s).data.timestamp))]),c(n,d)};D(H,n=>{o(s).data.timestamp&&n(J)})}r(b);var w=i(b,2),U=a(w,!0);r(w),r(C),r(p),$((n,d)=>{h(p,`border-left: 3px solid ${(x[o(s).type]||"#6b7280")??""}`),h(v,`background: ${(x[o(s).type]||"#6b7280")??""}20; color: ${(x[o(s).type]||"#6b7280")??""}`),m(q,n),h(u,`color: ${(x[o(s).type]||"#6b7280")??""}`),m(A,o(s).type),m(U,d)},[()=>E(o(s).type),()=>T(o(s))]),c(V,p)}),r(e),c(t,e)};D(O,t=>{_().length===0?t(j):t(R,!1)})}r(f),$(()=>m(I,`${_().length??""} events`)),Q("click",L,()=>re.clearEvents()),c(F,f),G(),N()}K(["click"]);export{ye as component}; +import"../chunks/Bzak7iHL.js";import{i as z}from"../chunks/dR5TMuCX.js";import{p as B,t as $,a as G,e as i,d as a,r,g as o}from"../chunks/DEYVqDYQ.js";import{d as K,a as Q,s as m}from"../chunks/ZM2C7QQX.js";import{a as c,f as l}from"../chunks/D5-kFxsM.js";import{i as D}from"../chunks/CpubbTHs.js";import{e as X,i as Z}from"../chunks/CiJhRXcr.js";import{s as h}from"../chunks/B9t3YtL9.js";import{s as ee,a as te}from"../chunks/DUZi1B8N.js";import{w as re,e as ae}from"../chunks/DmEsXEQB.js";import{E as x}from"../chunks/Dwpy08gq.js";var se=l('

Waiting for cognitive events...

Events appear here in real-time as Vestige thinks.

'),oe=l(' '),ie=l(`

`),ne=l('
'),de=l('

Live Feed

');function be(F,M){B(M,!1);const _=()=>te(ae,"$eventFeed",k),[k,N]=ee();function P(t){return new Date(t).toLocaleTimeString()}function E(t){return{MemoryCreated:"+",MemoryUpdated:"~",MemoryDeleted:"×",MemoryPromoted:"↑",MemoryDemoted:"↓",SearchPerformed:"◎",DreamStarted:"◈",DreamProgress:"◈",DreamCompleted:"◈",ConsolidationStarted:"◉",ConsolidationCompleted:"◉",RetentionDecayed:"↘",ConnectionDiscovered:"━",ActivationSpread:"◬",ImportanceScored:"◫",Heartbeat:"♡"}[t]||"·"}function T(t){const e=t.data;switch(t.type){case"MemoryCreated":return`New ${e.node_type}: "${String(e.content_preview).slice(0,60)}..."`;case"SearchPerformed":return`Searched "${e.query}" → ${e.result_count} results (${e.duration_ms}ms)`;case"DreamStarted":return`Dream started with ${e.memory_count} memories`;case"DreamCompleted":return`Dream complete: ${e.connections_found} connections, ${e.insights_generated} insights (${e.duration_ms}ms)`;case"ConsolidationStarted":return"Consolidation cycle started";case"ConsolidationCompleted":return`Consolidated ${e.nodes_processed} nodes, ${e.decay_applied} decayed (${e.duration_ms}ms)`;case"ConnectionDiscovered":return`Connection: ${String(e.connection_type)} (weight: ${Number(e.weight).toFixed(2)})`;case"ImportanceScored":return`Scored ${Number(e.composite_score).toFixed(2)}: "${String(e.content_preview).slice(0,50)}..."`;case"MemoryPromoted":return`Promoted → ${(Number(e.new_retention)*100).toFixed(0)}% retention`;case"MemoryDemoted":return`Demoted → ${(Number(e.new_retention)*100).toFixed(0)}% retention`;default:return JSON.stringify(e).slice(0,100)}}z();var f=de(),g=a(f),S=i(a(g),2),y=a(S),I=a(y);r(y);var L=i(y,2);r(S),r(g);var O=i(g,2);{var j=t=>{var e=se();c(t,e)},R=t=>{var e=ne();X(e,5,_,Z,(V,s)=>{var p=ie(),v=a(p),q=a(v,!0);r(v);var C=i(v,2),b=a(C),u=a(b),A=a(u,!0);r(u);var H=i(u,2);{var J=n=>{var d=oe(),W=a(d,!0);r(d),$(Y=>m(W,Y),[()=>P(String(o(s).data.timestamp))]),c(n,d)};D(H,n=>{o(s).data.timestamp&&n(J)})}r(b);var w=i(b,2),U=a(w,!0);r(w),r(C),r(p),$((n,d)=>{h(p,`border-left: 3px solid ${(x[o(s).type]||"#6b7280")??""}`),h(v,`background: ${(x[o(s).type]||"#6b7280")??""}20; color: ${(x[o(s).type]||"#6b7280")??""}`),m(q,n),h(u,`color: ${(x[o(s).type]||"#6b7280")??""}`),m(A,o(s).type),m(U,d)},[()=>E(o(s).type),()=>T(o(s))]),c(V,p)}),r(e),c(t,e)};D(O,t=>{_().length===0?t(j):t(R,!1)})}r(f),$(()=>m(I,`${_().length??""} events`)),Q("click",L,()=>re.clearEvents()),c(F,f),G(),N()}K(["click"]);export{be as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/5.CzxPa_Z5.js.br b/apps/dashboard/build/_app/immutable/nodes/5.CzxPa_Z5.js.br new file mode 100644 index 0000000000000000000000000000000000000000..a3137fe18c8ae05c5a83d742f43fd9c0abc589af GIT binary patch literal 1619 zcmV-Z2CVrT`40db2i5Hz#u)Ak!P%-zUbNY?-nX9@VVg7~Z|kt776L&brU#pL8SHE! zXT>Ns*p4Xs{uazF)!+Q#HcTE#B=II*)t(+8wf(hxH*ve01dyo;Au)!Db6OY5tS>yNQmEUhGAkoD$__U9{qQt zO?h#%5GqqBE}KZhRmT4=XrH=`|Fr&cTONO?eDe`$=fDiP1Lwp8lKjIi6%=e5vmo1? zoPNHIPd*=&KX6U%z$2-~#BZCg+m++Z$Hx!l4h(4695ZXRE~2wW-7495Lfz&#FFo(& zLMiTikf)KqTFI-?)5oAts&TYlgT^ zzRa{EXpa>8sFK?~j$sYAYmfygq^@{j6s&3Nfiw)QRtc{~lTx#9BwDPPc6~rgEkhp| zQ1Y#KRqJQIvC=Z&sd;y)g%{|wg^{H%EDX56yHV^$&Dug(nJ*<5==WtIVw_f2h&J}L zz|F-fJ#O;?QDnC+t|dpp(K$n&>*<&mmvhVF9T9Ob_3sYrqlO*YyH=AE?=BZ^92r5J7Jvbedcz(j7lnkQ8;g6E4iM%V5BOGm0=}Xl`)y$>{DKS5F3=Z zji|M@YJ@qb{ol$)YK>I+RpI)TJ^hw(Vj_#Oo6VRd8++X%xdBQP|{juTB2DANB5j(9}izKswdq>3M3K-5LjfMuDdPUEL z8*I!B#k}8goTWAl7G^)3CPlMfb26@v@>QKSUK(c+{aG zoW%3yg~mCsaU%}rc?QchgZ5eNS8&Iu#rR!!_Zs^hgi0l z3w^_5*5rg1;2E7s5eH|ofXK*o-P8~ZXkD|O>m;h%Dr6Ppv$^8M8K0pLghD2vW`K|# zl2u?v6A~Bw{;criTbG4n_}$$RxFEXCGF3IoxNOB`0uq`Y@MnVi>=-)5DAc&UsN`GCKuLyt z7lN_c!B5?A`wA=LXkjr-2^56nKmE>Tb`(Acaz-?Lg!M=*Wqve}b$bKE;&{rnQ&bbr zVJwwgx{0N6#~=uq+~o;a4}I?pK&T}jAoyt(OG(>gp(ndUFBC4x2{?!UmZf8$nKeI~B*9&B-hT ze`IC?%{NylaL|1GCo8|&T-jPOv0gV#T`)#aQGc+0TK@K@le@+O{L^J|IDs*xoJ2We zKF1G<3PAQ%jwJQF8-N9%8nL|l-Y5q#2}Zp_=~wr3+2;5-a`CH{Wi8b;gjm+_M7`9d z7)mxfy>|R9k~Di literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/5.CzxPa_Z5.js.gz b/apps/dashboard/build/_app/immutable/nodes/5.CzxPa_Z5.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1ad49a3aa089b10fd1babf96ecd2314646ff7391 GIT binary patch literal 1832 zcmV+@2iN!?iwFP!000026Qx&MZ`;Tfe(wH?3F~fV+953~v6Gcd1+iqWleHb+lGq6X zX-FPP6Z7Vop)T>Vz`iUtF9mu5(mwXNeeZkwPx4EO8B!8u8JjI?z#PqYzH>huk~~Ti zp)AK)_lH@0CD(U8u&YOW|G;@KttL0p8;+PnAM(CPq6#xO-8?_c+80%3s+l`f>1B;F zy?jeSFPsK?VN}q8{*l}^*V(;%b=|oiW&dU%_;^No6NsSdtb zVFDECDp-m8osJMfJatqh4*k0qR6u!TCLBYK5nlEeAGhQY3nuP zipK-gPXzLlLCh5&0fG_4N;;0Sy`E~?k|h}xexgi4fFfnrt=6tlKrBsx2{Z%&h{s3( z3vI%Onq@zP3E~PO zX-ma~LIalC50L)%2DZ#ZpZT!VX;q#8zv2 zxUrmSSOo3~J{YPZZ3z+gk}$AZ2YUMV0D|rH;l^skiMQA3WA39JBt>`%QPsE-_MW^gkX^We40VWB8d`%eg5%}3*H?2vqjH< z34eGDqMwM!pr8I=(T)HXo#{KjfPN~WW04F5NLj_&NtBkJ4cJa%nS?wrH*&?s$6KN$ zy^j_>1qHDdbiilRBEY{Iofu4AI$Zj?!$$O%A1wORSA0~sNd+)t=${sSW*!AB_TkJ= z3ihXeSactlP#!SVus;9o?^ga+z5D)q>)-#f7KK08g)ce{u5tpVSW}L<@`qSCYMKJM z@tFi`sVP>YXjShB#%S#ZoHz-ftJ!%2S!*|Cf5GvSSZCNx1&lb1i6cYq1Fq4n8p$2U zv3gBo{Z>on_6r;WZ4{jA48%0I(B~ijWV{NHS*W^xlEo@V#ZDruMYB`28_7J9q;ym5 z@!W?2kt|R&=4xn+M<(H!akJwftA^&?yk*KS@rJSE&zmW`eSMPWr~*;L;jz@GiR=y_ z2B9mQqZ#&d`P?;kvtX8m$e;Ql%(ArZP+!evA%%B#Lhp{`605G8gm*GC4XD-JK z4+yOjI&~R7BlMZe@RT%#zG#I5m*Xj|Yvhbjfd>Wr!sU3N;Tyes?<%)tet|3X!^g*p z0?FxVMG$Mj1qQlFyYvmkuc#!YFm<_(YUDDU5_;`2Jfin%+UKZn*LFD`=_oyy;WnX} z%dki2QVo^%SJ3@UN(}3j74&JBQ_8q*hzmD;9l9OCuuLx@Fa_s5wU%CvBOZQ`4 z&bGd!IuK*mZQTrUN_*uyY6yMRKo8OhGWWe6mdRV=QQvI((edjo?@|46%_2{pSXSO6 zbcjc^=Q00kVBS(2U(~7Bn#fPWL^OVh`3PUrSbNE6?|;#HO6Lr{eW`0$RD2g#BpNt3 zKvC;gG$pw%5$K(nsb&Yipn9shm^dNC12uGAxAsKg_oSilseV&3weOp%65Zctw6|8_ zo3P4nq8=gi1Y3T{{VR(em '),at=w('
');function rt(W,f){we(f,!0);let $=he(f,"width",3,240),u=he(f,"height",3,80);function E(n){return f.stability<=0?0:Math.exp(-n/f.stability)}let x=ce(()=>()=>{const n=[],_=Math.max(f.stability*3,30),m=4,j=$()-m*2,T=u()-m*2;for(let v=0;v<=50;v++){const R=v/50*_,C=E(R),U=m+v/50*j,K=m+(1-C)*T;n.push(`${v===0?"M":"L"}${U.toFixed(1)},${K.toFixed(1)}`)}return n.join(" ")}),o=ce(()=>[{label:"Now",days:0,value:f.retention},{label:"1d",days:1,value:E(1)},{label:"7d",days:7,value:E(7)},{label:"30d",days:30,value:E(30)}]);function P(n){return n>.7?"#10b981":n>.4?"#f59e0b":"#ef4444"}var A=at(),l=a(A),k=a(l),F=r(k),G=r(F),H=r(G),J=r(H);ke(),t(l);var Q=r(l,2);pe(Q,21,()=>e(o),ue,(n,_)=>{var m=tt(),j=a(m),T=a(j);t(j);var v=r(j,2),R=a(v);t(v),t(m),S((C,U)=>{i(T,`${e(_).label??""}:`),Se(v,`color: ${C??""}`),i(R,`${U??""}%`)},[()=>P(e(_).value),()=>(e(_).value*100).toFixed(0)]),h(n,m)}),t(Q),t(A),S((n,_,m)=>{p(l,"width",$()),p(l,"height",u()),p(l,"viewBox",`0 0 ${$()??""} ${u()??""}`),p(k,"y1",4+(u()-8)*.5),p(k,"x2",$()-4),p(k,"y2",4+(u()-8)*.5),p(F,"y1",4+(u()-8)*.8),p(F,"x2",$()-4),p(F,"y2",4+(u()-8)*.8),p(G,"d",n),p(H,"d",`${_??""} L${$()-4},${u()-4} L4,${u()-4} Z`),p(J,"cy",4+(1-f.retention)*(u()-8)),p(J,"fill",m)},[()=>e(x)(),()=>e(x)(),()=>P(f.retention)]),h(W,A),De()}var st=w('

Loading memory graph...

'),ot=w('

Your Mind Awaits

'),it=w(' · · ',1),nt=w(' '),dt=w('
'),lt=w("
"),vt=w(`

Memory Detail

Retention Forecast
◬ Explore Connections
`),ct=w(`
`);function At(W,f){we(f,!0);const $=()=>We(et,"$eventFeed",u),[u,E]=Oe();let x=z(null),o=z(null),P=z(!0),A=z(""),l=z(!1),k=z(""),F=z(150);Ue(()=>G());async function G(s,d){b(P,!0),b(A,"");try{b(x,await Z.graph({max_nodes:e(F),depth:3,query:s||void 0,center_id:d||void 0}),!0)}catch{b(A,"No memories yet. Start using Vestige to populate your graph.")}finally{b(P,!1)}}async function H(){b(l,!0);try{await Z.dream(),await G()}catch{}finally{b(l,!1)}}async function J(s){try{b(o,await Z.memories.get(s),!0)}catch{b(o,null)}}function Q(){e(k).trim()&&G(e(k))}var n=ct(),_=a(n);{var m=s=>{var d=st();h(s,d)},j=s=>{var d=ot(),y=a(d),B=r(a(y),4),L=a(B,!0);t(B),t(y),t(d),S(()=>i(L,e(A))),h(s,d)},T=s=>{Xe(s,{get nodes(){return e(x).nodes},get edges(){return e(x).edges},get centerId(){return e(x).center_id},get events(){return $()},get isDreaming(){return e(l)},onSelect:J})};O(_,s=>{e(P)?s(m):e(A)?s(j,1):e(x)&&s(T,2)})}var v=r(_,2),R=a(v),C=a(R);He(C);var U=r(C,2);t(R);var K=r(R,2),V=a(K),X=a(V);X.value=X.__value=50;var ee=r(X);ee.value=ee.__value=100;var te=r(ee);te.value=te.__value=150;var xe=r(te);xe.value=xe.__value=200,t(V);var q=r(V,2),$e=a(q,!0);t(q);var Ae=r(q,2);t(K),t(v);var ae=r(v,2),Fe=a(ae);{var Ge=s=>{var d=it(),y=Ve(d),B=a(y);t(y);var L=r(y,4),Y=a(L);t(L);var I=r(L,4),re=a(I);t(I),S(()=>{i(B,`${e(x).nodeCount??""} nodes`),i(Y,`${e(x).edgeCount??""} edges`),i(re,`depth ${e(x).depth??""}`)}),h(s,d)};O(Fe,s=>{e(x)&&s(Ge)})}t(ae);var Ce=r(ae,2);{var Le=s=>{var d=vt(),y=a(d),B=r(a(y),2);t(y);var L=r(y,2),Y=a(L),I=a(Y),re=a(I,!0);t(I);var Me=r(I,2);pe(Me,17,()=>e(o).tags,ue,(g,c)=>{var D=nt(),N=a(D,!0);t(D),S(()=>i(N,e(c))),h(g,D)}),t(Y);var se=r(Y,2),je=a(se,!0);t(se);var oe=r(se,2);pe(oe,21,()=>[{label:"Retention",value:e(o).retentionStrength},{label:"Storage",value:e(o).storageStrength},{label:"Retrieval",value:e(o).retrievalStrength}],ue,(g,c)=>{var D=dt(),N=a(D),ve=a(N),Be=a(ve,!0);t(ve);var _e=r(ve,2),Ie=a(_e);t(_e),t(N);var ye=r(N,2),Qe=a(ye);t(ye),t(D),S(Te=>{i(Be,e(c).label),i(Ie,`${Te??""}%`),Se(Qe,`width: ${e(c).value*100}%; background: ${e(c).value>.7?"#10b981":e(c).value>.4?"#f59e0b":"#ef4444"}`)},[()=>(e(c).value*100).toFixed(1)]),h(g,D)}),t(oe);var ie=r(oe,2),Re=r(a(ie),2);{let g=ce(()=>e(o).storageStrength*30);rt(Re,{get retention(){return e(o).retentionStrength},get stability(){return e(g)}})}t(ie);var ne=r(ie,2),de=a(ne),Ne=a(de);t(de);var le=r(de,2),ze=a(le);t(le);var me=r(le,2);{var Ee=g=>{var c=lt(),D=a(c);t(c),S(N=>i(D,`Accessed: ${N??""}`),[()=>new Date(e(o).lastAccessedAt).toLocaleString()]),h(g,c)};O(me,g=>{e(o).lastAccessedAt&&g(Ee)})}var be=r(me,2),Pe=a(be);t(be),t(ne);var fe=r(ne,2),ge=a(fe),qe=r(ge,2);t(fe),ke(2),t(L),t(d),S((g,c)=>{i(re,e(o).nodeType),i(je,e(o).content),i(Ne,`Created: ${g??""}`),i(ze,`Updated: ${c??""}`),i(Pe,`Reviews: ${e(o).reviewCount??0??""}`)},[()=>new Date(e(o).createdAt).toLocaleString(),()=>new Date(e(o).updatedAt).toLocaleString()]),M("click",B,()=>b(o,null)),M("click",ge,()=>{e(o)&&Z.memories.promote(e(o).id)}),M("click",qe,()=>{e(o)&&Z.memories.demote(e(o).id)}),h(s,d)};O(Ce,s=>{e(o)&&s(Le)})}t(n),S(()=>{q.disabled=e(l),Je(q,1,`px-4 py-2 rounded-lg bg-dream/20 border border-dream/40 text-dream-glow text-sm - hover:bg-dream/30 transition-all backdrop-blur-sm disabled:opacity-50 - ${e(l)?"glow-dream animate-pulse-glow":""}`),i($e,e(l)?"◈ Dreaming...":"◈ Dream")}),M("keydown",C,s=>s.key==="Enter"&&Q()),Ze(C,()=>e(k),s=>b(k,s)),M("click",U,Q),M("change",V,()=>G()),Ke(V,()=>e(F),s=>b(F,s)),M("click",q,H),M("click",Ae,()=>G()),h(W,n),De(),E()}Ye(["keydown","click","change"]);export{At as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/6.BbuG7uIt.js.br b/apps/dashboard/build/_app/immutable/nodes/6.BbuG7uIt.js.br deleted file mode 100644 index 1b1799cb087cb6606fcbfa77b901699a0180920a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3474 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]+xe[i>>16&255]+xe[i>>24&255]+"-"+xe[t&255]+xe[t>>8&255]+"-"+xe[t>>16&15|64]+xe[t>>24&255]+"-"+xe[e&63|128]+xe[e>>8&255]+"-"+xe[e>>16&255]+xe[e>>24&255]+xe[n&255]+xe[n>>8&255]+xe[n>>16&255]+xe[n>>24&255]).toLowerCase()}function kt(i,t,e){return Math.max(t,Math.min(e,i))}function Pc(i,t){return(i%t+t)%t}function Vs(i,t,e){return(1-e)*i+e*t}function $e(i,t){switch(t.constructor){case Float32Array:return i;case Uint32Array:return i/4294967295;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int32Array:return Math.max(i/2147483647,-1);case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function te(i,t){switch(t.constructor){case Float32Array:return i;case Uint32Array:return Math.round(i*4294967295);case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int32Array:return Math.round(i*2147483647);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}const Dc={DEG2RAD:Es};class At{constructor(t=0,e=0){At.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6],this.y=s[1]*e+s[4]*n+s[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(kt(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(kt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),s=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*n-a*s+t.x,this.y=r*s+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class zt{constructor(t,e,n,s,r,a,o,l,c){zt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,e,n,s,r,a,o,l,c)}set(t,e,n,s,r,a,o,l,c){const u=this.elements;return u[0]=t,u[1]=s,u[2]=o,u[3]=e,u[4]=r,u[5]=l,u[6]=n,u[7]=a,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,s=e.elements,r=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],u=n[4],f=n[7],d=n[2],m=n[5],g=n[8],x=s[0],p=s[3],h=s[6],A=s[1],b=s[4],E=s[7],U=s[2],w=s[5],C=s[8];return r[0]=a*x+o*A+l*U,r[3]=a*p+o*b+l*w,r[6]=a*h+o*E+l*C,r[1]=c*x+u*A+f*U,r[4]=c*p+u*b+f*w,r[7]=c*h+u*E+f*C,r[2]=d*x+m*A+g*U,r[5]=d*p+m*b+g*w,r[8]=d*h+m*E+g*C,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],s=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],u=t[8];return e*a*u-e*o*c-n*r*u+n*o*l+s*r*c-s*a*l}invert(){const t=this.elements,e=t[0],n=t[1],s=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],u=t[8],f=u*a-o*c,d=o*l-u*r,m=c*r-a*l,g=e*f+n*d+s*m;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);const x=1/g;return t[0]=f*x,t[1]=(s*c-u*n)*x,t[2]=(o*n-s*a)*x,t[3]=d*x,t[4]=(u*e-s*l)*x,t[5]=(s*r-o*e)*x,t[6]=m*x,t[7]=(n*l-c*e)*x,t[8]=(a*e-n*r)*x,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,s,r,a,o){const l=Math.cos(r),c=Math.sin(r);return this.set(n*l,n*c,-n*(l*a+c*o)+a+t,-s*c,s*l,-s*(-c*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(Gs.makeScale(t,e)),this}rotate(t){return this.premultiply(Gs.makeRotation(-t)),this}translate(t,e){return this.premultiply(Gs.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let s=0;s<9;s++)if(e[s]!==n[s])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}}const Gs=new zt;function cl(i){for(let t=i.length-1;t>=0;--t)if(i[t]>=65535)return!0;return!1}function Rs(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function Lc(){const i=Rs("canvas");return i.style.display="block",i}const za={};function oi(i){i in za||(za[i]=!0,console.warn(i))}function Uc(i,t,e){return new Promise(function(n,s){function r(){switch(i.clientWaitSync(t,i.SYNC_FLUSH_COMMANDS_BIT,0)){case i.WAIT_FAILED:s();break;case i.TIMEOUT_EXPIRED:setTimeout(r,e);break;default:n()}}setTimeout(r,e)})}function Ic(i){const t=i.elements;t[2]=.5*t[2]+.5*t[3],t[6]=.5*t[6]+.5*t[7],t[10]=.5*t[10]+.5*t[11],t[14]=.5*t[14]+.5*t[15]}function Nc(i){const t=i.elements;t[11]===-1?(t[10]=-t[10]-1,t[14]=-t[14]):(t[10]=-t[10],t[14]=-t[14]+1)}const Ha=new zt().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),Va=new zt().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Fc(){const i={enabled:!0,workingColorSpace:Mi,spaces:{},convert:function(s,r,a){return this.enabled===!1||r===a||!r||!a||(this.spaces[r].transfer===Qt&&(s.r=fn(s.r),s.g=fn(s.g),s.b=fn(s.b)),this.spaces[r].primaries!==this.spaces[a].primaries&&(s.applyMatrix3(this.spaces[r].toXYZ),s.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===Qt&&(s.r=pi(s.r),s.g=pi(s.g),s.b=pi(s.b))),s},fromWorkingColorSpace:function(s,r){return this.convert(s,this.workingColorSpace,r)},toWorkingColorSpace:function(s,r){return this.convert(s,r,this.workingColorSpace)},getPrimaries:function(s){return this.spaces[s].primaries},getTransfer:function(s){return s===Sn?As:this.spaces[s].transfer},getLuminanceCoefficients:function(s,r=this.workingColorSpace){return s.fromArray(this.spaces[r].luminanceCoefficients)},define:function(s){Object.assign(this.spaces,s)},_getMatrix:function(s,r,a){return s.copy(this.spaces[r].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(s){return this.spaces[s].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(s=this.workingColorSpace){return this.spaces[s].workingColorSpaceConfig.unpackColorSpace}},t=[.64,.33,.3,.6,.15,.06],e=[.2126,.7152,.0722],n=[.3127,.329];return i.define({[Mi]:{primaries:t,whitePoint:n,transfer:As,toXYZ:Ha,fromXYZ:Va,luminanceCoefficients:e,workingColorSpaceConfig:{unpackColorSpace:Oe},outputColorSpaceConfig:{drawingBufferColorSpace:Oe}},[Oe]:{primaries:t,whitePoint:n,transfer:Qt,toXYZ:Ha,fromXYZ:Va,luminanceCoefficients:e,outputColorSpaceConfig:{drawingBufferColorSpace:Oe}}}),i}const jt=Fc();function fn(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function pi(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}let Wn;class Oc{static getDataURL(t){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{Wn===void 0&&(Wn=Rs("canvas")),Wn.width=t.width,Wn.height=t.height;const n=Wn.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Wn}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap){const e=Rs("canvas");e.width=t.width,e.height=t.height;const n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const s=n.getImageData(0,0,t.width,t.height),r=s.data;for(let a=0;a0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==Ko)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case Lr:t.x=t.x-Math.floor(t.x);break;case On:t.x=t.x<0?0:1;break;case Ur:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Lr:t.y=t.y-Math.floor(t.y);break;case On:t.y=t.y<0?0:1;break;case Ur:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){t===!0&&this.pmremVersion++}}be.DEFAULT_IMAGE=null;be.DEFAULT_MAPPING=Ko;be.DEFAULT_ANISOTROPY=1;class ne{constructor(t=0,e=0,n=0,s=1){ne.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=s}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,s){return this.x=t,this.y=e,this.z=n,this.w=s,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,s=this.z,r=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*s+a[12]*r,this.y=a[1]*e+a[5]*n+a[9]*s+a[13]*r,this.z=a[2]*e+a[6]*n+a[10]*s+a[14]*r,this.w=a[3]*e+a[7]*n+a[11]*s+a[15]*r,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,s,r;const l=t.elements,c=l[0],u=l[4],f=l[8],d=l[1],m=l[5],g=l[9],x=l[2],p=l[6],h=l[10];if(Math.abs(u-d)<.01&&Math.abs(f-x)<.01&&Math.abs(g-p)<.01){if(Math.abs(u+d)<.1&&Math.abs(f+x)<.1&&Math.abs(g+p)<.1&&Math.abs(c+m+h-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const b=(c+1)/2,E=(m+1)/2,U=(h+1)/2,w=(u+d)/4,C=(f+x)/4,N=(g+p)/4;return b>E&&b>U?b<.01?(n=0,s=.707106781,r=.707106781):(n=Math.sqrt(b),s=w/n,r=C/n):E>U?E<.01?(n=.707106781,s=0,r=.707106781):(s=Math.sqrt(E),n=w/s,r=N/s):U<.01?(n=.707106781,s=.707106781,r=0):(r=Math.sqrt(U),n=C/r,s=N/r),this.set(n,s,r,e),this}let A=Math.sqrt((p-g)*(p-g)+(f-x)*(f-x)+(d-u)*(d-u));return Math.abs(A)<.001&&(A=1),this.x=(p-g)/A,this.y=(f-x)/A,this.z=(d-u)/A,this.w=Math.acos((c+m+h-1)/2),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this.z=kt(this.z,t.z,e.z),this.w=kt(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this.z=kt(this.z,t,e),this.w=kt(this.w,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(kt(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Hc extends Vn{constructor(t=1,e=1,n={}){super(),this.isRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new ne(0,0,t,e),this.scissorTest=!1,this.viewport=new ne(0,0,t,e);const s={width:t,height:e,depth:1};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Je,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n);const r=new be(s,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);r.flipY=!1,r.generateMipmaps=n.generateMipmaps,r.internalFormat=n.internalFormat,this.textures=[];const a=n.count;for(let o=0;o=0?1:-1,b=1-h*h;if(b>Number.EPSILON){const U=Math.sqrt(b),w=Math.atan2(U,h*A);p=Math.sin(p*w)/U,o=Math.sin(o*w)/U}const E=o*A;if(l=l*p+d*E,c=c*p+m*E,u=u*p+g*E,f=f*p+x*E,p===1-o){const U=1/Math.sqrt(l*l+c*c+u*u+f*f);l*=U,c*=U,u*=U,f*=U}}t[e]=l,t[e+1]=c,t[e+2]=u,t[e+3]=f}static multiplyQuaternionsFlat(t,e,n,s,r,a){const o=n[s],l=n[s+1],c=n[s+2],u=n[s+3],f=r[a],d=r[a+1],m=r[a+2],g=r[a+3];return t[e]=o*g+u*f+l*m-c*d,t[e+1]=l*g+u*d+c*f-o*m,t[e+2]=c*g+u*m+o*d-l*f,t[e+3]=u*g-o*f-l*d-c*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,s){return this._x=t,this._y=e,this._z=n,this._w=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const n=t._x,s=t._y,r=t._z,a=t._order,o=Math.cos,l=Math.sin,c=o(n/2),u=o(s/2),f=o(r/2),d=l(n/2),m=l(s/2),g=l(r/2);switch(a){case"XYZ":this._x=d*u*f+c*m*g,this._y=c*m*f-d*u*g,this._z=c*u*g+d*m*f,this._w=c*u*f-d*m*g;break;case"YXZ":this._x=d*u*f+c*m*g,this._y=c*m*f-d*u*g,this._z=c*u*g-d*m*f,this._w=c*u*f+d*m*g;break;case"ZXY":this._x=d*u*f-c*m*g,this._y=c*m*f+d*u*g,this._z=c*u*g+d*m*f,this._w=c*u*f-d*m*g;break;case"ZYX":this._x=d*u*f-c*m*g,this._y=c*m*f+d*u*g,this._z=c*u*g-d*m*f,this._w=c*u*f+d*m*g;break;case"YZX":this._x=d*u*f+c*m*g,this._y=c*m*f+d*u*g,this._z=c*u*g-d*m*f,this._w=c*u*f-d*m*g;break;case"XZY":this._x=d*u*f-c*m*g,this._y=c*m*f-d*u*g,this._z=c*u*g+d*m*f,this._w=c*u*f+d*m*g;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,s=Math.sin(n);return this._x=t.x*s,this._y=t.y*s,this._z=t.z*s,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],s=e[4],r=e[8],a=e[1],o=e[5],l=e[9],c=e[2],u=e[6],f=e[10],d=n+o+f;if(d>0){const m=.5/Math.sqrt(d+1);this._w=.25/m,this._x=(u-l)*m,this._y=(r-c)*m,this._z=(a-s)*m}else if(n>o&&n>f){const m=2*Math.sqrt(1+n-o-f);this._w=(u-l)/m,this._x=.25*m,this._y=(s+a)/m,this._z=(r+c)/m}else if(o>f){const m=2*Math.sqrt(1+o-n-f);this._w=(r-c)/m,this._x=(s+a)/m,this._y=.25*m,this._z=(l+u)/m}else{const m=2*Math.sqrt(1+f-n-o);this._w=(a-s)/m,this._x=(r+c)/m,this._y=(l+u)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(kt(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(n===0)return this;const s=Math.min(1,e/n);return this.slerp(t,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,s=t._y,r=t._z,a=t._w,o=e._x,l=e._y,c=e._z,u=e._w;return this._x=n*u+a*o+s*c-r*l,this._y=s*u+a*l+r*o-n*c,this._z=r*u+a*c+n*l-s*o,this._w=a*u-n*o-s*l-r*c,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const n=this._x,s=this._y,r=this._z,a=this._w;let o=a*t._w+n*t._x+s*t._y+r*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=s,this._z=r,this;const l=1-o*o;if(l<=Number.EPSILON){const m=1-e;return this._w=m*a+e*this._w,this._x=m*n+e*this._x,this._y=m*s+e*this._y,this._z=m*r+e*this._z,this.normalize(),this}const c=Math.sqrt(l),u=Math.atan2(c,o),f=Math.sin((1-e)*u)/c,d=Math.sin(e*u)/c;return this._w=a*f+this._w*d,this._x=n*f+this._x*d,this._y=s*f+this._y*d,this._z=r*f+this._z*d,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),n=Math.random(),s=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(s*Math.sin(t),s*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class R{constructor(t=0,e=0,n=0){R.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Ga.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Ga.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,s=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*s,this.y=r[1]*e+r[4]*n+r[7]*s,this.z=r[2]*e+r[5]*n+r[8]*s,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,s=this.z,r=t.elements,a=1/(r[3]*e+r[7]*n+r[11]*s+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*s+r[12])*a,this.y=(r[1]*e+r[5]*n+r[9]*s+r[13])*a,this.z=(r[2]*e+r[6]*n+r[10]*s+r[14])*a,this}applyQuaternion(t){const e=this.x,n=this.y,s=this.z,r=t.x,a=t.y,o=t.z,l=t.w,c=2*(a*s-o*n),u=2*(o*e-r*s),f=2*(r*n-a*e);return this.x=e+l*c+a*f-o*u,this.y=n+l*u+o*c-r*f,this.z=s+l*f+r*u-a*c,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,s=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*s,this.y=r[1]*e+r[5]*n+r[9]*s,this.z=r[2]*e+r[6]*n+r[10]*s,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this.z=kt(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this.z=kt(this.z,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(kt(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,s=t.y,r=t.z,a=e.x,o=e.y,l=e.z;return this.x=s*l-r*o,this.y=r*a-n*l,this.z=n*o-s*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return Ws.copy(this).projectOnVector(t),this.sub(Ws)}reflect(t){return this.sub(Ws.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(kt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,s=this.z-t.z;return e*e+n*n+s*s}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const s=Math.sin(e)*t;return this.x=s*Math.sin(n),this.y=Math.cos(e)*t,this.z=s*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),s=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=s,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,n=Math.sqrt(1-e*e);return this.x=n*Math.cos(t),this.y=e,this.z=n*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Ws=new R,Ga=new Hn;class Fi{constructor(t=new R(1/0,1/0,1/0),e=new R(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,n=t.length;e=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.max.z}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return t.max.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,Ge),Ge.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(bi),Xi.subVectors(this.max,bi),Xn.subVectors(t.a,bi),Yn.subVectors(t.b,bi),qn.subVectors(t.c,bi),pn.subVectors(Yn,Xn),mn.subVectors(qn,Yn),Rn.subVectors(Xn,qn);let e=[0,-pn.z,pn.y,0,-mn.z,mn.y,0,-Rn.z,Rn.y,pn.z,0,-pn.x,mn.z,0,-mn.x,Rn.z,0,-Rn.x,-pn.y,pn.x,0,-mn.y,mn.x,0,-Rn.y,Rn.x,0];return!Xs(e,Xn,Yn,qn,Xi)||(e=[1,0,0,0,1,0,0,0,1],!Xs(e,Xn,Yn,qn,Xi))?!1:(Yi.crossVectors(pn,mn),e=[Yi.x,Yi.y,Yi.z],Xs(e,Xn,Yn,qn,Xi))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Ge).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=this.getSize(Ge).length()*.5),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(en[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),en[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),en[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),en[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),en[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),en[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),en[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),en[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(en),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const en=[new R,new R,new R,new R,new R,new R,new R,new R],Ge=new R,Wi=new Fi,Xn=new R,Yn=new R,qn=new R,pn=new R,mn=new R,Rn=new R,bi=new R,Xi=new R,Yi=new R,Cn=new R;function Xs(i,t,e,n,s){for(let r=0,a=i.length-3;r<=a;r+=3){Cn.fromArray(i,r);const o=s.x*Math.abs(Cn.x)+s.y*Math.abs(Cn.y)+s.z*Math.abs(Cn.z),l=t.dot(Cn),c=e.dot(Cn),u=n.dot(Cn);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>o)return!1}return!0}const Gc=new Fi,Ai=new R,Ys=new R;class Oi{constructor(t=new R,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;e!==void 0?n.copy(e):Gc.setFromPoints(t).getCenter(n);let s=0;for(let r=0,a=t.length;rthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;Ai.subVectors(t,this.center);const e=Ai.lengthSq();if(e>this.radius*this.radius){const n=Math.sqrt(e),s=(n-this.radius)*.5;this.center.addScaledVector(Ai,s/n),this.radius+=s}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(Ys.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(Ai.copy(t.center).add(Ys)),this.expandByPoint(Ai.copy(t.center).sub(Ys))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}}const nn=new R,qs=new R,qi=new R,_n=new R,js=new R,ji=new R,Zs=new R;class Bi{constructor(t=new R,e=new R(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,nn)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=nn.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(nn.copy(this.origin).addScaledVector(this.direction,e),nn.distanceToSquared(t))}distanceSqToSegment(t,e,n,s){qs.copy(t).add(e).multiplyScalar(.5),qi.copy(e).sub(t).normalize(),_n.copy(this.origin).sub(qs);const r=t.distanceTo(e)*.5,a=-this.direction.dot(qi),o=_n.dot(this.direction),l=-_n.dot(qi),c=_n.lengthSq(),u=Math.abs(1-a*a);let f,d,m,g;if(u>0)if(f=a*l-o,d=a*o-l,g=r*u,f>=0)if(d>=-g)if(d<=g){const x=1/u;f*=x,d*=x,m=f*(f+a*d+2*o)+d*(a*f+d+2*l)+c}else d=r,f=Math.max(0,-(a*d+o)),m=-f*f+d*(d+2*l)+c;else d=-r,f=Math.max(0,-(a*d+o)),m=-f*f+d*(d+2*l)+c;else d<=-g?(f=Math.max(0,-(-a*r+o)),d=f>0?-r:Math.min(Math.max(-r,-l),r),m=-f*f+d*(d+2*l)+c):d<=g?(f=0,d=Math.min(Math.max(-r,-l),r),m=d*(d+2*l)+c):(f=Math.max(0,-(a*r+o)),d=f>0?r:Math.min(Math.max(-r,-l),r),m=-f*f+d*(d+2*l)+c);else d=a>0?-r:r,f=Math.max(0,-(a*d+o)),m=-f*f+d*(d+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,f),s&&s.copy(qs).addScaledVector(qi,d),m}intersectSphere(t,e){nn.subVectors(t.center,this.origin);const n=nn.dot(this.direction),s=nn.dot(nn)-n*n,r=t.radius*t.radius;if(s>r)return null;const a=Math.sqrt(r-s),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,e):this.at(o,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,s,r,a,o,l;const c=1/this.direction.x,u=1/this.direction.y,f=1/this.direction.z,d=this.origin;return c>=0?(n=(t.min.x-d.x)*c,s=(t.max.x-d.x)*c):(n=(t.max.x-d.x)*c,s=(t.min.x-d.x)*c),u>=0?(r=(t.min.y-d.y)*u,a=(t.max.y-d.y)*u):(r=(t.max.y-d.y)*u,a=(t.min.y-d.y)*u),n>a||r>s||((r>n||isNaN(n))&&(n=r),(a=0?(o=(t.min.z-d.z)*f,l=(t.max.z-d.z)*f):(o=(t.max.z-d.z)*f,l=(t.min.z-d.z)*f),n>l||o>s)||((o>n||n!==n)&&(n=o),(l=0?n:s,e)}intersectsBox(t){return this.intersectBox(t,nn)!==null}intersectTriangle(t,e,n,s,r){js.subVectors(e,t),ji.subVectors(n,t),Zs.crossVectors(js,ji);let a=this.direction.dot(Zs),o;if(a>0){if(s)return null;o=1}else if(a<0)o=-1,a=-a;else return null;_n.subVectors(this.origin,t);const l=o*this.direction.dot(ji.crossVectors(_n,ji));if(l<0)return null;const c=o*this.direction.dot(js.cross(_n));if(c<0||l+c>a)return null;const u=-o*_n.dot(Zs);return u<0?null:this.at(u/a,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class ie{constructor(t,e,n,s,r,a,o,l,c,u,f,d,m,g,x,p){ie.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,e,n,s,r,a,o,l,c,u,f,d,m,g,x,p)}set(t,e,n,s,r,a,o,l,c,u,f,d,m,g,x,p){const h=this.elements;return h[0]=t,h[4]=e,h[8]=n,h[12]=s,h[1]=r,h[5]=a,h[9]=o,h[13]=l,h[2]=c,h[6]=u,h[10]=f,h[14]=d,h[3]=m,h[7]=g,h[11]=x,h[15]=p,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new ie().fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,s=1/jn.setFromMatrixColumn(t,0).length(),r=1/jn.setFromMatrixColumn(t,1).length(),a=1/jn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*s,e[1]=n[1]*s,e[2]=n[2]*s,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,s=t.y,r=t.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(s),c=Math.sin(s),u=Math.cos(r),f=Math.sin(r);if(t.order==="XYZ"){const d=a*u,m=a*f,g=o*u,x=o*f;e[0]=l*u,e[4]=-l*f,e[8]=c,e[1]=m+g*c,e[5]=d-x*c,e[9]=-o*l,e[2]=x-d*c,e[6]=g+m*c,e[10]=a*l}else if(t.order==="YXZ"){const d=l*u,m=l*f,g=c*u,x=c*f;e[0]=d+x*o,e[4]=g*o-m,e[8]=a*c,e[1]=a*f,e[5]=a*u,e[9]=-o,e[2]=m*o-g,e[6]=x+d*o,e[10]=a*l}else if(t.order==="ZXY"){const d=l*u,m=l*f,g=c*u,x=c*f;e[0]=d-x*o,e[4]=-a*f,e[8]=g+m*o,e[1]=m+g*o,e[5]=a*u,e[9]=x-d*o,e[2]=-a*c,e[6]=o,e[10]=a*l}else if(t.order==="ZYX"){const d=a*u,m=a*f,g=o*u,x=o*f;e[0]=l*u,e[4]=g*c-m,e[8]=d*c+x,e[1]=l*f,e[5]=x*c+d,e[9]=m*c-g,e[2]=-c,e[6]=o*l,e[10]=a*l}else if(t.order==="YZX"){const d=a*l,m=a*c,g=o*l,x=o*c;e[0]=l*u,e[4]=x-d*f,e[8]=g*f+m,e[1]=f,e[5]=a*u,e[9]=-o*u,e[2]=-c*u,e[6]=m*f+g,e[10]=d-x*f}else if(t.order==="XZY"){const d=a*l,m=a*c,g=o*l,x=o*c;e[0]=l*u,e[4]=-f,e[8]=c*u,e[1]=d*f+x,e[5]=a*u,e[9]=m*f-g,e[2]=g*f-m,e[6]=o*u,e[10]=x*f+d}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(kc,t,Wc)}lookAt(t,e,n){const s=this.elements;return De.subVectors(t,e),De.lengthSq()===0&&(De.z=1),De.normalize(),gn.crossVectors(n,De),gn.lengthSq()===0&&(Math.abs(n.z)===1?De.x+=1e-4:De.z+=1e-4,De.normalize(),gn.crossVectors(n,De)),gn.normalize(),Zi.crossVectors(De,gn),s[0]=gn.x,s[4]=Zi.x,s[8]=De.x,s[1]=gn.y,s[5]=Zi.y,s[9]=De.y,s[2]=gn.z,s[6]=Zi.z,s[10]=De.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,s=e.elements,r=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],u=n[1],f=n[5],d=n[9],m=n[13],g=n[2],x=n[6],p=n[10],h=n[14],A=n[3],b=n[7],E=n[11],U=n[15],w=s[0],C=s[4],N=s[8],y=s[12],M=s[1],P=s[5],W=s[9],H=s[13],Y=s[2],Q=s[6],k=s[10],it=s[14],V=s[3],ht=s[7],gt=s[11],wt=s[15];return r[0]=a*w+o*M+l*Y+c*V,r[4]=a*C+o*P+l*Q+c*ht,r[8]=a*N+o*W+l*k+c*gt,r[12]=a*y+o*H+l*it+c*wt,r[1]=u*w+f*M+d*Y+m*V,r[5]=u*C+f*P+d*Q+m*ht,r[9]=u*N+f*W+d*k+m*gt,r[13]=u*y+f*H+d*it+m*wt,r[2]=g*w+x*M+p*Y+h*V,r[6]=g*C+x*P+p*Q+h*ht,r[10]=g*N+x*W+p*k+h*gt,r[14]=g*y+x*H+p*it+h*wt,r[3]=A*w+b*M+E*Y+U*V,r[7]=A*C+b*P+E*Q+U*ht,r[11]=A*N+b*W+E*k+U*gt,r[15]=A*y+b*H+E*it+U*wt,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],s=t[8],r=t[12],a=t[1],o=t[5],l=t[9],c=t[13],u=t[2],f=t[6],d=t[10],m=t[14],g=t[3],x=t[7],p=t[11],h=t[15];return g*(+r*l*f-s*c*f-r*o*d+n*c*d+s*o*m-n*l*m)+x*(+e*l*m-e*c*d+r*a*d-s*a*m+s*c*u-r*l*u)+p*(+e*c*f-e*o*m-r*a*f+n*a*m+r*o*u-n*c*u)+h*(-s*o*u-e*l*f+e*o*d+s*a*f-n*a*d+n*l*u)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const s=this.elements;return t.isVector3?(s[12]=t.x,s[13]=t.y,s[14]=t.z):(s[12]=t,s[13]=e,s[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],s=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],u=t[8],f=t[9],d=t[10],m=t[11],g=t[12],x=t[13],p=t[14],h=t[15],A=f*p*c-x*d*c+x*l*m-o*p*m-f*l*h+o*d*h,b=g*d*c-u*p*c-g*l*m+a*p*m+u*l*h-a*d*h,E=u*x*c-g*f*c+g*o*m-a*x*m-u*o*h+a*f*h,U=g*f*l-u*x*l-g*o*d+a*x*d+u*o*p-a*f*p,w=e*A+n*b+s*E+r*U;if(w===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const C=1/w;return t[0]=A*C,t[1]=(x*d*r-f*p*r-x*s*m+n*p*m+f*s*h-n*d*h)*C,t[2]=(o*p*r-x*l*r+x*s*c-n*p*c-o*s*h+n*l*h)*C,t[3]=(f*l*r-o*d*r-f*s*c+n*d*c+o*s*m-n*l*m)*C,t[4]=b*C,t[5]=(u*p*r-g*d*r+g*s*m-e*p*m-u*s*h+e*d*h)*C,t[6]=(g*l*r-a*p*r-g*s*c+e*p*c+a*s*h-e*l*h)*C,t[7]=(a*d*r-u*l*r+u*s*c-e*d*c-a*s*m+e*l*m)*C,t[8]=E*C,t[9]=(g*f*r-u*x*r-g*n*m+e*x*m+u*n*h-e*f*h)*C,t[10]=(a*x*r-g*o*r+g*n*c-e*x*c-a*n*h+e*o*h)*C,t[11]=(u*o*r-a*f*r-u*n*c+e*f*c+a*n*m-e*o*m)*C,t[12]=U*C,t[13]=(u*x*s-g*f*s+g*n*d-e*x*d-u*n*p+e*f*p)*C,t[14]=(g*o*s-a*x*s-g*n*l+e*x*l+a*n*p-e*o*p)*C,t[15]=(a*f*s-u*o*s+u*n*l-e*f*l-a*n*d+e*o*d)*C,this}scale(t){const e=this.elements,n=t.x,s=t.y,r=t.z;return e[0]*=n,e[4]*=s,e[8]*=r,e[1]*=n,e[5]*=s,e[9]*=r,e[2]*=n,e[6]*=s,e[10]*=r,e[3]*=n,e[7]*=s,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],s=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,s))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),s=Math.sin(e),r=1-n,a=t.x,o=t.y,l=t.z,c=r*a,u=r*o;return this.set(c*a+n,c*o-s*l,c*l+s*o,0,c*o+s*l,u*o+n,u*l-s*a,0,c*l-s*o,u*l+s*a,r*l*l+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,s,r,a){return this.set(1,n,r,0,t,1,a,0,e,s,1,0,0,0,0,1),this}compose(t,e,n){const s=this.elements,r=e._x,a=e._y,o=e._z,l=e._w,c=r+r,u=a+a,f=o+o,d=r*c,m=r*u,g=r*f,x=a*u,p=a*f,h=o*f,A=l*c,b=l*u,E=l*f,U=n.x,w=n.y,C=n.z;return s[0]=(1-(x+h))*U,s[1]=(m+E)*U,s[2]=(g-b)*U,s[3]=0,s[4]=(m-E)*w,s[5]=(1-(d+h))*w,s[6]=(p+A)*w,s[7]=0,s[8]=(g+b)*C,s[9]=(p-A)*C,s[10]=(1-(d+x))*C,s[11]=0,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=1,this}decompose(t,e,n){const s=this.elements;let r=jn.set(s[0],s[1],s[2]).length();const a=jn.set(s[4],s[5],s[6]).length(),o=jn.set(s[8],s[9],s[10]).length();this.determinant()<0&&(r=-r),t.x=s[12],t.y=s[13],t.z=s[14],ke.copy(this);const c=1/r,u=1/a,f=1/o;return ke.elements[0]*=c,ke.elements[1]*=c,ke.elements[2]*=c,ke.elements[4]*=u,ke.elements[5]*=u,ke.elements[6]*=u,ke.elements[8]*=f,ke.elements[9]*=f,ke.elements[10]*=f,e.setFromRotationMatrix(ke),n.x=r,n.y=a,n.z=o,this}makePerspective(t,e,n,s,r,a,o=cn){const l=this.elements,c=2*r/(e-t),u=2*r/(n-s),f=(e+t)/(e-t),d=(n+s)/(n-s);let m,g;if(o===cn)m=-(a+r)/(a-r),g=-2*a*r/(a-r);else if(o===ws)m=-a/(a-r),g=-a*r/(a-r);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return l[0]=c,l[4]=0,l[8]=f,l[12]=0,l[1]=0,l[5]=u,l[9]=d,l[13]=0,l[2]=0,l[6]=0,l[10]=m,l[14]=g,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(t,e,n,s,r,a,o=cn){const l=this.elements,c=1/(e-t),u=1/(n-s),f=1/(a-r),d=(e+t)*c,m=(n+s)*u;let g,x;if(o===cn)g=(a+r)*f,x=-2*f;else if(o===ws)g=r*f,x=-1*f;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-d,l[1]=0,l[5]=2*u,l[9]=0,l[13]=-m,l[2]=0,l[6]=0,l[10]=x,l[14]=-g,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let s=0;s<16;s++)if(e[s]!==n[s])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}const jn=new R,ke=new ie,kc=new R(0,0,0),Wc=new R(1,1,1),gn=new R,Zi=new R,De=new R,ka=new ie,Wa=new Hn;class Qe{constructor(t=0,e=0,n=0,s=Qe.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=s}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,s=this._order){return this._x=t,this._y=e,this._z=n,this._order=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const s=t.elements,r=s[0],a=s[4],o=s[8],l=s[1],c=s[5],u=s[9],f=s[2],d=s[6],m=s[10];switch(e){case"XYZ":this._y=Math.asin(kt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,m),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-kt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-f,r),this._z=0);break;case"ZXY":this._x=Math.asin(kt(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-kt(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(d,m),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(kt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-f,r)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-kt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-u,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return ka.makeRotationFromQuaternion(t),this.setFromRotationMatrix(ka,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Wa.setFromEuler(this),this.setFromQuaternion(Wa,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Qe.DEFAULT_ORDER="XYZ";class Ma{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let e=0;e1){for(let n=0;n0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(s.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(s.type="BatchedMesh",s.perObjectFrustumCulled=this.perObjectFrustumCulled,s.sortObjects=this.sortObjects,s.drawRanges=this._drawRanges,s.reservedRanges=this._reservedRanges,s.visibility=this._visibility,s.active=this._active,s.bounds=this._bounds.map(o=>({boxInitialized:o.boxInitialized,boxMin:o.box.min.toArray(),boxMax:o.box.max.toArray(),sphereInitialized:o.sphereInitialized,sphereRadius:o.sphere.radius,sphereCenter:o.sphere.center.toArray()})),s.maxInstanceCount=this._maxInstanceCount,s.maxVertexCount=this._maxVertexCount,s.maxIndexCount=this._maxIndexCount,s.geometryInitialized=this._geometryInitialized,s.geometryCount=this._geometryCount,s.matricesTexture=this._matricesTexture.toJSON(t),this._colorsTexture!==null&&(s.colorsTexture=this._colorsTexture.toJSON(t)),this.boundingSphere!==null&&(s.boundingSphere={center:s.boundingSphere.center.toArray(),radius:s.boundingSphere.radius}),this.boundingBox!==null&&(s.boundingBox={min:s.boundingBox.min.toArray(),max:s.boundingBox.max.toArray()}));function r(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(t)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(s.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=r(t.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,u=l.length;c0){s.children=[];for(let o=0;o0){s.animations=[];for(let o=0;o0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),u.length>0&&(n.images=u),f.length>0&&(n.shapes=f),d.length>0&&(n.skeletons=d),m.length>0&&(n.animations=m),g.length>0&&(n.nodes=g)}return n.object=s,n;function a(o){const l=[];for(const c in o){const u=o[c];delete u.metadata,l.push(u)}return l}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n0?s.multiplyScalar(1/Math.sqrt(r)):s.set(0,0,0)}static getBarycoord(t,e,n,s,r){We.subVectors(s,e),rn.subVectors(n,e),$s.subVectors(t,e);const a=We.dot(We),o=We.dot(rn),l=We.dot($s),c=rn.dot(rn),u=rn.dot($s),f=a*c-o*o;if(f===0)return r.set(0,0,0),null;const d=1/f,m=(c*l-o*u)*d,g=(a*u-o*l)*d;return r.set(1-m-g,g,m)}static containsPoint(t,e,n,s){return this.getBarycoord(t,e,n,s,an)===null?!1:an.x>=0&&an.y>=0&&an.x+an.y<=1}static getInterpolation(t,e,n,s,r,a,o,l){return this.getBarycoord(t,e,n,s,an)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(r,an.x),l.addScaledVector(a,an.y),l.addScaledVector(o,an.z),l)}static getInterpolatedAttribute(t,e,n,s,r,a){return er.setScalar(0),nr.setScalar(0),ir.setScalar(0),er.fromBufferAttribute(t,e),nr.fromBufferAttribute(t,n),ir.fromBufferAttribute(t,s),a.setScalar(0),a.addScaledVector(er,r.x),a.addScaledVector(nr,r.y),a.addScaledVector(ir,r.z),a}static isFrontFacing(t,e,n,s){return We.subVectors(n,e),rn.subVectors(t,e),We.cross(rn).dot(s)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,s){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[s]),this}setFromAttributeAndIndices(t,e,n,s){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,s),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return We.subVectors(this.c,this.b),rn.subVectors(this.a,this.b),We.cross(rn).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return Be.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return Be.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,n,s,r){return Be.getInterpolation(t,this.a,this.b,this.c,e,n,s,r)}containsPoint(t){return Be.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return Be.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,s=this.b,r=this.c;let a,o;$n.subVectors(s,n),Jn.subVectors(r,n),Js.subVectors(t,n);const l=$n.dot(Js),c=Jn.dot(Js);if(l<=0&&c<=0)return e.copy(n);Qs.subVectors(t,s);const u=$n.dot(Qs),f=Jn.dot(Qs);if(u>=0&&f<=u)return e.copy(s);const d=l*f-u*c;if(d<=0&&l>=0&&u<=0)return a=l/(l-u),e.copy(n).addScaledVector($n,a);tr.subVectors(t,r);const m=$n.dot(tr),g=Jn.dot(tr);if(g>=0&&m<=g)return e.copy(r);const x=m*c-l*g;if(x<=0&&c>=0&&g<=0)return o=c/(c-g),e.copy(n).addScaledVector(Jn,o);const p=u*g-m*f;if(p<=0&&f-u>=0&&m-g>=0)return Ka.subVectors(r,s),o=(f-u)/(f-u+(m-g)),e.copy(s).addScaledVector(Ka,o);const h=1/(p+x+d);return a=x*h,o=d*h,e.copy(n).addScaledVector($n,a).addScaledVector(Jn,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const fl={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},vn={h:0,s:0,l:0},$i={h:0,s:0,l:0};function sr(i,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?i+(t-i)*6*e:e<1/2?t:e<2/3?i+(t-i)*6*(2/3-e):i}class Rt{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(e===void 0&&n===void 0){const s=t;s&&s.isColor?this.copy(s):typeof s=="number"?this.setHex(s):typeof s=="string"&&this.setStyle(s)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Oe){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,jt.toWorkingColorSpace(this,e),this}setRGB(t,e,n,s=jt.workingColorSpace){return this.r=t,this.g=e,this.b=n,jt.toWorkingColorSpace(this,s),this}setHSL(t,e,n,s=jt.workingColorSpace){if(t=Pc(t,1),e=kt(e,0,1),n=kt(n,0,1),e===0)this.r=this.g=this.b=n;else{const r=n<=.5?n*(1+e):n+e-n*e,a=2*n-r;this.r=sr(a,r,t+1/3),this.g=sr(a,r,t),this.b=sr(a,r,t-1/3)}return jt.toWorkingColorSpace(this,s),this}setStyle(t,e=Oe){function n(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let s;if(s=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const a=s[1],o=s[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(s=/^\#([A-Fa-f\d]+)$/.exec(t)){const r=s[1],a=r.length;if(a===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,e);if(a===6)return this.setHex(parseInt(r,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=Oe){const n=fl[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=fn(t.r),this.g=fn(t.g),this.b=fn(t.b),this}copyLinearToSRGB(t){return this.r=pi(t.r),this.g=pi(t.g),this.b=pi(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Oe){return jt.fromWorkingColorSpace(Me.copy(this),t),Math.round(kt(Me.r*255,0,255))*65536+Math.round(kt(Me.g*255,0,255))*256+Math.round(kt(Me.b*255,0,255))}getHexString(t=Oe){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=jt.workingColorSpace){jt.fromWorkingColorSpace(Me.copy(this),e);const n=Me.r,s=Me.g,r=Me.b,a=Math.max(n,s,r),o=Math.min(n,s,r);let l,c;const u=(o+a)/2;if(o===a)l=0,c=0;else{const f=a-o;switch(c=u<=.5?f/(a+o):f/(2-a-o),a){case n:l=(s-r)/f+(s0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(const e in t){const n=t[e];if(n===void 0){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const s=this[e];if(s===void 0){console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`);continue}s&&s.isColor?s.set(n):s&&s.isVector3&&n&&n.isVector3?s.copy(n):this[e]=n}}toJSON(t){const e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==fi&&(n.blending=this.blending),this.side!==Tn&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==Sr&&(n.blendSrc=this.blendSrc),this.blendDst!==yr&&(n.blendDst=this.blendDst),this.blendEquation!==Nn&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==mi&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Oa&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==kn&&(n.stencilFail=this.stencilFail),this.stencilZFail!==kn&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==kn&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function s(r){const a=[];for(const o in r){const l=r[o];delete l.metadata,a.push(l)}return a}if(e){const r=s(t.textures),a=s(t.images);r.length>0&&(n.textures=r),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(e!==null){const s=e.length;n=new Array(s);for(let r=0;r!==s;++r)n[r]=e[r].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class Ns extends bn{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Rt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Qe,this.combine=jo,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const ce=new R,Ji=new At;class _e{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=aa,this.updateRanges=[],this.gpuType=ln,this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let s=0,r=this.itemSize;se.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Fi);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new R(-1/0,-1/0,-1/0),new R(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let n=0,s=e.length;n0&&(t.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(t[c]=l[c]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const l in n){const c=n[l];t.data.attributes[l]=c.toJSON(t.data)}const s={};let r=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],u=[];for(let f=0,d=c.length;f0&&(s[l]=u,r=!0)}r&&(t.data.morphAttributes=s,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;n!==null&&this.setIndex(n.clone(e));const s=t.attributes;for(const c in s){const u=s[c];this.setAttribute(c,u.clone(e))}const r=t.morphAttributes;for(const c in r){const u=[],f=r[c];for(let d=0,m=f.length;d0){const s=e[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=s.length;r(t.far-t.near)**2))&&($a.copy(r).invert(),Pn.copy(t.ray).applyMatrix4($a),!(n.boundingBox!==null&&Pn.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(t,e,Pn)))}_computeIntersections(t,e,n){let s;const r=this.geometry,a=this.material,o=r.index,l=r.attributes.position,c=r.attributes.uv,u=r.attributes.uv1,f=r.attributes.normal,d=r.groups,m=r.drawRange;if(o!==null)if(Array.isArray(a))for(let g=0,x=d.length;ge.far?null:{distance:c,point:ss.clone(),object:i}}function rs(i,t,e,n,s,r,a,o,l,c){i.getVertexPosition(o,ts),i.getVertexPosition(l,es),i.getVertexPosition(c,ns);const u=$c(i,t,e,n,ts,es,ns,Qa);if(u){const f=new R;Be.getBarycoord(Qa,ts,es,ns,f),s&&(u.uv=Be.getInterpolatedAttribute(s,o,l,c,f,new At)),r&&(u.uv1=Be.getInterpolatedAttribute(r,o,l,c,f,new At)),a&&(u.normal=Be.getInterpolatedAttribute(a,o,l,c,f,new R),u.normal.dot(n.direction)>0&&u.normal.multiplyScalar(-1));const d={a:o,b:l,c,normal:new R,materialIndex:0};Be.getNormal(ts,es,ns,d.normal),u.face=d,u.barycoord=f}return u}class zi extends pe{constructor(t=1,e=1,n=1,s=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:s,heightSegments:r,depthSegments:a};const o=this;s=Math.floor(s),r=Math.floor(r),a=Math.floor(a);const l=[],c=[],u=[],f=[];let d=0,m=0;g("z","y","x",-1,-1,n,e,t,a,r,0),g("z","y","x",1,-1,n,e,-t,a,r,1),g("x","z","y",1,1,t,n,e,s,a,2),g("x","z","y",1,-1,t,n,-e,s,a,3),g("x","y","z",1,-1,t,e,n,s,r,4),g("x","y","z",-1,-1,t,e,-n,s,r,5),this.setIndex(l),this.setAttribute("position",new Se(c,3)),this.setAttribute("normal",new Se(u,3)),this.setAttribute("uv",new Se(f,2));function g(x,p,h,A,b,E,U,w,C,N,y){const M=E/C,P=U/N,W=E/2,H=U/2,Y=w/2,Q=C+1,k=N+1;let it=0,V=0;const ht=new R;for(let gt=0;gt0?1:-1,u.push(ht.x,ht.y,ht.z),f.push(Ht/C),f.push(1-gt/N),it+=1}}for(let gt=0;gt>8&255]+Ee[i>>16&255]+Ee[i>>24&255]+"-"+Ee[t&255]+Ee[t>>8&255]+"-"+Ee[t>>16&15|64]+Ee[t>>24&255]+"-"+Ee[e&63|128]+Ee[e>>8&255]+"-"+Ee[e>>16&255]+Ee[e>>24&255]+Ee[n&255]+Ee[n>>8&255]+Ee[n>>16&255]+Ee[n>>24&255]).toLowerCase()}function jt(i,t,e){return Math.max(t,Math.min(e,i))}function ch(i,t){return(i%t+t)%t}function ar(i,t,e){return(1-e)*i+e*t}function on(i,t){switch(t.constructor){case Float32Array:return i;case Uint32Array:return i/4294967295;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int32Array:return Math.max(i/2147483647,-1);case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function ae(i,t){switch(t.constructor){case Float32Array:return i;case Uint32Array:return Math.round(i*4294967295);case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int32Array:return Math.round(i*2147483647);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}const hh={DEG2RAD:ks};class At{constructor(t=0,e=0){At.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6],this.y=s[1]*e+s[4]*n+s[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=jt(this.x,t.x,e.x),this.y=jt(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=jt(this.x,t,e),this.y=jt(this.y,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(jt(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(jt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),s=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*n-a*s+t.x,this.y=r*s+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Wt{constructor(t,e,n,s,r,a,o,l,c){Wt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,e,n,s,r,a,o,l,c)}set(t,e,n,s,r,a,o,l,c){const u=this.elements;return u[0]=t,u[1]=s,u[2]=o,u[3]=e,u[4]=r,u[5]=l,u[6]=n,u[7]=a,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,s=e.elements,r=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],u=n[4],d=n[7],f=n[2],m=n[5],g=n[8],x=s[0],p=s[3],h=s[6],A=s[1],b=s[4],E=s[7],D=s[2],w=s[5],R=s[8];return r[0]=a*x+o*A+l*D,r[3]=a*p+o*b+l*w,r[6]=a*h+o*E+l*R,r[1]=c*x+u*A+d*D,r[4]=c*p+u*b+d*w,r[7]=c*h+u*E+d*R,r[2]=f*x+m*A+g*D,r[5]=f*p+m*b+g*w,r[8]=f*h+m*E+g*R,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],s=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],u=t[8];return e*a*u-e*o*c-n*r*u+n*o*l+s*r*c-s*a*l}invert(){const t=this.elements,e=t[0],n=t[1],s=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],u=t[8],d=u*a-o*c,f=o*l-u*r,m=c*r-a*l,g=e*d+n*f+s*m;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);const x=1/g;return t[0]=d*x,t[1]=(s*c-u*n)*x,t[2]=(o*n-s*a)*x,t[3]=f*x,t[4]=(u*e-s*l)*x,t[5]=(s*r-o*e)*x,t[6]=m*x,t[7]=(n*l-c*e)*x,t[8]=(a*e-n*r)*x,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,s,r,a,o){const l=Math.cos(r),c=Math.sin(r);return this.set(n*l,n*c,-n*(l*a+c*o)+a+t,-s*c,s*l,-s*(-c*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(or.makeScale(t,e)),this}rotate(t){return this.premultiply(or.makeRotation(-t)),this}translate(t,e){return this.premultiply(or.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let s=0;s<9;s++)if(e[s]!==n[s])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}}const or=new Wt;function Bl(i){for(let t=i.length-1;t>=0;--t)if(i[t]>=65535)return!0;return!1}function qs(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function uh(){const i=qs("canvas");return i.style.display="block",i}const co={};function yi(i){i in co||(co[i]=!0,console.warn(i))}function dh(i,t,e){return new Promise(function(n,s){function r(){switch(i.clientWaitSync(t,i.SYNC_FLUSH_COMMANDS_BIT,0)){case i.WAIT_FAILED:s();break;case i.TIMEOUT_EXPIRED:setTimeout(r,e);break;default:n()}}setTimeout(r,e)})}function fh(i){const t=i.elements;t[2]=.5*t[2]+.5*t[3],t[6]=.5*t[6]+.5*t[7],t[10]=.5*t[10]+.5*t[11],t[14]=.5*t[14]+.5*t[15]}function ph(i){const t=i.elements;t[11]===-1?(t[10]=-t[10]-1,t[14]=-t[14]):(t[10]=-t[10],t[14]=-t[14]+1)}const ho=new Wt().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),uo=new Wt().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function mh(){const i={enabled:!0,workingColorSpace:Ni,spaces:{},convert:function(s,r,a){return this.enabled===!1||r===a||!r||!a||(this.spaces[r].transfer===re&&(s.r=yn(s.r),s.g=yn(s.g),s.b=yn(s.b)),this.spaces[r].primaries!==this.spaces[a].primaries&&(s.applyMatrix3(this.spaces[r].toXYZ),s.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===re&&(s.r=Ci(s.r),s.g=Ci(s.g),s.b=Ci(s.b))),s},fromWorkingColorSpace:function(s,r){return this.convert(s,this.workingColorSpace,r)},toWorkingColorSpace:function(s,r){return this.convert(s,r,this.workingColorSpace)},getPrimaries:function(s){return this.spaces[s].primaries},getTransfer:function(s){return s===Ln?Xs:this.spaces[s].transfer},getLuminanceCoefficients:function(s,r=this.workingColorSpace){return s.fromArray(this.spaces[r].luminanceCoefficients)},define:function(s){Object.assign(this.spaces,s)},_getMatrix:function(s,r,a){return s.copy(this.spaces[r].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(s){return this.spaces[s].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(s=this.workingColorSpace){return this.spaces[s].workingColorSpaceConfig.unpackColorSpace}},t=[.64,.33,.3,.6,.15,.06],e=[.2126,.7152,.0722],n=[.3127,.329];return i.define({[Ni]:{primaries:t,whitePoint:n,transfer:Xs,toXYZ:ho,fromXYZ:uo,luminanceCoefficients:e,workingColorSpaceConfig:{unpackColorSpace:Ye},outputColorSpaceConfig:{drawingBufferColorSpace:Ye}},[Ye]:{primaries:t,whitePoint:n,transfer:re,toXYZ:ho,fromXYZ:uo,luminanceCoefficients:e,outputColorSpaceConfig:{drawingBufferColorSpace:Ye}}}),i}const Qt=mh();function yn(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function Ci(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}let si;class _h{static getDataURL(t){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{si===void 0&&(si=qs("canvas")),si.width=t.width,si.height=t.height;const n=si.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=si}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap){const e=qs("canvas");e.width=t.width,e.height=t.height;const n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const s=n.getImageData(0,0,t.width,t.height),r=s.data;for(let a=0;a0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==Al)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case ta:t.x=t.x-Math.floor(t.x);break;case Zn:t.x=t.x<0?0:1;break;case ea:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case ta:t.y=t.y-Math.floor(t.y);break;case Zn:t.y=t.y<0?0:1;break;case ea:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){t===!0&&this.pmremVersion++}}Ae.DEFAULT_IMAGE=null;Ae.DEFAULT_MAPPING=Al;Ae.DEFAULT_ANISOTROPY=1;class le{constructor(t=0,e=0,n=0,s=1){le.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=s}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,s){return this.x=t,this.y=e,this.z=n,this.w=s,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,s=this.z,r=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*s+a[12]*r,this.y=a[1]*e+a[5]*n+a[9]*s+a[13]*r,this.z=a[2]*e+a[6]*n+a[10]*s+a[14]*r,this.w=a[3]*e+a[7]*n+a[11]*s+a[15]*r,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,s,r;const l=t.elements,c=l[0],u=l[4],d=l[8],f=l[1],m=l[5],g=l[9],x=l[2],p=l[6],h=l[10];if(Math.abs(u-f)<.01&&Math.abs(d-x)<.01&&Math.abs(g-p)<.01){if(Math.abs(u+f)<.1&&Math.abs(d+x)<.1&&Math.abs(g+p)<.1&&Math.abs(c+m+h-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const b=(c+1)/2,E=(m+1)/2,D=(h+1)/2,w=(u+f)/4,R=(d+x)/4,N=(g+p)/4;return b>E&&b>D?b<.01?(n=0,s=.707106781,r=.707106781):(n=Math.sqrt(b),s=w/n,r=R/n):E>D?E<.01?(n=.707106781,s=0,r=.707106781):(s=Math.sqrt(E),n=w/s,r=N/s):D<.01?(n=.707106781,s=.707106781,r=0):(r=Math.sqrt(D),n=R/r,s=N/r),this.set(n,s,r,e),this}let A=Math.sqrt((p-g)*(p-g)+(d-x)*(d-x)+(f-u)*(f-u));return Math.abs(A)<.001&&(A=1),this.x=(p-g)/A,this.y=(d-x)/A,this.z=(f-u)/A,this.w=Math.acos((c+m+h-1)/2),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=jt(this.x,t.x,e.x),this.y=jt(this.y,t.y,e.y),this.z=jt(this.z,t.z,e.z),this.w=jt(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=jt(this.x,t,e),this.y=jt(this.y,t,e),this.z=jt(this.z,t,e),this.w=jt(this.w,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(jt(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class xh extends Qn{constructor(t=1,e=1,n={}){super(),this.isRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new le(0,0,t,e),this.scissorTest=!1,this.viewport=new le(0,0,t,e);const s={width:t,height:e,depth:1};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:ln,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n);const r=new Ae(s,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);r.flipY=!1,r.generateMipmaps=n.generateMipmaps,r.internalFormat=n.internalFormat,this.textures=[];const a=n.count;for(let o=0;o=0?1:-1,b=1-h*h;if(b>Number.EPSILON){const D=Math.sqrt(b),w=Math.atan2(D,h*A);p=Math.sin(p*w)/D,o=Math.sin(o*w)/D}const E=o*A;if(l=l*p+f*E,c=c*p+m*E,u=u*p+g*E,d=d*p+x*E,p===1-o){const D=1/Math.sqrt(l*l+c*c+u*u+d*d);l*=D,c*=D,u*=D,d*=D}}t[e]=l,t[e+1]=c,t[e+2]=u,t[e+3]=d}static multiplyQuaternionsFlat(t,e,n,s,r,a){const o=n[s],l=n[s+1],c=n[s+2],u=n[s+3],d=r[a],f=r[a+1],m=r[a+2],g=r[a+3];return t[e]=o*g+u*d+l*m-c*f,t[e+1]=l*g+u*f+c*d-o*m,t[e+2]=c*g+u*m+o*f-l*d,t[e+3]=u*g-o*d-l*f-c*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,s){return this._x=t,this._y=e,this._z=n,this._w=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const n=t._x,s=t._y,r=t._z,a=t._order,o=Math.cos,l=Math.sin,c=o(n/2),u=o(s/2),d=o(r/2),f=l(n/2),m=l(s/2),g=l(r/2);switch(a){case"XYZ":this._x=f*u*d+c*m*g,this._y=c*m*d-f*u*g,this._z=c*u*g+f*m*d,this._w=c*u*d-f*m*g;break;case"YXZ":this._x=f*u*d+c*m*g,this._y=c*m*d-f*u*g,this._z=c*u*g-f*m*d,this._w=c*u*d+f*m*g;break;case"ZXY":this._x=f*u*d-c*m*g,this._y=c*m*d+f*u*g,this._z=c*u*g+f*m*d,this._w=c*u*d-f*m*g;break;case"ZYX":this._x=f*u*d-c*m*g,this._y=c*m*d+f*u*g,this._z=c*u*g-f*m*d,this._w=c*u*d+f*m*g;break;case"YZX":this._x=f*u*d+c*m*g,this._y=c*m*d+f*u*g,this._z=c*u*g-f*m*d,this._w=c*u*d-f*m*g;break;case"XZY":this._x=f*u*d-c*m*g,this._y=c*m*d-f*u*g,this._z=c*u*g+f*m*d,this._w=c*u*d+f*m*g;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,s=Math.sin(n);return this._x=t.x*s,this._y=t.y*s,this._z=t.z*s,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],s=e[4],r=e[8],a=e[1],o=e[5],l=e[9],c=e[2],u=e[6],d=e[10],f=n+o+d;if(f>0){const m=.5/Math.sqrt(f+1);this._w=.25/m,this._x=(u-l)*m,this._y=(r-c)*m,this._z=(a-s)*m}else if(n>o&&n>d){const m=2*Math.sqrt(1+n-o-d);this._w=(u-l)/m,this._x=.25*m,this._y=(s+a)/m,this._z=(r+c)/m}else if(o>d){const m=2*Math.sqrt(1+o-n-d);this._w=(r-c)/m,this._x=(s+a)/m,this._y=.25*m,this._z=(l+u)/m}else{const m=2*Math.sqrt(1+d-n-o);this._w=(a-s)/m,this._x=(r+c)/m,this._y=(l+u)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(jt(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(n===0)return this;const s=Math.min(1,e/n);return this.slerp(t,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,s=t._y,r=t._z,a=t._w,o=e._x,l=e._y,c=e._z,u=e._w;return this._x=n*u+a*o+s*c-r*l,this._y=s*u+a*l+r*o-n*c,this._z=r*u+a*c+n*l-s*o,this._w=a*u-n*o-s*l-r*c,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const n=this._x,s=this._y,r=this._z,a=this._w;let o=a*t._w+n*t._x+s*t._y+r*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=s,this._z=r,this;const l=1-o*o;if(l<=Number.EPSILON){const m=1-e;return this._w=m*a+e*this._w,this._x=m*n+e*this._x,this._y=m*s+e*this._y,this._z=m*r+e*this._z,this.normalize(),this}const c=Math.sqrt(l),u=Math.atan2(c,o),d=Math.sin((1-e)*u)/c,f=Math.sin(e*u)/c;return this._w=a*d+this._w*f,this._x=n*d+this._x*f,this._y=s*d+this._y*f,this._z=r*d+this._z*f,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),n=Math.random(),s=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(s*Math.sin(t),s*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class P{constructor(t=0,e=0,n=0){P.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(fo.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(fo.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,s=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*s,this.y=r[1]*e+r[4]*n+r[7]*s,this.z=r[2]*e+r[5]*n+r[8]*s,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,s=this.z,r=t.elements,a=1/(r[3]*e+r[7]*n+r[11]*s+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*s+r[12])*a,this.y=(r[1]*e+r[5]*n+r[9]*s+r[13])*a,this.z=(r[2]*e+r[6]*n+r[10]*s+r[14])*a,this}applyQuaternion(t){const e=this.x,n=this.y,s=this.z,r=t.x,a=t.y,o=t.z,l=t.w,c=2*(a*s-o*n),u=2*(o*e-r*s),d=2*(r*n-a*e);return this.x=e+l*c+a*d-o*u,this.y=n+l*u+o*c-r*d,this.z=s+l*d+r*u-a*c,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,s=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*s,this.y=r[1]*e+r[5]*n+r[9]*s,this.z=r[2]*e+r[6]*n+r[10]*s,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=jt(this.x,t.x,e.x),this.y=jt(this.y,t.y,e.y),this.z=jt(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=jt(this.x,t,e),this.y=jt(this.y,t,e),this.z=jt(this.z,t,e),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(jt(n,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,s=t.y,r=t.z,a=e.x,o=e.y,l=e.z;return this.x=s*l-r*o,this.y=r*a-n*l,this.z=n*o-s*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return cr.copy(this).projectOnVector(t),this.sub(cr)}reflect(t){return this.sub(cr.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(jt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,s=this.z-t.z;return e*e+n*n+s*s}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const s=Math.sin(e)*t;return this.x=s*Math.sin(n),this.y=Math.cos(e)*t,this.z=s*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),s=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=s,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,n=Math.sqrt(1-e*e);return this.x=n*Math.cos(t),this.y=e,this.z=n*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const cr=new P,fo=new Jn;class ti{constructor(t=new P(1/0,1/0,1/0),e=new P(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,n=t.length;e=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.max.z}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return t.max.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,Ke),Ke.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(ki),ls.subVectors(this.max,ki),ri.subVectors(t.a,ki),ai.subVectors(t.b,ki),oi.subVectors(t.c,ki),bn.subVectors(ai,ri),An.subVectors(oi,ai),Hn.subVectors(ri,oi);let e=[0,-bn.z,bn.y,0,-An.z,An.y,0,-Hn.z,Hn.y,bn.z,0,-bn.x,An.z,0,-An.x,Hn.z,0,-Hn.x,-bn.y,bn.x,0,-An.y,An.x,0,-Hn.y,Hn.x,0];return!hr(e,ri,ai,oi,ls)||(e=[1,0,0,0,1,0,0,0,1],!hr(e,ri,ai,oi,ls))?!1:(cs.crossVectors(bn,An),e=[cs.x,cs.y,cs.z],hr(e,ri,ai,oi,ls))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Ke).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=this.getSize(Ke).length()*.5),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(dn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),dn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),dn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),dn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),dn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),dn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),dn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),dn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(dn),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const dn=[new P,new P,new P,new P,new P,new P,new P,new P],Ke=new P,os=new ti,ri=new P,ai=new P,oi=new P,bn=new P,An=new P,Hn=new P,ki=new P,ls=new P,cs=new P,kn=new P;function hr(i,t,e,n,s){for(let r=0,a=i.length-3;r<=a;r+=3){kn.fromArray(i,r);const o=s.x*Math.abs(kn.x)+s.y*Math.abs(kn.y)+s.z*Math.abs(kn.z),l=t.dot(kn),c=e.dot(kn),u=n.dot(kn);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>o)return!1}return!0}const Sh=new ti,Vi=new P,ur=new P;class ei{constructor(t=new P,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;e!==void 0?n.copy(e):Sh.setFromPoints(t).getCenter(n);let s=0;for(let r=0,a=t.length;rthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;Vi.subVectors(t,this.center);const e=Vi.lengthSq();if(e>this.radius*this.radius){const n=Math.sqrt(e),s=(n-this.radius)*.5;this.center.addScaledVector(Vi,s/n),this.radius+=s}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(ur.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(Vi.copy(t.center).add(ur)),this.expandByPoint(Vi.copy(t.center).sub(ur))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}}const fn=new P,dr=new P,hs=new P,wn=new P,fr=new P,us=new P,pr=new P;class ts{constructor(t=new P,e=new P(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,fn)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=fn.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(fn.copy(this.origin).addScaledVector(this.direction,e),fn.distanceToSquared(t))}distanceSqToSegment(t,e,n,s){dr.copy(t).add(e).multiplyScalar(.5),hs.copy(e).sub(t).normalize(),wn.copy(this.origin).sub(dr);const r=t.distanceTo(e)*.5,a=-this.direction.dot(hs),o=wn.dot(this.direction),l=-wn.dot(hs),c=wn.lengthSq(),u=Math.abs(1-a*a);let d,f,m,g;if(u>0)if(d=a*l-o,f=a*o-l,g=r*u,d>=0)if(f>=-g)if(f<=g){const x=1/u;d*=x,f*=x,m=d*(d+a*f+2*o)+f*(a*d+f+2*l)+c}else f=r,d=Math.max(0,-(a*f+o)),m=-d*d+f*(f+2*l)+c;else f=-r,d=Math.max(0,-(a*f+o)),m=-d*d+f*(f+2*l)+c;else f<=-g?(d=Math.max(0,-(-a*r+o)),f=d>0?-r:Math.min(Math.max(-r,-l),r),m=-d*d+f*(f+2*l)+c):f<=g?(d=0,f=Math.min(Math.max(-r,-l),r),m=f*(f+2*l)+c):(d=Math.max(0,-(a*r+o)),f=d>0?r:Math.min(Math.max(-r,-l),r),m=-d*d+f*(f+2*l)+c);else f=a>0?-r:r,d=Math.max(0,-(a*f+o)),m=-d*d+f*(f+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,d),s&&s.copy(dr).addScaledVector(hs,f),m}intersectSphere(t,e){fn.subVectors(t.center,this.origin);const n=fn.dot(this.direction),s=fn.dot(fn)-n*n,r=t.radius*t.radius;if(s>r)return null;const a=Math.sqrt(r-s),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,e):this.at(o,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,s,r,a,o,l;const c=1/this.direction.x,u=1/this.direction.y,d=1/this.direction.z,f=this.origin;return c>=0?(n=(t.min.x-f.x)*c,s=(t.max.x-f.x)*c):(n=(t.max.x-f.x)*c,s=(t.min.x-f.x)*c),u>=0?(r=(t.min.y-f.y)*u,a=(t.max.y-f.y)*u):(r=(t.max.y-f.y)*u,a=(t.min.y-f.y)*u),n>a||r>s||((r>n||isNaN(n))&&(n=r),(a=0?(o=(t.min.z-f.z)*d,l=(t.max.z-f.z)*d):(o=(t.max.z-f.z)*d,l=(t.min.z-f.z)*d),n>l||o>s)||((o>n||n!==n)&&(n=o),(l=0?n:s,e)}intersectsBox(t){return this.intersectBox(t,fn)!==null}intersectTriangle(t,e,n,s,r){fr.subVectors(e,t),us.subVectors(n,t),pr.crossVectors(fr,us);let a=this.direction.dot(pr),o;if(a>0){if(s)return null;o=1}else if(a<0)o=-1,a=-a;else return null;wn.subVectors(this.origin,t);const l=o*this.direction.dot(us.crossVectors(wn,us));if(l<0)return null;const c=o*this.direction.dot(fr.cross(wn));if(c<0||l+c>a)return null;const u=-o*wn.dot(pr);return u<0?null:this.at(u/a,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class ne{constructor(t,e,n,s,r,a,o,l,c,u,d,f,m,g,x,p){ne.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,e,n,s,r,a,o,l,c,u,d,f,m,g,x,p)}set(t,e,n,s,r,a,o,l,c,u,d,f,m,g,x,p){const h=this.elements;return h[0]=t,h[4]=e,h[8]=n,h[12]=s,h[1]=r,h[5]=a,h[9]=o,h[13]=l,h[2]=c,h[6]=u,h[10]=d,h[14]=f,h[3]=m,h[7]=g,h[11]=x,h[15]=p,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new ne().fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,s=1/li.setFromMatrixColumn(t,0).length(),r=1/li.setFromMatrixColumn(t,1).length(),a=1/li.setFromMatrixColumn(t,2).length();return e[0]=n[0]*s,e[1]=n[1]*s,e[2]=n[2]*s,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,s=t.y,r=t.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(s),c=Math.sin(s),u=Math.cos(r),d=Math.sin(r);if(t.order==="XYZ"){const f=a*u,m=a*d,g=o*u,x=o*d;e[0]=l*u,e[4]=-l*d,e[8]=c,e[1]=m+g*c,e[5]=f-x*c,e[9]=-o*l,e[2]=x-f*c,e[6]=g+m*c,e[10]=a*l}else if(t.order==="YXZ"){const f=l*u,m=l*d,g=c*u,x=c*d;e[0]=f+x*o,e[4]=g*o-m,e[8]=a*c,e[1]=a*d,e[5]=a*u,e[9]=-o,e[2]=m*o-g,e[6]=x+f*o,e[10]=a*l}else if(t.order==="ZXY"){const f=l*u,m=l*d,g=c*u,x=c*d;e[0]=f-x*o,e[4]=-a*d,e[8]=g+m*o,e[1]=m+g*o,e[5]=a*u,e[9]=x-f*o,e[2]=-a*c,e[6]=o,e[10]=a*l}else if(t.order==="ZYX"){const f=a*u,m=a*d,g=o*u,x=o*d;e[0]=l*u,e[4]=g*c-m,e[8]=f*c+x,e[1]=l*d,e[5]=x*c+f,e[9]=m*c-g,e[2]=-c,e[6]=o*l,e[10]=a*l}else if(t.order==="YZX"){const f=a*l,m=a*c,g=o*l,x=o*c;e[0]=l*u,e[4]=x-f*d,e[8]=g*d+m,e[1]=d,e[5]=a*u,e[9]=-o*u,e[2]=-c*u,e[6]=m*d+g,e[10]=f-x*d}else if(t.order==="XZY"){const f=a*l,m=a*c,g=o*l,x=o*c;e[0]=l*u,e[4]=-d,e[8]=c*u,e[1]=f*d+x,e[5]=a*u,e[9]=m*d-g,e[2]=g*d-m,e[6]=o*u,e[10]=x*d+f}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(yh,t,Eh)}lookAt(t,e,n){const s=this.elements;return Be.subVectors(t,e),Be.lengthSq()===0&&(Be.z=1),Be.normalize(),Rn.crossVectors(n,Be),Rn.lengthSq()===0&&(Math.abs(n.z)===1?Be.x+=1e-4:Be.z+=1e-4,Be.normalize(),Rn.crossVectors(n,Be)),Rn.normalize(),ds.crossVectors(Be,Rn),s[0]=Rn.x,s[4]=ds.x,s[8]=Be.x,s[1]=Rn.y,s[5]=ds.y,s[9]=Be.y,s[2]=Rn.z,s[6]=ds.z,s[10]=Be.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,s=e.elements,r=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],u=n[1],d=n[5],f=n[9],m=n[13],g=n[2],x=n[6],p=n[10],h=n[14],A=n[3],b=n[7],E=n[11],D=n[15],w=s[0],R=s[4],N=s[8],y=s[12],M=s[1],C=s[5],W=s[9],H=s[13],q=s[2],J=s[6],X=s[10],at=s[14],k=s[3],ut=s[7],xt=s[11],Rt=s[15];return r[0]=a*w+o*M+l*q+c*k,r[4]=a*R+o*C+l*J+c*ut,r[8]=a*N+o*W+l*X+c*xt,r[12]=a*y+o*H+l*at+c*Rt,r[1]=u*w+d*M+f*q+m*k,r[5]=u*R+d*C+f*J+m*ut,r[9]=u*N+d*W+f*X+m*xt,r[13]=u*y+d*H+f*at+m*Rt,r[2]=g*w+x*M+p*q+h*k,r[6]=g*R+x*C+p*J+h*ut,r[10]=g*N+x*W+p*X+h*xt,r[14]=g*y+x*H+p*at+h*Rt,r[3]=A*w+b*M+E*q+D*k,r[7]=A*R+b*C+E*J+D*ut,r[11]=A*N+b*W+E*X+D*xt,r[15]=A*y+b*H+E*at+D*Rt,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],s=t[8],r=t[12],a=t[1],o=t[5],l=t[9],c=t[13],u=t[2],d=t[6],f=t[10],m=t[14],g=t[3],x=t[7],p=t[11],h=t[15];return g*(+r*l*d-s*c*d-r*o*f+n*c*f+s*o*m-n*l*m)+x*(+e*l*m-e*c*f+r*a*f-s*a*m+s*c*u-r*l*u)+p*(+e*c*d-e*o*m-r*a*d+n*a*m+r*o*u-n*c*u)+h*(-s*o*u-e*l*d+e*o*f+s*a*d-n*a*f+n*l*u)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const s=this.elements;return t.isVector3?(s[12]=t.x,s[13]=t.y,s[14]=t.z):(s[12]=t,s[13]=e,s[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],s=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],u=t[8],d=t[9],f=t[10],m=t[11],g=t[12],x=t[13],p=t[14],h=t[15],A=d*p*c-x*f*c+x*l*m-o*p*m-d*l*h+o*f*h,b=g*f*c-u*p*c-g*l*m+a*p*m+u*l*h-a*f*h,E=u*x*c-g*d*c+g*o*m-a*x*m-u*o*h+a*d*h,D=g*d*l-u*x*l-g*o*f+a*x*f+u*o*p-a*d*p,w=e*A+n*b+s*E+r*D;if(w===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const R=1/w;return t[0]=A*R,t[1]=(x*f*r-d*p*r-x*s*m+n*p*m+d*s*h-n*f*h)*R,t[2]=(o*p*r-x*l*r+x*s*c-n*p*c-o*s*h+n*l*h)*R,t[3]=(d*l*r-o*f*r-d*s*c+n*f*c+o*s*m-n*l*m)*R,t[4]=b*R,t[5]=(u*p*r-g*f*r+g*s*m-e*p*m-u*s*h+e*f*h)*R,t[6]=(g*l*r-a*p*r-g*s*c+e*p*c+a*s*h-e*l*h)*R,t[7]=(a*f*r-u*l*r+u*s*c-e*f*c-a*s*m+e*l*m)*R,t[8]=E*R,t[9]=(g*d*r-u*x*r-g*n*m+e*x*m+u*n*h-e*d*h)*R,t[10]=(a*x*r-g*o*r+g*n*c-e*x*c-a*n*h+e*o*h)*R,t[11]=(u*o*r-a*d*r-u*n*c+e*d*c+a*n*m-e*o*m)*R,t[12]=D*R,t[13]=(u*x*s-g*d*s+g*n*f-e*x*f-u*n*p+e*d*p)*R,t[14]=(g*o*s-a*x*s-g*n*l+e*x*l+a*n*p-e*o*p)*R,t[15]=(a*d*s-u*o*s+u*n*l-e*d*l-a*n*f+e*o*f)*R,this}scale(t){const e=this.elements,n=t.x,s=t.y,r=t.z;return e[0]*=n,e[4]*=s,e[8]*=r,e[1]*=n,e[5]*=s,e[9]*=r,e[2]*=n,e[6]*=s,e[10]*=r,e[3]*=n,e[7]*=s,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],s=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,s))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),s=Math.sin(e),r=1-n,a=t.x,o=t.y,l=t.z,c=r*a,u=r*o;return this.set(c*a+n,c*o-s*l,c*l+s*o,0,c*o+s*l,u*o+n,u*l-s*a,0,c*l-s*o,u*l+s*a,r*l*l+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,s,r,a){return this.set(1,n,r,0,t,1,a,0,e,s,1,0,0,0,0,1),this}compose(t,e,n){const s=this.elements,r=e._x,a=e._y,o=e._z,l=e._w,c=r+r,u=a+a,d=o+o,f=r*c,m=r*u,g=r*d,x=a*u,p=a*d,h=o*d,A=l*c,b=l*u,E=l*d,D=n.x,w=n.y,R=n.z;return s[0]=(1-(x+h))*D,s[1]=(m+E)*D,s[2]=(g-b)*D,s[3]=0,s[4]=(m-E)*w,s[5]=(1-(f+h))*w,s[6]=(p+A)*w,s[7]=0,s[8]=(g+b)*R,s[9]=(p-A)*R,s[10]=(1-(f+x))*R,s[11]=0,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=1,this}decompose(t,e,n){const s=this.elements;let r=li.set(s[0],s[1],s[2]).length();const a=li.set(s[4],s[5],s[6]).length(),o=li.set(s[8],s[9],s[10]).length();this.determinant()<0&&(r=-r),t.x=s[12],t.y=s[13],t.z=s[14],$e.copy(this);const c=1/r,u=1/a,d=1/o;return $e.elements[0]*=c,$e.elements[1]*=c,$e.elements[2]*=c,$e.elements[4]*=u,$e.elements[5]*=u,$e.elements[6]*=u,$e.elements[8]*=d,$e.elements[9]*=d,$e.elements[10]*=d,e.setFromRotationMatrix($e),n.x=r,n.y=a,n.z=o,this}makePerspective(t,e,n,s,r,a,o=xn){const l=this.elements,c=2*r/(e-t),u=2*r/(n-s),d=(e+t)/(e-t),f=(n+s)/(n-s);let m,g;if(o===xn)m=-(a+r)/(a-r),g=-2*a*r/(a-r);else if(o===Ys)m=-a/(a-r),g=-a*r/(a-r);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return l[0]=c,l[4]=0,l[8]=d,l[12]=0,l[1]=0,l[5]=u,l[9]=f,l[13]=0,l[2]=0,l[6]=0,l[10]=m,l[14]=g,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(t,e,n,s,r,a,o=xn){const l=this.elements,c=1/(e-t),u=1/(n-s),d=1/(a-r),f=(e+t)*c,m=(n+s)*u;let g,x;if(o===xn)g=(a+r)*d,x=-2*d;else if(o===Ys)g=r*d,x=-1*d;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-f,l[1]=0,l[5]=2*u,l[9]=0,l[13]=-m,l[2]=0,l[6]=0,l[10]=x,l[14]=-g,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let s=0;s<16;s++)if(e[s]!==n[s])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}const li=new P,$e=new ne,yh=new P(0,0,0),Eh=new P(1,1,1),Rn=new P,ds=new P,Be=new P,po=new ne,mo=new Jn;class hn{constructor(t=0,e=0,n=0,s=hn.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=s}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,s=this._order){return this._x=t,this._y=e,this._z=n,this._order=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const s=t.elements,r=s[0],a=s[4],o=s[8],l=s[1],c=s[5],u=s[9],d=s[2],f=s[6],m=s[10];switch(e){case"XYZ":this._y=Math.asin(jt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,m),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(f,c),this._z=0);break;case"YXZ":this._x=Math.asin(-jt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-d,r),this._z=0);break;case"ZXY":this._x=Math.asin(jt(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-d,m),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-jt(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(f,m),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(jt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-d,r)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-jt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(f,c),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-u,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return po.makeRotationFromQuaternion(t),this.setFromRotationMatrix(po,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return mo.setFromEuler(this),this.setFromQuaternion(mo,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}hn.DEFAULT_ORDER="XYZ";class Xa{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let e=0;e1){for(let n=0;n0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(s.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(s.type="BatchedMesh",s.perObjectFrustumCulled=this.perObjectFrustumCulled,s.sortObjects=this.sortObjects,s.drawRanges=this._drawRanges,s.reservedRanges=this._reservedRanges,s.visibility=this._visibility,s.active=this._active,s.bounds=this._bounds.map(o=>({boxInitialized:o.boxInitialized,boxMin:o.box.min.toArray(),boxMax:o.box.max.toArray(),sphereInitialized:o.sphereInitialized,sphereRadius:o.sphere.radius,sphereCenter:o.sphere.center.toArray()})),s.maxInstanceCount=this._maxInstanceCount,s.maxVertexCount=this._maxVertexCount,s.maxIndexCount=this._maxIndexCount,s.geometryInitialized=this._geometryInitialized,s.geometryCount=this._geometryCount,s.matricesTexture=this._matricesTexture.toJSON(t),this._colorsTexture!==null&&(s.colorsTexture=this._colorsTexture.toJSON(t)),this.boundingSphere!==null&&(s.boundingSphere={center:s.boundingSphere.center.toArray(),radius:s.boundingSphere.radius}),this.boundingBox!==null&&(s.boundingBox={min:s.boundingBox.min.toArray(),max:s.boundingBox.max.toArray()}));function r(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(t)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(s.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=r(t.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,u=l.length;c0){s.children=[];for(let o=0;o0){s.animations=[];for(let o=0;o0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),u.length>0&&(n.images=u),d.length>0&&(n.shapes=d),f.length>0&&(n.skeletons=f),m.length>0&&(n.animations=m),g.length>0&&(n.nodes=g)}return n.object=s,n;function a(o){const l=[];for(const c in o){const u=o[c];delete u.metadata,l.push(u)}return l}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n0?s.multiplyScalar(1/Math.sqrt(r)):s.set(0,0,0)}static getBarycoord(t,e,n,s,r){Je.subVectors(s,e),mn.subVectors(n,e),_r.subVectors(t,e);const a=Je.dot(Je),o=Je.dot(mn),l=Je.dot(_r),c=mn.dot(mn),u=mn.dot(_r),d=a*c-o*o;if(d===0)return r.set(0,0,0),null;const f=1/d,m=(c*l-o*u)*f,g=(a*u-o*l)*f;return r.set(1-m-g,g,m)}static containsPoint(t,e,n,s){return this.getBarycoord(t,e,n,s,_n)===null?!1:_n.x>=0&&_n.y>=0&&_n.x+_n.y<=1}static getInterpolation(t,e,n,s,r,a,o,l){return this.getBarycoord(t,e,n,s,_n)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(r,_n.x),l.addScaledVector(a,_n.y),l.addScaledVector(o,_n.z),l)}static getInterpolatedAttribute(t,e,n,s,r,a){return Mr.setScalar(0),Sr.setScalar(0),yr.setScalar(0),Mr.fromBufferAttribute(t,e),Sr.fromBufferAttribute(t,n),yr.fromBufferAttribute(t,s),a.setScalar(0),a.addScaledVector(Mr,r.x),a.addScaledVector(Sr,r.y),a.addScaledVector(yr,r.z),a}static isFrontFacing(t,e,n,s){return Je.subVectors(n,e),mn.subVectors(t,e),Je.cross(mn).dot(s)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,s){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[s]),this}setFromAttributeAndIndices(t,e,n,s){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,s),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Je.subVectors(this.c,this.b),mn.subVectors(this.a,this.b),Je.cross(mn).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return qe.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return qe.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,n,s,r){return qe.getInterpolation(t,this.a,this.b,this.c,e,n,s,r)}containsPoint(t){return qe.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return qe.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,s=this.b,r=this.c;let a,o;ui.subVectors(s,n),di.subVectors(r,n),gr.subVectors(t,n);const l=ui.dot(gr),c=di.dot(gr);if(l<=0&&c<=0)return e.copy(n);vr.subVectors(t,s);const u=ui.dot(vr),d=di.dot(vr);if(u>=0&&d<=u)return e.copy(s);const f=l*d-u*c;if(f<=0&&l>=0&&u<=0)return a=l/(l-u),e.copy(n).addScaledVector(ui,a);xr.subVectors(t,r);const m=ui.dot(xr),g=di.dot(xr);if(g>=0&&m<=g)return e.copy(r);const x=m*c-l*g;if(x<=0&&c>=0&&g<=0)return o=c/(c-g),e.copy(n).addScaledVector(di,o);const p=u*g-m*d;if(p<=0&&d-u>=0&&m-g>=0)return So.subVectors(r,s),o=(d-u)/(d-u+(m-g)),e.copy(s).addScaledVector(So,o);const h=1/(p+x+f);return a=x*h,o=f*h,e.copy(n).addScaledVector(ui,a).addScaledVector(di,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const kl={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Cn={h:0,s:0,l:0},ps={h:0,s:0,l:0};function Er(i,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?i+(t-i)*6*e:e<1/2?t:e<2/3?i+(t-i)*6*(2/3-e):i}class Dt{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(e===void 0&&n===void 0){const s=t;s&&s.isColor?this.copy(s):typeof s=="number"?this.setHex(s):typeof s=="string"&&this.setStyle(s)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Ye){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,Qt.toWorkingColorSpace(this,e),this}setRGB(t,e,n,s=Qt.workingColorSpace){return this.r=t,this.g=e,this.b=n,Qt.toWorkingColorSpace(this,s),this}setHSL(t,e,n,s=Qt.workingColorSpace){if(t=ch(t,1),e=jt(e,0,1),n=jt(n,0,1),e===0)this.r=this.g=this.b=n;else{const r=n<=.5?n*(1+e):n+e-n*e,a=2*n-r;this.r=Er(a,r,t+1/3),this.g=Er(a,r,t),this.b=Er(a,r,t-1/3)}return Qt.toWorkingColorSpace(this,s),this}setStyle(t,e=Ye){function n(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let s;if(s=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const a=s[1],o=s[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(s=/^\#([A-Fa-f\d]+)$/.exec(t)){const r=s[1],a=r.length;if(a===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,e);if(a===6)return this.setHex(parseInt(r,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=Ye){const n=kl[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=yn(t.r),this.g=yn(t.g),this.b=yn(t.b),this}copyLinearToSRGB(t){return this.r=Ci(t.r),this.g=Ci(t.g),this.b=Ci(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Ye){return Qt.fromWorkingColorSpace(Te.copy(this),t),Math.round(jt(Te.r*255,0,255))*65536+Math.round(jt(Te.g*255,0,255))*256+Math.round(jt(Te.b*255,0,255))}getHexString(t=Ye){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=Qt.workingColorSpace){Qt.fromWorkingColorSpace(Te.copy(this),e);const n=Te.r,s=Te.g,r=Te.b,a=Math.max(n,s,r),o=Math.min(n,s,r);let l,c;const u=(o+a)/2;if(o===a)l=0,c=0;else{const d=a-o;switch(c=u<=.5?d/(a+o):d/(2-a-o),a){case n:l=(s-r)/d+(s0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(const e in t){const n=t[e];if(n===void 0){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const s=this[e];if(s===void 0){console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`);continue}s&&s.isColor?s.set(n):s&&s.isVector3&&n&&n.isVector3?s.copy(n):this[e]=n}}toJSON(t){const e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==wi&&(n.blending=this.blending),this.side!==Nn&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==Gr&&(n.blendSrc=this.blendSrc),this.blendDst!==Wr&&(n.blendDst=this.blendDst),this.blendEquation!==qn&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==Pi&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==oo&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==ii&&(n.stencilFail=this.stencilFail),this.stencilZFail!==ii&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==ii&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function s(r){const a=[];for(const o in r){const l=r[o];delete l.metadata,a.push(l)}return a}if(e){const r=s(t.textures),a=s(t.images);r.length>0&&(n.textures=r),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(e!==null){const s=e.length;n=new Array(s);for(let r=0;r!==s;++r)n[r]=e[r].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class tr extends Fn{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Dt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new hn,this.combine=Tl,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const fe=new P,ms=new At;class ve{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=Ra,this.updateRanges=[],this.gpuType=cn,this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let s=0,r=this.itemSize;se.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ti);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new P(-1/0,-1/0,-1/0),new P(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let n=0,s=e.length;n0&&(t.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(t[c]=l[c]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const l in n){const c=n[l];t.data.attributes[l]=c.toJSON(t.data)}const s={};let r=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],u=[];for(let d=0,f=c.length;d0&&(s[l]=u,r=!0)}r&&(t.data.morphAttributes=s,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;n!==null&&this.setIndex(n.clone(e));const s=t.attributes;for(const c in s){const u=s[c];this.setAttribute(c,u.clone(e))}const r=t.morphAttributes;for(const c in r){const u=[],d=r[c];for(let f=0,m=d.length;f0){const s=e[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=s.length;r(t.far-t.near)**2))&&(yo.copy(r).invert(),Vn.copy(t.ray).applyMatrix4(yo),!(n.boundingBox!==null&&Vn.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(t,e,Vn)))}_computeIntersections(t,e,n){let s;const r=this.geometry,a=this.material,o=r.index,l=r.attributes.position,c=r.attributes.uv,u=r.attributes.uv1,d=r.attributes.normal,f=r.groups,m=r.drawRange;if(o!==null)if(Array.isArray(a))for(let g=0,x=f.length;ge.far?null:{distance:c,point:Ss.clone(),object:i}}function ys(i,t,e,n,s,r,a,o,l,c){i.getVertexPosition(o,gs),i.getVertexPosition(l,vs),i.getVertexPosition(c,xs);const u=Ph(i,t,e,n,gs,vs,xs,To);if(u){const d=new P;qe.getBarycoord(To,gs,vs,xs,d),s&&(u.uv=qe.getInterpolatedAttribute(s,o,l,c,d,new At)),r&&(u.uv1=qe.getInterpolatedAttribute(r,o,l,c,d,new At)),a&&(u.normal=qe.getInterpolatedAttribute(a,o,l,c,d,new P),u.normal.dot(n.direction)>0&&u.normal.multiplyScalar(-1));const f={a:o,b:l,c,normal:new P,materialIndex:0};qe.getNormal(gs,vs,xs,f.normal),u.face=f,u.barycoord=d}return u}class es extends xe{constructor(t=1,e=1,n=1,s=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:s,heightSegments:r,depthSegments:a};const o=this;s=Math.floor(s),r=Math.floor(r),a=Math.floor(a);const l=[],c=[],u=[],d=[];let f=0,m=0;g("z","y","x",-1,-1,n,e,t,a,r,0),g("z","y","x",1,-1,n,e,-t,a,r,1),g("x","z","y",1,1,t,n,e,s,a,2),g("x","z","y",1,-1,t,n,-e,s,a,3),g("x","y","z",1,-1,t,e,n,s,r,4),g("x","y","z",-1,-1,t,e,-n,s,r,5),this.setIndex(l),this.setAttribute("position",new we(c,3)),this.setAttribute("normal",new we(u,3)),this.setAttribute("uv",new we(d,2));function g(x,p,h,A,b,E,D,w,R,N,y){const M=E/R,C=D/N,W=E/2,H=D/2,q=w/2,J=R+1,X=N+1;let at=0,k=0;const ut=new P;for(let xt=0;xt0?1:-1,u.push(ut.x,ut.y,ut.z),d.push(Vt/R),d.push(1-xt/N),at+=1}}for(let xt=0;xt0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const n={};for(const s in this.extensions)this.extensions[s]===!0&&(n[s]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}class _l extends ge{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new ie,this.projectionMatrix=new ie,this.projectionMatrixInverse=new ie,this.coordinateSystem=cn}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const xn=new R,to=new At,eo=new At;class Ue extends _l{constructor(t=50,e=1,n=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=s,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=oa*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(Es*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return oa*2*Math.atan(Math.tan(Es*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,n){xn.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set(xn.x,xn.y).multiplyScalar(-t/xn.z),xn.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(xn.x,xn.y).multiplyScalar(-t/xn.z)}getViewSize(t,e){return this.getViewBounds(t,to,eo),e.subVectors(eo,to)}setViewOffset(t,e,n,s,r,a){this.aspect=t/e,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=s,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(Es*.5*this.fov)/this.zoom,n=2*e,s=this.aspect*n,r=-.5*s;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,c=a.fullHeight;r+=a.offsetX*s/l,e-=a.offsetY*n/c,s*=a.width/l,n*=a.height/c}const o=this.filmOffset;o!==0&&(r+=t*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+s,e,e-n,t,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const ti=-90,ei=1;class eh extends ge{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const s=new Ue(ti,ei,t,e);s.layers=this.layers,this.add(s);const r=new Ue(ti,ei,t,e);r.layers=this.layers,this.add(r);const a=new Ue(ti,ei,t,e);a.layers=this.layers,this.add(a);const o=new Ue(ti,ei,t,e);o.layers=this.layers,this.add(o);const l=new Ue(ti,ei,t,e);l.layers=this.layers,this.add(l);const c=new Ue(ti,ei,t,e);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[n,s,r,a,o,l]=e;for(const c of e)this.remove(c);if(t===cn)n.up.set(0,1,0),n.lookAt(1,0,0),s.up.set(0,1,0),s.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(t===ws)n.up.set(0,-1,0),n.lookAt(-1,0,0),s.up.set(0,-1,0),s.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);for(const c of e)this.add(c),c.updateMatrixWorld()}update(t,e){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:s}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[r,a,o,l,c,u]=this.children,f=t.getRenderTarget(),d=t.getActiveCubeFace(),m=t.getActiveMipmapLevel(),g=t.xr.enabled;t.xr.enabled=!1;const x=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0,s),t.render(e,r),t.setRenderTarget(n,1,s),t.render(e,a),t.setRenderTarget(n,2,s),t.render(e,o),t.setRenderTarget(n,3,s),t.render(e,l),t.setRenderTarget(n,4,s),t.render(e,c),n.texture.generateMipmaps=x,t.setRenderTarget(n,5,s),t.render(e,u),t.setRenderTarget(f,d,m),t.xr.enabled=g,n.texture.needsPMREMUpdate=!0}}class gl extends be{constructor(t,e,n,s,r,a,o,l,c,u){t=t!==void 0?t:[],e=e!==void 0?e:_i,super(t,e,n,s,r,a,o,l,c,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class nh extends qe{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const n={width:t,height:t,depth:1},s=[n,n,n,n,n,n];this.texture=new gl(s,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:Je}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` +}`;class Ie extends Fn{constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Lh,this.fragmentShader=Uh,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,t!==void 0&&this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=Fi(t.uniforms),this.uniformsGroups=Dh(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this}toJSON(t){const e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(const s in this.uniforms){const a=this.uniforms[s].value;a&&a.isTexture?e.uniforms[s]={type:"t",value:a.toJSON(t).uuid}:a&&a.isColor?e.uniforms[s]={type:"c",value:a.getHex()}:a&&a.isVector2?e.uniforms[s]={type:"v2",value:a.toArray()}:a&&a.isVector3?e.uniforms[s]={type:"v3",value:a.toArray()}:a&&a.isVector4?e.uniforms[s]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?e.uniforms[s]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?e.uniforms[s]={type:"m4",value:a.toArray()}:e.uniforms[s]={value:a}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const n={};for(const s in this.extensions)this.extensions[s]===!0&&(n[s]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}class Xl extends Se{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new ne,this.projectionMatrix=new ne,this.projectionMatrixInverse=new ne,this.coordinateSystem=xn}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Pn=new P,bo=new At,Ao=new At;class He extends Xl{constructor(t=50,e=1,n=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=s,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=Ca*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(ks*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return Ca*2*Math.atan(Math.tan(ks*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,n){Pn.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set(Pn.x,Pn.y).multiplyScalar(-t/Pn.z),Pn.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Pn.x,Pn.y).multiplyScalar(-t/Pn.z)}getViewSize(t,e){return this.getViewBounds(t,bo,Ao),e.subVectors(Ao,bo)}setViewOffset(t,e,n,s,r,a){this.aspect=t/e,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=s,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(ks*.5*this.fov)/this.zoom,n=2*e,s=this.aspect*n,r=-.5*s;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,c=a.fullHeight;r+=a.offsetX*s/l,e-=a.offsetY*n/c,s*=a.width/l,n*=a.height/c}const o=this.filmOffset;o!==0&&(r+=t*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+s,e,e-n,t,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const pi=-90,mi=1;class Ih extends Se{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const s=new He(pi,mi,t,e);s.layers=this.layers,this.add(s);const r=new He(pi,mi,t,e);r.layers=this.layers,this.add(r);const a=new He(pi,mi,t,e);a.layers=this.layers,this.add(a);const o=new He(pi,mi,t,e);o.layers=this.layers,this.add(o);const l=new He(pi,mi,t,e);l.layers=this.layers,this.add(l);const c=new He(pi,mi,t,e);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[n,s,r,a,o,l]=e;for(const c of e)this.remove(c);if(t===xn)n.up.set(0,1,0),n.lookAt(1,0,0),s.up.set(0,1,0),s.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(t===Ys)n.up.set(0,-1,0),n.lookAt(-1,0,0),s.up.set(0,-1,0),s.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);for(const c of e)this.add(c),c.updateMatrixWorld()}update(t,e){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:s}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[r,a,o,l,c,u]=this.children,d=t.getRenderTarget(),f=t.getActiveCubeFace(),m=t.getActiveMipmapLevel(),g=t.xr.enabled;t.xr.enabled=!1;const x=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0,s),t.render(e,r),t.setRenderTarget(n,1,s),t.render(e,a),t.setRenderTarget(n,2,s),t.render(e,o),t.setRenderTarget(n,3,s),t.render(e,l),t.setRenderTarget(n,4,s),t.render(e,c),n.texture.generateMipmaps=x,t.setRenderTarget(n,5,s),t.render(e,u),t.setRenderTarget(d,f,m),t.xr.enabled=g,n.texture.needsPMREMUpdate=!0}}class Yl extends Ae{constructor(t,e,n,s,r,a,o,l,c,u){t=t!==void 0?t:[],e=e!==void 0?e:Di,super(t,e,n,s,r,a,o,l,c,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class Nh extends en{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const n={width:t,height:t,depth:1},s=[n,n,n,n,n,n];this.texture=new Yl(s,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:ln}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; @@ -41,13 +41,13 @@ import{a as Fl,f as Ol}from"./wmwKEafM.js";import{o as Bl,a as zl}from"./DZf5toY gl_FragColor = texture2D( tEquirect, sampleUV ); } - `},s=new zi(5,5,5),r=new Re({name:"CubemapFromEquirect",uniforms:Si(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:Ce,blending:hn});r.uniforms.tEquirect.value=e;const a=new ze(s,r),o=e.minFilter;return e.minFilter===Bn&&(e.minFilter=Je),new eh(1,10,this).update(t,a),e.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(t,e,n,s){const r=t.getRenderTarget();for(let a=0;a<6;a++)t.setRenderTarget(this,a),t.clear(e,n,s);t.setRenderTarget(r)}}class Ps{constructor(t,e=25e-5){this.isFogExp2=!0,this.name="",this.color=new Rt(t),this.density=e}clone(){return new Ps(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class ih extends ge{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Qe,this.environmentIntensity=1,this.environmentRotation=new Qe,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(t,e){return super.copy(t,e),t.background!==null&&(this.background=t.background.clone()),t.environment!==null&&(this.environment=t.environment.clone()),t.fog!==null&&(this.fog=t.fog.clone()),this.backgroundBlurriness=t.backgroundBlurriness,this.backgroundIntensity=t.backgroundIntensity,this.backgroundRotation.copy(t.backgroundRotation),this.environmentIntensity=t.environmentIntensity,this.environmentRotation.copy(t.environmentRotation),t.overrideMaterial!==null&&(this.overrideMaterial=t.overrideMaterial.clone()),this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){const e=super.toJSON(t);return this.fog!==null&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}}class sh{constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=t!==void 0?t.length/e:0,this.usage=aa,this.updateRanges=[],this.version=0,this.uuid=En()}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,n){t*=this.stride,n*=e.stride;for(let s=0,r=this.stride;st.far||e.push({distance:l,point:Ci.clone(),uv:Be.getInterpolation(Ci,as,Di,os,no,or,io,new At),face:null,object:this})}copy(t,e){return super.copy(t,e),t.center!==void 0&&this.center.copy(t.center),this.material=t.material,this}}function ls(i,t,e,n,s,r){ri.subVectors(i,e).addScalar(.5).multiply(n),s!==void 0?(Pi.x=r*ri.x-s*ri.y,Pi.y=s*ri.x+r*ri.y):Pi.copy(ri),i.copy(t),i.x+=Pi.x,i.y+=Pi.y,i.applyMatrix4(vl)}const lr=new R,rh=new R,ah=new zt;class Mn{constructor(t=new R(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,s){return this.normal.set(t,e,n),this.constant=s,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){const s=lr.subVectors(n,e).cross(rh.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(s,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const n=t.delta(lr),s=this.normal.dot(n);if(s===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/s;return r<0||r>1?null:e.copy(t.start).addScaledVector(n,r)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||ah.getNormalMatrix(t),s=this.coplanarPoint(lr).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-s.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Dn=new Oi,cs=new R;class Sa{constructor(t=new Mn,e=new Mn,n=new Mn,s=new Mn,r=new Mn,a=new Mn){this.planes=[t,e,n,s,r,a]}set(t,e,n,s,r,a){const o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(n),o[3].copy(s),o[4].copy(r),o[5].copy(a),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t,e=cn){const n=this.planes,s=t.elements,r=s[0],a=s[1],o=s[2],l=s[3],c=s[4],u=s[5],f=s[6],d=s[7],m=s[8],g=s[9],x=s[10],p=s[11],h=s[12],A=s[13],b=s[14],E=s[15];if(n[0].setComponents(l-r,d-c,p-m,E-h).normalize(),n[1].setComponents(l+r,d+c,p+m,E+h).normalize(),n[2].setComponents(l+a,d+u,p+g,E+A).normalize(),n[3].setComponents(l-a,d-u,p-g,E-A).normalize(),n[4].setComponents(l-o,d-f,p-x,E-b).normalize(),e===cn)n[5].setComponents(l+o,d+f,p+x,E+b).normalize();else if(e===ws)n[5].setComponents(o,f,x,b).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(t){if(t.boundingSphere!==void 0)t.boundingSphere===null&&t.computeBoundingSphere(),Dn.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),Dn.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(Dn)}intersectsSprite(t){return Dn.center.set(0,0,0),Dn.radius=.7071067811865476,Dn.applyMatrix4(t.matrixWorld),this.intersectsSphere(Dn)}intersectsSphere(t){const e=this.planes,n=t.center,s=-t.radius;for(let r=0;r<6;r++)if(e[r].distanceToPoint(n)0?t.max.x:t.min.x,cs.y=s.normal.y>0?t.max.y:t.min.y,cs.z=s.normal.z>0?t.max.z:t.min.z,s.distanceToPoint(cs)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class ca extends bn{constructor(t){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Rt(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.linewidth=t.linewidth,this.linecap=t.linecap,this.linejoin=t.linejoin,this.fog=t.fog,this}}const Ls=new R,Us=new R,ro=new ie,Li=new Bi,hs=new Oi,cr=new R,ao=new R;class oo extends ge{constructor(t=new pe,e=new ca){super(),this.isLine=!0,this.type="Line",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}computeLineDistances(){const t=this.geometry;if(t.index===null){const e=t.attributes.position,n=[0];for(let s=1,r=e.count;s0){const s=e[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=s.length;rn)return;cr.applyMatrix4(i.matrixWorld);const l=t.ray.origin.distanceTo(cr);if(!(lt.far))return{distance:l,point:ao.clone().applyMatrix4(i.matrixWorld),index:s,face:null,faceIndex:null,barycoord:null,object:i}}class Ts extends bn{constructor(t){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new Rt(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.alphaMap=t.alphaMap,this.size=t.size,this.sizeAttenuation=t.sizeAttenuation,this.fog=t.fog,this}}const lo=new ie,ha=new Bi,fs=new Oi,ds=new R;class hr extends ge{constructor(t=new pe,e=new Ts){super(),this.isPoints=!0,this.type="Points",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}raycast(t,e){const n=this.geometry,s=this.matrixWorld,r=t.params.Points.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),fs.copy(n.boundingSphere),fs.applyMatrix4(s),fs.radius+=r,t.ray.intersectsSphere(fs)===!1)return;lo.copy(s).invert(),ha.copy(t.ray).applyMatrix4(lo);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=n.index,f=n.attributes.position;if(c!==null){const d=Math.max(0,a.start),m=Math.min(c.count,a.start+a.count);for(let g=d,x=m;g0){const s=e[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=s.length;rs.far)return;r.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:t,face:null,faceIndex:null,barycoord:null,object:a})}}class ci extends ge{constructor(){super(),this.isGroup=!0,this.type="Group"}}class oh extends be{constructor(t,e,n,s,r,a,o,l,c){super(t,e,n,s,r,a,o,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}}class xl extends be{constructor(t,e,n,s,r,a,o,l,c,u=di){if(u!==di&&u!==xi)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&u===di&&(n=zn),n===void 0&&u===xi&&(n=vi),super(null,s,r,a,o,l,u,n,c),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=o!==void 0?o:Ye,this.minFilter=l!==void 0?l:Ye,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.compareFunction=t.compareFunction,this}toJSON(t){const e=super.toJSON(t);return this.compareFunction!==null&&(e.compareFunction=this.compareFunction),e}}class Fs extends pe{constructor(t=1,e=1,n=1,s=1){super(),this.type="PlaneGeometry",this.parameters={width:t,height:e,widthSegments:n,heightSegments:s};const r=t/2,a=e/2,o=Math.floor(n),l=Math.floor(s),c=o+1,u=l+1,f=t/o,d=e/l,m=[],g=[],x=[],p=[];for(let h=0;h0)&&m.push(b,E,w),(h!==n-1||l0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}}class Oh{constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=t!==void 0?t.length/e:0,this.usage=Ra,this.updateRanges=[],this.version=0,this.uuid=In()}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,n){t*=this.stride,n*=e.stride;for(let s=0,r=this.stride;st.far||e.push({distance:l,point:Xi.clone(),uv:qe.getInterpolation(Xi,Es,qi,Ts,wo,Ar,Ro,new At),face:null,object:this})}copy(t,e){return super.copy(t,e),t.center!==void 0&&this.center.copy(t.center),this.material=t.material,this}}function bs(i,t,e,n,s,r){xi.subVectors(i,e).addScalar(.5).multiply(n),s!==void 0?(Yi.x=r*xi.x-s*xi.y,Yi.y=s*xi.x+r*xi.y):Yi.copy(xi),i.copy(t),i.x+=Yi.x,i.y+=Yi.y,i.applyMatrix4(ql)}class Bh extends Ae{constructor(t=null,e=1,n=1,s,r,a,o,l,c=ke,u=ke,d,f){super(null,a,o,l,c,u,s,r,d,f),this.isDataTexture=!0,this.image={data:t,width:e,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Po extends ve{constructor(t,e,n,s=1){super(t,e,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=s}copy(t){return super.copy(t),this.meshPerAttribute=t.meshPerAttribute,this}toJSON(){const t=super.toJSON();return t.meshPerAttribute=this.meshPerAttribute,t.isInstancedBufferAttribute=!0,t}}const Mi=new ne,Do=new ne,As=[],Lo=new ti,zh=new ne,ji=new De,Zi=new ei;class Hh extends De{constructor(t,e,n){super(t,e),this.isInstancedMesh=!0,this.instanceMatrix=new Po(new Float32Array(n*16),16),this.instanceColor=null,this.morphTexture=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let s=0;s1?null:e.copy(t.start).addScaledVector(n,r)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||Vh.getNormalMatrix(t),s=this.coplanarPoint(wr).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-s.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Gn=new ei,ws=new P;class Ya{constructor(t=new Dn,e=new Dn,n=new Dn,s=new Dn,r=new Dn,a=new Dn){this.planes=[t,e,n,s,r,a]}set(t,e,n,s,r,a){const o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(n),o[3].copy(s),o[4].copy(r),o[5].copy(a),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t,e=xn){const n=this.planes,s=t.elements,r=s[0],a=s[1],o=s[2],l=s[3],c=s[4],u=s[5],d=s[6],f=s[7],m=s[8],g=s[9],x=s[10],p=s[11],h=s[12],A=s[13],b=s[14],E=s[15];if(n[0].setComponents(l-r,f-c,p-m,E-h).normalize(),n[1].setComponents(l+r,f+c,p+m,E+h).normalize(),n[2].setComponents(l+a,f+u,p+g,E+A).normalize(),n[3].setComponents(l-a,f-u,p-g,E-A).normalize(),n[4].setComponents(l-o,f-d,p-x,E-b).normalize(),e===xn)n[5].setComponents(l+o,f+d,p+x,E+b).normalize();else if(e===Ys)n[5].setComponents(o,d,x,b).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(t){if(t.boundingSphere!==void 0)t.boundingSphere===null&&t.computeBoundingSphere(),Gn.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),Gn.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(Gn)}intersectsSprite(t){return Gn.center.set(0,0,0),Gn.radius=.7071067811865476,Gn.applyMatrix4(t.matrixWorld),this.intersectsSphere(Gn)}intersectsSphere(t){const e=this.planes,n=t.center,s=-t.radius;for(let r=0;r<6;r++)if(e[r].distanceToPoint(n)0?t.max.x:t.min.x,ws.y=s.normal.y>0?t.max.y:t.min.y,ws.z=s.normal.z>0?t.max.z:t.min.z,s.distanceToPoint(ws)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class Da extends Fn{constructor(t){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Dt(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.linewidth=t.linewidth,this.linecap=t.linecap,this.linejoin=t.linejoin,this.fog=t.fog,this}}const $s=new P,Js=new P,Uo=new ne,Ki=new ts,Rs=new ei,Rr=new P,Io=new P;class No extends Se{constructor(t=new xe,e=new Da){super(),this.isLine=!0,this.type="Line",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}computeLineDistances(){const t=this.geometry;if(t.index===null){const e=t.attributes.position,n=[0];for(let s=1,r=e.count;s0){const s=e[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=s.length;rn)return;Rr.applyMatrix4(i.matrixWorld);const l=t.ray.origin.distanceTo(Rr);if(!(lt.far))return{distance:l,point:Io.clone().applyMatrix4(i.matrixWorld),index:s,face:null,faceIndex:null,barycoord:null,object:i}}class Vs extends Fn{constructor(t){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new Dt(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.alphaMap=t.alphaMap,this.size=t.size,this.sizeAttenuation=t.sizeAttenuation,this.fog=t.fog,this}}const Fo=new ne,La=new ts,Ps=new ei,Ds=new P;class Cr extends Se{constructor(t=new xe,e=new Vs){super(),this.isPoints=!0,this.type="Points",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}raycast(t,e){const n=this.geometry,s=this.matrixWorld,r=t.params.Points.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),Ps.copy(n.boundingSphere),Ps.applyMatrix4(s),Ps.radius+=r,t.ray.intersectsSphere(Ps)===!1)return;Fo.copy(s).invert(),La.copy(t.ray).applyMatrix4(Fo);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=n.index,d=n.attributes.position;if(c!==null){const f=Math.max(0,a.start),m=Math.min(c.count,a.start+a.count);for(let g=f,x=m;g0){const s=e[n[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,a=s.length;rs.far)return;r.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:t,face:null,faceIndex:null,barycoord:null,object:a})}}class Ti extends Se{constructor(){super(),this.isGroup=!0,this.type="Group"}}class Gh extends Ae{constructor(t,e,n,s,r,a,o,l,c){super(t,e,n,s,r,a,o,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}}class jl extends Ae{constructor(t,e,n,s,r,a,o,l,c,u=Ri){if(u!==Ri&&u!==Ii)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&u===Ri&&(n=$n),n===void 0&&u===Ii&&(n=Ui),super(null,s,r,a,o,l,u,n,c),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=o!==void 0?o:ke,this.minFilter=l!==void 0?l:ke,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.compareFunction=t.compareFunction,this}toJSON(t){const e=super.toJSON(t);return this.compareFunction!==null&&(e.compareFunction=this.compareFunction),e}}class er extends xe{constructor(t=1,e=1,n=1,s=1){super(),this.type="PlaneGeometry",this.parameters={width:t,height:e,widthSegments:n,heightSegments:s};const r=t/2,a=e/2,o=Math.floor(n),l=Math.floor(s),c=o+1,u=l+1,d=t/o,f=e/l,m=[],g=[],x=[],p=[];for(let h=0;h0)&&m.push(b,E,w),(h!==n-1||lm.start-g.start);let d=0;for(let m=1;mm.start-g.start);let f=0;for(let m=1;m 0 +#endif`,gu=`#if NUM_CLIPPING_PLANES > 0 vec4 plane; #ifdef ALPHA_TO_COVERAGE float distanceToPlane, distanceGradient; @@ -297,26 +297,26 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve if ( clipped ) discard; #endif #endif -#endif`,Fh=`#if NUM_CLIPPING_PLANES > 0 +#endif`,vu=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,Oh=`#if NUM_CLIPPING_PLANES > 0 +#endif`,xu=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; -#endif`,Bh=`#if NUM_CLIPPING_PLANES > 0 +#endif`,Mu=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; -#endif`,zh=`#if defined( USE_COLOR_ALPHA ) +#endif`,Su=`#if defined( USE_COLOR_ALPHA ) diffuseColor *= vColor; #elif defined( USE_COLOR ) diffuseColor.rgb *= vColor; -#endif`,Hh=`#if defined( USE_COLOR_ALPHA ) +#endif`,yu=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) varying vec3 vColor; -#endif`,Vh=`#if defined( USE_COLOR_ALPHA ) +#endif`,Eu=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) varying vec3 vColor; -#endif`,Gh=`#if defined( USE_COLOR_ALPHA ) +#endif`,Tu=`#if defined( USE_COLOR_ALPHA ) vColor = vec4( 1.0 ); #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) vColor = vec3( 1.0 ); @@ -330,7 +330,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #ifdef USE_BATCHING_COLOR vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); vColor.xyz *= batchingColor.xyz; -#endif`,kh=`#define PI 3.141592653589793 +#endif`,bu=`#define PI 3.141592653589793 #define PI2 6.283185307179586 #define PI_HALF 1.5707963267948966 #define RECIPROCAL_PI 0.3183098861837907 @@ -404,7 +404,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} // validated`,Wh=`#ifdef ENVMAP_TYPE_CUBE_UV +} // validated`,Au=`#ifdef ENVMAP_TYPE_CUBE_UV #define cubeUV_minMipLevel 4.0 #define cubeUV_minTileSize 16.0 float getFace( vec3 direction ) { @@ -497,7 +497,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { return vec4( mix( color0, color1, mipF ), 1.0 ); } } -#endif`,Xh=`vec3 transformedNormal = objectNormal; +#endif`,wu=`vec3 transformedNormal = objectNormal; #ifdef USE_TANGENT vec3 transformedTangent = objectTangent; #endif @@ -526,21 +526,21 @@ transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif -#endif`,Yh=`#ifdef USE_DISPLACEMENTMAP +#endif`,Ru=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; -#endif`,qh=`#ifdef USE_DISPLACEMENTMAP +#endif`,Cu=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,jh=`#ifdef USE_EMISSIVEMAP +#endif`,Pu=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE emissiveColor = sRGBTransferEOTF( emissiveColor ); #endif totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,Zh=`#ifdef USE_EMISSIVEMAP +#endif`,Du=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; -#endif`,Kh="gl_FragColor = linearToOutputTexel( gl_FragColor );",$h=`vec4 LinearTransferOETF( in vec4 value ) { +#endif`,Lu="gl_FragColor = linearToOutputTexel( gl_FragColor );",Uu=`vec4 LinearTransferOETF( in vec4 value ) { return value; } vec4 sRGBTransferEOTF( in vec4 value ) { @@ -548,7 +548,7 @@ vec4 sRGBTransferEOTF( in vec4 value ) { } vec4 sRGBTransferOETF( in vec4 value ) { return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); -}`,Jh=`#ifdef USE_ENVMAP +}`,Iu=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vec3 cameraToFrag; if ( isOrthographic ) { @@ -577,7 +577,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { #elif defined( ENVMAP_BLENDING_ADD ) outgoingLight += envColor.xyz * specularStrength * reflectivity; #endif -#endif`,Qh=`#ifdef USE_ENVMAP +#endif`,Nu=`#ifdef USE_ENVMAP uniform float envMapIntensity; uniform float flipEnvMap; uniform mat3 envMapRotation; @@ -587,7 +587,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { uniform sampler2D envMap; #endif -#endif`,tu=`#ifdef USE_ENVMAP +#endif`,Fu=`#ifdef USE_ENVMAP uniform float reflectivity; #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS @@ -598,7 +598,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { #else varying vec3 vReflect; #endif -#endif`,eu=`#ifdef USE_ENVMAP +#endif`,Ou=`#ifdef USE_ENVMAP #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS #endif @@ -609,7 +609,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { varying vec3 vReflect; uniform float refractionRatio; #endif -#endif`,nu=`#ifdef USE_ENVMAP +#endif`,Bu=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vWorldPosition = worldPosition.xyz; #else @@ -626,18 +626,18 @@ vec4 sRGBTransferOETF( in vec4 value ) { vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); #endif #endif -#endif`,iu=`#ifdef USE_FOG +#endif`,zu=`#ifdef USE_FOG vFogDepth = - mvPosition.z; -#endif`,su=`#ifdef USE_FOG +#endif`,Hu=`#ifdef USE_FOG varying float vFogDepth; -#endif`,ru=`#ifdef USE_FOG +#endif`,ku=`#ifdef USE_FOG #ifdef FOG_EXP2 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); #else float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); #endif gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,au=`#ifdef USE_FOG +#endif`,Vu=`#ifdef USE_FOG uniform vec3 fogColor; varying float vFogDepth; #ifdef FOG_EXP2 @@ -646,7 +646,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { uniform float fogNear; uniform float fogFar; #endif -#endif`,ou=`#ifdef USE_GRADIENTMAP +#endif`,Gu=`#ifdef USE_GRADIENTMAP uniform sampler2D gradientMap; #endif vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { @@ -658,12 +658,12 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { vec2 fw = fwidth( coord ) * 0.5; return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); #endif -}`,lu=`#ifdef USE_LIGHTMAP +}`,Wu=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; -#endif`,cu=`LambertMaterial material; +#endif`,Xu=`LambertMaterial material; material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,hu=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,Yu=`varying vec3 vViewPosition; struct LambertMaterial { vec3 diffuseColor; float specularStrength; @@ -677,7 +677,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometr reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,uu=`uniform bool receiveShadow; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,qu=`uniform bool receiveShadow; uniform vec3 ambientLightColor; #if defined( USE_LIGHT_PROBES ) uniform vec3 lightProbe[ 9 ]; @@ -793,7 +793,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); return irradiance; } -#endif`,fu=`#ifdef USE_ENVMAP +#endif`,ju=`#ifdef USE_ENVMAP vec3 getIBLIrradiance( const in vec3 normal ) { #ifdef ENVMAP_TYPE_CUBE_UV vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); @@ -826,8 +826,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi #endif } #endif -#endif`,du=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,pu=`varying vec3 vViewPosition; +#endif`,Zu=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,Ku=`varying vec3 vViewPosition; struct ToonMaterial { vec3 diffuseColor; }; @@ -839,11 +839,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPo reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,mu=`BlinnPhongMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,$u=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; -material.specularStrength = specularStrength;`,_u=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,Ju=`varying vec3 vViewPosition; struct BlinnPhongMaterial { vec3 diffuseColor; vec3 specularColor; @@ -860,7 +860,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geom reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,gu=`PhysicalMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,Qu=`PhysicalMaterial material; material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); @@ -946,7 +946,7 @@ material.roughness = min( material.roughness, 1.0 ); material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; -#endif`,vu=`struct PhysicalMaterial { +#endif`,td=`struct PhysicalMaterial { vec3 diffuseColor; float roughness; vec3 specularColor; @@ -1247,7 +1247,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia #define RE_IndirectSpecular RE_IndirectSpecular_Physical float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,xu=` +}`,ed=` vec3 geometryPosition = - vViewPosition; vec3 geometryNormal = normal; vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); @@ -1362,7 +1362,7 @@ IncidentLight directLight; #if defined( RE_IndirectSpecular ) vec3 radiance = vec3( 0.0 ); vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,Mu=`#if defined( RE_IndirectDiffuse ) +#endif`,nd=`#if defined( RE_IndirectDiffuse ) #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; @@ -1381,32 +1381,32 @@ IncidentLight directLight; #ifdef USE_CLEARCOAT clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); #endif -#endif`,Su=`#if defined( RE_IndirectDiffuse ) +#endif`,id=`#if defined( RE_IndirectDiffuse ) RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); #endif #if defined( RE_IndirectSpecular ) RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); -#endif`,yu=`#if defined( USE_LOGDEPTHBUF ) +#endif`,sd=`#if defined( USE_LOGDEPTHBUF ) gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,Eu=`#if defined( USE_LOGDEPTHBUF ) +#endif`,rd=`#if defined( USE_LOGDEPTHBUF ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; -#endif`,Tu=`#ifdef USE_LOGDEPTHBUF +#endif`,ad=`#ifdef USE_LOGDEPTHBUF varying float vFragDepth; varying float vIsPerspective; -#endif`,bu=`#ifdef USE_LOGDEPTHBUF +#endif`,od=`#ifdef USE_LOGDEPTHBUF vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); -#endif`,Au=`#ifdef USE_MAP +#endif`,ld=`#ifdef USE_MAP vec4 sampledDiffuseColor = texture2D( map, vMapUv ); #ifdef DECODE_VIDEO_TEXTURE sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); #endif diffuseColor *= sampledDiffuseColor; -#endif`,wu=`#ifdef USE_MAP +#endif`,cd=`#ifdef USE_MAP uniform sampler2D map; -#endif`,Ru=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) +#endif`,hd=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) #if defined( USE_POINTS_UV ) vec2 uv = vUv; #else @@ -1418,7 +1418,7 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,Cu=`#if defined( USE_POINTS_UV ) +#endif`,ud=`#if defined( USE_POINTS_UV ) varying vec2 vUv; #else #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) @@ -1430,19 +1430,19 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,Pu=`float metalnessFactor = metalness; +#endif`,dd=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); metalnessFactor *= texelMetalness.b; -#endif`,Du=`#ifdef USE_METALNESSMAP +#endif`,fd=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; -#endif`,Lu=`#ifdef USE_INSTANCING_MORPH +#endif`,pd=`#ifdef USE_INSTANCING_MORPH float morphTargetInfluences[ MORPHTARGETS_COUNT ]; float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; } -#endif`,Uu=`#if defined( USE_MORPHCOLORS ) +#endif`,md=`#if defined( USE_MORPHCOLORS ) vColor *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { #if defined( USE_COLOR_ALPHA ) @@ -1451,12 +1451,12 @@ IncidentLight directLight; if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; #endif } -#endif`,Iu=`#ifdef USE_MORPHNORMALS +#endif`,_d=`#ifdef USE_MORPHNORMALS objectNormal *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; } -#endif`,Nu=`#ifdef USE_MORPHTARGETS +#endif`,gd=`#ifdef USE_MORPHTARGETS #ifndef USE_INSTANCING_MORPH uniform float morphTargetBaseInfluence; uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; @@ -1470,12 +1470,12 @@ IncidentLight directLight; ivec3 morphUV = ivec3( x, y, morphTargetIndex ); return texelFetch( morphTargetsTexture, morphUV, 0 ); } -#endif`,Fu=`#ifdef USE_MORPHTARGETS +#endif`,vd=`#ifdef USE_MORPHTARGETS transformed *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; } -#endif`,Ou=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#endif`,xd=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; #ifdef FLAT_SHADED vec3 fdx = dFdx( vViewPosition ); vec3 fdy = dFdy( vViewPosition ); @@ -1516,7 +1516,7 @@ IncidentLight directLight; tbn2[1] *= faceDirection; #endif #endif -vec3 nonPerturbedNormal = normal;`,Bu=`#ifdef USE_NORMALMAP_OBJECTSPACE +vec3 nonPerturbedNormal = normal;`,Md=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; @@ -1531,25 +1531,25 @@ vec3 nonPerturbedNormal = normal;`,Bu=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = normalize( tbn * mapN ); #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,zu=`#ifndef FLAT_SHADED +#endif`,Sd=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,Hu=`#ifndef FLAT_SHADED +#endif`,yd=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,Vu=`#ifndef FLAT_SHADED +#endif`,Ed=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif -#endif`,Gu=`#ifdef USE_NORMALMAP +#endif`,Td=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif @@ -1571,13 +1571,13 @@ vec3 nonPerturbedNormal = normal;`,Bu=`#ifdef USE_NORMALMAP_OBJECTSPACE float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); return mat3( T * scale, B * scale, N ); } -#endif`,ku=`#ifdef USE_CLEARCOAT +#endif`,bd=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,Wu=`#ifdef USE_CLEARCOAT_NORMALMAP +#endif`,Ad=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,Xu=`#ifdef USE_CLEARCOATMAP +#endif`,wd=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP @@ -1586,18 +1586,18 @@ vec3 nonPerturbedNormal = normal;`,Bu=`#ifdef USE_NORMALMAP_OBJECTSPACE #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; -#endif`,Yu=`#ifdef USE_IRIDESCENCEMAP +#endif`,Rd=`#ifdef USE_IRIDESCENCEMAP uniform sampler2D iridescenceMap; #endif #ifdef USE_IRIDESCENCE_THICKNESSMAP uniform sampler2D iridescenceThicknessMap; -#endif`,qu=`#ifdef OPAQUE +#endif`,Cd=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= material.transmissionAlpha; #endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,ju=`vec3 packNormalToRGB( const in vec3 normal ) { +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Pd=`vec3 packNormalToRGB( const in vec3 normal ) { return normalize( normal ) * 0.5 + 0.5; } vec3 unpackRGBToNormal( const in vec3 rgb ) { @@ -1666,9 +1666,9 @@ float viewZToPerspectiveDepth( const in float viewZ, const in float near, const } float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { return ( near * far ) / ( ( far - near ) * depth - far ); -}`,Zu=`#ifdef PREMULTIPLIED_ALPHA +}`,Dd=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; -#endif`,Ku=`vec4 mvPosition = vec4( transformed, 1.0 ); +#endif`,Ld=`vec4 mvPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING mvPosition = batchingMatrix * mvPosition; #endif @@ -1676,22 +1676,22 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const mvPosition = instanceMatrix * mvPosition; #endif mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,$u=`#ifdef DITHERING +gl_Position = projectionMatrix * mvPosition;`,Ud=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,Ju=`#ifdef DITHERING +#endif`,Id=`#ifdef DITHERING vec3 dithering( vec3 color ) { float grid_position = rand( gl_FragCoord.xy ); vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); return color + dither_shift_RGB; } -#endif`,Qu=`float roughnessFactor = roughness; +#endif`,Nd=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); roughnessFactor *= texelRoughness.g; -#endif`,tf=`#ifdef USE_ROUGHNESSMAP +#endif`,Fd=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; -#endif`,ef=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,Od=`#if NUM_SPOT_LIGHT_COORDS > 0 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif #if NUM_SPOT_LIGHT_MAPS > 0 @@ -1877,7 +1877,7 @@ gl_Position = projectionMatrix * mvPosition;`,$u=`#ifdef DITHERING } return mix( 1.0, shadow, shadowIntensity ); } -#endif`,nf=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,Bd=`#if NUM_SPOT_LIGHT_COORDS > 0 uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif @@ -1918,7 +1918,7 @@ gl_Position = projectionMatrix * mvPosition;`,$u=`#ifdef DITHERING }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif -#endif`,sf=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) +#endif`,zd=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); vec4 shadowWorldPosition; #endif @@ -1950,7 +1950,7 @@ gl_Position = projectionMatrix * mvPosition;`,$u=`#ifdef DITHERING vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end -#endif`,rf=`float getShadowMask() { +#endif`,Hd=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 @@ -1982,12 +1982,12 @@ gl_Position = projectionMatrix * mvPosition;`,$u=`#ifdef DITHERING #endif #endif return shadow; -}`,af=`#ifdef USE_SKINNING +}`,kd=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,of=`#ifdef USE_SKINNING +#endif`,Vd=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; @@ -2002,7 +2002,7 @@ gl_Position = projectionMatrix * mvPosition;`,$u=`#ifdef DITHERING vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,lf=`#ifdef USE_SKINNING +#endif`,Gd=`#ifdef USE_SKINNING vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); vec4 skinned = vec4( 0.0 ); skinned += boneMatX * skinVertex * skinWeight.x; @@ -2010,7 +2010,7 @@ gl_Position = projectionMatrix * mvPosition;`,$u=`#ifdef DITHERING skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,cf=`#ifdef USE_SKINNING +#endif`,Wd=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; @@ -2021,17 +2021,17 @@ gl_Position = projectionMatrix * mvPosition;`,$u=`#ifdef DITHERING #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif -#endif`,hf=`float specularStrength; +#endif`,Xd=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; -#endif`,uf=`#ifdef USE_SPECULARMAP +#endif`,Yd=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; -#endif`,ff=`#if defined( TONE_MAPPING ) +#endif`,qd=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,df=`#ifndef saturate +#endif`,jd=`#ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif uniform float toneMappingExposure; @@ -2128,7 +2128,7 @@ vec3 NeutralToneMapping( vec3 color ) { float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); return mix( color, vec3( newPeak ), g ); } -vec3 CustomToneMapping( vec3 color ) { return color; }`,pf=`#ifdef USE_TRANSMISSION +vec3 CustomToneMapping( vec3 color ) { return color; }`,Zd=`#ifdef USE_TRANSMISSION material.transmission = transmission; material.transmissionAlpha = 1.0; material.thickness = thickness; @@ -2149,7 +2149,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,pf=`#ifdef USE_TRANSMISS material.attenuationColor, material.attenuationDistance ); material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); -#endif`,mf=`#ifdef USE_TRANSMISSION +#endif`,Kd=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; @@ -2275,7 +2275,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,pf=`#ifdef USE_TRANSMISS float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); } -#endif`,_f=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,$d=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2345,7 +2345,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,pf=`#ifdef USE_TRANSMISS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,gf=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,Jd=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2439,7 +2439,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,pf=`#ifdef USE_TRANSMISS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,vf=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,Qd=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) vUv = vec3( uv, 1 ).xy; #endif #ifdef USE_MAP @@ -2510,7 +2510,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,pf=`#ifdef USE_TRANSMISS #endif #ifdef USE_THICKNESSMAP vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,xf=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 +#endif`,tf=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 vec4 worldPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING worldPosition = batchingMatrix * worldPosition; @@ -2519,12 +2519,12 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,pf=`#ifdef USE_TRANSMISS worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; -#endif`;const Mf=`varying vec2 vUv; +#endif`;const ef=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,Sf=`uniform sampler2D t2D; +}`,nf=`uniform sampler2D t2D; uniform float backgroundIntensity; varying vec2 vUv; void main() { @@ -2536,14 +2536,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,yf=`varying vec3 vWorldDirection; +}`,sf=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,Ef=`#ifdef ENVMAP_TYPE_CUBE +}`,rf=`#ifdef ENVMAP_TYPE_CUBE uniform samplerCube envMap; #elif defined( ENVMAP_TYPE_CUBE_UV ) uniform sampler2D envMap; @@ -2566,14 +2566,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,Tf=`varying vec3 vWorldDirection; +}`,af=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,bf=`uniform samplerCube tCube; +}`,of=`uniform samplerCube tCube; uniform float tFlip; uniform float opacity; varying vec3 vWorldDirection; @@ -2583,7 +2583,7 @@ void main() { gl_FragColor.a *= opacity; #include #include -}`,Af=`#include +}`,lf=`#include #include #include #include @@ -2610,7 +2610,7 @@ void main() { #include #include vHighPrecisionZW = gl_Position.zw; -}`,wf=`#if DEPTH_PACKING == 3200 +}`,cf=`#if DEPTH_PACKING == 3200 uniform float opacity; #endif #include @@ -2644,7 +2644,7 @@ void main() { #elif DEPTH_PACKING == 3203 gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); #endif -}`,Rf=`#define DISTANCE +}`,hf=`#define DISTANCE varying vec3 vWorldPosition; #include #include @@ -2671,7 +2671,7 @@ void main() { #include #include vWorldPosition = worldPosition.xyz; -}`,Cf=`#define DISTANCE +}`,uf=`#define DISTANCE uniform vec3 referencePosition; uniform float nearDistance; uniform float farDistance; @@ -2695,13 +2695,13 @@ void main () { dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); dist = saturate( dist ); gl_FragColor = packDepthToRGBA( dist ); -}`,Pf=`varying vec3 vWorldDirection; +}`,df=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include -}`,Df=`uniform sampler2D tEquirect; +}`,ff=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { @@ -2710,7 +2710,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include -}`,Lf=`uniform float scale; +}`,pf=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include @@ -2732,7 +2732,7 @@ void main() { #include #include #include -}`,Uf=`uniform vec3 diffuse; +}`,mf=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; @@ -2760,7 +2760,7 @@ void main() { #include #include #include -}`,If=`#include +}`,_f=`#include #include #include #include @@ -2792,7 +2792,7 @@ void main() { #include #include #include -}`,Nf=`uniform vec3 diffuse; +}`,gf=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; @@ -2840,7 +2840,7 @@ void main() { #include #include #include -}`,Ff=`#define LAMBERT +}`,vf=`#define LAMBERT varying vec3 vViewPosition; #include #include @@ -2879,7 +2879,7 @@ void main() { #include #include #include -}`,Of=`#define LAMBERT +}`,xf=`#define LAMBERT uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -2936,7 +2936,7 @@ void main() { #include #include #include -}`,Bf=`#define MATCAP +}`,Mf=`#define MATCAP varying vec3 vViewPosition; #include #include @@ -2970,7 +2970,7 @@ void main() { #include #include vViewPosition = - mvPosition.xyz; -}`,zf=`#define MATCAP +}`,Sf=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; @@ -3016,7 +3016,7 @@ void main() { #include #include #include -}`,Hf=`#define NORMAL +}`,yf=`#define NORMAL #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; #endif @@ -3049,7 +3049,7 @@ void main() { #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) vViewPosition = - mvPosition.xyz; #endif -}`,Vf=`#define NORMAL +}`,Ef=`#define NORMAL uniform float opacity; #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; @@ -3071,7 +3071,7 @@ void main() { #ifdef OPAQUE gl_FragColor.a = 1.0; #endif -}`,Gf=`#define PHONG +}`,Tf=`#define PHONG varying vec3 vViewPosition; #include #include @@ -3110,7 +3110,7 @@ void main() { #include #include #include -}`,kf=`#define PHONG +}`,bf=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; @@ -3169,7 +3169,7 @@ void main() { #include #include #include -}`,Wf=`#define STANDARD +}`,Af=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; @@ -3212,7 +3212,7 @@ void main() { #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif -}`,Xf=`#define STANDARD +}`,wf=`#define STANDARD #ifdef PHYSICAL #define IOR #define USE_SPECULAR @@ -3337,7 +3337,7 @@ void main() { #include #include #include -}`,Yf=`#define TOON +}`,Rf=`#define TOON varying vec3 vViewPosition; #include #include @@ -3374,7 +3374,7 @@ void main() { #include #include #include -}`,qf=`#define TOON +}`,Cf=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3427,7 +3427,7 @@ void main() { #include #include #include -}`,jf=`uniform float size; +}`,Pf=`uniform float size; uniform float scale; #include #include @@ -3458,7 +3458,7 @@ void main() { #include #include #include -}`,Zf=`uniform vec3 diffuse; +}`,Df=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3483,7 +3483,7 @@ void main() { #include #include #include -}`,Kf=`#include +}`,Lf=`#include #include #include #include @@ -3506,7 +3506,7 @@ void main() { #include #include #include -}`,$f=`uniform vec3 color; +}`,Uf=`uniform vec3 color; uniform float opacity; #include #include @@ -3522,7 +3522,7 @@ void main() { #include #include #include -}`,Jf=`uniform float rotation; +}`,If=`uniform float rotation; uniform vec2 center; #include #include @@ -3546,7 +3546,7 @@ void main() { #include #include #include -}`,Qf=`uniform vec3 diffuse; +}`,Nf=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3571,7 +3571,7 @@ void main() { #include #include #include -}`,Gt={alphahash_fragment:Mh,alphahash_pars_fragment:Sh,alphamap_fragment:yh,alphamap_pars_fragment:Eh,alphatest_fragment:Th,alphatest_pars_fragment:bh,aomap_fragment:Ah,aomap_pars_fragment:wh,batching_pars_vertex:Rh,batching_vertex:Ch,begin_vertex:Ph,beginnormal_vertex:Dh,bsdfs:Lh,iridescence_fragment:Uh,bumpmap_pars_fragment:Ih,clipping_planes_fragment:Nh,clipping_planes_pars_fragment:Fh,clipping_planes_pars_vertex:Oh,clipping_planes_vertex:Bh,color_fragment:zh,color_pars_fragment:Hh,color_pars_vertex:Vh,color_vertex:Gh,common:kh,cube_uv_reflection_fragment:Wh,defaultnormal_vertex:Xh,displacementmap_pars_vertex:Yh,displacementmap_vertex:qh,emissivemap_fragment:jh,emissivemap_pars_fragment:Zh,colorspace_fragment:Kh,colorspace_pars_fragment:$h,envmap_fragment:Jh,envmap_common_pars_fragment:Qh,envmap_pars_fragment:tu,envmap_pars_vertex:eu,envmap_physical_pars_fragment:fu,envmap_vertex:nu,fog_vertex:iu,fog_pars_vertex:su,fog_fragment:ru,fog_pars_fragment:au,gradientmap_pars_fragment:ou,lightmap_pars_fragment:lu,lights_lambert_fragment:cu,lights_lambert_pars_fragment:hu,lights_pars_begin:uu,lights_toon_fragment:du,lights_toon_pars_fragment:pu,lights_phong_fragment:mu,lights_phong_pars_fragment:_u,lights_physical_fragment:gu,lights_physical_pars_fragment:vu,lights_fragment_begin:xu,lights_fragment_maps:Mu,lights_fragment_end:Su,logdepthbuf_fragment:yu,logdepthbuf_pars_fragment:Eu,logdepthbuf_pars_vertex:Tu,logdepthbuf_vertex:bu,map_fragment:Au,map_pars_fragment:wu,map_particle_fragment:Ru,map_particle_pars_fragment:Cu,metalnessmap_fragment:Pu,metalnessmap_pars_fragment:Du,morphinstance_vertex:Lu,morphcolor_vertex:Uu,morphnormal_vertex:Iu,morphtarget_pars_vertex:Nu,morphtarget_vertex:Fu,normal_fragment_begin:Ou,normal_fragment_maps:Bu,normal_pars_fragment:zu,normal_pars_vertex:Hu,normal_vertex:Vu,normalmap_pars_fragment:Gu,clearcoat_normal_fragment_begin:ku,clearcoat_normal_fragment_maps:Wu,clearcoat_pars_fragment:Xu,iridescence_pars_fragment:Yu,opaque_fragment:qu,packing:ju,premultiplied_alpha_fragment:Zu,project_vertex:Ku,dithering_fragment:$u,dithering_pars_fragment:Ju,roughnessmap_fragment:Qu,roughnessmap_pars_fragment:tf,shadowmap_pars_fragment:ef,shadowmap_pars_vertex:nf,shadowmap_vertex:sf,shadowmask_pars_fragment:rf,skinbase_vertex:af,skinning_pars_vertex:of,skinning_vertex:lf,skinnormal_vertex:cf,specularmap_fragment:hf,specularmap_pars_fragment:uf,tonemapping_fragment:ff,tonemapping_pars_fragment:df,transmission_fragment:pf,transmission_pars_fragment:mf,uv_pars_fragment:_f,uv_pars_vertex:gf,uv_vertex:vf,worldpos_vertex:xf,background_vert:Mf,background_frag:Sf,backgroundCube_vert:yf,backgroundCube_frag:Ef,cube_vert:Tf,cube_frag:bf,depth_vert:Af,depth_frag:wf,distanceRGBA_vert:Rf,distanceRGBA_frag:Cf,equirect_vert:Pf,equirect_frag:Df,linedashed_vert:Lf,linedashed_frag:Uf,meshbasic_vert:If,meshbasic_frag:Nf,meshlambert_vert:Ff,meshlambert_frag:Of,meshmatcap_vert:Bf,meshmatcap_frag:zf,meshnormal_vert:Hf,meshnormal_frag:Vf,meshphong_vert:Gf,meshphong_frag:kf,meshphysical_vert:Wf,meshphysical_frag:Xf,meshtoon_vert:Yf,meshtoon_frag:qf,points_vert:jf,points_frag:Zf,shadow_vert:Kf,shadow_frag:$f,sprite_vert:Jf,sprite_frag:Qf},ct={common:{diffuse:{value:new Rt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new zt},alphaMap:{value:null},alphaMapTransform:{value:new zt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new zt}},envmap:{envMap:{value:null},envMapRotation:{value:new zt},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new zt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new zt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new zt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new zt},normalScale:{value:new At(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new zt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new zt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new zt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new zt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Rt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Rt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new zt},alphaTest:{value:0},uvTransform:{value:new zt}},sprite:{diffuse:{value:new Rt(16777215)},opacity:{value:1},center:{value:new At(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new zt},alphaMap:{value:null},alphaMapTransform:{value:new zt},alphaTest:{value:0}}},Ze={basic:{uniforms:Te([ct.common,ct.specularmap,ct.envmap,ct.aomap,ct.lightmap,ct.fog]),vertexShader:Gt.meshbasic_vert,fragmentShader:Gt.meshbasic_frag},lambert:{uniforms:Te([ct.common,ct.specularmap,ct.envmap,ct.aomap,ct.lightmap,ct.emissivemap,ct.bumpmap,ct.normalmap,ct.displacementmap,ct.fog,ct.lights,{emissive:{value:new Rt(0)}}]),vertexShader:Gt.meshlambert_vert,fragmentShader:Gt.meshlambert_frag},phong:{uniforms:Te([ct.common,ct.specularmap,ct.envmap,ct.aomap,ct.lightmap,ct.emissivemap,ct.bumpmap,ct.normalmap,ct.displacementmap,ct.fog,ct.lights,{emissive:{value:new Rt(0)},specular:{value:new Rt(1118481)},shininess:{value:30}}]),vertexShader:Gt.meshphong_vert,fragmentShader:Gt.meshphong_frag},standard:{uniforms:Te([ct.common,ct.envmap,ct.aomap,ct.lightmap,ct.emissivemap,ct.bumpmap,ct.normalmap,ct.displacementmap,ct.roughnessmap,ct.metalnessmap,ct.fog,ct.lights,{emissive:{value:new Rt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Gt.meshphysical_vert,fragmentShader:Gt.meshphysical_frag},toon:{uniforms:Te([ct.common,ct.aomap,ct.lightmap,ct.emissivemap,ct.bumpmap,ct.normalmap,ct.displacementmap,ct.gradientmap,ct.fog,ct.lights,{emissive:{value:new Rt(0)}}]),vertexShader:Gt.meshtoon_vert,fragmentShader:Gt.meshtoon_frag},matcap:{uniforms:Te([ct.common,ct.bumpmap,ct.normalmap,ct.displacementmap,ct.fog,{matcap:{value:null}}]),vertexShader:Gt.meshmatcap_vert,fragmentShader:Gt.meshmatcap_frag},points:{uniforms:Te([ct.points,ct.fog]),vertexShader:Gt.points_vert,fragmentShader:Gt.points_frag},dashed:{uniforms:Te([ct.common,ct.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Gt.linedashed_vert,fragmentShader:Gt.linedashed_frag},depth:{uniforms:Te([ct.common,ct.displacementmap]),vertexShader:Gt.depth_vert,fragmentShader:Gt.depth_frag},normal:{uniforms:Te([ct.common,ct.bumpmap,ct.normalmap,ct.displacementmap,{opacity:{value:1}}]),vertexShader:Gt.meshnormal_vert,fragmentShader:Gt.meshnormal_frag},sprite:{uniforms:Te([ct.sprite,ct.fog]),vertexShader:Gt.sprite_vert,fragmentShader:Gt.sprite_frag},background:{uniforms:{uvTransform:{value:new zt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Gt.background_vert,fragmentShader:Gt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new zt}},vertexShader:Gt.backgroundCube_vert,fragmentShader:Gt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Gt.cube_vert,fragmentShader:Gt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Gt.equirect_vert,fragmentShader:Gt.equirect_frag},distanceRGBA:{uniforms:Te([ct.common,ct.displacementmap,{referencePosition:{value:new R},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Gt.distanceRGBA_vert,fragmentShader:Gt.distanceRGBA_frag},shadow:{uniforms:Te([ct.lights,ct.fog,{color:{value:new Rt(0)},opacity:{value:1}}]),vertexShader:Gt.shadow_vert,fragmentShader:Gt.shadow_frag}};Ze.physical={uniforms:Te([Ze.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new zt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new zt},clearcoatNormalScale:{value:new At(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new zt},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new zt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new zt},sheen:{value:0},sheenColor:{value:new Rt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new zt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new zt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new zt},transmissionSamplerSize:{value:new At},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new zt},attenuationDistance:{value:0},attenuationColor:{value:new Rt(0)},specularColor:{value:new Rt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new zt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new zt},anisotropyVector:{value:new At},anisotropyMap:{value:null},anisotropyMapTransform:{value:new zt}}]),vertexShader:Gt.meshphysical_vert,fragmentShader:Gt.meshphysical_frag};const ps={r:0,b:0,g:0},Ln=new Qe,td=new ie;function ed(i,t,e,n,s,r,a){const o=new Rt(0);let l=r===!0?0:1,c,u,f=null,d=0,m=null;function g(b){let E=b.isScene===!0?b.background:null;return E&&E.isTexture&&(E=(b.backgroundBlurriness>0?e:t).get(E)),E}function x(b){let E=!1;const U=g(b);U===null?h(o,l):U&&U.isColor&&(h(U,1),E=!0);const w=i.xr.getEnvironmentBlendMode();w==="additive"?n.buffers.color.setClear(0,0,0,1,a):w==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(i.autoClear||E)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil))}function p(b,E){const U=g(E);U&&(U.isCubeTexture||U.mapping===Is)?(u===void 0&&(u=new ze(new zi(1,1,1),new Re({name:"BackgroundCubeMaterial",uniforms:Si(Ze.backgroundCube.uniforms),vertexShader:Ze.backgroundCube.vertexShader,fragmentShader:Ze.backgroundCube.fragmentShader,side:Ce,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(w,C,N){this.matrixWorld.copyPosition(N.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(u)),Ln.copy(E.backgroundRotation),Ln.x*=-1,Ln.y*=-1,Ln.z*=-1,U.isCubeTexture&&U.isRenderTargetTexture===!1&&(Ln.y*=-1,Ln.z*=-1),u.material.uniforms.envMap.value=U,u.material.uniforms.flipEnvMap.value=U.isCubeTexture&&U.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=E.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(td.makeRotationFromEuler(Ln)),u.material.toneMapped=jt.getTransfer(U.colorSpace)!==Qt,(f!==U||d!==U.version||m!==i.toneMapping)&&(u.material.needsUpdate=!0,f=U,d=U.version,m=i.toneMapping),u.layers.enableAll(),b.unshift(u,u.geometry,u.material,0,0,null)):U&&U.isTexture&&(c===void 0&&(c=new ze(new Fs(2,2),new Re({name:"BackgroundMaterial",uniforms:Si(Ze.background.uniforms),vertexShader:Ze.background.vertexShader,fragmentShader:Ze.background.fragmentShader,side:Tn,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(c)),c.material.uniforms.t2D.value=U,c.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,c.material.toneMapped=jt.getTransfer(U.colorSpace)!==Qt,U.matrixAutoUpdate===!0&&U.updateMatrix(),c.material.uniforms.uvTransform.value.copy(U.matrix),(f!==U||d!==U.version||m!==i.toneMapping)&&(c.material.needsUpdate=!0,f=U,d=U.version,m=i.toneMapping),c.layers.enableAll(),b.unshift(c,c.geometry,c.material,0,0,null))}function h(b,E){b.getRGB(ps,ml(i)),n.buffers.color.setClear(ps.r,ps.g,ps.b,E,a)}function A(){u!==void 0&&(u.geometry.dispose(),u.material.dispose()),c!==void 0&&(c.geometry.dispose(),c.material.dispose())}return{getClearColor:function(){return o},setClearColor:function(b,E=1){o.set(b),l=E,h(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(b){l=b,h(o,l)},render:x,addToRenderList:p,dispose:A}}function nd(i,t){const e=i.getParameter(i.MAX_VERTEX_ATTRIBS),n={},s=d(null);let r=s,a=!1;function o(M,P,W,H,Y){let Q=!1;const k=f(H,W,P);r!==k&&(r=k,c(r.object)),Q=m(M,H,W,Y),Q&&g(M,H,W,Y),Y!==null&&t.update(Y,i.ELEMENT_ARRAY_BUFFER),(Q||a)&&(a=!1,E(M,P,W,H),Y!==null&&i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t.get(Y).buffer))}function l(){return i.createVertexArray()}function c(M){return i.bindVertexArray(M)}function u(M){return i.deleteVertexArray(M)}function f(M,P,W){const H=W.wireframe===!0;let Y=n[M.id];Y===void 0&&(Y={},n[M.id]=Y);let Q=Y[P.id];Q===void 0&&(Q={},Y[P.id]=Q);let k=Q[H];return k===void 0&&(k=d(l()),Q[H]=k),k}function d(M){const P=[],W=[],H=[];for(let Y=0;Y=0){const gt=Y[V];let wt=Q[V];if(wt===void 0&&(V==="instanceMatrix"&&M.instanceMatrix&&(wt=M.instanceMatrix),V==="instanceColor"&&M.instanceColor&&(wt=M.instanceColor)),gt===void 0||gt.attribute!==wt||wt&>.data!==wt.data)return!0;k++}return r.attributesNum!==k||r.index!==H}function g(M,P,W,H){const Y={},Q=P.attributes;let k=0;const it=W.getAttributes();for(const V in it)if(it[V].location>=0){let gt=Q[V];gt===void 0&&(V==="instanceMatrix"&&M.instanceMatrix&&(gt=M.instanceMatrix),V==="instanceColor"&&M.instanceColor&&(gt=M.instanceColor));const wt={};wt.attribute=gt,gt&>.data&&(wt.data=gt.data),Y[V]=wt,k++}r.attributes=Y,r.attributesNum=k,r.index=H}function x(){const M=r.newAttributes;for(let P=0,W=M.length;P=0){let ht=Y[it];if(ht===void 0&&(it==="instanceMatrix"&&M.instanceMatrix&&(ht=M.instanceMatrix),it==="instanceColor"&&M.instanceColor&&(ht=M.instanceColor)),ht!==void 0){const gt=ht.normalized,wt=ht.itemSize,Ht=t.get(ht);if(Ht===void 0)continue;const Zt=Ht.buffer,q=Ht.type,lt=Ht.bytesPerElement,Tt=q===i.INT||q===i.UNSIGNED_INT||ht.gpuType===pa;if(ht.isInterleavedBufferAttribute){const ut=ht.data,Dt=ut.stride,It=ht.offset;if(ut.isInstancedInterleavedBuffer){for(let at=0;at0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision>0)return"highp";C="mediump"}return C==="mediump"&&i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=e.precision!==void 0?e.precision:"highp";const u=l(c);u!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",u,"instead."),c=u);const f=e.logarithmicDepthBuffer===!0,d=e.reverseDepthBuffer===!0&&t.has("EXT_clip_control"),m=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),g=i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),x=i.getParameter(i.MAX_TEXTURE_SIZE),p=i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),h=i.getParameter(i.MAX_VERTEX_ATTRIBS),A=i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),b=i.getParameter(i.MAX_VARYING_VECTORS),E=i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),U=g>0,w=i.getParameter(i.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:r,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:f,reverseDepthBuffer:d,maxTextures:m,maxVertexTextures:g,maxTextureSize:x,maxCubemapSize:p,maxAttributes:h,maxVertexUniforms:A,maxVaryings:b,maxFragmentUniforms:E,vertexTextures:U,maxSamples:w}}function rd(i){const t=this;let e=null,n=0,s=!1,r=!1;const a=new Mn,o=new zt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(f,d){const m=f.length!==0||d||n!==0||s;return s=d,n=f.length,m},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(f,d){e=u(f,d,0)},this.setState=function(f,d,m){const g=f.clippingPlanes,x=f.clipIntersection,p=f.clipShadows,h=i.get(f);if(!s||g===null||g.length===0||r&&!p)r?u(null):c();else{const A=r?0:n,b=A*4;let E=h.clippingState||null;l.value=E,E=u(g,d,b,m);for(let U=0;U!==b;++U)E[U]=e[U];h.clippingState=E,this.numIntersection=x?this.numPlanes:0,this.numPlanes+=A}};function c(){l.value!==e&&(l.value=e,l.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function u(f,d,m,g){const x=f!==null?f.length:0;let p=null;if(x!==0){if(p=l.value,g!==!0||p===null){const h=m+x*4,A=d.matrixWorldInverse;o.getNormalMatrix(A),(p===null||p.length0){const c=new nh(l.height);return c.fromEquirectangularTexture(i,a),t.set(a,c),a.addEventListener("dispose",s),e(c.texture,a.mapping)}else return null}}return a}function s(a){const o=a.target;o.removeEventListener("dispose",s);const l=t.get(o);l!==void 0&&(t.delete(o),l.dispose())}function r(){t=new WeakMap}return{get:n,dispose:r}}const hi=4,Mo=[.125,.215,.35,.446,.526,.582],Fn=20,dr=new Sl,So=new Rt;let pr=null,mr=0,_r=0,gr=!1;const In=(1+Math.sqrt(5))/2,ai=1/In,yo=[new R(-In,ai,0),new R(In,ai,0),new R(-ai,0,In),new R(ai,0,In),new R(0,In,-ai),new R(0,In,ai),new R(-1,1,-1),new R(1,1,-1),new R(-1,1,1),new R(1,1,1)];class Eo{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,s=100){pr=this._renderer.getRenderTarget(),mr=this._renderer.getActiveCubeFace(),_r=this._renderer.getActiveMipmapLevel(),gr=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(t,n,s,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Ao(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=bo(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t2?b:0,b,b),u.setRenderTarget(s),x&&u.render(g,o),u.render(t,o)}g.geometry.dispose(),g.material.dispose(),u.toneMapping=d,u.autoClear=f,t.background=p}_textureToCubeUV(t,e){const n=this._renderer,s=t.mapping===_i||t.mapping===gi;s?(this._cubemapMaterial===null&&(this._cubemapMaterial=Ao()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=bo());const r=s?this._cubemapMaterial:this._equirectMaterial,a=new ze(this._lodPlanes[0],r),o=r.uniforms;o.envMap.value=t;const l=this._cubeSize;ms(e,0,0,3*l,2*l),n.setRenderTarget(e),n.render(a,dr)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;const s=this._lodPlanes.length;for(let r=1;rFn&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${Fn}`);const h=[];let A=0;for(let C=0;Cb-hi?s-b+hi:0),w=4*(this._cubeSize-E);ms(e,U,w,3*E,2*E),l.setRenderTarget(e),l.render(f,dr)}}function od(i){const t=[],e=[],n=[];let s=i;const r=i-hi+1+Mo.length;for(let a=0;ai-hi?l=Mo[a-i+hi-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),u=-c,f=1+c,d=[u,u,f,u,f,f,u,u,f,f,u,f],m=6,g=6,x=3,p=2,h=1,A=new Float32Array(x*g*m),b=new Float32Array(p*g*m),E=new Float32Array(h*g*m);for(let w=0;w2?0:-1,y=[C,N,0,C+2/3,N,0,C+2/3,N+1,0,C,N,0,C+2/3,N+1,0,C,N+1,0];A.set(y,x*g*w),b.set(d,p*g*w);const M=[w,w,w,w,w,w];E.set(M,h*g*w)}const U=new pe;U.setAttribute("position",new _e(A,x)),U.setAttribute("uv",new _e(b,p)),U.setAttribute("faceIndex",new _e(E,h)),t.push(U),s>hi&&s--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function To(i,t,e){const n=new qe(i,t,e);return n.texture.mapping=Is,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function ms(i,t,e,n,s){i.viewport.set(t,e,n,s),i.scissor.set(t,e,n,s)}function ld(i,t,e){const n=new Float32Array(Fn),s=new R(0,1,0);return new Re({name:"SphericalGaussianBlur",defines:{n:Fn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:s}},vertexShader:Ta(),fragmentShader:` +}`,Xt={alphahash_fragment:nu,alphahash_pars_fragment:iu,alphamap_fragment:su,alphamap_pars_fragment:ru,alphatest_fragment:au,alphatest_pars_fragment:ou,aomap_fragment:lu,aomap_pars_fragment:cu,batching_pars_vertex:hu,batching_vertex:uu,begin_vertex:du,beginnormal_vertex:fu,bsdfs:pu,iridescence_fragment:mu,bumpmap_pars_fragment:_u,clipping_planes_fragment:gu,clipping_planes_pars_fragment:vu,clipping_planes_pars_vertex:xu,clipping_planes_vertex:Mu,color_fragment:Su,color_pars_fragment:yu,color_pars_vertex:Eu,color_vertex:Tu,common:bu,cube_uv_reflection_fragment:Au,defaultnormal_vertex:wu,displacementmap_pars_vertex:Ru,displacementmap_vertex:Cu,emissivemap_fragment:Pu,emissivemap_pars_fragment:Du,colorspace_fragment:Lu,colorspace_pars_fragment:Uu,envmap_fragment:Iu,envmap_common_pars_fragment:Nu,envmap_pars_fragment:Fu,envmap_pars_vertex:Ou,envmap_physical_pars_fragment:ju,envmap_vertex:Bu,fog_vertex:zu,fog_pars_vertex:Hu,fog_fragment:ku,fog_pars_fragment:Vu,gradientmap_pars_fragment:Gu,lightmap_pars_fragment:Wu,lights_lambert_fragment:Xu,lights_lambert_pars_fragment:Yu,lights_pars_begin:qu,lights_toon_fragment:Zu,lights_toon_pars_fragment:Ku,lights_phong_fragment:$u,lights_phong_pars_fragment:Ju,lights_physical_fragment:Qu,lights_physical_pars_fragment:td,lights_fragment_begin:ed,lights_fragment_maps:nd,lights_fragment_end:id,logdepthbuf_fragment:sd,logdepthbuf_pars_fragment:rd,logdepthbuf_pars_vertex:ad,logdepthbuf_vertex:od,map_fragment:ld,map_pars_fragment:cd,map_particle_fragment:hd,map_particle_pars_fragment:ud,metalnessmap_fragment:dd,metalnessmap_pars_fragment:fd,morphinstance_vertex:pd,morphcolor_vertex:md,morphnormal_vertex:_d,morphtarget_pars_vertex:gd,morphtarget_vertex:vd,normal_fragment_begin:xd,normal_fragment_maps:Md,normal_pars_fragment:Sd,normal_pars_vertex:yd,normal_vertex:Ed,normalmap_pars_fragment:Td,clearcoat_normal_fragment_begin:bd,clearcoat_normal_fragment_maps:Ad,clearcoat_pars_fragment:wd,iridescence_pars_fragment:Rd,opaque_fragment:Cd,packing:Pd,premultiplied_alpha_fragment:Dd,project_vertex:Ld,dithering_fragment:Ud,dithering_pars_fragment:Id,roughnessmap_fragment:Nd,roughnessmap_pars_fragment:Fd,shadowmap_pars_fragment:Od,shadowmap_pars_vertex:Bd,shadowmap_vertex:zd,shadowmask_pars_fragment:Hd,skinbase_vertex:kd,skinning_pars_vertex:Vd,skinning_vertex:Gd,skinnormal_vertex:Wd,specularmap_fragment:Xd,specularmap_pars_fragment:Yd,tonemapping_fragment:qd,tonemapping_pars_fragment:jd,transmission_fragment:Zd,transmission_pars_fragment:Kd,uv_pars_fragment:$d,uv_pars_vertex:Jd,uv_vertex:Qd,worldpos_vertex:tf,background_vert:ef,background_frag:nf,backgroundCube_vert:sf,backgroundCube_frag:rf,cube_vert:af,cube_frag:of,depth_vert:lf,depth_frag:cf,distanceRGBA_vert:hf,distanceRGBA_frag:uf,equirect_vert:df,equirect_frag:ff,linedashed_vert:pf,linedashed_frag:mf,meshbasic_vert:_f,meshbasic_frag:gf,meshlambert_vert:vf,meshlambert_frag:xf,meshmatcap_vert:Mf,meshmatcap_frag:Sf,meshnormal_vert:yf,meshnormal_frag:Ef,meshphong_vert:Tf,meshphong_frag:bf,meshphysical_vert:Af,meshphysical_frag:wf,meshtoon_vert:Rf,meshtoon_frag:Cf,points_vert:Pf,points_frag:Df,shadow_vert:Lf,shadow_frag:Uf,sprite_vert:If,sprite_frag:Nf},dt={common:{diffuse:{value:new Dt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Wt},alphaMap:{value:null},alphaMapTransform:{value:new Wt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Wt}},envmap:{envMap:{value:null},envMapRotation:{value:new Wt},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Wt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Wt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Wt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Wt},normalScale:{value:new At(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Wt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Wt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Wt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Wt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Dt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Dt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Wt},alphaTest:{value:0},uvTransform:{value:new Wt}},sprite:{diffuse:{value:new Dt(16777215)},opacity:{value:1},center:{value:new At(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Wt},alphaMap:{value:null},alphaMapTransform:{value:new Wt},alphaTest:{value:0}}},rn={basic:{uniforms:Pe([dt.common,dt.specularmap,dt.envmap,dt.aomap,dt.lightmap,dt.fog]),vertexShader:Xt.meshbasic_vert,fragmentShader:Xt.meshbasic_frag},lambert:{uniforms:Pe([dt.common,dt.specularmap,dt.envmap,dt.aomap,dt.lightmap,dt.emissivemap,dt.bumpmap,dt.normalmap,dt.displacementmap,dt.fog,dt.lights,{emissive:{value:new Dt(0)}}]),vertexShader:Xt.meshlambert_vert,fragmentShader:Xt.meshlambert_frag},phong:{uniforms:Pe([dt.common,dt.specularmap,dt.envmap,dt.aomap,dt.lightmap,dt.emissivemap,dt.bumpmap,dt.normalmap,dt.displacementmap,dt.fog,dt.lights,{emissive:{value:new Dt(0)},specular:{value:new Dt(1118481)},shininess:{value:30}}]),vertexShader:Xt.meshphong_vert,fragmentShader:Xt.meshphong_frag},standard:{uniforms:Pe([dt.common,dt.envmap,dt.aomap,dt.lightmap,dt.emissivemap,dt.bumpmap,dt.normalmap,dt.displacementmap,dt.roughnessmap,dt.metalnessmap,dt.fog,dt.lights,{emissive:{value:new Dt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Xt.meshphysical_vert,fragmentShader:Xt.meshphysical_frag},toon:{uniforms:Pe([dt.common,dt.aomap,dt.lightmap,dt.emissivemap,dt.bumpmap,dt.normalmap,dt.displacementmap,dt.gradientmap,dt.fog,dt.lights,{emissive:{value:new Dt(0)}}]),vertexShader:Xt.meshtoon_vert,fragmentShader:Xt.meshtoon_frag},matcap:{uniforms:Pe([dt.common,dt.bumpmap,dt.normalmap,dt.displacementmap,dt.fog,{matcap:{value:null}}]),vertexShader:Xt.meshmatcap_vert,fragmentShader:Xt.meshmatcap_frag},points:{uniforms:Pe([dt.points,dt.fog]),vertexShader:Xt.points_vert,fragmentShader:Xt.points_frag},dashed:{uniforms:Pe([dt.common,dt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Xt.linedashed_vert,fragmentShader:Xt.linedashed_frag},depth:{uniforms:Pe([dt.common,dt.displacementmap]),vertexShader:Xt.depth_vert,fragmentShader:Xt.depth_frag},normal:{uniforms:Pe([dt.common,dt.bumpmap,dt.normalmap,dt.displacementmap,{opacity:{value:1}}]),vertexShader:Xt.meshnormal_vert,fragmentShader:Xt.meshnormal_frag},sprite:{uniforms:Pe([dt.sprite,dt.fog]),vertexShader:Xt.sprite_vert,fragmentShader:Xt.sprite_frag},background:{uniforms:{uvTransform:{value:new Wt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Xt.background_vert,fragmentShader:Xt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Wt}},vertexShader:Xt.backgroundCube_vert,fragmentShader:Xt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Xt.cube_vert,fragmentShader:Xt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Xt.equirect_vert,fragmentShader:Xt.equirect_frag},distanceRGBA:{uniforms:Pe([dt.common,dt.displacementmap,{referencePosition:{value:new P},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Xt.distanceRGBA_vert,fragmentShader:Xt.distanceRGBA_frag},shadow:{uniforms:Pe([dt.lights,dt.fog,{color:{value:new Dt(0)},opacity:{value:1}}]),vertexShader:Xt.shadow_vert,fragmentShader:Xt.shadow_frag}};rn.physical={uniforms:Pe([rn.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Wt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Wt},clearcoatNormalScale:{value:new At(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Wt},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Wt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Wt},sheen:{value:0},sheenColor:{value:new Dt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Wt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Wt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Wt},transmissionSamplerSize:{value:new At},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Wt},attenuationDistance:{value:0},attenuationColor:{value:new Dt(0)},specularColor:{value:new Dt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Wt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Wt},anisotropyVector:{value:new At},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Wt}}]),vertexShader:Xt.meshphysical_vert,fragmentShader:Xt.meshphysical_frag};const Ls={r:0,b:0,g:0},Wn=new hn,Ff=new ne;function Of(i,t,e,n,s,r,a){const o=new Dt(0);let l=r===!0?0:1,c,u,d=null,f=0,m=null;function g(b){let E=b.isScene===!0?b.background:null;return E&&E.isTexture&&(E=(b.backgroundBlurriness>0?e:t).get(E)),E}function x(b){let E=!1;const D=g(b);D===null?h(o,l):D&&D.isColor&&(h(D,1),E=!0);const w=i.xr.getEnvironmentBlendMode();w==="additive"?n.buffers.color.setClear(0,0,0,1,a):w==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(i.autoClear||E)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil))}function p(b,E){const D=g(E);D&&(D.isCubeTexture||D.mapping===Qs)?(u===void 0&&(u=new De(new es(1,1,1),new Ie({name:"BackgroundCubeMaterial",uniforms:Fi(rn.backgroundCube.uniforms),vertexShader:rn.backgroundCube.vertexShader,fragmentShader:rn.backgroundCube.fragmentShader,side:Ne,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(w,R,N){this.matrixWorld.copyPosition(N.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(u)),Wn.copy(E.backgroundRotation),Wn.x*=-1,Wn.y*=-1,Wn.z*=-1,D.isCubeTexture&&D.isRenderTargetTexture===!1&&(Wn.y*=-1,Wn.z*=-1),u.material.uniforms.envMap.value=D,u.material.uniforms.flipEnvMap.value=D.isCubeTexture&&D.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=E.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(Ff.makeRotationFromEuler(Wn)),u.material.toneMapped=Qt.getTransfer(D.colorSpace)!==re,(d!==D||f!==D.version||m!==i.toneMapping)&&(u.material.needsUpdate=!0,d=D,f=D.version,m=i.toneMapping),u.layers.enableAll(),b.unshift(u,u.geometry,u.material,0,0,null)):D&&D.isTexture&&(c===void 0&&(c=new De(new er(2,2),new Ie({name:"BackgroundMaterial",uniforms:Fi(rn.background.uniforms),vertexShader:rn.background.vertexShader,fragmentShader:rn.background.fragmentShader,side:Nn,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(c)),c.material.uniforms.t2D.value=D,c.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,c.material.toneMapped=Qt.getTransfer(D.colorSpace)!==re,D.matrixAutoUpdate===!0&&D.updateMatrix(),c.material.uniforms.uvTransform.value.copy(D.matrix),(d!==D||f!==D.version||m!==i.toneMapping)&&(c.material.needsUpdate=!0,d=D,f=D.version,m=i.toneMapping),c.layers.enableAll(),b.unshift(c,c.geometry,c.material,0,0,null))}function h(b,E){b.getRGB(Ls,Wl(i)),n.buffers.color.setClear(Ls.r,Ls.g,Ls.b,E,a)}function A(){u!==void 0&&(u.geometry.dispose(),u.material.dispose()),c!==void 0&&(c.geometry.dispose(),c.material.dispose())}return{getClearColor:function(){return o},setClearColor:function(b,E=1){o.set(b),l=E,h(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(b){l=b,h(o,l)},render:x,addToRenderList:p,dispose:A}}function Bf(i,t){const e=i.getParameter(i.MAX_VERTEX_ATTRIBS),n={},s=f(null);let r=s,a=!1;function o(M,C,W,H,q){let J=!1;const X=d(H,W,C);r!==X&&(r=X,c(r.object)),J=m(M,H,W,q),J&&g(M,H,W,q),q!==null&&t.update(q,i.ELEMENT_ARRAY_BUFFER),(J||a)&&(a=!1,E(M,C,W,H),q!==null&&i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t.get(q).buffer))}function l(){return i.createVertexArray()}function c(M){return i.bindVertexArray(M)}function u(M){return i.deleteVertexArray(M)}function d(M,C,W){const H=W.wireframe===!0;let q=n[M.id];q===void 0&&(q={},n[M.id]=q);let J=q[C.id];J===void 0&&(J={},q[C.id]=J);let X=J[H];return X===void 0&&(X=f(l()),J[H]=X),X}function f(M){const C=[],W=[],H=[];for(let q=0;q=0){const xt=q[k];let Rt=J[k];if(Rt===void 0&&(k==="instanceMatrix"&&M.instanceMatrix&&(Rt=M.instanceMatrix),k==="instanceColor"&&M.instanceColor&&(Rt=M.instanceColor)),xt===void 0||xt.attribute!==Rt||Rt&&xt.data!==Rt.data)return!0;X++}return r.attributesNum!==X||r.index!==H}function g(M,C,W,H){const q={},J=C.attributes;let X=0;const at=W.getAttributes();for(const k in at)if(at[k].location>=0){let xt=J[k];xt===void 0&&(k==="instanceMatrix"&&M.instanceMatrix&&(xt=M.instanceMatrix),k==="instanceColor"&&M.instanceColor&&(xt=M.instanceColor));const Rt={};Rt.attribute=xt,xt&&xt.data&&(Rt.data=xt.data),q[k]=Rt,X++}r.attributes=q,r.attributesNum=X,r.index=H}function x(){const M=r.newAttributes;for(let C=0,W=M.length;C=0){let ut=q[at];if(ut===void 0&&(at==="instanceMatrix"&&M.instanceMatrix&&(ut=M.instanceMatrix),at==="instanceColor"&&M.instanceColor&&(ut=M.instanceColor)),ut!==void 0){const xt=ut.normalized,Rt=ut.itemSize,Vt=t.get(ut);if(Vt===void 0)continue;const wt=Vt.buffer,V=Vt.type,it=Vt.bytesPerElement,Mt=V===i.INT||V===i.UNSIGNED_INT||ut.gpuType===Ba;if(ut.isInterleavedBufferAttribute){const ct=ut.data,Ct=ct.stride,Pt=ut.offset;if(ct.isInstancedInterleavedBuffer){for(let nt=0;nt0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=e.precision!==void 0?e.precision:"highp";const u=l(c);u!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",u,"instead."),c=u);const d=e.logarithmicDepthBuffer===!0,f=e.reverseDepthBuffer===!0&&t.has("EXT_clip_control"),m=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),g=i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),x=i.getParameter(i.MAX_TEXTURE_SIZE),p=i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),h=i.getParameter(i.MAX_VERTEX_ATTRIBS),A=i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),b=i.getParameter(i.MAX_VARYING_VECTORS),E=i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),D=g>0,w=i.getParameter(i.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:r,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reverseDepthBuffer:f,maxTextures:m,maxVertexTextures:g,maxTextureSize:x,maxCubemapSize:p,maxAttributes:h,maxVertexUniforms:A,maxVaryings:b,maxFragmentUniforms:E,vertexTextures:D,maxSamples:w}}function kf(i){const t=this;let e=null,n=0,s=!1,r=!1;const a=new Dn,o=new Wt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,f){const m=d.length!==0||f||n!==0||s;return s=f,n=d.length,m},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(d,f){e=u(d,f,0)},this.setState=function(d,f,m){const g=d.clippingPlanes,x=d.clipIntersection,p=d.clipShadows,h=i.get(d);if(!s||g===null||g.length===0||r&&!p)r?u(null):c();else{const A=r?0:n,b=A*4;let E=h.clippingState||null;l.value=E,E=u(g,f,b,m);for(let D=0;D!==b;++D)E[D]=e[D];h.clippingState=E,this.numIntersection=x?this.numPlanes:0,this.numPlanes+=A}};function c(){l.value!==e&&(l.value=e,l.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function u(d,f,m,g){const x=d!==null?d.length:0;let p=null;if(x!==0){if(p=l.value,g!==!0||p===null){const h=m+x*4,A=f.matrixWorldInverse;o.getNormalMatrix(A),(p===null||p.length0){const c=new Nh(l.height);return c.fromEquirectangularTexture(i,a),t.set(a,c),a.addEventListener("dispose",s),e(c.texture,a.mapping)}else return null}}return a}function s(a){const o=a.target;o.removeEventListener("dispose",s);const l=t.get(o);l!==void 0&&(t.delete(o),l.dispose())}function r(){t=new WeakMap}return{get:n,dispose:r}}const bi=4,qo=[.125,.215,.35,.446,.526,.582],jn=20,Lr=new Kl,jo=new Dt;let Ur=null,Ir=0,Nr=0,Fr=!1;const Yn=(1+Math.sqrt(5))/2,Si=1/Yn,Zo=[new P(-Yn,Si,0),new P(Yn,Si,0),new P(-Si,0,Yn),new P(Si,0,Yn),new P(0,Yn,-Si),new P(0,Yn,Si),new P(-1,1,-1),new P(1,1,-1),new P(-1,1,1),new P(1,1,1)];class Ko{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,s=100){Ur=this._renderer.getRenderTarget(),Ir=this._renderer.getActiveCubeFace(),Nr=this._renderer.getActiveMipmapLevel(),Fr=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(t,n,s,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Qo(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Jo(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t2?b:0,b,b),u.setRenderTarget(s),x&&u.render(g,o),u.render(t,o)}g.geometry.dispose(),g.material.dispose(),u.toneMapping=f,u.autoClear=d,t.background=p}_textureToCubeUV(t,e){const n=this._renderer,s=t.mapping===Di||t.mapping===Li;s?(this._cubemapMaterial===null&&(this._cubemapMaterial=Qo()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Jo());const r=s?this._cubemapMaterial:this._equirectMaterial,a=new De(this._lodPlanes[0],r),o=r.uniforms;o.envMap.value=t;const l=this._cubeSize;Us(e,0,0,3*l,2*l),n.setRenderTarget(e),n.render(a,Lr)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;const s=this._lodPlanes.length;for(let r=1;rjn&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${jn}`);const h=[];let A=0;for(let R=0;Rb-bi?s-b+bi:0),w=4*(this._cubeSize-E);Us(e,D,w,3*E,2*E),l.setRenderTarget(e),l.render(d,Lr)}}function Gf(i){const t=[],e=[],n=[];let s=i;const r=i-bi+1+qo.length;for(let a=0;ai-bi?l=qo[a-i+bi-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),u=-c,d=1+c,f=[u,u,d,u,d,d,u,u,d,d,u,d],m=6,g=6,x=3,p=2,h=1,A=new Float32Array(x*g*m),b=new Float32Array(p*g*m),E=new Float32Array(h*g*m);for(let w=0;w2?0:-1,y=[R,N,0,R+2/3,N,0,R+2/3,N+1,0,R,N,0,R+2/3,N+1,0,R,N+1,0];A.set(y,x*g*w),b.set(f,p*g*w);const M=[w,w,w,w,w,w];E.set(M,h*g*w)}const D=new xe;D.setAttribute("position",new ve(A,x)),D.setAttribute("uv",new ve(b,p)),D.setAttribute("faceIndex",new ve(E,h)),t.push(D),s>bi&&s--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function $o(i,t,e){const n=new en(i,t,e);return n.texture.mapping=Qs,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Us(i,t,e,n,s){i.viewport.set(t,e,n,s),i.scissor.set(t,e,n,s)}function Wf(i,t,e){const n=new Float32Array(jn),s=new P(0,1,0);return new Ie({name:"SphericalGaussianBlur",defines:{n:jn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:s}},vertexShader:Za(),fragmentShader:` precision mediump float; precision mediump int; @@ -3631,7 +3631,7 @@ void main() { } } - `,blending:hn,depthTest:!1,depthWrite:!1})}function bo(){return new Re({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Ta(),fragmentShader:` + `,blending:Mn,depthTest:!1,depthWrite:!1})}function Jo(){return new Ie({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Za(),fragmentShader:` precision mediump float; precision mediump int; @@ -3650,7 +3650,7 @@ void main() { gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } - `,blending:hn,depthTest:!1,depthWrite:!1})}function Ao(){return new Re({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Ta(),fragmentShader:` + `,blending:Mn,depthTest:!1,depthWrite:!1})}function Qo(){return new Ie({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Za(),fragmentShader:` precision mediump float; precision mediump int; @@ -3666,7 +3666,7 @@ void main() { gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } - `,blending:hn,depthTest:!1,depthWrite:!1})}function Ta(){return` + `,blending:Mn,depthTest:!1,depthWrite:!1})}function Za(){return` precision mediump float; precision mediump int; @@ -3721,17 +3721,17 @@ void main() { gl_Position = vec4( position, 1.0 ); } - `}function cd(i){let t=new WeakMap,e=null;function n(o){if(o&&o.isTexture){const l=o.mapping,c=l===Pr||l===Dr,u=l===_i||l===gi;if(c||u){let f=t.get(o);const d=f!==void 0?f.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==d)return e===null&&(e=new Eo(i)),f=c?e.fromEquirectangular(o,f):e.fromCubemap(o,f),f.texture.pmremVersion=o.pmremVersion,t.set(o,f),f.texture;if(f!==void 0)return f.texture;{const m=o.image;return c&&m&&m.height>0||u&&m&&s(m)?(e===null&&(e=new Eo(i)),f=c?e.fromEquirectangular(o):e.fromCubemap(o),f.texture.pmremVersion=o.pmremVersion,t.set(o,f),o.addEventListener("dispose",r),f.texture):null}}}return o}function s(o){let l=0;const c=6;for(let u=0;ut.maxTextureSize&&(U=Math.ceil(E/t.maxTextureSize),E=t.maxTextureSize);const w=new Float32Array(E*U*4*f),C=new ul(w,E,U,f);C.type=ln,C.needsUpdate=!0;const N=b*4;for(let M=0;M0)return i;const s=t*e;let r=Ro[s];if(r===void 0&&(r=new Float32Array(s),Ro[s]=r),t!==0){n.toArray(r,0);for(let a=1,o=0;a!==t;++a)o+=e,i[a].toArray(r,o)}return r}function ue(i,t){if(i.length!==t.length)return!1;for(let e=0,n=i.length;e0||u&&m&&s(m)?(e===null&&(e=new Ko(i)),d=c?e.fromEquirectangular(o):e.fromCubemap(o),d.texture.pmremVersion=o.pmremVersion,t.set(o,d),o.addEventListener("dispose",r),d.texture):null}}}return o}function s(o){let l=0;const c=6;for(let u=0;ut.maxTextureSize&&(D=Math.ceil(E/t.maxTextureSize),E=t.maxTextureSize);const w=new Float32Array(E*D*4*d),R=new Hl(w,E,D,d);R.type=cn,R.needsUpdate=!0;const N=b*4;for(let M=0;M0)return i;const s=t*e;let r=el[s];if(r===void 0&&(r=new Float32Array(s),el[s]=r),t!==0){n.toArray(r,0);for(let a=1,o=0;a!==t;++a)o+=e,i[a].toArray(r,o)}return r}function me(i,t){if(i.length!==t.length)return!1;for(let e=0,n=i.length;e":" "} ${o}: ${e[a]}`)}return n.join(` -`)}const No=new zt;function cp(i){jt._getMatrix(No,jt.workingColorSpace,i);const t=`mat3( ${No.elements.map(e=>e.toFixed(4))} )`;switch(jt.getTransfer(i)){case As:return[t,"LinearTransferOETF"];case Qt:return[t,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",i),[t,"LinearTransferOETF"]}}function Fo(i,t,e){const n=i.getShaderParameter(t,i.COMPILE_STATUS),s=i.getShaderInfoLog(t).trim();if(n&&s==="")return"";const r=/ERROR: 0:(\d+)/.exec(s);if(r){const a=parseInt(r[1]);return e.toUpperCase()+` +`)}const ll=new Wt;function Xp(i){Qt._getMatrix(ll,Qt.workingColorSpace,i);const t=`mat3( ${ll.elements.map(e=>e.toFixed(4))} )`;switch(Qt.getTransfer(i)){case Xs:return[t,"LinearTransferOETF"];case re:return[t,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",i),[t,"LinearTransferOETF"]}}function cl(i,t,e){const n=i.getShaderParameter(t,i.COMPILE_STATUS),s=i.getShaderInfoLog(t).trim();if(n&&s==="")return"";const r=/ERROR: 0:(\d+)/.exec(s);if(r){const a=parseInt(r[1]);return e.toUpperCase()+` `+s+` -`+lp(i.getShaderSource(t),a)}else return s}function hp(i,t){const e=cp(t);return[`vec4 ${i}( vec4 value ) {`,` return ${e[1]}( vec4( value.rgb * ${e[0]}, value.a ) );`,"}"].join(` -`)}function up(i,t){let e;switch(t){case dc:e="Linear";break;case pc:e="Reinhard";break;case mc:e="Cineon";break;case Zo:e="ACESFilmic";break;case gc:e="AgX";break;case vc:e="Neutral";break;case _c:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+i+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}const _s=new R;function fp(){jt.getLuminanceCoefficients(_s);const i=_s.x.toFixed(4),t=_s.y.toFixed(4),e=_s.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${i}, ${t}, ${e} );`," return dot( weights, rgb );","}"].join(` -`)}function dp(i){return[i.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",i.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Ii).join(` -`)}function pp(i){const t=[];for(const e in i){const n=i[e];n!==!1&&t.push("#define "+e+" "+n)}return t.join(` -`)}function mp(i,t){const e={},n=i.getProgramParameter(t,i.ACTIVE_ATTRIBUTES);for(let s=0;s/gm;function fa(i){return i.replace(_p,vp)}const gp=new Map;function vp(i,t){let e=Gt[t];if(e===void 0){const n=gp.get(t);if(n!==void 0)e=Gt[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,n);else throw new Error("Can not resolve #include <"+t+">")}return fa(e)}const xp=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function zo(i){return i.replace(xp,Mp)}function Mp(i,t,e,n){let s="";for(let r=parseInt(t);r/gm;function Ia(i){return i.replace(Jp,tm)}const Qp=new Map;function tm(i,t){let e=Xt[t];if(e===void 0){const n=Qp.get(t);if(n!==void 0)e=Xt[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,n);else throw new Error("Can not resolve #include <"+t+">")}return Ia(e)}const em=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function dl(i){return i.replace(em,nm)}function nm(i,t,e,n){let s="";for(let r=parseInt(t);r0&&(p+=` -`),h=["#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,g].filter(Ii).join(` +`),h=["#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,g].filter(Ji).join(` `),h.length>0&&(h+=` -`)):(p=[Ho(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,g,e.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",e.batching?"#define USE_BATCHING":"",e.batchingColor?"#define USE_BATCHING_COLOR":"",e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.instancingMorph?"#define USE_INSTANCING_MORPH":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+u:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.displacementMap?"#define USE_DISPLACEMENTMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.mapUv?"#define MAP_UV "+e.mapUv:"",e.alphaMapUv?"#define ALPHAMAP_UV "+e.alphaMapUv:"",e.lightMapUv?"#define LIGHTMAP_UV "+e.lightMapUv:"",e.aoMapUv?"#define AOMAP_UV "+e.aoMapUv:"",e.emissiveMapUv?"#define EMISSIVEMAP_UV "+e.emissiveMapUv:"",e.bumpMapUv?"#define BUMPMAP_UV "+e.bumpMapUv:"",e.normalMapUv?"#define NORMALMAP_UV "+e.normalMapUv:"",e.displacementMapUv?"#define DISPLACEMENTMAP_UV "+e.displacementMapUv:"",e.metalnessMapUv?"#define METALNESSMAP_UV "+e.metalnessMapUv:"",e.roughnessMapUv?"#define ROUGHNESSMAP_UV "+e.roughnessMapUv:"",e.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+e.anisotropyMapUv:"",e.clearcoatMapUv?"#define CLEARCOATMAP_UV "+e.clearcoatMapUv:"",e.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+e.clearcoatNormalMapUv:"",e.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+e.clearcoatRoughnessMapUv:"",e.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+e.iridescenceMapUv:"",e.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+e.iridescenceThicknessMapUv:"",e.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+e.sheenColorMapUv:"",e.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+e.sheenRoughnessMapUv:"",e.specularMapUv?"#define SPECULARMAP_UV "+e.specularMapUv:"",e.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+e.specularColorMapUv:"",e.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+e.specularIntensityMapUv:"",e.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+e.transmissionMapUv:"",e.thicknessMapUv?"#define THICKNESSMAP_UV "+e.thicknessMapUv:"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` -`].filter(Ii).join(` -`),h=[Ho(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,g,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+c:"",e.envMap?"#define "+u:"",e.envMap?"#define "+f:"",d?"#define CUBEUV_TEXEL_WIDTH "+d.texelWidth:"",d?"#define CUBEUV_TEXEL_HEIGHT "+d.texelHeight:"",d?"#define CUBEUV_MAX_MIP "+d.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.dispersion?"#define USE_DISPERSION":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor||e.batchingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==yn?"#define TONE_MAPPING":"",e.toneMapping!==yn?Gt.tonemapping_pars_fragment:"",e.toneMapping!==yn?up("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",Gt.colorspace_pars_fragment,hp("linearToOutputTexel",e.outputColorSpace),fp(),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",` -`].filter(Ii).join(` -`)),a=fa(a),a=Oo(a,e),a=Bo(a,e),o=fa(o),o=Oo(o,e),o=Bo(o,e),a=zo(a),o=zo(o),e.isRawShaderMaterial!==!0&&(A=`#version 300 es +`)):(p=[fl(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,g,e.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",e.batching?"#define USE_BATCHING":"",e.batchingColor?"#define USE_BATCHING_COLOR":"",e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.instancingMorph?"#define USE_INSTANCING_MORPH":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+u:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.displacementMap?"#define USE_DISPLACEMENTMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.mapUv?"#define MAP_UV "+e.mapUv:"",e.alphaMapUv?"#define ALPHAMAP_UV "+e.alphaMapUv:"",e.lightMapUv?"#define LIGHTMAP_UV "+e.lightMapUv:"",e.aoMapUv?"#define AOMAP_UV "+e.aoMapUv:"",e.emissiveMapUv?"#define EMISSIVEMAP_UV "+e.emissiveMapUv:"",e.bumpMapUv?"#define BUMPMAP_UV "+e.bumpMapUv:"",e.normalMapUv?"#define NORMALMAP_UV "+e.normalMapUv:"",e.displacementMapUv?"#define DISPLACEMENTMAP_UV "+e.displacementMapUv:"",e.metalnessMapUv?"#define METALNESSMAP_UV "+e.metalnessMapUv:"",e.roughnessMapUv?"#define ROUGHNESSMAP_UV "+e.roughnessMapUv:"",e.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+e.anisotropyMapUv:"",e.clearcoatMapUv?"#define CLEARCOATMAP_UV "+e.clearcoatMapUv:"",e.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+e.clearcoatNormalMapUv:"",e.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+e.clearcoatRoughnessMapUv:"",e.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+e.iridescenceMapUv:"",e.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+e.iridescenceThicknessMapUv:"",e.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+e.sheenColorMapUv:"",e.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+e.sheenRoughnessMapUv:"",e.specularMapUv?"#define SPECULARMAP_UV "+e.specularMapUv:"",e.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+e.specularColorMapUv:"",e.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+e.specularIntensityMapUv:"",e.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+e.transmissionMapUv:"",e.thicknessMapUv?"#define THICKNESSMAP_UV "+e.thicknessMapUv:"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(Ji).join(` +`),h=[fl(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,g,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+c:"",e.envMap?"#define "+u:"",e.envMap?"#define "+d:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.dispersion?"#define USE_DISPERSION":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor||e.batchingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==Un?"#define TONE_MAPPING":"",e.toneMapping!==Un?Xt.tonemapping_pars_fragment:"",e.toneMapping!==Un?qp("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",Xt.colorspace_pars_fragment,Yp("linearToOutputTexel",e.outputColorSpace),jp(),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",` +`].filter(Ji).join(` +`)),a=Ia(a),a=hl(a,e),a=ul(a,e),o=Ia(o),o=hl(o,e),o=ul(o,e),a=dl(a),o=dl(o),e.isRawShaderMaterial!==!0&&(A=`#version 300 es `,p=[m,"#define attribute in","#define varying out","#define texture2D texture"].join(` `)+` -`+p,h=["#define varying in",e.glslVersion===Ba?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===Ba?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`+p,h=["#define varying in",e.glslVersion===lo?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===lo?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` `)+` -`+h);const b=A+p+a,E=A+h+o,U=Io(s,s.VERTEX_SHADER,b),w=Io(s,s.FRAGMENT_SHADER,E);s.attachShader(x,U),s.attachShader(x,w),e.index0AttributeName!==void 0?s.bindAttribLocation(x,0,e.index0AttributeName):e.morphTargets===!0&&s.bindAttribLocation(x,0,"position"),s.linkProgram(x);function C(P){if(i.debug.checkShaderErrors){const W=s.getProgramInfoLog(x).trim(),H=s.getShaderInfoLog(U).trim(),Y=s.getShaderInfoLog(w).trim();let Q=!0,k=!0;if(s.getProgramParameter(x,s.LINK_STATUS)===!1)if(Q=!1,typeof i.debug.onShaderError=="function")i.debug.onShaderError(s,x,U,w);else{const it=Fo(s,U,"vertex"),V=Fo(s,w,"fragment");console.error("THREE.WebGLProgram: Shader Error "+s.getError()+" - VALIDATE_STATUS "+s.getProgramParameter(x,s.VALIDATE_STATUS)+` +`+h);const b=A+p+a,E=A+h+o,D=ol(s,s.VERTEX_SHADER,b),w=ol(s,s.FRAGMENT_SHADER,E);s.attachShader(x,D),s.attachShader(x,w),e.index0AttributeName!==void 0?s.bindAttribLocation(x,0,e.index0AttributeName):e.morphTargets===!0&&s.bindAttribLocation(x,0,"position"),s.linkProgram(x);function R(C){if(i.debug.checkShaderErrors){const W=s.getProgramInfoLog(x).trim(),H=s.getShaderInfoLog(D).trim(),q=s.getShaderInfoLog(w).trim();let J=!0,X=!0;if(s.getProgramParameter(x,s.LINK_STATUS)===!1)if(J=!1,typeof i.debug.onShaderError=="function")i.debug.onShaderError(s,x,D,w);else{const at=cl(s,D,"vertex"),k=cl(s,w,"fragment");console.error("THREE.WebGLProgram: Shader Error "+s.getError()+" - VALIDATE_STATUS "+s.getProgramParameter(x,s.VALIDATE_STATUS)+` -Material Name: `+P.name+` -Material Type: `+P.type+` +Material Name: `+C.name+` +Material Type: `+C.type+` Program Info Log: `+W+` -`+it+` -`+V)}else W!==""?console.warn("THREE.WebGLProgram: Program Info Log:",W):(H===""||Y==="")&&(k=!1);k&&(P.diagnostics={runnable:Q,programLog:W,vertexShader:{log:H,prefix:p},fragmentShader:{log:Y,prefix:h}})}s.deleteShader(U),s.deleteShader(w),N=new bs(s,x),y=mp(s,x)}let N;this.getUniforms=function(){return N===void 0&&C(this),N};let y;this.getAttributes=function(){return y===void 0&&C(this),y};let M=e.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return M===!1&&(M=s.getProgramParameter(x,ap)),M},this.destroy=function(){n.releaseStatesOfProgram(this),s.deleteProgram(x),this.program=void 0},this.type=e.shaderType,this.name=e.shaderName,this.id=op++,this.cacheKey=t,this.usedTimes=1,this.program=x,this.vertexShader=U,this.fragmentShader=w,this}let wp=0;class Rp{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){const e=t.vertexShader,n=t.fragmentShader,s=this._getShaderStage(e),r=this._getShaderStage(n),a=this._getShaderCacheForMaterial(t);return a.has(s)===!1&&(a.add(s),s.usedTimes++),a.has(r)===!1&&(a.add(r),r.usedTimes++),this}remove(t){const e=this.materialCache.get(t);for(const n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){const e=this.materialCache;let n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){const e=this.shaderCache;let n=e.get(t);return n===void 0&&(n=new Cp(t),e.set(t,n)),n}}class Cp{constructor(t){this.id=wp++,this.code=t,this.usedTimes=0}}function Pp(i,t,e,n,s,r,a){const o=new Ma,l=new Rp,c=new Set,u=[],f=s.logarithmicDepthBuffer,d=s.vertexTextures;let m=s.precision;const g={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function x(y){return c.add(y),y===0?"uv":`uv${y}`}function p(y,M,P,W,H){const Y=W.fog,Q=H.geometry,k=y.isMeshStandardMaterial?W.environment:null,it=(y.isMeshStandardMaterial?e:t).get(y.envMap||k),V=it&&it.mapping===Is?it.image.height:null,ht=g[y.type];y.precision!==null&&(m=s.getMaxPrecision(y.precision),m!==y.precision&&console.warn("THREE.WebGLProgram.getParameters:",y.precision,"not supported, using",m,"instead."));const gt=Q.morphAttributes.position||Q.morphAttributes.normal||Q.morphAttributes.color,wt=gt!==void 0?gt.length:0;let Ht=0;Q.morphAttributes.position!==void 0&&(Ht=1),Q.morphAttributes.normal!==void 0&&(Ht=2),Q.morphAttributes.color!==void 0&&(Ht=3);let Zt,q,lt,Tt;if(ht){const Jt=Ze[ht];Zt=Jt.vertexShader,q=Jt.fragmentShader}else Zt=y.vertexShader,q=y.fragmentShader,l.update(y),lt=l.getVertexShaderID(y),Tt=l.getFragmentShaderID(y);const ut=i.getRenderTarget(),Dt=i.state.buffers.depth.getReversed(),It=H.isInstancedMesh===!0,at=H.isBatchedMesh===!0,tt=!!y.map,O=!!y.matcap,st=!!it,T=!!y.aoMap,ot=!!y.lightMap,J=!!y.bumpMap,rt=!!y.normalMap,$=!!y.displacementMap,Ut=!!y.emissiveMap,vt=!!y.metalnessMap,S=!!y.roughnessMap,_=y.anisotropy>0,F=y.clearcoat>0,j=y.dispersion>0,K=y.iridescence>0,X=y.sheen>0,bt=y.transmission>0,pt=_&&!!y.anisotropyMap,Mt=F&&!!y.clearcoatMap,Xt=F&&!!y.clearcoatNormalMap,nt=F&&!!y.clearcoatRoughnessMap,St=K&&!!y.iridescenceMap,Lt=K&&!!y.iridescenceThicknessMap,Nt=X&&!!y.sheenColorMap,yt=X&&!!y.sheenRoughnessMap,Wt=!!y.specularMap,Vt=!!y.specularColorMap,se=!!y.specularIntensityMap,D=bt&&!!y.transmissionMap,ft=bt&&!!y.thicknessMap,G=!!y.gradientMap,Z=!!y.alphaMap,_t=y.alphaTest>0,mt=!!y.alphaHash,Bt=!!y.extensions;let ae=yn;y.toneMapped&&(ut===null||ut.isXRRenderTarget===!0)&&(ae=i.toneMapping);const ve={shaderID:ht,shaderType:y.type,shaderName:y.name,vertexShader:Zt,fragmentShader:q,defines:y.defines,customVertexShaderID:lt,customFragmentShaderID:Tt,isRawShaderMaterial:y.isRawShaderMaterial===!0,glslVersion:y.glslVersion,precision:m,batching:at,batchingColor:at&&H._colorsTexture!==null,instancing:It,instancingColor:It&&H.instanceColor!==null,instancingMorph:It&&H.morphTexture!==null,supportsVertexTextures:d,outputColorSpace:ut===null?i.outputColorSpace:ut.isXRRenderTarget===!0?ut.texture.colorSpace:Mi,alphaToCoverage:!!y.alphaToCoverage,map:tt,matcap:O,envMap:st,envMapMode:st&&it.mapping,envMapCubeUVHeight:V,aoMap:T,lightMap:ot,bumpMap:J,normalMap:rt,displacementMap:d&&$,emissiveMap:Ut,normalMapObjectSpace:rt&&y.normalMapType===yc,normalMapTangentSpace:rt&&y.normalMapType===ol,metalnessMap:vt,roughnessMap:S,anisotropy:_,anisotropyMap:pt,clearcoat:F,clearcoatMap:Mt,clearcoatNormalMap:Xt,clearcoatRoughnessMap:nt,dispersion:j,iridescence:K,iridescenceMap:St,iridescenceThicknessMap:Lt,sheen:X,sheenColorMap:Nt,sheenRoughnessMap:yt,specularMap:Wt,specularColorMap:Vt,specularIntensityMap:se,transmission:bt,transmissionMap:D,thicknessMap:ft,gradientMap:G,opaque:y.transparent===!1&&y.blending===fi&&y.alphaToCoverage===!1,alphaMap:Z,alphaTest:_t,alphaHash:mt,combine:y.combine,mapUv:tt&&x(y.map.channel),aoMapUv:T&&x(y.aoMap.channel),lightMapUv:ot&&x(y.lightMap.channel),bumpMapUv:J&&x(y.bumpMap.channel),normalMapUv:rt&&x(y.normalMap.channel),displacementMapUv:$&&x(y.displacementMap.channel),emissiveMapUv:Ut&&x(y.emissiveMap.channel),metalnessMapUv:vt&&x(y.metalnessMap.channel),roughnessMapUv:S&&x(y.roughnessMap.channel),anisotropyMapUv:pt&&x(y.anisotropyMap.channel),clearcoatMapUv:Mt&&x(y.clearcoatMap.channel),clearcoatNormalMapUv:Xt&&x(y.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:nt&&x(y.clearcoatRoughnessMap.channel),iridescenceMapUv:St&&x(y.iridescenceMap.channel),iridescenceThicknessMapUv:Lt&&x(y.iridescenceThicknessMap.channel),sheenColorMapUv:Nt&&x(y.sheenColorMap.channel),sheenRoughnessMapUv:yt&&x(y.sheenRoughnessMap.channel),specularMapUv:Wt&&x(y.specularMap.channel),specularColorMapUv:Vt&&x(y.specularColorMap.channel),specularIntensityMapUv:se&&x(y.specularIntensityMap.channel),transmissionMapUv:D&&x(y.transmissionMap.channel),thicknessMapUv:ft&&x(y.thicknessMap.channel),alphaMapUv:Z&&x(y.alphaMap.channel),vertexTangents:!!Q.attributes.tangent&&(rt||_),vertexColors:y.vertexColors,vertexAlphas:y.vertexColors===!0&&!!Q.attributes.color&&Q.attributes.color.itemSize===4,pointsUvs:H.isPoints===!0&&!!Q.attributes.uv&&(tt||Z),fog:!!Y,useFog:y.fog===!0,fogExp2:!!Y&&Y.isFogExp2,flatShading:y.flatShading===!0,sizeAttenuation:y.sizeAttenuation===!0,logarithmicDepthBuffer:f,reverseDepthBuffer:Dt,skinning:H.isSkinnedMesh===!0,morphTargets:Q.morphAttributes.position!==void 0,morphNormals:Q.morphAttributes.normal!==void 0,morphColors:Q.morphAttributes.color!==void 0,morphTargetsCount:wt,morphTextureStride:Ht,numDirLights:M.directional.length,numPointLights:M.point.length,numSpotLights:M.spot.length,numSpotLightMaps:M.spotLightMap.length,numRectAreaLights:M.rectArea.length,numHemiLights:M.hemi.length,numDirLightShadows:M.directionalShadowMap.length,numPointLightShadows:M.pointShadowMap.length,numSpotLightShadows:M.spotShadowMap.length,numSpotLightShadowsWithMaps:M.numSpotLightShadowsWithMaps,numLightProbes:M.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:y.dithering,shadowMapEnabled:i.shadowMap.enabled&&P.length>0,shadowMapType:i.shadowMap.type,toneMapping:ae,decodeVideoTexture:tt&&y.map.isVideoTexture===!0&&jt.getTransfer(y.map.colorSpace)===Qt,decodeVideoTextureEmissive:Ut&&y.emissiveMap.isVideoTexture===!0&&jt.getTransfer(y.emissiveMap.colorSpace)===Qt,premultipliedAlpha:y.premultipliedAlpha,doubleSided:y.side===Ke,flipSided:y.side===Ce,useDepthPacking:y.depthPacking>=0,depthPacking:y.depthPacking||0,index0AttributeName:y.index0AttributeName,extensionClipCullDistance:Bt&&y.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Bt&&y.extensions.multiDraw===!0||at)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:y.customProgramCacheKey()};return ve.vertexUv1s=c.has(1),ve.vertexUv2s=c.has(2),ve.vertexUv3s=c.has(3),c.clear(),ve}function h(y){const M=[];if(y.shaderID?M.push(y.shaderID):(M.push(y.customVertexShaderID),M.push(y.customFragmentShaderID)),y.defines!==void 0)for(const P in y.defines)M.push(P),M.push(y.defines[P]);return y.isRawShaderMaterial===!1&&(A(M,y),b(M,y),M.push(i.outputColorSpace)),M.push(y.customProgramCacheKey),M.join()}function A(y,M){y.push(M.precision),y.push(M.outputColorSpace),y.push(M.envMapMode),y.push(M.envMapCubeUVHeight),y.push(M.mapUv),y.push(M.alphaMapUv),y.push(M.lightMapUv),y.push(M.aoMapUv),y.push(M.bumpMapUv),y.push(M.normalMapUv),y.push(M.displacementMapUv),y.push(M.emissiveMapUv),y.push(M.metalnessMapUv),y.push(M.roughnessMapUv),y.push(M.anisotropyMapUv),y.push(M.clearcoatMapUv),y.push(M.clearcoatNormalMapUv),y.push(M.clearcoatRoughnessMapUv),y.push(M.iridescenceMapUv),y.push(M.iridescenceThicknessMapUv),y.push(M.sheenColorMapUv),y.push(M.sheenRoughnessMapUv),y.push(M.specularMapUv),y.push(M.specularColorMapUv),y.push(M.specularIntensityMapUv),y.push(M.transmissionMapUv),y.push(M.thicknessMapUv),y.push(M.combine),y.push(M.fogExp2),y.push(M.sizeAttenuation),y.push(M.morphTargetsCount),y.push(M.morphAttributeCount),y.push(M.numDirLights),y.push(M.numPointLights),y.push(M.numSpotLights),y.push(M.numSpotLightMaps),y.push(M.numHemiLights),y.push(M.numRectAreaLights),y.push(M.numDirLightShadows),y.push(M.numPointLightShadows),y.push(M.numSpotLightShadows),y.push(M.numSpotLightShadowsWithMaps),y.push(M.numLightProbes),y.push(M.shadowMapType),y.push(M.toneMapping),y.push(M.numClippingPlanes),y.push(M.numClipIntersection),y.push(M.depthPacking)}function b(y,M){o.disableAll(),M.supportsVertexTextures&&o.enable(0),M.instancing&&o.enable(1),M.instancingColor&&o.enable(2),M.instancingMorph&&o.enable(3),M.matcap&&o.enable(4),M.envMap&&o.enable(5),M.normalMapObjectSpace&&o.enable(6),M.normalMapTangentSpace&&o.enable(7),M.clearcoat&&o.enable(8),M.iridescence&&o.enable(9),M.alphaTest&&o.enable(10),M.vertexColors&&o.enable(11),M.vertexAlphas&&o.enable(12),M.vertexUv1s&&o.enable(13),M.vertexUv2s&&o.enable(14),M.vertexUv3s&&o.enable(15),M.vertexTangents&&o.enable(16),M.anisotropy&&o.enable(17),M.alphaHash&&o.enable(18),M.batching&&o.enable(19),M.dispersion&&o.enable(20),M.batchingColor&&o.enable(21),y.push(o.mask),o.disableAll(),M.fog&&o.enable(0),M.useFog&&o.enable(1),M.flatShading&&o.enable(2),M.logarithmicDepthBuffer&&o.enable(3),M.reverseDepthBuffer&&o.enable(4),M.skinning&&o.enable(5),M.morphTargets&&o.enable(6),M.morphNormals&&o.enable(7),M.morphColors&&o.enable(8),M.premultipliedAlpha&&o.enable(9),M.shadowMapEnabled&&o.enable(10),M.doubleSided&&o.enable(11),M.flipSided&&o.enable(12),M.useDepthPacking&&o.enable(13),M.dithering&&o.enable(14),M.transmission&&o.enable(15),M.sheen&&o.enable(16),M.opaque&&o.enable(17),M.pointsUvs&&o.enable(18),M.decodeVideoTexture&&o.enable(19),M.decodeVideoTextureEmissive&&o.enable(20),M.alphaToCoverage&&o.enable(21),y.push(o.mask)}function E(y){const M=g[y.type];let P;if(M){const W=Ze[M];P=Cs.clone(W.uniforms)}else P=y.uniforms;return P}function U(y,M){let P;for(let W=0,H=u.length;W0?n.push(h):m.transparent===!0?s.push(h):e.push(h)}function l(f,d,m,g,x,p){const h=a(f,d,m,g,x,p);m.transmission>0?n.unshift(h):m.transparent===!0?s.unshift(h):e.unshift(h)}function c(f,d){e.length>1&&e.sort(f||Lp),n.length>1&&n.sort(d||Vo),s.length>1&&s.sort(d||Vo)}function u(){for(let f=t,d=i.length;f=r.length?(a=new Go,r.push(a)):a=r[s],a}function e(){i=new WeakMap}return{get:t,dispose:e}}function Ip(){const i={};return{get:function(t){if(i[t.id]!==void 0)return i[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new R,color:new Rt};break;case"SpotLight":e={position:new R,direction:new R,color:new Rt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new R,color:new Rt,distance:0,decay:0};break;case"HemisphereLight":e={direction:new R,skyColor:new Rt,groundColor:new Rt};break;case"RectAreaLight":e={color:new Rt,position:new R,halfWidth:new R,halfHeight:new R};break}return i[t.id]=e,e}}}function Np(){const i={};return{get:function(t){if(i[t.id]!==void 0)return i[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"SpotLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"PointLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[t.id]=e,e}}}let Fp=0;function Op(i,t){return(t.castShadow?2:0)-(i.castShadow?2:0)+(t.map?1:0)-(i.map?1:0)}function Bp(i){const t=new Ip,e=Np(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new R);const s=new R,r=new ie,a=new ie;function o(c){let u=0,f=0,d=0;for(let y=0;y<9;y++)n.probe[y].set(0,0,0);let m=0,g=0,x=0,p=0,h=0,A=0,b=0,E=0,U=0,w=0,C=0;c.sort(Op);for(let y=0,M=c.length;y0&&(i.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=ct.LTC_FLOAT_1,n.rectAreaLTC2=ct.LTC_FLOAT_2):(n.rectAreaLTC1=ct.LTC_HALF_1,n.rectAreaLTC2=ct.LTC_HALF_2)),n.ambient[0]=u,n.ambient[1]=f,n.ambient[2]=d;const N=n.hash;(N.directionalLength!==m||N.pointLength!==g||N.spotLength!==x||N.rectAreaLength!==p||N.hemiLength!==h||N.numDirectionalShadows!==A||N.numPointShadows!==b||N.numSpotShadows!==E||N.numSpotMaps!==U||N.numLightProbes!==C)&&(n.directional.length=m,n.spot.length=x,n.rectArea.length=p,n.point.length=g,n.hemi.length=h,n.directionalShadow.length=A,n.directionalShadowMap.length=A,n.pointShadow.length=b,n.pointShadowMap.length=b,n.spotShadow.length=E,n.spotShadowMap.length=E,n.directionalShadowMatrix.length=A,n.pointShadowMatrix.length=b,n.spotLightMatrix.length=E+U-w,n.spotLightMap.length=U,n.numSpotLightShadowsWithMaps=w,n.numLightProbes=C,N.directionalLength=m,N.pointLength=g,N.spotLength=x,N.rectAreaLength=p,N.hemiLength=h,N.numDirectionalShadows=A,N.numPointShadows=b,N.numSpotShadows=E,N.numSpotMaps=U,N.numLightProbes=C,n.version=Fp++)}function l(c,u){let f=0,d=0,m=0,g=0,x=0;const p=u.matrixWorldInverse;for(let h=0,A=c.length;h=a.length?(o=new ko(i),a.push(o)):o=a[r],o}function n(){t=new WeakMap}return{get:e,dispose:n}}const Hp=`void main() { +`+at+` +`+k)}else W!==""?console.warn("THREE.WebGLProgram: Program Info Log:",W):(H===""||q==="")&&(X=!1);X&&(C.diagnostics={runnable:J,programLog:W,vertexShader:{log:H,prefix:p},fragmentShader:{log:q,prefix:h}})}s.deleteShader(D),s.deleteShader(w),N=new Gs(s,x),y=$p(s,x)}let N;this.getUniforms=function(){return N===void 0&&R(this),N};let y;this.getAttributes=function(){return y===void 0&&R(this),y};let M=e.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return M===!1&&(M=s.getProgramParameter(x,Vp)),M},this.destroy=function(){n.releaseStatesOfProgram(this),s.deleteProgram(x),this.program=void 0},this.type=e.shaderType,this.name=e.shaderName,this.id=Gp++,this.cacheKey=t,this.usedTimes=1,this.program=x,this.vertexShader=D,this.fragmentShader=w,this}let cm=0;class hm{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){const e=t.vertexShader,n=t.fragmentShader,s=this._getShaderStage(e),r=this._getShaderStage(n),a=this._getShaderCacheForMaterial(t);return a.has(s)===!1&&(a.add(s),s.usedTimes++),a.has(r)===!1&&(a.add(r),r.usedTimes++),this}remove(t){const e=this.materialCache.get(t);for(const n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){const e=this.materialCache;let n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){const e=this.shaderCache;let n=e.get(t);return n===void 0&&(n=new um(t),e.set(t,n)),n}}class um{constructor(t){this.id=cm++,this.code=t,this.usedTimes=0}}function dm(i,t,e,n,s,r,a){const o=new Xa,l=new hm,c=new Set,u=[],d=s.logarithmicDepthBuffer,f=s.vertexTextures;let m=s.precision;const g={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function x(y){return c.add(y),y===0?"uv":`uv${y}`}function p(y,M,C,W,H){const q=W.fog,J=H.geometry,X=y.isMeshStandardMaterial?W.environment:null,at=(y.isMeshStandardMaterial?e:t).get(y.envMap||X),k=at&&at.mapping===Qs?at.image.height:null,ut=g[y.type];y.precision!==null&&(m=s.getMaxPrecision(y.precision),m!==y.precision&&console.warn("THREE.WebGLProgram.getParameters:",y.precision,"not supported, using",m,"instead."));const xt=J.morphAttributes.position||J.morphAttributes.normal||J.morphAttributes.color,Rt=xt!==void 0?xt.length:0;let Vt=0;J.morphAttributes.position!==void 0&&(Vt=1),J.morphAttributes.normal!==void 0&&(Vt=2),J.morphAttributes.color!==void 0&&(Vt=3);let wt,V,it,Mt;if(ut){const ie=rn[ut];wt=ie.vertexShader,V=ie.fragmentShader}else wt=y.vertexShader,V=y.fragmentShader,l.update(y),it=l.getVertexShaderID(y),Mt=l.getFragmentShaderID(y);const ct=i.getRenderTarget(),Ct=i.state.buffers.depth.getReversed(),Pt=H.isInstancedMesh===!0,nt=H.isBatchedMesh===!0,Q=!!y.map,O=!!y.matcap,ot=!!at,T=!!y.aoMap,lt=!!y.lightMap,tt=!!y.bumpMap,rt=!!y.normalMap,$=!!y.displacementMap,Ft=!!y.emissiveMap,_t=!!y.metalnessMap,S=!!y.roughnessMap,_=y.anisotropy>0,F=y.clearcoat>0,j=y.dispersion>0,K=y.iridescence>0,Y=y.sheen>0,Et=y.transmission>0,ft=_&&!!y.anisotropyMap,ht=F&&!!y.clearcoatMap,Ot=F&&!!y.clearcoatNormalMap,et=F&&!!y.clearcoatRoughnessMap,gt=K&&!!y.iridescenceMap,Lt=K&&!!y.iridescenceThicknessMap,Bt=Y&&!!y.sheenColorMap,yt=Y&&!!y.sheenRoughnessMap,Zt=!!y.specularMap,kt=!!y.specularColorMap,se=!!y.specularIntensityMap,L=Et&&!!y.transmissionMap,pt=Et&&!!y.thicknessMap,G=!!y.gradientMap,Z=!!y.alphaMap,St=y.alphaTest>0,vt=!!y.alphaHash,Gt=!!y.extensions;let he=Un;y.toneMapped&&(ct===null||ct.isXRRenderTarget===!0)&&(he=i.toneMapping);const ye={shaderID:ut,shaderType:y.type,shaderName:y.name,vertexShader:wt,fragmentShader:V,defines:y.defines,customVertexShaderID:it,customFragmentShaderID:Mt,isRawShaderMaterial:y.isRawShaderMaterial===!0,glslVersion:y.glslVersion,precision:m,batching:nt,batchingColor:nt&&H._colorsTexture!==null,instancing:Pt,instancingColor:Pt&&H.instanceColor!==null,instancingMorph:Pt&&H.morphTexture!==null,supportsVertexTextures:f,outputColorSpace:ct===null?i.outputColorSpace:ct.isXRRenderTarget===!0?ct.texture.colorSpace:Ni,alphaToCoverage:!!y.alphaToCoverage,map:Q,matcap:O,envMap:ot,envMapMode:ot&&at.mapping,envMapCubeUVHeight:k,aoMap:T,lightMap:lt,bumpMap:tt,normalMap:rt,displacementMap:f&&$,emissiveMap:Ft,normalMapObjectSpace:rt&&y.normalMapType===eh,normalMapTangentSpace:rt&&y.normalMapType===Fl,metalnessMap:_t,roughnessMap:S,anisotropy:_,anisotropyMap:ft,clearcoat:F,clearcoatMap:ht,clearcoatNormalMap:Ot,clearcoatRoughnessMap:et,dispersion:j,iridescence:K,iridescenceMap:gt,iridescenceThicknessMap:Lt,sheen:Y,sheenColorMap:Bt,sheenRoughnessMap:yt,specularMap:Zt,specularColorMap:kt,specularIntensityMap:se,transmission:Et,transmissionMap:L,thicknessMap:pt,gradientMap:G,opaque:y.transparent===!1&&y.blending===wi&&y.alphaToCoverage===!1,alphaMap:Z,alphaTest:St,alphaHash:vt,combine:y.combine,mapUv:Q&&x(y.map.channel),aoMapUv:T&&x(y.aoMap.channel),lightMapUv:lt&&x(y.lightMap.channel),bumpMapUv:tt&&x(y.bumpMap.channel),normalMapUv:rt&&x(y.normalMap.channel),displacementMapUv:$&&x(y.displacementMap.channel),emissiveMapUv:Ft&&x(y.emissiveMap.channel),metalnessMapUv:_t&&x(y.metalnessMap.channel),roughnessMapUv:S&&x(y.roughnessMap.channel),anisotropyMapUv:ft&&x(y.anisotropyMap.channel),clearcoatMapUv:ht&&x(y.clearcoatMap.channel),clearcoatNormalMapUv:Ot&&x(y.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:et&&x(y.clearcoatRoughnessMap.channel),iridescenceMapUv:gt&&x(y.iridescenceMap.channel),iridescenceThicknessMapUv:Lt&&x(y.iridescenceThicknessMap.channel),sheenColorMapUv:Bt&&x(y.sheenColorMap.channel),sheenRoughnessMapUv:yt&&x(y.sheenRoughnessMap.channel),specularMapUv:Zt&&x(y.specularMap.channel),specularColorMapUv:kt&&x(y.specularColorMap.channel),specularIntensityMapUv:se&&x(y.specularIntensityMap.channel),transmissionMapUv:L&&x(y.transmissionMap.channel),thicknessMapUv:pt&&x(y.thicknessMap.channel),alphaMapUv:Z&&x(y.alphaMap.channel),vertexTangents:!!J.attributes.tangent&&(rt||_),vertexColors:y.vertexColors,vertexAlphas:y.vertexColors===!0&&!!J.attributes.color&&J.attributes.color.itemSize===4,pointsUvs:H.isPoints===!0&&!!J.attributes.uv&&(Q||Z),fog:!!q,useFog:y.fog===!0,fogExp2:!!q&&q.isFogExp2,flatShading:y.flatShading===!0,sizeAttenuation:y.sizeAttenuation===!0,logarithmicDepthBuffer:d,reverseDepthBuffer:Ct,skinning:H.isSkinnedMesh===!0,morphTargets:J.morphAttributes.position!==void 0,morphNormals:J.morphAttributes.normal!==void 0,morphColors:J.morphAttributes.color!==void 0,morphTargetsCount:Rt,morphTextureStride:Vt,numDirLights:M.directional.length,numPointLights:M.point.length,numSpotLights:M.spot.length,numSpotLightMaps:M.spotLightMap.length,numRectAreaLights:M.rectArea.length,numHemiLights:M.hemi.length,numDirLightShadows:M.directionalShadowMap.length,numPointLightShadows:M.pointShadowMap.length,numSpotLightShadows:M.spotShadowMap.length,numSpotLightShadowsWithMaps:M.numSpotLightShadowsWithMaps,numLightProbes:M.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:y.dithering,shadowMapEnabled:i.shadowMap.enabled&&C.length>0,shadowMapType:i.shadowMap.type,toneMapping:he,decodeVideoTexture:Q&&y.map.isVideoTexture===!0&&Qt.getTransfer(y.map.colorSpace)===re,decodeVideoTextureEmissive:Ft&&y.emissiveMap.isVideoTexture===!0&&Qt.getTransfer(y.emissiveMap.colorSpace)===re,premultipliedAlpha:y.premultipliedAlpha,doubleSided:y.side===an,flipSided:y.side===Ne,useDepthPacking:y.depthPacking>=0,depthPacking:y.depthPacking||0,index0AttributeName:y.index0AttributeName,extensionClipCullDistance:Gt&&y.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Gt&&y.extensions.multiDraw===!0||nt)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:y.customProgramCacheKey()};return ye.vertexUv1s=c.has(1),ye.vertexUv2s=c.has(2),ye.vertexUv3s=c.has(3),c.clear(),ye}function h(y){const M=[];if(y.shaderID?M.push(y.shaderID):(M.push(y.customVertexShaderID),M.push(y.customFragmentShaderID)),y.defines!==void 0)for(const C in y.defines)M.push(C),M.push(y.defines[C]);return y.isRawShaderMaterial===!1&&(A(M,y),b(M,y),M.push(i.outputColorSpace)),M.push(y.customProgramCacheKey),M.join()}function A(y,M){y.push(M.precision),y.push(M.outputColorSpace),y.push(M.envMapMode),y.push(M.envMapCubeUVHeight),y.push(M.mapUv),y.push(M.alphaMapUv),y.push(M.lightMapUv),y.push(M.aoMapUv),y.push(M.bumpMapUv),y.push(M.normalMapUv),y.push(M.displacementMapUv),y.push(M.emissiveMapUv),y.push(M.metalnessMapUv),y.push(M.roughnessMapUv),y.push(M.anisotropyMapUv),y.push(M.clearcoatMapUv),y.push(M.clearcoatNormalMapUv),y.push(M.clearcoatRoughnessMapUv),y.push(M.iridescenceMapUv),y.push(M.iridescenceThicknessMapUv),y.push(M.sheenColorMapUv),y.push(M.sheenRoughnessMapUv),y.push(M.specularMapUv),y.push(M.specularColorMapUv),y.push(M.specularIntensityMapUv),y.push(M.transmissionMapUv),y.push(M.thicknessMapUv),y.push(M.combine),y.push(M.fogExp2),y.push(M.sizeAttenuation),y.push(M.morphTargetsCount),y.push(M.morphAttributeCount),y.push(M.numDirLights),y.push(M.numPointLights),y.push(M.numSpotLights),y.push(M.numSpotLightMaps),y.push(M.numHemiLights),y.push(M.numRectAreaLights),y.push(M.numDirLightShadows),y.push(M.numPointLightShadows),y.push(M.numSpotLightShadows),y.push(M.numSpotLightShadowsWithMaps),y.push(M.numLightProbes),y.push(M.shadowMapType),y.push(M.toneMapping),y.push(M.numClippingPlanes),y.push(M.numClipIntersection),y.push(M.depthPacking)}function b(y,M){o.disableAll(),M.supportsVertexTextures&&o.enable(0),M.instancing&&o.enable(1),M.instancingColor&&o.enable(2),M.instancingMorph&&o.enable(3),M.matcap&&o.enable(4),M.envMap&&o.enable(5),M.normalMapObjectSpace&&o.enable(6),M.normalMapTangentSpace&&o.enable(7),M.clearcoat&&o.enable(8),M.iridescence&&o.enable(9),M.alphaTest&&o.enable(10),M.vertexColors&&o.enable(11),M.vertexAlphas&&o.enable(12),M.vertexUv1s&&o.enable(13),M.vertexUv2s&&o.enable(14),M.vertexUv3s&&o.enable(15),M.vertexTangents&&o.enable(16),M.anisotropy&&o.enable(17),M.alphaHash&&o.enable(18),M.batching&&o.enable(19),M.dispersion&&o.enable(20),M.batchingColor&&o.enable(21),y.push(o.mask),o.disableAll(),M.fog&&o.enable(0),M.useFog&&o.enable(1),M.flatShading&&o.enable(2),M.logarithmicDepthBuffer&&o.enable(3),M.reverseDepthBuffer&&o.enable(4),M.skinning&&o.enable(5),M.morphTargets&&o.enable(6),M.morphNormals&&o.enable(7),M.morphColors&&o.enable(8),M.premultipliedAlpha&&o.enable(9),M.shadowMapEnabled&&o.enable(10),M.doubleSided&&o.enable(11),M.flipSided&&o.enable(12),M.useDepthPacking&&o.enable(13),M.dithering&&o.enable(14),M.transmission&&o.enable(15),M.sheen&&o.enable(16),M.opaque&&o.enable(17),M.pointsUvs&&o.enable(18),M.decodeVideoTexture&&o.enable(19),M.decodeVideoTextureEmissive&&o.enable(20),M.alphaToCoverage&&o.enable(21),y.push(o.mask)}function E(y){const M=g[y.type];let C;if(M){const W=rn[M];C=js.clone(W.uniforms)}else C=y.uniforms;return C}function D(y,M){let C;for(let W=0,H=u.length;W0?n.push(h):m.transparent===!0?s.push(h):e.push(h)}function l(d,f,m,g,x,p){const h=a(d,f,m,g,x,p);m.transmission>0?n.unshift(h):m.transparent===!0?s.unshift(h):e.unshift(h)}function c(d,f){e.length>1&&e.sort(d||pm),n.length>1&&n.sort(f||pl),s.length>1&&s.sort(f||pl)}function u(){for(let d=t,f=i.length;d=r.length?(a=new ml,r.push(a)):a=r[s],a}function e(){i=new WeakMap}return{get:t,dispose:e}}function _m(){const i={};return{get:function(t){if(i[t.id]!==void 0)return i[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new P,color:new Dt};break;case"SpotLight":e={position:new P,direction:new P,color:new Dt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new P,color:new Dt,distance:0,decay:0};break;case"HemisphereLight":e={direction:new P,skyColor:new Dt,groundColor:new Dt};break;case"RectAreaLight":e={color:new Dt,position:new P,halfWidth:new P,halfHeight:new P};break}return i[t.id]=e,e}}}function gm(){const i={};return{get:function(t){if(i[t.id]!==void 0)return i[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"SpotLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"PointLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[t.id]=e,e}}}let vm=0;function xm(i,t){return(t.castShadow?2:0)-(i.castShadow?2:0)+(t.map?1:0)-(i.map?1:0)}function Mm(i){const t=new _m,e=gm(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new P);const s=new P,r=new ne,a=new ne;function o(c){let u=0,d=0,f=0;for(let y=0;y<9;y++)n.probe[y].set(0,0,0);let m=0,g=0,x=0,p=0,h=0,A=0,b=0,E=0,D=0,w=0,R=0;c.sort(xm);for(let y=0,M=c.length;y0&&(i.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=dt.LTC_FLOAT_1,n.rectAreaLTC2=dt.LTC_FLOAT_2):(n.rectAreaLTC1=dt.LTC_HALF_1,n.rectAreaLTC2=dt.LTC_HALF_2)),n.ambient[0]=u,n.ambient[1]=d,n.ambient[2]=f;const N=n.hash;(N.directionalLength!==m||N.pointLength!==g||N.spotLength!==x||N.rectAreaLength!==p||N.hemiLength!==h||N.numDirectionalShadows!==A||N.numPointShadows!==b||N.numSpotShadows!==E||N.numSpotMaps!==D||N.numLightProbes!==R)&&(n.directional.length=m,n.spot.length=x,n.rectArea.length=p,n.point.length=g,n.hemi.length=h,n.directionalShadow.length=A,n.directionalShadowMap.length=A,n.pointShadow.length=b,n.pointShadowMap.length=b,n.spotShadow.length=E,n.spotShadowMap.length=E,n.directionalShadowMatrix.length=A,n.pointShadowMatrix.length=b,n.spotLightMatrix.length=E+D-w,n.spotLightMap.length=D,n.numSpotLightShadowsWithMaps=w,n.numLightProbes=R,N.directionalLength=m,N.pointLength=g,N.spotLength=x,N.rectAreaLength=p,N.hemiLength=h,N.numDirectionalShadows=A,N.numPointShadows=b,N.numSpotShadows=E,N.numSpotMaps=D,N.numLightProbes=R,n.version=vm++)}function l(c,u){let d=0,f=0,m=0,g=0,x=0;const p=u.matrixWorldInverse;for(let h=0,A=c.length;h=a.length?(o=new _l(i),a.push(o)):o=a[r],o}function n(){t=new WeakMap}return{get:e,dispose:n}}const ym=`void main() { gl_Position = vec4( position, 1.0 ); -}`,Vp=`uniform sampler2D shadow_pass; +}`,Em=`uniform sampler2D shadow_pass; uniform vec2 resolution; uniform float radius; #include @@ -3800,12 +3800,12 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function Gp(i,t,e){let n=new Sa;const s=new At,r=new At,a=new ne,o=new ch({depthPacking:Sc}),l=new hh,c={},u=e.maxTextureSize,f={[Tn]:Ce,[Ce]:Tn,[Ke]:Ke},d=new Re({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new At},radius:{value:4}},vertexShader:Hp,fragmentShader:Vp}),m=d.clone();m.defines.HORIZONTAL_PASS=1;const g=new pe;g.setAttribute("position",new _e(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new ze(g,d),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=qo;let h=this.type;this.render=function(w,C,N){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||w.length===0)return;const y=i.getRenderTarget(),M=i.getActiveCubeFace(),P=i.getActiveMipmapLevel(),W=i.state;W.setBlending(hn),W.buffers.color.setClear(1,1,1,1),W.buffers.depth.setTest(!0),W.setScissorTest(!1);const H=h!==on&&this.type===on,Y=h===on&&this.type!==on;for(let Q=0,k=w.length;Qu||s.y>u)&&(s.x>u&&(r.x=Math.floor(u/ht.x),s.x=r.x*ht.x,V.mapSize.x=r.x),s.y>u&&(r.y=Math.floor(u/ht.y),s.y=r.y*ht.y,V.mapSize.y=r.y)),V.map===null||H===!0||Y===!0){const wt=this.type!==on?{minFilter:Ye,magFilter:Ye}:{};V.map!==null&&V.map.dispose(),V.map=new qe(s.x,s.y,wt),V.map.texture.name=it.name+".shadowMap",V.camera.updateProjectionMatrix()}i.setRenderTarget(V.map),i.clear();const gt=V.getViewportCount();for(let wt=0;wt0||C.map&&C.alphaTest>0){const W=M.uuid,H=C.uuid;let Y=c[W];Y===void 0&&(Y={},c[W]=Y);let Q=Y[H];Q===void 0&&(Q=M.clone(),Y[H]=Q,C.addEventListener("dispose",U)),M=Q}if(M.visible=C.visible,M.wireframe=C.wireframe,y===on?M.side=C.shadowSide!==null?C.shadowSide:C.side:M.side=C.shadowSide!==null?C.shadowSide:f[C.side],M.alphaMap=C.alphaMap,M.alphaTest=C.alphaTest,M.map=C.map,M.clipShadows=C.clipShadows,M.clippingPlanes=C.clippingPlanes,M.clipIntersection=C.clipIntersection,M.displacementMap=C.displacementMap,M.displacementScale=C.displacementScale,M.displacementBias=C.displacementBias,M.wireframeLinewidth=C.wireframeLinewidth,M.linewidth=C.linewidth,N.isPointLight===!0&&M.isMeshDistanceMaterial===!0){const W=i.properties.get(M);W.light=N}return M}function E(w,C,N,y,M){if(w.visible===!1)return;if(w.layers.test(C.layers)&&(w.isMesh||w.isLine||w.isPoints)&&(w.castShadow||w.receiveShadow&&M===on)&&(!w.frustumCulled||n.intersectsObject(w))){w.modelViewMatrix.multiplyMatrices(N.matrixWorldInverse,w.matrixWorld);const H=t.update(w),Y=w.material;if(Array.isArray(Y)){const Q=H.groups;for(let k=0,it=Q.length;k=1):V.indexOf("OpenGL ES")!==-1&&(it=parseFloat(/^OpenGL ES (\d)/.exec(V)[1]),k=it>=2);let ht=null,gt={};const wt=i.getParameter(i.SCISSOR_BOX),Ht=i.getParameter(i.VIEWPORT),Zt=new ne().fromArray(wt),q=new ne().fromArray(Ht);function lt(D,ft,G,Z){const _t=new Uint8Array(4),mt=i.createTexture();i.bindTexture(D,mt),i.texParameteri(D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(D,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let Bt=0;Bt"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new At,u=new WeakMap;let f;const d=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function g(S,_){return m?new OffscreenCanvas(S,_):Rs("canvas")}function x(S,_,F){let j=1;const K=vt(S);if((K.width>F||K.height>F)&&(j=F/Math.max(K.width,K.height)),j<1)if(typeof HTMLImageElement<"u"&&S instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&S instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&S instanceof ImageBitmap||typeof VideoFrame<"u"&&S instanceof VideoFrame){const X=Math.floor(j*K.width),bt=Math.floor(j*K.height);f===void 0&&(f=g(X,bt));const pt=_?g(X,bt):f;return pt.width=X,pt.height=bt,pt.getContext("2d").drawImage(S,0,0,X,bt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+K.width+"x"+K.height+") to ("+X+"x"+bt+")."),pt}else return"data"in S&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+K.width+"x"+K.height+")."),S;return S}function p(S){return S.generateMipmaps}function h(S){i.generateMipmap(S)}function A(S){return S.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:S.isWebGL3DRenderTarget?i.TEXTURE_3D:S.isWebGLArrayRenderTarget||S.isCompressedArrayTexture?i.TEXTURE_2D_ARRAY:i.TEXTURE_2D}function b(S,_,F,j,K=!1){if(S!==null){if(i[S]!==void 0)return i[S];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+S+"'")}let X=_;if(_===i.RED&&(F===i.FLOAT&&(X=i.R32F),F===i.HALF_FLOAT&&(X=i.R16F),F===i.UNSIGNED_BYTE&&(X=i.R8)),_===i.RED_INTEGER&&(F===i.UNSIGNED_BYTE&&(X=i.R8UI),F===i.UNSIGNED_SHORT&&(X=i.R16UI),F===i.UNSIGNED_INT&&(X=i.R32UI),F===i.BYTE&&(X=i.R8I),F===i.SHORT&&(X=i.R16I),F===i.INT&&(X=i.R32I)),_===i.RG&&(F===i.FLOAT&&(X=i.RG32F),F===i.HALF_FLOAT&&(X=i.RG16F),F===i.UNSIGNED_BYTE&&(X=i.RG8)),_===i.RG_INTEGER&&(F===i.UNSIGNED_BYTE&&(X=i.RG8UI),F===i.UNSIGNED_SHORT&&(X=i.RG16UI),F===i.UNSIGNED_INT&&(X=i.RG32UI),F===i.BYTE&&(X=i.RG8I),F===i.SHORT&&(X=i.RG16I),F===i.INT&&(X=i.RG32I)),_===i.RGB_INTEGER&&(F===i.UNSIGNED_BYTE&&(X=i.RGB8UI),F===i.UNSIGNED_SHORT&&(X=i.RGB16UI),F===i.UNSIGNED_INT&&(X=i.RGB32UI),F===i.BYTE&&(X=i.RGB8I),F===i.SHORT&&(X=i.RGB16I),F===i.INT&&(X=i.RGB32I)),_===i.RGBA_INTEGER&&(F===i.UNSIGNED_BYTE&&(X=i.RGBA8UI),F===i.UNSIGNED_SHORT&&(X=i.RGBA16UI),F===i.UNSIGNED_INT&&(X=i.RGBA32UI),F===i.BYTE&&(X=i.RGBA8I),F===i.SHORT&&(X=i.RGBA16I),F===i.INT&&(X=i.RGBA32I)),_===i.RGB&&F===i.UNSIGNED_INT_5_9_9_9_REV&&(X=i.RGB9_E5),_===i.RGBA){const bt=K?As:jt.getTransfer(j);F===i.FLOAT&&(X=i.RGBA32F),F===i.HALF_FLOAT&&(X=i.RGBA16F),F===i.UNSIGNED_BYTE&&(X=bt===Qt?i.SRGB8_ALPHA8:i.RGBA8),F===i.UNSIGNED_SHORT_4_4_4_4&&(X=i.RGBA4),F===i.UNSIGNED_SHORT_5_5_5_1&&(X=i.RGB5_A1)}return(X===i.R16F||X===i.R32F||X===i.RG16F||X===i.RG32F||X===i.RGBA16F||X===i.RGBA32F)&&t.get("EXT_color_buffer_float"),X}function E(S,_){let F;return S?_===null||_===zn||_===vi?F=i.DEPTH24_STENCIL8:_===ln?F=i.DEPTH32F_STENCIL8:_===Ni&&(F=i.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):_===null||_===zn||_===vi?F=i.DEPTH_COMPONENT24:_===ln?F=i.DEPTH_COMPONENT32F:_===Ni&&(F=i.DEPTH_COMPONENT16),F}function U(S,_){return p(S)===!0||S.isFramebufferTexture&&S.minFilter!==Ye&&S.minFilter!==Je?Math.log2(Math.max(_.width,_.height))+1:S.mipmaps!==void 0&&S.mipmaps.length>0?S.mipmaps.length:S.isCompressedTexture&&Array.isArray(S.image)?_.mipmaps.length:1}function w(S){const _=S.target;_.removeEventListener("dispose",w),N(_),_.isVideoTexture&&u.delete(_)}function C(S){const _=S.target;_.removeEventListener("dispose",C),M(_)}function N(S){const _=n.get(S);if(_.__webglInit===void 0)return;const F=S.source,j=d.get(F);if(j){const K=j[_.__cacheKey];K.usedTimes--,K.usedTimes===0&&y(S),Object.keys(j).length===0&&d.delete(F)}n.remove(S)}function y(S){const _=n.get(S);i.deleteTexture(_.__webglTexture);const F=S.source,j=d.get(F);delete j[_.__cacheKey],a.memory.textures--}function M(S){const _=n.get(S);if(S.depthTexture&&(S.depthTexture.dispose(),n.remove(S.depthTexture)),S.isWebGLCubeRenderTarget)for(let j=0;j<6;j++){if(Array.isArray(_.__webglFramebuffer[j]))for(let K=0;K<_.__webglFramebuffer[j].length;K++)i.deleteFramebuffer(_.__webglFramebuffer[j][K]);else i.deleteFramebuffer(_.__webglFramebuffer[j]);_.__webglDepthbuffer&&i.deleteRenderbuffer(_.__webglDepthbuffer[j])}else{if(Array.isArray(_.__webglFramebuffer))for(let j=0;j<_.__webglFramebuffer.length;j++)i.deleteFramebuffer(_.__webglFramebuffer[j]);else i.deleteFramebuffer(_.__webglFramebuffer);if(_.__webglDepthbuffer&&i.deleteRenderbuffer(_.__webglDepthbuffer),_.__webglMultisampledFramebuffer&&i.deleteFramebuffer(_.__webglMultisampledFramebuffer),_.__webglColorRenderbuffer)for(let j=0;j<_.__webglColorRenderbuffer.length;j++)_.__webglColorRenderbuffer[j]&&i.deleteRenderbuffer(_.__webglColorRenderbuffer[j]);_.__webglDepthRenderbuffer&&i.deleteRenderbuffer(_.__webglDepthRenderbuffer)}const F=S.textures;for(let j=0,K=F.length;j=s.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+S+" texture units while this GPU supports only "+s.maxTextures),P+=1,S}function Y(S){const _=[];return _.push(S.wrapS),_.push(S.wrapT),_.push(S.wrapR||0),_.push(S.magFilter),_.push(S.minFilter),_.push(S.anisotropy),_.push(S.internalFormat),_.push(S.format),_.push(S.type),_.push(S.generateMipmaps),_.push(S.premultiplyAlpha),_.push(S.flipY),_.push(S.unpackAlignment),_.push(S.colorSpace),_.join()}function Q(S,_){const F=n.get(S);if(S.isVideoTexture&&$(S),S.isRenderTargetTexture===!1&&S.version>0&&F.__version!==S.version){const j=S.image;if(j===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(j.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{q(F,S,_);return}}e.bindTexture(i.TEXTURE_2D,F.__webglTexture,i.TEXTURE0+_)}function k(S,_){const F=n.get(S);if(S.version>0&&F.__version!==S.version){q(F,S,_);return}e.bindTexture(i.TEXTURE_2D_ARRAY,F.__webglTexture,i.TEXTURE0+_)}function it(S,_){const F=n.get(S);if(S.version>0&&F.__version!==S.version){q(F,S,_);return}e.bindTexture(i.TEXTURE_3D,F.__webglTexture,i.TEXTURE0+_)}function V(S,_){const F=n.get(S);if(S.version>0&&F.__version!==S.version){lt(F,S,_);return}e.bindTexture(i.TEXTURE_CUBE_MAP,F.__webglTexture,i.TEXTURE0+_)}const ht={[Lr]:i.REPEAT,[On]:i.CLAMP_TO_EDGE,[Ur]:i.MIRRORED_REPEAT},gt={[Ye]:i.NEAREST,[xc]:i.NEAREST_MIPMAP_NEAREST,[ki]:i.NEAREST_MIPMAP_LINEAR,[Je]:i.LINEAR,[Hs]:i.LINEAR_MIPMAP_NEAREST,[Bn]:i.LINEAR_MIPMAP_LINEAR},wt={[Ec]:i.NEVER,[Cc]:i.ALWAYS,[Tc]:i.LESS,[ll]:i.LEQUAL,[bc]:i.EQUAL,[Rc]:i.GEQUAL,[Ac]:i.GREATER,[wc]:i.NOTEQUAL};function Ht(S,_){if(_.type===ln&&t.has("OES_texture_float_linear")===!1&&(_.magFilter===Je||_.magFilter===Hs||_.magFilter===ki||_.magFilter===Bn||_.minFilter===Je||_.minFilter===Hs||_.minFilter===ki||_.minFilter===Bn)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),i.texParameteri(S,i.TEXTURE_WRAP_S,ht[_.wrapS]),i.texParameteri(S,i.TEXTURE_WRAP_T,ht[_.wrapT]),(S===i.TEXTURE_3D||S===i.TEXTURE_2D_ARRAY)&&i.texParameteri(S,i.TEXTURE_WRAP_R,ht[_.wrapR]),i.texParameteri(S,i.TEXTURE_MAG_FILTER,gt[_.magFilter]),i.texParameteri(S,i.TEXTURE_MIN_FILTER,gt[_.minFilter]),_.compareFunction&&(i.texParameteri(S,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(S,i.TEXTURE_COMPARE_FUNC,wt[_.compareFunction])),t.has("EXT_texture_filter_anisotropic")===!0){if(_.magFilter===Ye||_.minFilter!==ki&&_.minFilter!==Bn||_.type===ln&&t.has("OES_texture_float_linear")===!1)return;if(_.anisotropy>1||n.get(_).__currentAnisotropy){const F=t.get("EXT_texture_filter_anisotropic");i.texParameterf(S,F.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(_.anisotropy,s.getMaxAnisotropy())),n.get(_).__currentAnisotropy=_.anisotropy}}}function Zt(S,_){let F=!1;S.__webglInit===void 0&&(S.__webglInit=!0,_.addEventListener("dispose",w));const j=_.source;let K=d.get(j);K===void 0&&(K={},d.set(j,K));const X=Y(_);if(X!==S.__cacheKey){K[X]===void 0&&(K[X]={texture:i.createTexture(),usedTimes:0},a.memory.textures++,F=!0),K[X].usedTimes++;const bt=K[S.__cacheKey];bt!==void 0&&(K[S.__cacheKey].usedTimes--,bt.usedTimes===0&&y(_)),S.__cacheKey=X,S.__webglTexture=K[X].texture}return F}function q(S,_,F){let j=i.TEXTURE_2D;(_.isDataArrayTexture||_.isCompressedArrayTexture)&&(j=i.TEXTURE_2D_ARRAY),_.isData3DTexture&&(j=i.TEXTURE_3D);const K=Zt(S,_),X=_.source;e.bindTexture(j,S.__webglTexture,i.TEXTURE0+F);const bt=n.get(X);if(X.version!==bt.__version||K===!0){e.activeTexture(i.TEXTURE0+F);const pt=jt.getPrimaries(jt.workingColorSpace),Mt=_.colorSpace===Sn?null:jt.getPrimaries(_.colorSpace),Xt=_.colorSpace===Sn||pt===Mt?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,_.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,_.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,Xt);let nt=x(_.image,!1,s.maxTextureSize);nt=Ut(_,nt);const St=r.convert(_.format,_.colorSpace),Lt=r.convert(_.type);let Nt=b(_.internalFormat,St,Lt,_.colorSpace,_.isVideoTexture);Ht(j,_);let yt;const Wt=_.mipmaps,Vt=_.isVideoTexture!==!0,se=bt.__version===void 0||K===!0,D=X.dataReady,ft=U(_,nt);if(_.isDepthTexture)Nt=E(_.format===xi,_.type),se&&(Vt?e.texStorage2D(i.TEXTURE_2D,1,Nt,nt.width,nt.height):e.texImage2D(i.TEXTURE_2D,0,Nt,nt.width,nt.height,0,St,Lt,null));else if(_.isDataTexture)if(Wt.length>0){Vt&&se&&e.texStorage2D(i.TEXTURE_2D,ft,Nt,Wt[0].width,Wt[0].height);for(let G=0,Z=Wt.length;G0){const _t=xo(yt.width,yt.height,_.format,_.type);for(const mt of _.layerUpdates){const Bt=yt.data.subarray(mt*_t/yt.data.BYTES_PER_ELEMENT,(mt+1)*_t/yt.data.BYTES_PER_ELEMENT);e.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,G,0,0,mt,yt.width,yt.height,1,St,Bt)}_.clearLayerUpdates()}else e.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,G,0,0,0,yt.width,yt.height,nt.depth,St,yt.data)}else e.compressedTexImage3D(i.TEXTURE_2D_ARRAY,G,Nt,yt.width,yt.height,nt.depth,0,yt.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else Vt?D&&e.texSubImage3D(i.TEXTURE_2D_ARRAY,G,0,0,0,yt.width,yt.height,nt.depth,St,Lt,yt.data):e.texImage3D(i.TEXTURE_2D_ARRAY,G,Nt,yt.width,yt.height,nt.depth,0,St,Lt,yt.data)}else{Vt&&se&&e.texStorage2D(i.TEXTURE_2D,ft,Nt,Wt[0].width,Wt[0].height);for(let G=0,Z=Wt.length;G0){const G=xo(nt.width,nt.height,_.format,_.type);for(const Z of _.layerUpdates){const _t=nt.data.subarray(Z*G/nt.data.BYTES_PER_ELEMENT,(Z+1)*G/nt.data.BYTES_PER_ELEMENT);e.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,Z,nt.width,nt.height,1,St,Lt,_t)}_.clearLayerUpdates()}else e.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,nt.width,nt.height,nt.depth,St,Lt,nt.data)}else e.texImage3D(i.TEXTURE_2D_ARRAY,0,Nt,nt.width,nt.height,nt.depth,0,St,Lt,nt.data);else if(_.isData3DTexture)Vt?(se&&e.texStorage3D(i.TEXTURE_3D,ft,Nt,nt.width,nt.height,nt.depth),D&&e.texSubImage3D(i.TEXTURE_3D,0,0,0,0,nt.width,nt.height,nt.depth,St,Lt,nt.data)):e.texImage3D(i.TEXTURE_3D,0,Nt,nt.width,nt.height,nt.depth,0,St,Lt,nt.data);else if(_.isFramebufferTexture){if(se)if(Vt)e.texStorage2D(i.TEXTURE_2D,ft,Nt,nt.width,nt.height);else{let G=nt.width,Z=nt.height;for(let _t=0;_t>=1,Z>>=1}}else if(Wt.length>0){if(Vt&&se){const G=vt(Wt[0]);e.texStorage2D(i.TEXTURE_2D,ft,Nt,G.width,G.height)}for(let G=0,Z=Wt.length;G0&&ft++;const Z=vt(St[0]);e.texStorage2D(i.TEXTURE_CUBE_MAP,ft,Wt,Z.width,Z.height)}for(let Z=0;Z<6;Z++)if(nt){Vt?D&&e.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,0,0,St[Z].width,St[Z].height,Nt,yt,St[Z].data):e.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,Wt,St[Z].width,St[Z].height,0,Nt,yt,St[Z].data);for(let _t=0;_t>X),Lt=Math.max(1,_.height>>X);K===i.TEXTURE_3D||K===i.TEXTURE_2D_ARRAY?e.texImage3D(K,X,Mt,St,Lt,_.depth,0,bt,pt,null):e.texImage2D(K,X,Mt,St,Lt,0,bt,pt,null)}e.bindFramebuffer(i.FRAMEBUFFER,S),rt(_)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,j,K,nt.__webglTexture,0,J(_)):(K===i.TEXTURE_2D||K>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&K<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,j,K,nt.__webglTexture,X),e.bindFramebuffer(i.FRAMEBUFFER,null)}function ut(S,_,F){if(i.bindRenderbuffer(i.RENDERBUFFER,S),_.depthBuffer){const j=_.depthTexture,K=j&&j.isDepthTexture?j.type:null,X=E(_.stencilBuffer,K),bt=_.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,pt=J(_);rt(_)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,pt,X,_.width,_.height):F?i.renderbufferStorageMultisample(i.RENDERBUFFER,pt,X,_.width,_.height):i.renderbufferStorage(i.RENDERBUFFER,X,_.width,_.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,bt,i.RENDERBUFFER,S)}else{const j=_.textures;for(let K=0;K{delete _.__boundDepthTexture,delete _.__depthDisposeCallback,j.removeEventListener("dispose",K)};j.addEventListener("dispose",K),_.__depthDisposeCallback=K}_.__boundDepthTexture=j}if(S.depthTexture&&!_.__autoAllocateDepthBuffer){if(F)throw new Error("target.depthTexture not supported in Cube render targets");Dt(_.__webglFramebuffer,S)}else if(F){_.__webglDepthbuffer=[];for(let j=0;j<6;j++)if(e.bindFramebuffer(i.FRAMEBUFFER,_.__webglFramebuffer[j]),_.__webglDepthbuffer[j]===void 0)_.__webglDepthbuffer[j]=i.createRenderbuffer(),ut(_.__webglDepthbuffer[j],S,!1);else{const K=S.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,X=_.__webglDepthbuffer[j];i.bindRenderbuffer(i.RENDERBUFFER,X),i.framebufferRenderbuffer(i.FRAMEBUFFER,K,i.RENDERBUFFER,X)}}else if(e.bindFramebuffer(i.FRAMEBUFFER,_.__webglFramebuffer),_.__webglDepthbuffer===void 0)_.__webglDepthbuffer=i.createRenderbuffer(),ut(_.__webglDepthbuffer,S,!1);else{const j=S.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,K=_.__webglDepthbuffer;i.bindRenderbuffer(i.RENDERBUFFER,K),i.framebufferRenderbuffer(i.FRAMEBUFFER,j,i.RENDERBUFFER,K)}e.bindFramebuffer(i.FRAMEBUFFER,null)}function at(S,_,F){const j=n.get(S);_!==void 0&&Tt(j.__webglFramebuffer,S,S.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),F!==void 0&&It(S)}function tt(S){const _=S.texture,F=n.get(S),j=n.get(_);S.addEventListener("dispose",C);const K=S.textures,X=S.isWebGLCubeRenderTarget===!0,bt=K.length>1;if(bt||(j.__webglTexture===void 0&&(j.__webglTexture=i.createTexture()),j.__version=_.version,a.memory.textures++),X){F.__webglFramebuffer=[];for(let pt=0;pt<6;pt++)if(_.mipmaps&&_.mipmaps.length>0){F.__webglFramebuffer[pt]=[];for(let Mt=0;Mt<_.mipmaps.length;Mt++)F.__webglFramebuffer[pt][Mt]=i.createFramebuffer()}else F.__webglFramebuffer[pt]=i.createFramebuffer()}else{if(_.mipmaps&&_.mipmaps.length>0){F.__webglFramebuffer=[];for(let pt=0;pt<_.mipmaps.length;pt++)F.__webglFramebuffer[pt]=i.createFramebuffer()}else F.__webglFramebuffer=i.createFramebuffer();if(bt)for(let pt=0,Mt=K.length;pt0&&rt(S)===!1){F.__webglMultisampledFramebuffer=i.createFramebuffer(),F.__webglColorRenderbuffer=[],e.bindFramebuffer(i.FRAMEBUFFER,F.__webglMultisampledFramebuffer);for(let pt=0;pt0)for(let Mt=0;Mt<_.mipmaps.length;Mt++)Tt(F.__webglFramebuffer[pt][Mt],S,_,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+pt,Mt);else Tt(F.__webglFramebuffer[pt],S,_,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+pt,0);p(_)&&h(i.TEXTURE_CUBE_MAP),e.unbindTexture()}else if(bt){for(let pt=0,Mt=K.length;pt0)for(let Mt=0;Mt<_.mipmaps.length;Mt++)Tt(F.__webglFramebuffer[Mt],S,_,i.COLOR_ATTACHMENT0,pt,Mt);else Tt(F.__webglFramebuffer,S,_,i.COLOR_ATTACHMENT0,pt,0);p(_)&&h(pt),e.unbindTexture()}S.depthBuffer&&It(S)}function O(S){const _=S.textures;for(let F=0,j=_.length;F0){if(rt(S)===!1){const _=S.textures,F=S.width,j=S.height;let K=i.COLOR_BUFFER_BIT;const X=S.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,bt=n.get(S),pt=_.length>1;if(pt)for(let Mt=0;Mt<_.length;Mt++)e.bindFramebuffer(i.FRAMEBUFFER,bt.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+Mt,i.RENDERBUFFER,null),e.bindFramebuffer(i.FRAMEBUFFER,bt.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+Mt,i.TEXTURE_2D,null,0);e.bindFramebuffer(i.READ_FRAMEBUFFER,bt.__webglMultisampledFramebuffer),e.bindFramebuffer(i.DRAW_FRAMEBUFFER,bt.__webglFramebuffer);for(let Mt=0;Mt<_.length;Mt++){if(S.resolveDepthBuffer&&(S.depthBuffer&&(K|=i.DEPTH_BUFFER_BIT),S.stencilBuffer&&S.resolveStencilBuffer&&(K|=i.STENCIL_BUFFER_BIT)),pt){i.framebufferRenderbuffer(i.READ_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,bt.__webglColorRenderbuffer[Mt]);const Xt=n.get(_[Mt]).__webglTexture;i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Xt,0)}i.blitFramebuffer(0,0,F,j,0,0,F,j,K,i.NEAREST),l===!0&&(st.length=0,T.length=0,st.push(i.COLOR_ATTACHMENT0+Mt),S.depthBuffer&&S.resolveDepthBuffer===!1&&(st.push(X),T.push(X),i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,T)),i.invalidateFramebuffer(i.READ_FRAMEBUFFER,st))}if(e.bindFramebuffer(i.READ_FRAMEBUFFER,null),e.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),pt)for(let Mt=0;Mt<_.length;Mt++){e.bindFramebuffer(i.FRAMEBUFFER,bt.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+Mt,i.RENDERBUFFER,bt.__webglColorRenderbuffer[Mt]);const Xt=n.get(_[Mt]).__webglTexture;e.bindFramebuffer(i.FRAMEBUFFER,bt.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+Mt,i.TEXTURE_2D,Xt,0)}e.bindFramebuffer(i.DRAW_FRAMEBUFFER,bt.__webglMultisampledFramebuffer)}else if(S.depthBuffer&&S.resolveDepthBuffer===!1&&l){const _=S.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT;i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,[_])}}}function J(S){return Math.min(s.maxSamples,S.samples)}function rt(S){const _=n.get(S);return S.samples>0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&_.__useRenderToTexture!==!1}function $(S){const _=a.render.frame;u.get(S)!==_&&(u.set(S,_),S.update())}function Ut(S,_){const F=S.colorSpace,j=S.format,K=S.type;return S.isCompressedTexture===!0||S.isVideoTexture===!0||F!==Mi&&F!==Sn&&(jt.getTransfer(F)===Qt?(j!==Xe||K!==dn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",F)),_}function vt(S){return typeof HTMLImageElement<"u"&&S instanceof HTMLImageElement?(c.width=S.naturalWidth||S.width,c.height=S.naturalHeight||S.height):typeof VideoFrame<"u"&&S instanceof VideoFrame?(c.width=S.displayWidth,c.height=S.displayHeight):(c.width=S.width,c.height=S.height),c}this.allocateTextureUnit=H,this.resetTextureUnits=W,this.setTexture2D=Q,this.setTexture2DArray=k,this.setTexture3D=it,this.setTextureCube=V,this.rebindTextures=at,this.setupRenderTarget=tt,this.updateRenderTargetMipmap=O,this.updateMultisampleRenderTarget=ot,this.setupDepthRenderbuffer=It,this.setupFrameBufferTexture=Tt,this.useMultisampledRTT=rt}function Yp(i,t){function e(n,s=Sn){let r;const a=jt.getTransfer(s);if(n===dn)return i.UNSIGNED_BYTE;if(n===ma)return i.UNSIGNED_SHORT_4_4_4_4;if(n===_a)return i.UNSIGNED_SHORT_5_5_5_1;if(n===Qo)return i.UNSIGNED_INT_5_9_9_9_REV;if(n===$o)return i.BYTE;if(n===Jo)return i.SHORT;if(n===Ni)return i.UNSIGNED_SHORT;if(n===pa)return i.INT;if(n===zn)return i.UNSIGNED_INT;if(n===ln)return i.FLOAT;if(n===un)return i.HALF_FLOAT;if(n===tl)return i.ALPHA;if(n===el)return i.RGB;if(n===Xe)return i.RGBA;if(n===nl)return i.LUMINANCE;if(n===il)return i.LUMINANCE_ALPHA;if(n===di)return i.DEPTH_COMPONENT;if(n===xi)return i.DEPTH_STENCIL;if(n===sl)return i.RED;if(n===ga)return i.RED_INTEGER;if(n===rl)return i.RG;if(n===va)return i.RG_INTEGER;if(n===xa)return i.RGBA_INTEGER;if(n===vs||n===xs||n===Ms||n===Ss)if(a===Qt)if(r=t.get("WEBGL_compressed_texture_s3tc_srgb"),r!==null){if(n===vs)return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===xs)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Ms)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Ss)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(r=t.get("WEBGL_compressed_texture_s3tc"),r!==null){if(n===vs)return r.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===xs)return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Ms)return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Ss)return r.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Ir||n===Nr||n===Fr||n===Or)if(r=t.get("WEBGL_compressed_texture_pvrtc"),r!==null){if(n===Ir)return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===Nr)return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Fr)return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Or)return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===Br||n===zr||n===Hr)if(r=t.get("WEBGL_compressed_texture_etc"),r!==null){if(n===Br||n===zr)return a===Qt?r.COMPRESSED_SRGB8_ETC2:r.COMPRESSED_RGB8_ETC2;if(n===Hr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:r.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===Vr||n===Gr||n===kr||n===Wr||n===Xr||n===Yr||n===qr||n===jr||n===Zr||n===Kr||n===$r||n===Jr||n===Qr||n===ta)if(r=t.get("WEBGL_compressed_texture_astc"),r!==null){if(n===Vr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:r.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Gr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:r.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===kr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:r.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Wr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:r.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Xr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:r.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Yr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:r.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===qr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:r.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===jr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:r.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Zr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:r.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Kr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:r.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===$r)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:r.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Jr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:r.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Qr)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:r.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===ta)return a===Qt?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:r.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===ys||n===ea||n===na)if(r=t.get("EXT_texture_compression_bptc"),r!==null){if(n===ys)return a===Qt?r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:r.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===ea)return r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===na)return r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===al||n===ia||n===sa||n===ra)if(r=t.get("EXT_texture_compression_rgtc"),r!==null){if(n===ys)return r.COMPRESSED_RED_RGTC1_EXT;if(n===ia)return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===sa)return r.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===ra)return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===vi?i.UNSIGNED_INT_24_8:i[n]!==void 0?i[n]:null}return{convert:e}}const qp={type:"move"};class xr{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new ci,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new ci,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new R,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new R),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new ci,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new R,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new R),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){const e=this._hand;if(e)for(const n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let s=null,r=null,a=null;const o=this._targetRay,l=this._grip,c=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(c&&t.hand){a=!0;for(const x of t.hand.values()){const p=e.getJointPose(x,n),h=this._getHandJoint(c,x);p!==null&&(h.matrix.fromArray(p.transform.matrix),h.matrix.decompose(h.position,h.rotation,h.scale),h.matrixWorldNeedsUpdate=!0,h.jointRadius=p.radius),h.visible=p!==null}const u=c.joints["index-finger-tip"],f=c.joints["thumb-tip"],d=u.position.distanceTo(f.position),m=.02,g=.005;c.inputState.pinching&&d>m+g?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!c.inputState.pinching&&d<=m-g&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else l!==null&&t.gripSpace&&(r=e.getPose(t.gripSpace,n),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(s=e.getPose(t.targetRaySpace,n),s===null&&r!==null&&(s=r),s!==null&&(o.matrix.fromArray(s.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,s.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(s.linearVelocity)):o.hasLinearVelocity=!1,s.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(s.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(qp)))}return o!==null&&(o.visible=s!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){const n=new ci;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}}const jp=` +}`;function Tm(i,t,e){let n=new Ya;const s=new At,r=new At,a=new le,o=new Xh({depthPacking:th}),l=new Yh,c={},u=e.maxTextureSize,d={[Nn]:Ne,[Ne]:Nn,[an]:an},f=new Ie({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new At},radius:{value:4}},vertexShader:ym,fragmentShader:Em}),m=f.clone();m.defines.HORIZONTAL_PASS=1;const g=new xe;g.setAttribute("position",new ve(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new De(g,f),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=El;let h=this.type;this.render=function(w,R,N){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||w.length===0)return;const y=i.getRenderTarget(),M=i.getActiveCubeFace(),C=i.getActiveMipmapLevel(),W=i.state;W.setBlending(Mn),W.buffers.color.setClear(1,1,1,1),W.buffers.depth.setTest(!0),W.setScissorTest(!1);const H=h!==gn&&this.type===gn,q=h===gn&&this.type!==gn;for(let J=0,X=w.length;Ju||s.y>u)&&(s.x>u&&(r.x=Math.floor(u/ut.x),s.x=r.x*ut.x,k.mapSize.x=r.x),s.y>u&&(r.y=Math.floor(u/ut.y),s.y=r.y*ut.y,k.mapSize.y=r.y)),k.map===null||H===!0||q===!0){const Rt=this.type!==gn?{minFilter:ke,magFilter:ke}:{};k.map!==null&&k.map.dispose(),k.map=new en(s.x,s.y,Rt),k.map.texture.name=at.name+".shadowMap",k.camera.updateProjectionMatrix()}i.setRenderTarget(k.map),i.clear();const xt=k.getViewportCount();for(let Rt=0;Rt0||R.map&&R.alphaTest>0){const W=M.uuid,H=R.uuid;let q=c[W];q===void 0&&(q={},c[W]=q);let J=q[H];J===void 0&&(J=M.clone(),q[H]=J,R.addEventListener("dispose",D)),M=J}if(M.visible=R.visible,M.wireframe=R.wireframe,y===gn?M.side=R.shadowSide!==null?R.shadowSide:R.side:M.side=R.shadowSide!==null?R.shadowSide:d[R.side],M.alphaMap=R.alphaMap,M.alphaTest=R.alphaTest,M.map=R.map,M.clipShadows=R.clipShadows,M.clippingPlanes=R.clippingPlanes,M.clipIntersection=R.clipIntersection,M.displacementMap=R.displacementMap,M.displacementScale=R.displacementScale,M.displacementBias=R.displacementBias,M.wireframeLinewidth=R.wireframeLinewidth,M.linewidth=R.linewidth,N.isPointLight===!0&&M.isMeshDistanceMaterial===!0){const W=i.properties.get(M);W.light=N}return M}function E(w,R,N,y,M){if(w.visible===!1)return;if(w.layers.test(R.layers)&&(w.isMesh||w.isLine||w.isPoints)&&(w.castShadow||w.receiveShadow&&M===gn)&&(!w.frustumCulled||n.intersectsObject(w))){w.modelViewMatrix.multiplyMatrices(N.matrixWorldInverse,w.matrixWorld);const H=t.update(w),q=w.material;if(Array.isArray(q)){const J=H.groups;for(let X=0,at=J.length;X=1):k.indexOf("OpenGL ES")!==-1&&(at=parseFloat(/^OpenGL ES (\d)/.exec(k)[1]),X=at>=2);let ut=null,xt={};const Rt=i.getParameter(i.SCISSOR_BOX),Vt=i.getParameter(i.VIEWPORT),wt=new le().fromArray(Rt),V=new le().fromArray(Vt);function it(L,pt,G,Z){const St=new Uint8Array(4),vt=i.createTexture();i.bindTexture(L,vt),i.texParameteri(L,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(L,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let Gt=0;Gt"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new At,u=new WeakMap;let d;const f=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function g(S,_){return m?new OffscreenCanvas(S,_):qs("canvas")}function x(S,_,F){let j=1;const K=_t(S);if((K.width>F||K.height>F)&&(j=F/Math.max(K.width,K.height)),j<1)if(typeof HTMLImageElement<"u"&&S instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&S instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&S instanceof ImageBitmap||typeof VideoFrame<"u"&&S instanceof VideoFrame){const Y=Math.floor(j*K.width),Et=Math.floor(j*K.height);d===void 0&&(d=g(Y,Et));const ft=_?g(Y,Et):d;return ft.width=Y,ft.height=Et,ft.getContext("2d").drawImage(S,0,0,Y,Et),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+K.width+"x"+K.height+") to ("+Y+"x"+Et+")."),ft}else return"data"in S&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+K.width+"x"+K.height+")."),S;return S}function p(S){return S.generateMipmaps}function h(S){i.generateMipmap(S)}function A(S){return S.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:S.isWebGL3DRenderTarget?i.TEXTURE_3D:S.isWebGLArrayRenderTarget||S.isCompressedArrayTexture?i.TEXTURE_2D_ARRAY:i.TEXTURE_2D}function b(S,_,F,j,K=!1){if(S!==null){if(i[S]!==void 0)return i[S];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+S+"'")}let Y=_;if(_===i.RED&&(F===i.FLOAT&&(Y=i.R32F),F===i.HALF_FLOAT&&(Y=i.R16F),F===i.UNSIGNED_BYTE&&(Y=i.R8)),_===i.RED_INTEGER&&(F===i.UNSIGNED_BYTE&&(Y=i.R8UI),F===i.UNSIGNED_SHORT&&(Y=i.R16UI),F===i.UNSIGNED_INT&&(Y=i.R32UI),F===i.BYTE&&(Y=i.R8I),F===i.SHORT&&(Y=i.R16I),F===i.INT&&(Y=i.R32I)),_===i.RG&&(F===i.FLOAT&&(Y=i.RG32F),F===i.HALF_FLOAT&&(Y=i.RG16F),F===i.UNSIGNED_BYTE&&(Y=i.RG8)),_===i.RG_INTEGER&&(F===i.UNSIGNED_BYTE&&(Y=i.RG8UI),F===i.UNSIGNED_SHORT&&(Y=i.RG16UI),F===i.UNSIGNED_INT&&(Y=i.RG32UI),F===i.BYTE&&(Y=i.RG8I),F===i.SHORT&&(Y=i.RG16I),F===i.INT&&(Y=i.RG32I)),_===i.RGB_INTEGER&&(F===i.UNSIGNED_BYTE&&(Y=i.RGB8UI),F===i.UNSIGNED_SHORT&&(Y=i.RGB16UI),F===i.UNSIGNED_INT&&(Y=i.RGB32UI),F===i.BYTE&&(Y=i.RGB8I),F===i.SHORT&&(Y=i.RGB16I),F===i.INT&&(Y=i.RGB32I)),_===i.RGBA_INTEGER&&(F===i.UNSIGNED_BYTE&&(Y=i.RGBA8UI),F===i.UNSIGNED_SHORT&&(Y=i.RGBA16UI),F===i.UNSIGNED_INT&&(Y=i.RGBA32UI),F===i.BYTE&&(Y=i.RGBA8I),F===i.SHORT&&(Y=i.RGBA16I),F===i.INT&&(Y=i.RGBA32I)),_===i.RGB&&F===i.UNSIGNED_INT_5_9_9_9_REV&&(Y=i.RGB9_E5),_===i.RGBA){const Et=K?Xs:Qt.getTransfer(j);F===i.FLOAT&&(Y=i.RGBA32F),F===i.HALF_FLOAT&&(Y=i.RGBA16F),F===i.UNSIGNED_BYTE&&(Y=Et===re?i.SRGB8_ALPHA8:i.RGBA8),F===i.UNSIGNED_SHORT_4_4_4_4&&(Y=i.RGBA4),F===i.UNSIGNED_SHORT_5_5_5_1&&(Y=i.RGB5_A1)}return(Y===i.R16F||Y===i.R32F||Y===i.RG16F||Y===i.RG32F||Y===i.RGBA16F||Y===i.RGBA32F)&&t.get("EXT_color_buffer_float"),Y}function E(S,_){let F;return S?_===null||_===$n||_===Ui?F=i.DEPTH24_STENCIL8:_===cn?F=i.DEPTH32F_STENCIL8:_===Qi&&(F=i.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):_===null||_===$n||_===Ui?F=i.DEPTH_COMPONENT24:_===cn?F=i.DEPTH_COMPONENT32F:_===Qi&&(F=i.DEPTH_COMPONENT16),F}function D(S,_){return p(S)===!0||S.isFramebufferTexture&&S.minFilter!==ke&&S.minFilter!==ln?Math.log2(Math.max(_.width,_.height))+1:S.mipmaps!==void 0&&S.mipmaps.length>0?S.mipmaps.length:S.isCompressedTexture&&Array.isArray(S.image)?_.mipmaps.length:1}function w(S){const _=S.target;_.removeEventListener("dispose",w),N(_),_.isVideoTexture&&u.delete(_)}function R(S){const _=S.target;_.removeEventListener("dispose",R),M(_)}function N(S){const _=n.get(S);if(_.__webglInit===void 0)return;const F=S.source,j=f.get(F);if(j){const K=j[_.__cacheKey];K.usedTimes--,K.usedTimes===0&&y(S),Object.keys(j).length===0&&f.delete(F)}n.remove(S)}function y(S){const _=n.get(S);i.deleteTexture(_.__webglTexture);const F=S.source,j=f.get(F);delete j[_.__cacheKey],a.memory.textures--}function M(S){const _=n.get(S);if(S.depthTexture&&(S.depthTexture.dispose(),n.remove(S.depthTexture)),S.isWebGLCubeRenderTarget)for(let j=0;j<6;j++){if(Array.isArray(_.__webglFramebuffer[j]))for(let K=0;K<_.__webglFramebuffer[j].length;K++)i.deleteFramebuffer(_.__webglFramebuffer[j][K]);else i.deleteFramebuffer(_.__webglFramebuffer[j]);_.__webglDepthbuffer&&i.deleteRenderbuffer(_.__webglDepthbuffer[j])}else{if(Array.isArray(_.__webglFramebuffer))for(let j=0;j<_.__webglFramebuffer.length;j++)i.deleteFramebuffer(_.__webglFramebuffer[j]);else i.deleteFramebuffer(_.__webglFramebuffer);if(_.__webglDepthbuffer&&i.deleteRenderbuffer(_.__webglDepthbuffer),_.__webglMultisampledFramebuffer&&i.deleteFramebuffer(_.__webglMultisampledFramebuffer),_.__webglColorRenderbuffer)for(let j=0;j<_.__webglColorRenderbuffer.length;j++)_.__webglColorRenderbuffer[j]&&i.deleteRenderbuffer(_.__webglColorRenderbuffer[j]);_.__webglDepthRenderbuffer&&i.deleteRenderbuffer(_.__webglDepthRenderbuffer)}const F=S.textures;for(let j=0,K=F.length;j=s.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+S+" texture units while this GPU supports only "+s.maxTextures),C+=1,S}function q(S){const _=[];return _.push(S.wrapS),_.push(S.wrapT),_.push(S.wrapR||0),_.push(S.magFilter),_.push(S.minFilter),_.push(S.anisotropy),_.push(S.internalFormat),_.push(S.format),_.push(S.type),_.push(S.generateMipmaps),_.push(S.premultiplyAlpha),_.push(S.flipY),_.push(S.unpackAlignment),_.push(S.colorSpace),_.join()}function J(S,_){const F=n.get(S);if(S.isVideoTexture&&$(S),S.isRenderTargetTexture===!1&&S.version>0&&F.__version!==S.version){const j=S.image;if(j===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(j.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{V(F,S,_);return}}e.bindTexture(i.TEXTURE_2D,F.__webglTexture,i.TEXTURE0+_)}function X(S,_){const F=n.get(S);if(S.version>0&&F.__version!==S.version){V(F,S,_);return}e.bindTexture(i.TEXTURE_2D_ARRAY,F.__webglTexture,i.TEXTURE0+_)}function at(S,_){const F=n.get(S);if(S.version>0&&F.__version!==S.version){V(F,S,_);return}e.bindTexture(i.TEXTURE_3D,F.__webglTexture,i.TEXTURE0+_)}function k(S,_){const F=n.get(S);if(S.version>0&&F.__version!==S.version){it(F,S,_);return}e.bindTexture(i.TEXTURE_CUBE_MAP,F.__webglTexture,i.TEXTURE0+_)}const ut={[ta]:i.REPEAT,[Zn]:i.CLAMP_TO_EDGE,[ea]:i.MIRRORED_REPEAT},xt={[ke]:i.NEAREST,[Jc]:i.NEAREST_MIPMAP_NEAREST,[as]:i.NEAREST_MIPMAP_LINEAR,[ln]:i.LINEAR,[rr]:i.LINEAR_MIPMAP_NEAREST,[Kn]:i.LINEAR_MIPMAP_LINEAR},Rt={[nh]:i.NEVER,[lh]:i.ALWAYS,[ih]:i.LESS,[Ol]:i.LEQUAL,[sh]:i.EQUAL,[oh]:i.GEQUAL,[rh]:i.GREATER,[ah]:i.NOTEQUAL};function Vt(S,_){if(_.type===cn&&t.has("OES_texture_float_linear")===!1&&(_.magFilter===ln||_.magFilter===rr||_.magFilter===as||_.magFilter===Kn||_.minFilter===ln||_.minFilter===rr||_.minFilter===as||_.minFilter===Kn)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),i.texParameteri(S,i.TEXTURE_WRAP_S,ut[_.wrapS]),i.texParameteri(S,i.TEXTURE_WRAP_T,ut[_.wrapT]),(S===i.TEXTURE_3D||S===i.TEXTURE_2D_ARRAY)&&i.texParameteri(S,i.TEXTURE_WRAP_R,ut[_.wrapR]),i.texParameteri(S,i.TEXTURE_MAG_FILTER,xt[_.magFilter]),i.texParameteri(S,i.TEXTURE_MIN_FILTER,xt[_.minFilter]),_.compareFunction&&(i.texParameteri(S,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(S,i.TEXTURE_COMPARE_FUNC,Rt[_.compareFunction])),t.has("EXT_texture_filter_anisotropic")===!0){if(_.magFilter===ke||_.minFilter!==as&&_.minFilter!==Kn||_.type===cn&&t.has("OES_texture_float_linear")===!1)return;if(_.anisotropy>1||n.get(_).__currentAnisotropy){const F=t.get("EXT_texture_filter_anisotropic");i.texParameterf(S,F.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(_.anisotropy,s.getMaxAnisotropy())),n.get(_).__currentAnisotropy=_.anisotropy}}}function wt(S,_){let F=!1;S.__webglInit===void 0&&(S.__webglInit=!0,_.addEventListener("dispose",w));const j=_.source;let K=f.get(j);K===void 0&&(K={},f.set(j,K));const Y=q(_);if(Y!==S.__cacheKey){K[Y]===void 0&&(K[Y]={texture:i.createTexture(),usedTimes:0},a.memory.textures++,F=!0),K[Y].usedTimes++;const Et=K[S.__cacheKey];Et!==void 0&&(K[S.__cacheKey].usedTimes--,Et.usedTimes===0&&y(_)),S.__cacheKey=Y,S.__webglTexture=K[Y].texture}return F}function V(S,_,F){let j=i.TEXTURE_2D;(_.isDataArrayTexture||_.isCompressedArrayTexture)&&(j=i.TEXTURE_2D_ARRAY),_.isData3DTexture&&(j=i.TEXTURE_3D);const K=wt(S,_),Y=_.source;e.bindTexture(j,S.__webglTexture,i.TEXTURE0+F);const Et=n.get(Y);if(Y.version!==Et.__version||K===!0){e.activeTexture(i.TEXTURE0+F);const ft=Qt.getPrimaries(Qt.workingColorSpace),ht=_.colorSpace===Ln?null:Qt.getPrimaries(_.colorSpace),Ot=_.colorSpace===Ln||ft===ht?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,_.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,_.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,Ot);let et=x(_.image,!1,s.maxTextureSize);et=Ft(_,et);const gt=r.convert(_.format,_.colorSpace),Lt=r.convert(_.type);let Bt=b(_.internalFormat,gt,Lt,_.colorSpace,_.isVideoTexture);Vt(j,_);let yt;const Zt=_.mipmaps,kt=_.isVideoTexture!==!0,se=Et.__version===void 0||K===!0,L=Y.dataReady,pt=D(_,et);if(_.isDepthTexture)Bt=E(_.format===Ii,_.type),se&&(kt?e.texStorage2D(i.TEXTURE_2D,1,Bt,et.width,et.height):e.texImage2D(i.TEXTURE_2D,0,Bt,et.width,et.height,0,gt,Lt,null));else if(_.isDataTexture)if(Zt.length>0){kt&&se&&e.texStorage2D(i.TEXTURE_2D,pt,Bt,Zt[0].width,Zt[0].height);for(let G=0,Z=Zt.length;G0){const St=Yo(yt.width,yt.height,_.format,_.type);for(const vt of _.layerUpdates){const Gt=yt.data.subarray(vt*St/yt.data.BYTES_PER_ELEMENT,(vt+1)*St/yt.data.BYTES_PER_ELEMENT);e.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,G,0,0,vt,yt.width,yt.height,1,gt,Gt)}_.clearLayerUpdates()}else e.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,G,0,0,0,yt.width,yt.height,et.depth,gt,yt.data)}else e.compressedTexImage3D(i.TEXTURE_2D_ARRAY,G,Bt,yt.width,yt.height,et.depth,0,yt.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else kt?L&&e.texSubImage3D(i.TEXTURE_2D_ARRAY,G,0,0,0,yt.width,yt.height,et.depth,gt,Lt,yt.data):e.texImage3D(i.TEXTURE_2D_ARRAY,G,Bt,yt.width,yt.height,et.depth,0,gt,Lt,yt.data)}else{kt&&se&&e.texStorage2D(i.TEXTURE_2D,pt,Bt,Zt[0].width,Zt[0].height);for(let G=0,Z=Zt.length;G0){const G=Yo(et.width,et.height,_.format,_.type);for(const Z of _.layerUpdates){const St=et.data.subarray(Z*G/et.data.BYTES_PER_ELEMENT,(Z+1)*G/et.data.BYTES_PER_ELEMENT);e.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,Z,et.width,et.height,1,gt,Lt,St)}_.clearLayerUpdates()}else e.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,et.width,et.height,et.depth,gt,Lt,et.data)}else e.texImage3D(i.TEXTURE_2D_ARRAY,0,Bt,et.width,et.height,et.depth,0,gt,Lt,et.data);else if(_.isData3DTexture)kt?(se&&e.texStorage3D(i.TEXTURE_3D,pt,Bt,et.width,et.height,et.depth),L&&e.texSubImage3D(i.TEXTURE_3D,0,0,0,0,et.width,et.height,et.depth,gt,Lt,et.data)):e.texImage3D(i.TEXTURE_3D,0,Bt,et.width,et.height,et.depth,0,gt,Lt,et.data);else if(_.isFramebufferTexture){if(se)if(kt)e.texStorage2D(i.TEXTURE_2D,pt,Bt,et.width,et.height);else{let G=et.width,Z=et.height;for(let St=0;St>=1,Z>>=1}}else if(Zt.length>0){if(kt&&se){const G=_t(Zt[0]);e.texStorage2D(i.TEXTURE_2D,pt,Bt,G.width,G.height)}for(let G=0,Z=Zt.length;G0&&pt++;const Z=_t(gt[0]);e.texStorage2D(i.TEXTURE_CUBE_MAP,pt,Zt,Z.width,Z.height)}for(let Z=0;Z<6;Z++)if(et){kt?L&&e.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,0,0,gt[Z].width,gt[Z].height,Bt,yt,gt[Z].data):e.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,Zt,gt[Z].width,gt[Z].height,0,Bt,yt,gt[Z].data);for(let St=0;St>Y),Lt=Math.max(1,_.height>>Y);K===i.TEXTURE_3D||K===i.TEXTURE_2D_ARRAY?e.texImage3D(K,Y,ht,gt,Lt,_.depth,0,Et,ft,null):e.texImage2D(K,Y,ht,gt,Lt,0,Et,ft,null)}e.bindFramebuffer(i.FRAMEBUFFER,S),rt(_)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,j,K,et.__webglTexture,0,tt(_)):(K===i.TEXTURE_2D||K>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&K<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,j,K,et.__webglTexture,Y),e.bindFramebuffer(i.FRAMEBUFFER,null)}function ct(S,_,F){if(i.bindRenderbuffer(i.RENDERBUFFER,S),_.depthBuffer){const j=_.depthTexture,K=j&&j.isDepthTexture?j.type:null,Y=E(_.stencilBuffer,K),Et=_.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,ft=tt(_);rt(_)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,ft,Y,_.width,_.height):F?i.renderbufferStorageMultisample(i.RENDERBUFFER,ft,Y,_.width,_.height):i.renderbufferStorage(i.RENDERBUFFER,Y,_.width,_.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,Et,i.RENDERBUFFER,S)}else{const j=_.textures;for(let K=0;K{delete _.__boundDepthTexture,delete _.__depthDisposeCallback,j.removeEventListener("dispose",K)};j.addEventListener("dispose",K),_.__depthDisposeCallback=K}_.__boundDepthTexture=j}if(S.depthTexture&&!_.__autoAllocateDepthBuffer){if(F)throw new Error("target.depthTexture not supported in Cube render targets");Ct(_.__webglFramebuffer,S)}else if(F){_.__webglDepthbuffer=[];for(let j=0;j<6;j++)if(e.bindFramebuffer(i.FRAMEBUFFER,_.__webglFramebuffer[j]),_.__webglDepthbuffer[j]===void 0)_.__webglDepthbuffer[j]=i.createRenderbuffer(),ct(_.__webglDepthbuffer[j],S,!1);else{const K=S.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Y=_.__webglDepthbuffer[j];i.bindRenderbuffer(i.RENDERBUFFER,Y),i.framebufferRenderbuffer(i.FRAMEBUFFER,K,i.RENDERBUFFER,Y)}}else if(e.bindFramebuffer(i.FRAMEBUFFER,_.__webglFramebuffer),_.__webglDepthbuffer===void 0)_.__webglDepthbuffer=i.createRenderbuffer(),ct(_.__webglDepthbuffer,S,!1);else{const j=S.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,K=_.__webglDepthbuffer;i.bindRenderbuffer(i.RENDERBUFFER,K),i.framebufferRenderbuffer(i.FRAMEBUFFER,j,i.RENDERBUFFER,K)}e.bindFramebuffer(i.FRAMEBUFFER,null)}function nt(S,_,F){const j=n.get(S);_!==void 0&&Mt(j.__webglFramebuffer,S,S.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),F!==void 0&&Pt(S)}function Q(S){const _=S.texture,F=n.get(S),j=n.get(_);S.addEventListener("dispose",R);const K=S.textures,Y=S.isWebGLCubeRenderTarget===!0,Et=K.length>1;if(Et||(j.__webglTexture===void 0&&(j.__webglTexture=i.createTexture()),j.__version=_.version,a.memory.textures++),Y){F.__webglFramebuffer=[];for(let ft=0;ft<6;ft++)if(_.mipmaps&&_.mipmaps.length>0){F.__webglFramebuffer[ft]=[];for(let ht=0;ht<_.mipmaps.length;ht++)F.__webglFramebuffer[ft][ht]=i.createFramebuffer()}else F.__webglFramebuffer[ft]=i.createFramebuffer()}else{if(_.mipmaps&&_.mipmaps.length>0){F.__webglFramebuffer=[];for(let ft=0;ft<_.mipmaps.length;ft++)F.__webglFramebuffer[ft]=i.createFramebuffer()}else F.__webglFramebuffer=i.createFramebuffer();if(Et)for(let ft=0,ht=K.length;ft0&&rt(S)===!1){F.__webglMultisampledFramebuffer=i.createFramebuffer(),F.__webglColorRenderbuffer=[],e.bindFramebuffer(i.FRAMEBUFFER,F.__webglMultisampledFramebuffer);for(let ft=0;ft0)for(let ht=0;ht<_.mipmaps.length;ht++)Mt(F.__webglFramebuffer[ft][ht],S,_,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+ft,ht);else Mt(F.__webglFramebuffer[ft],S,_,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+ft,0);p(_)&&h(i.TEXTURE_CUBE_MAP),e.unbindTexture()}else if(Et){for(let ft=0,ht=K.length;ft0)for(let ht=0;ht<_.mipmaps.length;ht++)Mt(F.__webglFramebuffer[ht],S,_,i.COLOR_ATTACHMENT0,ft,ht);else Mt(F.__webglFramebuffer,S,_,i.COLOR_ATTACHMENT0,ft,0);p(_)&&h(ft),e.unbindTexture()}S.depthBuffer&&Pt(S)}function O(S){const _=S.textures;for(let F=0,j=_.length;F0){if(rt(S)===!1){const _=S.textures,F=S.width,j=S.height;let K=i.COLOR_BUFFER_BIT;const Y=S.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Et=n.get(S),ft=_.length>1;if(ft)for(let ht=0;ht<_.length;ht++)e.bindFramebuffer(i.FRAMEBUFFER,Et.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+ht,i.RENDERBUFFER,null),e.bindFramebuffer(i.FRAMEBUFFER,Et.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+ht,i.TEXTURE_2D,null,0);e.bindFramebuffer(i.READ_FRAMEBUFFER,Et.__webglMultisampledFramebuffer),e.bindFramebuffer(i.DRAW_FRAMEBUFFER,Et.__webglFramebuffer);for(let ht=0;ht<_.length;ht++){if(S.resolveDepthBuffer&&(S.depthBuffer&&(K|=i.DEPTH_BUFFER_BIT),S.stencilBuffer&&S.resolveStencilBuffer&&(K|=i.STENCIL_BUFFER_BIT)),ft){i.framebufferRenderbuffer(i.READ_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,Et.__webglColorRenderbuffer[ht]);const Ot=n.get(_[ht]).__webglTexture;i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Ot,0)}i.blitFramebuffer(0,0,F,j,0,0,F,j,K,i.NEAREST),l===!0&&(ot.length=0,T.length=0,ot.push(i.COLOR_ATTACHMENT0+ht),S.depthBuffer&&S.resolveDepthBuffer===!1&&(ot.push(Y),T.push(Y),i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,T)),i.invalidateFramebuffer(i.READ_FRAMEBUFFER,ot))}if(e.bindFramebuffer(i.READ_FRAMEBUFFER,null),e.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),ft)for(let ht=0;ht<_.length;ht++){e.bindFramebuffer(i.FRAMEBUFFER,Et.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+ht,i.RENDERBUFFER,Et.__webglColorRenderbuffer[ht]);const Ot=n.get(_[ht]).__webglTexture;e.bindFramebuffer(i.FRAMEBUFFER,Et.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+ht,i.TEXTURE_2D,Ot,0)}e.bindFramebuffer(i.DRAW_FRAMEBUFFER,Et.__webglMultisampledFramebuffer)}else if(S.depthBuffer&&S.resolveDepthBuffer===!1&&l){const _=S.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT;i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,[_])}}}function tt(S){return Math.min(s.maxSamples,S.samples)}function rt(S){const _=n.get(S);return S.samples>0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&_.__useRenderToTexture!==!1}function $(S){const _=a.render.frame;u.get(S)!==_&&(u.set(S,_),S.update())}function Ft(S,_){const F=S.colorSpace,j=S.format,K=S.type;return S.isCompressedTexture===!0||S.isVideoTexture===!0||F!==Ni&&F!==Ln&&(Qt.getTransfer(F)===re?(j!==tn||K!==En)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",F)),_}function _t(S){return typeof HTMLImageElement<"u"&&S instanceof HTMLImageElement?(c.width=S.naturalWidth||S.width,c.height=S.naturalHeight||S.height):typeof VideoFrame<"u"&&S instanceof VideoFrame?(c.width=S.displayWidth,c.height=S.displayHeight):(c.width=S.width,c.height=S.height),c}this.allocateTextureUnit=H,this.resetTextureUnits=W,this.setTexture2D=J,this.setTexture2DArray=X,this.setTexture3D=at,this.setTextureCube=k,this.rebindTextures=nt,this.setupRenderTarget=Q,this.updateRenderTargetMipmap=O,this.updateMultisampleRenderTarget=lt,this.setupDepthRenderbuffer=Pt,this.setupFrameBufferTexture=Mt,this.useMultisampledRTT=rt}function Rm(i,t){function e(n,s=Ln){let r;const a=Qt.getTransfer(s);if(n===En)return i.UNSIGNED_BYTE;if(n===za)return i.UNSIGNED_SHORT_4_4_4_4;if(n===Ha)return i.UNSIGNED_SHORT_5_5_5_1;if(n===Cl)return i.UNSIGNED_INT_5_9_9_9_REV;if(n===wl)return i.BYTE;if(n===Rl)return i.SHORT;if(n===Qi)return i.UNSIGNED_SHORT;if(n===Ba)return i.INT;if(n===$n)return i.UNSIGNED_INT;if(n===cn)return i.FLOAT;if(n===Sn)return i.HALF_FLOAT;if(n===Pl)return i.ALPHA;if(n===Dl)return i.RGB;if(n===tn)return i.RGBA;if(n===Ll)return i.LUMINANCE;if(n===Ul)return i.LUMINANCE_ALPHA;if(n===Ri)return i.DEPTH_COMPONENT;if(n===Ii)return i.DEPTH_STENCIL;if(n===ka)return i.RED;if(n===Va)return i.RED_INTEGER;if(n===Il)return i.RG;if(n===Ga)return i.RG_INTEGER;if(n===Wa)return i.RGBA_INTEGER;if(n===Fs||n===Os||n===Bs||n===zs)if(a===re)if(r=t.get("WEBGL_compressed_texture_s3tc_srgb"),r!==null){if(n===Fs)return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===Os)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Bs)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===zs)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(r=t.get("WEBGL_compressed_texture_s3tc"),r!==null){if(n===Fs)return r.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===Os)return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Bs)return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===zs)return r.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===na||n===ia||n===sa||n===ra)if(r=t.get("WEBGL_compressed_texture_pvrtc"),r!==null){if(n===na)return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===ia)return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===sa)return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===ra)return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===aa||n===oa||n===la)if(r=t.get("WEBGL_compressed_texture_etc"),r!==null){if(n===aa||n===oa)return a===re?r.COMPRESSED_SRGB8_ETC2:r.COMPRESSED_RGB8_ETC2;if(n===la)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:r.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===ca||n===ha||n===ua||n===da||n===fa||n===pa||n===ma||n===_a||n===ga||n===va||n===xa||n===Ma||n===Sa||n===ya)if(r=t.get("WEBGL_compressed_texture_astc"),r!==null){if(n===ca)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:r.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===ha)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:r.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===ua)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:r.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===da)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:r.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===fa)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:r.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===pa)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:r.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===ma)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:r.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===_a)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:r.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===ga)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:r.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===va)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:r.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===xa)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:r.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Ma)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:r.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Sa)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:r.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===ya)return a===re?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:r.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Hs||n===Ea||n===Ta)if(r=t.get("EXT_texture_compression_bptc"),r!==null){if(n===Hs)return a===re?r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:r.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Ea)return r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Ta)return r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===Nl||n===ba||n===Aa||n===wa)if(r=t.get("EXT_texture_compression_rgtc"),r!==null){if(n===Hs)return r.COMPRESSED_RED_RGTC1_EXT;if(n===ba)return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===Aa)return r.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===wa)return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===Ui?i.UNSIGNED_INT_24_8:i[n]!==void 0?i[n]:null}return{convert:e}}const Cm={type:"move"};class Br{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Ti,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Ti,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new P,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new P),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Ti,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new P,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new P),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){const e=this._hand;if(e)for(const n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let s=null,r=null,a=null;const o=this._targetRay,l=this._grip,c=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(c&&t.hand){a=!0;for(const x of t.hand.values()){const p=e.getJointPose(x,n),h=this._getHandJoint(c,x);p!==null&&(h.matrix.fromArray(p.transform.matrix),h.matrix.decompose(h.position,h.rotation,h.scale),h.matrixWorldNeedsUpdate=!0,h.jointRadius=p.radius),h.visible=p!==null}const u=c.joints["index-finger-tip"],d=c.joints["thumb-tip"],f=u.position.distanceTo(d.position),m=.02,g=.005;c.inputState.pinching&&f>m+g?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!c.inputState.pinching&&f<=m-g&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else l!==null&&t.gripSpace&&(r=e.getPose(t.gripSpace,n),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(s=e.getPose(t.targetRaySpace,n),s===null&&r!==null&&(s=r),s!==null&&(o.matrix.fromArray(s.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,s.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(s.linearVelocity)):o.hasLinearVelocity=!1,s.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(s.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(Cm)))}return o!==null&&(o.visible=s!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){const n=new Ti;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}}const Pm=` void main() { gl_Position = vec4( position, 1.0 ); -}`,Zp=` +}`,Dm=` uniform sampler2DArray depthColor; uniform float depthWidth; uniform float depthHeight; @@ -3824,7 +3824,7 @@ void main() { } -}`;class Kp{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(t,e,n){if(this.texture===null){const s=new be,r=t.properties.get(s);r.__webglTexture=e.texture,(e.depthNear!==n.depthNear||e.depthFar!==n.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=s}}getMesh(t){if(this.texture!==null&&this.mesh===null){const e=t.cameras[0].viewport,n=new Re({vertexShader:jp,fragmentShader:Zp,uniforms:{depthColor:{value:this.texture},depthWidth:{value:e.z},depthHeight:{value:e.w}}});this.mesh=new ze(new Fs(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class $p extends Vn{constructor(t,e){super();const n=this;let s=null,r=1,a=null,o="local-floor",l=1,c=null,u=null,f=null,d=null,m=null,g=null;const x=new Kp,p=e.getContextAttributes();let h=null,A=null;const b=[],E=[],U=new At;let w=null;const C=new Ue;C.viewport=new ne;const N=new Ue;N.viewport=new ne;const y=[C,N],M=new ph;let P=null,W=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(q){let lt=b[q];return lt===void 0&&(lt=new xr,b[q]=lt),lt.getTargetRaySpace()},this.getControllerGrip=function(q){let lt=b[q];return lt===void 0&&(lt=new xr,b[q]=lt),lt.getGripSpace()},this.getHand=function(q){let lt=b[q];return lt===void 0&&(lt=new xr,b[q]=lt),lt.getHandSpace()};function H(q){const lt=E.indexOf(q.inputSource);if(lt===-1)return;const Tt=b[lt];Tt!==void 0&&(Tt.update(q.inputSource,q.frame,c||a),Tt.dispatchEvent({type:q.type,data:q.inputSource}))}function Y(){s.removeEventListener("select",H),s.removeEventListener("selectstart",H),s.removeEventListener("selectend",H),s.removeEventListener("squeeze",H),s.removeEventListener("squeezestart",H),s.removeEventListener("squeezeend",H),s.removeEventListener("end",Y),s.removeEventListener("inputsourceschange",Q);for(let q=0;q=0&&(E[ut]=null,b[ut].disconnect(Tt))}for(let lt=0;lt=E.length){E.push(Tt),ut=It;break}else if(E[It]===null){E[It]=Tt,ut=It;break}if(ut===-1)break}const Dt=b[ut];Dt&&Dt.connect(Tt)}}const k=new R,it=new R;function V(q,lt,Tt){k.setFromMatrixPosition(lt.matrixWorld),it.setFromMatrixPosition(Tt.matrixWorld);const ut=k.distanceTo(it),Dt=lt.projectionMatrix.elements,It=Tt.projectionMatrix.elements,at=Dt[14]/(Dt[10]-1),tt=Dt[14]/(Dt[10]+1),O=(Dt[9]+1)/Dt[5],st=(Dt[9]-1)/Dt[5],T=(Dt[8]-1)/Dt[0],ot=(It[8]+1)/It[0],J=at*T,rt=at*ot,$=ut/(-T+ot),Ut=$*-T;if(lt.matrixWorld.decompose(q.position,q.quaternion,q.scale),q.translateX(Ut),q.translateZ($),q.matrixWorld.compose(q.position,q.quaternion,q.scale),q.matrixWorldInverse.copy(q.matrixWorld).invert(),Dt[10]===-1)q.projectionMatrix.copy(lt.projectionMatrix),q.projectionMatrixInverse.copy(lt.projectionMatrixInverse);else{const vt=at+$,S=tt+$,_=J-Ut,F=rt+(ut-Ut),j=O*tt/S*vt,K=st*tt/S*vt;q.projectionMatrix.makePerspective(_,F,j,K,vt,S),q.projectionMatrixInverse.copy(q.projectionMatrix).invert()}}function ht(q,lt){lt===null?q.matrixWorld.copy(q.matrix):q.matrixWorld.multiplyMatrices(lt.matrixWorld,q.matrix),q.matrixWorldInverse.copy(q.matrixWorld).invert()}this.updateCamera=function(q){if(s===null)return;let lt=q.near,Tt=q.far;x.texture!==null&&(x.depthNear>0&&(lt=x.depthNear),x.depthFar>0&&(Tt=x.depthFar)),M.near=N.near=C.near=lt,M.far=N.far=C.far=Tt,(P!==M.near||W!==M.far)&&(s.updateRenderState({depthNear:M.near,depthFar:M.far}),P=M.near,W=M.far),C.layers.mask=q.layers.mask|2,N.layers.mask=q.layers.mask|4,M.layers.mask=C.layers.mask|N.layers.mask;const ut=q.parent,Dt=M.cameras;ht(M,ut);for(let It=0;It0&&(p.alphaTest.value=h.alphaTest);const A=t.get(h),b=A.envMap,E=A.envMapRotation;b&&(p.envMap.value=b,Un.copy(E),Un.x*=-1,Un.y*=-1,Un.z*=-1,b.isCubeTexture&&b.isRenderTargetTexture===!1&&(Un.y*=-1,Un.z*=-1),p.envMapRotation.value.setFromMatrix4(Jp.makeRotationFromEuler(Un)),p.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=h.reflectivity,p.ior.value=h.ior,p.refractionRatio.value=h.refractionRatio),h.lightMap&&(p.lightMap.value=h.lightMap,p.lightMapIntensity.value=h.lightMapIntensity,e(h.lightMap,p.lightMapTransform)),h.aoMap&&(p.aoMap.value=h.aoMap,p.aoMapIntensity.value=h.aoMapIntensity,e(h.aoMap,p.aoMapTransform))}function a(p,h){p.diffuse.value.copy(h.color),p.opacity.value=h.opacity,h.map&&(p.map.value=h.map,e(h.map,p.mapTransform))}function o(p,h){p.dashSize.value=h.dashSize,p.totalSize.value=h.dashSize+h.gapSize,p.scale.value=h.scale}function l(p,h,A,b){p.diffuse.value.copy(h.color),p.opacity.value=h.opacity,p.size.value=h.size*A,p.scale.value=b*.5,h.map&&(p.map.value=h.map,e(h.map,p.uvTransform)),h.alphaMap&&(p.alphaMap.value=h.alphaMap,e(h.alphaMap,p.alphaMapTransform)),h.alphaTest>0&&(p.alphaTest.value=h.alphaTest)}function c(p,h){p.diffuse.value.copy(h.color),p.opacity.value=h.opacity,p.rotation.value=h.rotation,h.map&&(p.map.value=h.map,e(h.map,p.mapTransform)),h.alphaMap&&(p.alphaMap.value=h.alphaMap,e(h.alphaMap,p.alphaMapTransform)),h.alphaTest>0&&(p.alphaTest.value=h.alphaTest)}function u(p,h){p.specular.value.copy(h.specular),p.shininess.value=Math.max(h.shininess,1e-4)}function f(p,h){h.gradientMap&&(p.gradientMap.value=h.gradientMap)}function d(p,h){p.metalness.value=h.metalness,h.metalnessMap&&(p.metalnessMap.value=h.metalnessMap,e(h.metalnessMap,p.metalnessMapTransform)),p.roughness.value=h.roughness,h.roughnessMap&&(p.roughnessMap.value=h.roughnessMap,e(h.roughnessMap,p.roughnessMapTransform)),h.envMap&&(p.envMapIntensity.value=h.envMapIntensity)}function m(p,h,A){p.ior.value=h.ior,h.sheen>0&&(p.sheenColor.value.copy(h.sheenColor).multiplyScalar(h.sheen),p.sheenRoughness.value=h.sheenRoughness,h.sheenColorMap&&(p.sheenColorMap.value=h.sheenColorMap,e(h.sheenColorMap,p.sheenColorMapTransform)),h.sheenRoughnessMap&&(p.sheenRoughnessMap.value=h.sheenRoughnessMap,e(h.sheenRoughnessMap,p.sheenRoughnessMapTransform))),h.clearcoat>0&&(p.clearcoat.value=h.clearcoat,p.clearcoatRoughness.value=h.clearcoatRoughness,h.clearcoatMap&&(p.clearcoatMap.value=h.clearcoatMap,e(h.clearcoatMap,p.clearcoatMapTransform)),h.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=h.clearcoatRoughnessMap,e(h.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),h.clearcoatNormalMap&&(p.clearcoatNormalMap.value=h.clearcoatNormalMap,e(h.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(h.clearcoatNormalScale),h.side===Ce&&p.clearcoatNormalScale.value.negate())),h.dispersion>0&&(p.dispersion.value=h.dispersion),h.iridescence>0&&(p.iridescence.value=h.iridescence,p.iridescenceIOR.value=h.iridescenceIOR,p.iridescenceThicknessMinimum.value=h.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=h.iridescenceThicknessRange[1],h.iridescenceMap&&(p.iridescenceMap.value=h.iridescenceMap,e(h.iridescenceMap,p.iridescenceMapTransform)),h.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=h.iridescenceThicknessMap,e(h.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),h.transmission>0&&(p.transmission.value=h.transmission,p.transmissionSamplerMap.value=A.texture,p.transmissionSamplerSize.value.set(A.width,A.height),h.transmissionMap&&(p.transmissionMap.value=h.transmissionMap,e(h.transmissionMap,p.transmissionMapTransform)),p.thickness.value=h.thickness,h.thicknessMap&&(p.thicknessMap.value=h.thicknessMap,e(h.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=h.attenuationDistance,p.attenuationColor.value.copy(h.attenuationColor)),h.anisotropy>0&&(p.anisotropyVector.value.set(h.anisotropy*Math.cos(h.anisotropyRotation),h.anisotropy*Math.sin(h.anisotropyRotation)),h.anisotropyMap&&(p.anisotropyMap.value=h.anisotropyMap,e(h.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=h.specularIntensity,p.specularColor.value.copy(h.specularColor),h.specularColorMap&&(p.specularColorMap.value=h.specularColorMap,e(h.specularColorMap,p.specularColorMapTransform)),h.specularIntensityMap&&(p.specularIntensityMap.value=h.specularIntensityMap,e(h.specularIntensityMap,p.specularIntensityMapTransform))}function g(p,h){h.matcap&&(p.matcap.value=h.matcap)}function x(p,h){const A=t.get(h).light;p.referencePosition.value.setFromMatrixPosition(A.matrixWorld),p.nearDistance.value=A.shadow.camera.near,p.farDistance.value=A.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:s}}function tm(i,t,e,n){let s={},r={},a=[];const o=i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS);function l(A,b){const E=b.program;n.uniformBlockBinding(A,E)}function c(A,b){let E=s[A.id];E===void 0&&(g(A),E=u(A),s[A.id]=E,A.addEventListener("dispose",p));const U=b.program;n.updateUBOMapping(A,U);const w=t.render.frame;r[A.id]!==w&&(d(A),r[A.id]=w)}function u(A){const b=f();A.__bindingPointIndex=b;const E=i.createBuffer(),U=A.__size,w=A.usage;return i.bindBuffer(i.UNIFORM_BUFFER,E),i.bufferData(i.UNIFORM_BUFFER,U,w),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,b,E),E}function f(){for(let A=0;A0&&(E+=U-w),A.__size=E,A.__cache={},this}function x(A){const b={boundary:0,storage:0};return typeof A=="number"||typeof A=="boolean"?(b.boundary=4,b.storage=4):A.isVector2?(b.boundary=8,b.storage=8):A.isVector3||A.isColor?(b.boundary=16,b.storage=12):A.isVector4?(b.boundary=16,b.storage=16):A.isMatrix3?(b.boundary=48,b.storage=48):A.isMatrix4?(b.boundary=64,b.storage=64):A.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",A),b}function p(A){const b=A.target;b.removeEventListener("dispose",p);const E=a.indexOf(b.__bindingPointIndex);a.splice(E,1),i.deleteBuffer(s[b.id]),delete s[b.id],delete r[b.id]}function h(){for(const A in s)i.deleteBuffer(s[A]);a=[],s={},r={}}return{bind:l,update:c,dispose:h}}class em{constructor(t={}){const{canvas:e=Lc(),context:n=null,depth:s=!0,stencil:r=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:f=!1,reverseDepthBuffer:d=!1}=t;this.isWebGLRenderer=!0;let m;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");m=n.getContextAttributes().alpha}else m=a;const g=new Uint32Array(4),x=new Int32Array(4);let p=null,h=null;const A=[],b=[];this.domElement=e,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=Oe,this.toneMapping=yn,this.toneMappingExposure=1;const E=this;let U=!1,w=0,C=0,N=null,y=-1,M=null;const P=new ne,W=new ne;let H=null;const Y=new Rt(0);let Q=0,k=e.width,it=e.height,V=1,ht=null,gt=null;const wt=new ne(0,0,k,it),Ht=new ne(0,0,k,it);let Zt=!1;const q=new Sa;let lt=!1,Tt=!1;this.transmissionResolutionScale=1;const ut=new ie,Dt=new ie,It=new R,at=new ne,tt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let O=!1;function st(){return N===null?V:1}let T=n;function ot(v,L){return e.getContext(v,L)}try{const v={alpha:!0,depth:s,stencil:r,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:u,failIfMajorPerformanceCaveat:f};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${da}`),e.addEventListener("webglcontextlost",Z,!1),e.addEventListener("webglcontextrestored",_t,!1),e.addEventListener("webglcontextcreationerror",mt,!1),T===null){const L="webgl2";if(T=ot(L,v),T===null)throw ot(L)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(v){throw console.error("THREE.WebGLRenderer: "+v.message),v}let J,rt,$,Ut,vt,S,_,F,j,K,X,bt,pt,Mt,Xt,nt,St,Lt,Nt,yt,Wt,Vt,se,D;function ft(){J=new hd(T),J.init(),Vt=new Yp(T,J),rt=new sd(T,J,t,Vt),$=new Wp(T,J),rt.reverseDepthBuffer&&d&&$.buffers.depth.setReversed(!0),Ut=new dd(T),vt=new Dp,S=new Xp(T,J,$,vt,rt,Vt,Ut),_=new ad(E),F=new cd(E),j=new xh(T),se=new nd(T,j),K=new ud(T,j,Ut,se),X=new md(T,K,j,Ut),Nt=new pd(T,rt,S),nt=new rd(vt),bt=new Pp(E,_,F,J,rt,se,nt),pt=new Qp(E,vt),Mt=new Up,Xt=new zp(J),Lt=new ed(E,_,F,$,X,m,l),St=new Gp(E,X,rt),D=new tm(T,Ut,rt,$),yt=new id(T,J,Ut),Wt=new fd(T,J,Ut),Ut.programs=bt.programs,E.capabilities=rt,E.extensions=J,E.properties=vt,E.renderLists=Mt,E.shadowMap=St,E.state=$,E.info=Ut}ft();const G=new $p(E,T);this.xr=G,this.getContext=function(){return T},this.getContextAttributes=function(){return T.getContextAttributes()},this.forceContextLoss=function(){const v=J.get("WEBGL_lose_context");v&&v.loseContext()},this.forceContextRestore=function(){const v=J.get("WEBGL_lose_context");v&&v.restoreContext()},this.getPixelRatio=function(){return V},this.setPixelRatio=function(v){v!==void 0&&(V=v,this.setSize(k,it,!1))},this.getSize=function(v){return v.set(k,it)},this.setSize=function(v,L,B=!0){if(G.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}k=v,it=L,e.width=Math.floor(v*V),e.height=Math.floor(L*V),B===!0&&(e.style.width=v+"px",e.style.height=L+"px"),this.setViewport(0,0,v,L)},this.getDrawingBufferSize=function(v){return v.set(k*V,it*V).floor()},this.setDrawingBufferSize=function(v,L,B){k=v,it=L,V=B,e.width=Math.floor(v*B),e.height=Math.floor(L*B),this.setViewport(0,0,v,L)},this.getCurrentViewport=function(v){return v.copy(P)},this.getViewport=function(v){return v.copy(wt)},this.setViewport=function(v,L,B,z){v.isVector4?wt.set(v.x,v.y,v.z,v.w):wt.set(v,L,B,z),$.viewport(P.copy(wt).multiplyScalar(V).round())},this.getScissor=function(v){return v.copy(Ht)},this.setScissor=function(v,L,B,z){v.isVector4?Ht.set(v.x,v.y,v.z,v.w):Ht.set(v,L,B,z),$.scissor(W.copy(Ht).multiplyScalar(V).round())},this.getScissorTest=function(){return Zt},this.setScissorTest=function(v){$.setScissorTest(Zt=v)},this.setOpaqueSort=function(v){ht=v},this.setTransparentSort=function(v){gt=v},this.getClearColor=function(v){return v.copy(Lt.getClearColor())},this.setClearColor=function(){Lt.setClearColor.apply(Lt,arguments)},this.getClearAlpha=function(){return Lt.getClearAlpha()},this.setClearAlpha=function(){Lt.setClearAlpha.apply(Lt,arguments)},this.clear=function(v=!0,L=!0,B=!0){let z=0;if(v){let I=!1;if(N!==null){const et=N.texture.format;I=et===xa||et===va||et===ga}if(I){const et=N.texture.type,dt=et===dn||et===zn||et===Ni||et===vi||et===ma||et===_a,xt=Lt.getClearColor(),Et=Lt.getClearAlpha(),Ft=xt.r,Ot=xt.g,Ct=xt.b;dt?(g[0]=Ft,g[1]=Ot,g[2]=Ct,g[3]=Et,T.clearBufferuiv(T.COLOR,0,g)):(x[0]=Ft,x[1]=Ot,x[2]=Ct,x[3]=Et,T.clearBufferiv(T.COLOR,0,x))}else z|=T.COLOR_BUFFER_BIT}L&&(z|=T.DEPTH_BUFFER_BIT),B&&(z|=T.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),T.clear(z)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){e.removeEventListener("webglcontextlost",Z,!1),e.removeEventListener("webglcontextrestored",_t,!1),e.removeEventListener("webglcontextcreationerror",mt,!1),Lt.dispose(),Mt.dispose(),Xt.dispose(),vt.dispose(),_.dispose(),F.dispose(),X.dispose(),se.dispose(),D.dispose(),bt.dispose(),G.dispose(),G.removeEventListener("sessionstart",Aa),G.removeEventListener("sessionend",wa),An.stop()};function Z(v){v.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),U=!0}function _t(){console.log("THREE.WebGLRenderer: Context Restored."),U=!1;const v=Ut.autoReset,L=St.enabled,B=St.autoUpdate,z=St.needsUpdate,I=St.type;ft(),Ut.autoReset=v,St.enabled=L,St.autoUpdate=B,St.needsUpdate=z,St.type=I}function mt(v){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",v.statusMessage)}function Bt(v){const L=v.target;L.removeEventListener("dispose",Bt),ae(L)}function ae(v){ve(v),vt.remove(v)}function ve(v){const L=vt.get(v).programs;L!==void 0&&(L.forEach(function(B){bt.releaseProgram(B)}),v.isShaderMaterial&&bt.releaseShaderCache(v))}this.renderBufferDirect=function(v,L,B,z,I,et){L===null&&(L=tt);const dt=I.isMesh&&I.matrixWorld.determinant()<0,xt=Pl(v,L,B,z,I);$.setMaterial(z,dt);let Et=B.index,Ft=1;if(z.wireframe===!0){if(Et=K.getWireframeAttribute(B),Et===void 0)return;Ft=2}const Ot=B.drawRange,Ct=B.attributes.position;let Yt=Ot.start*Ft,Kt=(Ot.start+Ot.count)*Ft;et!==null&&(Yt=Math.max(Yt,et.start*Ft),Kt=Math.min(Kt,(et.start+et.count)*Ft)),Et!==null?(Yt=Math.max(Yt,0),Kt=Math.min(Kt,Et.count)):Ct!=null&&(Yt=Math.max(Yt,0),Kt=Math.min(Kt,Ct.count));const le=Kt-Yt;if(le<0||le===1/0)return;se.setup(I,z,xt,B,Et);let oe,qt=yt;if(Et!==null&&(oe=j.get(Et),qt=Wt,qt.setIndex(oe)),I.isMesh)z.wireframe===!0?($.setLineWidth(z.wireframeLinewidth*st()),qt.setMode(T.LINES)):qt.setMode(T.TRIANGLES);else if(I.isLine){let Pt=z.linewidth;Pt===void 0&&(Pt=1),$.setLineWidth(Pt*st()),I.isLineSegments?qt.setMode(T.LINES):I.isLineLoop?qt.setMode(T.LINE_LOOP):qt.setMode(T.LINE_STRIP)}else I.isPoints?qt.setMode(T.POINTS):I.isSprite&&qt.setMode(T.TRIANGLES);if(I.isBatchedMesh)if(I._multiDrawInstances!==null)qt.renderMultiDrawInstances(I._multiDrawStarts,I._multiDrawCounts,I._multiDrawCount,I._multiDrawInstances);else if(J.get("WEBGL_multi_draw"))qt.renderMultiDraw(I._multiDrawStarts,I._multiDrawCounts,I._multiDrawCount);else{const Pt=I._multiDrawStarts,me=I._multiDrawCounts,$t=I._multiDrawCount,Ve=Et?j.get(Et).bytesPerElement:1,Gn=vt.get(z).currentProgram.getUniforms();for(let Pe=0;Pe<$t;Pe++)Gn.setValue(T,"_gl_DrawID",Pe),qt.render(Pt[Pe]/Ve,me[Pe])}else if(I.isInstancedMesh)qt.renderInstances(Yt,le,I.count);else if(B.isInstancedBufferGeometry){const Pt=B._maxInstanceCount!==void 0?B._maxInstanceCount:1/0,me=Math.min(B.instanceCount,Pt);qt.renderInstances(Yt,le,me)}else qt.render(Yt,le)};function Jt(v,L,B){v.transparent===!0&&v.side===Ke&&v.forceSinglePass===!1?(v.side=Ce,v.needsUpdate=!0,Gi(v,L,B),v.side=Tn,v.needsUpdate=!0,Gi(v,L,B),v.side=Ke):Gi(v,L,B)}this.compile=function(v,L,B=null){B===null&&(B=v),h=Xt.get(B),h.init(L),b.push(h),B.traverseVisible(function(I){I.isLight&&I.layers.test(L.layers)&&(h.pushLight(I),I.castShadow&&h.pushShadow(I))}),v!==B&&v.traverseVisible(function(I){I.isLight&&I.layers.test(L.layers)&&(h.pushLight(I),I.castShadow&&h.pushShadow(I))}),h.setupLights();const z=new Set;return v.traverse(function(I){if(!(I.isMesh||I.isPoints||I.isLine||I.isSprite))return;const et=I.material;if(et)if(Array.isArray(et))for(let dt=0;dt{function et(){if(z.forEach(function(dt){vt.get(dt).currentProgram.isReady()&&z.delete(dt)}),z.size===0){I(v);return}setTimeout(et,10)}J.get("KHR_parallel_shader_compile")!==null?et():setTimeout(et,10)})};let He=null;function tn(v){He&&He(v)}function Aa(){An.stop()}function wa(){An.start()}const An=new yl;An.setAnimationLoop(tn),typeof self<"u"&&An.setContext(self),this.setAnimationLoop=function(v){He=v,G.setAnimationLoop(v),v===null?An.stop():An.start()},G.addEventListener("sessionstart",Aa),G.addEventListener("sessionend",wa),this.render=function(v,L){if(L!==void 0&&L.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(U===!0)return;if(v.matrixWorldAutoUpdate===!0&&v.updateMatrixWorld(),L.parent===null&&L.matrixWorldAutoUpdate===!0&&L.updateMatrixWorld(),G.enabled===!0&&G.isPresenting===!0&&(G.cameraAutoUpdate===!0&&G.updateCamera(L),L=G.getCamera()),v.isScene===!0&&v.onBeforeRender(E,v,L,N),h=Xt.get(v,b.length),h.init(L),b.push(h),Dt.multiplyMatrices(L.projectionMatrix,L.matrixWorldInverse),q.setFromProjectionMatrix(Dt),Tt=this.localClippingEnabled,lt=nt.init(this.clippingPlanes,Tt),p=Mt.get(v,A.length),p.init(),A.push(p),G.enabled===!0&&G.isPresenting===!0){const et=E.xr.getDepthSensingMesh();et!==null&&Bs(et,L,-1/0,E.sortObjects)}Bs(v,L,0,E.sortObjects),p.finish(),E.sortObjects===!0&&p.sort(ht,gt),O=G.enabled===!1||G.isPresenting===!1||G.hasDepthSensing()===!1,O&&Lt.addToRenderList(p,v),this.info.render.frame++,lt===!0&&nt.beginShadows();const B=h.state.shadowsArray;St.render(B,v,L),lt===!0&&nt.endShadows(),this.info.autoReset===!0&&this.info.reset();const z=p.opaque,I=p.transmissive;if(h.setupLights(),L.isArrayCamera){const et=L.cameras;if(I.length>0)for(let dt=0,xt=et.length;dt0&&Ca(z,I,v,L),O&&Lt.render(v),Ra(p,v,L);N!==null&&C===0&&(S.updateMultisampleRenderTarget(N),S.updateRenderTargetMipmap(N)),v.isScene===!0&&v.onAfterRender(E,v,L),se.resetDefaultState(),y=-1,M=null,b.pop(),b.length>0?(h=b[b.length-1],lt===!0&&nt.setGlobalState(E.clippingPlanes,h.state.camera)):h=null,A.pop(),A.length>0?p=A[A.length-1]:p=null};function Bs(v,L,B,z){if(v.visible===!1)return;if(v.layers.test(L.layers)){if(v.isGroup)B=v.renderOrder;else if(v.isLOD)v.autoUpdate===!0&&v.update(L);else if(v.isLight)h.pushLight(v),v.castShadow&&h.pushShadow(v);else if(v.isSprite){if(!v.frustumCulled||q.intersectsSprite(v)){z&&at.setFromMatrixPosition(v.matrixWorld).applyMatrix4(Dt);const dt=X.update(v),xt=v.material;xt.visible&&p.push(v,dt,xt,B,at.z,null)}}else if((v.isMesh||v.isLine||v.isPoints)&&(!v.frustumCulled||q.intersectsObject(v))){const dt=X.update(v),xt=v.material;if(z&&(v.boundingSphere!==void 0?(v.boundingSphere===null&&v.computeBoundingSphere(),at.copy(v.boundingSphere.center)):(dt.boundingSphere===null&&dt.computeBoundingSphere(),at.copy(dt.boundingSphere.center)),at.applyMatrix4(v.matrixWorld).applyMatrix4(Dt)),Array.isArray(xt)){const Et=dt.groups;for(let Ft=0,Ot=Et.length;Ft0&&Vi(I,L,B),et.length>0&&Vi(et,L,B),dt.length>0&&Vi(dt,L,B),$.buffers.depth.setTest(!0),$.buffers.depth.setMask(!0),$.buffers.color.setMask(!0),$.setPolygonOffset(!1)}function Ca(v,L,B,z){if((B.isScene===!0?B.overrideMaterial:null)!==null)return;h.state.transmissionRenderTarget[z.id]===void 0&&(h.state.transmissionRenderTarget[z.id]=new qe(1,1,{generateMipmaps:!0,type:J.has("EXT_color_buffer_half_float")||J.has("EXT_color_buffer_float")?un:dn,minFilter:Bn,samples:4,stencilBuffer:r,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:jt.workingColorSpace}));const et=h.state.transmissionRenderTarget[z.id],dt=z.viewport||P;et.setSize(dt.z*E.transmissionResolutionScale,dt.w*E.transmissionResolutionScale);const xt=E.getRenderTarget();E.setRenderTarget(et),E.getClearColor(Y),Q=E.getClearAlpha(),Q<1&&E.setClearColor(16777215,.5),E.clear(),O&&Lt.render(B);const Et=E.toneMapping;E.toneMapping=yn;const Ft=z.viewport;if(z.viewport!==void 0&&(z.viewport=void 0),h.setupLightsView(z),lt===!0&&nt.setGlobalState(E.clippingPlanes,z),Vi(v,B,z),S.updateMultisampleRenderTarget(et),S.updateRenderTargetMipmap(et),J.has("WEBGL_multisampled_render_to_texture")===!1){let Ot=!1;for(let Ct=0,Yt=L.length;Ct0),Ct=!!B.morphAttributes.position,Yt=!!B.morphAttributes.normal,Kt=!!B.morphAttributes.color;let le=yn;z.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(le=E.toneMapping);const oe=B.morphAttributes.position||B.morphAttributes.normal||B.morphAttributes.color,qt=oe!==void 0?oe.length:0,Pt=vt.get(z),me=h.state.lights;if(lt===!0&&(Tt===!0||v!==M)){const ye=v===M&&z.id===y;nt.setState(z,v,ye)}let $t=!1;z.version===Pt.__version?(Pt.needsLights&&Pt.lightsStateVersion!==me.state.version||Pt.outputColorSpace!==xt||I.isBatchedMesh&&Pt.batching===!1||!I.isBatchedMesh&&Pt.batching===!0||I.isBatchedMesh&&Pt.batchingColor===!0&&I.colorTexture===null||I.isBatchedMesh&&Pt.batchingColor===!1&&I.colorTexture!==null||I.isInstancedMesh&&Pt.instancing===!1||!I.isInstancedMesh&&Pt.instancing===!0||I.isSkinnedMesh&&Pt.skinning===!1||!I.isSkinnedMesh&&Pt.skinning===!0||I.isInstancedMesh&&Pt.instancingColor===!0&&I.instanceColor===null||I.isInstancedMesh&&Pt.instancingColor===!1&&I.instanceColor!==null||I.isInstancedMesh&&Pt.instancingMorph===!0&&I.morphTexture===null||I.isInstancedMesh&&Pt.instancingMorph===!1&&I.morphTexture!==null||Pt.envMap!==Et||z.fog===!0&&Pt.fog!==et||Pt.numClippingPlanes!==void 0&&(Pt.numClippingPlanes!==nt.numPlanes||Pt.numIntersection!==nt.numIntersection)||Pt.vertexAlphas!==Ft||Pt.vertexTangents!==Ot||Pt.morphTargets!==Ct||Pt.morphNormals!==Yt||Pt.morphColors!==Kt||Pt.toneMapping!==le||Pt.morphTargetsCount!==qt)&&($t=!0):($t=!0,Pt.__version=z.version);let Ve=Pt.currentProgram;$t===!0&&(Ve=Gi(z,L,I));let Gn=!1,Pe=!1,Ti=!1;const re=Ve.getUniforms(),Ie=Pt.uniforms;if($.useProgram(Ve.program)&&(Gn=!0,Pe=!0,Ti=!0),z.id!==y&&(y=z.id,Pe=!0),Gn||M!==v){$.buffers.depth.getReversed()?(ut.copy(v.projectionMatrix),Ic(ut),Nc(ut),re.setValue(T,"projectionMatrix",ut)):re.setValue(T,"projectionMatrix",v.projectionMatrix),re.setValue(T,"viewMatrix",v.matrixWorldInverse);const Ae=re.map.cameraPosition;Ae!==void 0&&Ae.setValue(T,It.setFromMatrixPosition(v.matrixWorld)),rt.logarithmicDepthBuffer&&re.setValue(T,"logDepthBufFC",2/(Math.log(v.far+1)/Math.LN2)),(z.isMeshPhongMaterial||z.isMeshToonMaterial||z.isMeshLambertMaterial||z.isMeshBasicMaterial||z.isMeshStandardMaterial||z.isShaderMaterial)&&re.setValue(T,"isOrthographic",v.isOrthographicCamera===!0),M!==v&&(M=v,Pe=!0,Ti=!0)}if(I.isSkinnedMesh){re.setOptional(T,I,"bindMatrix"),re.setOptional(T,I,"bindMatrixInverse");const ye=I.skeleton;ye&&(ye.boneTexture===null&&ye.computeBoneTexture(),re.setValue(T,"boneTexture",ye.boneTexture,S))}I.isBatchedMesh&&(re.setOptional(T,I,"batchingTexture"),re.setValue(T,"batchingTexture",I._matricesTexture,S),re.setOptional(T,I,"batchingIdTexture"),re.setValue(T,"batchingIdTexture",I._indirectTexture,S),re.setOptional(T,I,"batchingColorTexture"),I._colorsTexture!==null&&re.setValue(T,"batchingColorTexture",I._colorsTexture,S));const Ne=B.morphAttributes;if((Ne.position!==void 0||Ne.normal!==void 0||Ne.color!==void 0)&&Nt.update(I,B,Ve),(Pe||Pt.receiveShadow!==I.receiveShadow)&&(Pt.receiveShadow=I.receiveShadow,re.setValue(T,"receiveShadow",I.receiveShadow)),z.isMeshGouraudMaterial&&z.envMap!==null&&(Ie.envMap.value=Et,Ie.flipEnvMap.value=Et.isCubeTexture&&Et.isRenderTargetTexture===!1?-1:1),z.isMeshStandardMaterial&&z.envMap===null&&L.environment!==null&&(Ie.envMapIntensity.value=L.environmentIntensity),Pe&&(re.setValue(T,"toneMappingExposure",E.toneMappingExposure),Pt.needsLights&&Dl(Ie,Ti),et&&z.fog===!0&&pt.refreshFogUniforms(Ie,et),pt.refreshMaterialUniforms(Ie,z,V,it,h.state.transmissionRenderTarget[v.id]),bs.upload(T,Da(Pt),Ie,S)),z.isShaderMaterial&&z.uniformsNeedUpdate===!0&&(bs.upload(T,Da(Pt),Ie,S),z.uniformsNeedUpdate=!1),z.isSpriteMaterial&&re.setValue(T,"center",I.center),re.setValue(T,"modelViewMatrix",I.modelViewMatrix),re.setValue(T,"normalMatrix",I.normalMatrix),re.setValue(T,"modelMatrix",I.matrixWorld),z.isShaderMaterial||z.isRawShaderMaterial){const ye=z.uniformsGroups;for(let Ae=0,zs=ye.length;Ae0&&S.useMultisampledRTT(v)===!1?I=vt.get(v).__webglMultisampledFramebuffer:Array.isArray(Ot)?I=Ot[B]:I=Ot,P.copy(v.viewport),W.copy(v.scissor),H=v.scissorTest}else P.copy(wt).multiplyScalar(V).floor(),W.copy(Ht).multiplyScalar(V).floor(),H=Zt;if(B!==0&&(I=Ul),$.bindFramebuffer(T.FRAMEBUFFER,I)&&z&&$.drawBuffers(v,I),$.viewport(P),$.scissor(W),$.setScissorTest(H),et){const Et=vt.get(v.texture);T.framebufferTexture2D(T.FRAMEBUFFER,T.COLOR_ATTACHMENT0,T.TEXTURE_CUBE_MAP_POSITIVE_X+L,Et.__webglTexture,B)}else if(dt){const Et=vt.get(v.texture),Ft=L;T.framebufferTextureLayer(T.FRAMEBUFFER,T.COLOR_ATTACHMENT0,Et.__webglTexture,B,Ft)}else if(v!==null&&B!==0){const Et=vt.get(v.texture);T.framebufferTexture2D(T.FRAMEBUFFER,T.COLOR_ATTACHMENT0,T.TEXTURE_2D,Et.__webglTexture,B)}y=-1},this.readRenderTargetPixels=function(v,L,B,z,I,et,dt){if(!(v&&v.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let xt=vt.get(v).__webglFramebuffer;if(v.isWebGLCubeRenderTarget&&dt!==void 0&&(xt=xt[dt]),xt){$.bindFramebuffer(T.FRAMEBUFFER,xt);try{const Et=v.texture,Ft=Et.format,Ot=Et.type;if(!rt.textureFormatReadable(Ft)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!rt.textureTypeReadable(Ot)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}L>=0&&L<=v.width-z&&B>=0&&B<=v.height-I&&T.readPixels(L,B,z,I,Vt.convert(Ft),Vt.convert(Ot),et)}finally{const Et=N!==null?vt.get(N).__webglFramebuffer:null;$.bindFramebuffer(T.FRAMEBUFFER,Et)}}},this.readRenderTargetPixelsAsync=async function(v,L,B,z,I,et,dt){if(!(v&&v.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let xt=vt.get(v).__webglFramebuffer;if(v.isWebGLCubeRenderTarget&&dt!==void 0&&(xt=xt[dt]),xt){const Et=v.texture,Ft=Et.format,Ot=Et.type;if(!rt.textureFormatReadable(Ft))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!rt.textureTypeReadable(Ot))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(L>=0&&L<=v.width-z&&B>=0&&B<=v.height-I){$.bindFramebuffer(T.FRAMEBUFFER,xt);const Ct=T.createBuffer();T.bindBuffer(T.PIXEL_PACK_BUFFER,Ct),T.bufferData(T.PIXEL_PACK_BUFFER,et.byteLength,T.STREAM_READ),T.readPixels(L,B,z,I,Vt.convert(Ft),Vt.convert(Ot),0);const Yt=N!==null?vt.get(N).__webglFramebuffer:null;$.bindFramebuffer(T.FRAMEBUFFER,Yt);const Kt=T.fenceSync(T.SYNC_GPU_COMMANDS_COMPLETE,0);return T.flush(),await Uc(T,Kt,4),T.bindBuffer(T.PIXEL_PACK_BUFFER,Ct),T.getBufferSubData(T.PIXEL_PACK_BUFFER,0,et),T.deleteBuffer(Ct),T.deleteSync(Kt),et}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(v,L=null,B=0){v.isTexture!==!0&&(oi("WebGLRenderer: copyFramebufferToTexture function signature has changed."),L=arguments[0]||null,v=arguments[1]);const z=Math.pow(2,-B),I=Math.floor(v.image.width*z),et=Math.floor(v.image.height*z),dt=L!==null?L.x:0,xt=L!==null?L.y:0;S.setTexture2D(v,0),T.copyTexSubImage2D(T.TEXTURE_2D,B,0,0,dt,xt,I,et),$.unbindTexture()};const Il=T.createFramebuffer(),Nl=T.createFramebuffer();this.copyTextureToTexture=function(v,L,B=null,z=null,I=0,et=null){v.isTexture!==!0&&(oi("WebGLRenderer: copyTextureToTexture function signature has changed."),z=arguments[0]||null,v=arguments[1],L=arguments[2],et=arguments[3]||0,B=null),et===null&&(I!==0?(oi("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),et=I,I=0):et=0);let dt,xt,Et,Ft,Ot,Ct,Yt,Kt,le;const oe=v.isCompressedTexture?v.mipmaps[et]:v.image;if(B!==null)dt=B.max.x-B.min.x,xt=B.max.y-B.min.y,Et=B.isBox3?B.max.z-B.min.z:1,Ft=B.min.x,Ot=B.min.y,Ct=B.isBox3?B.min.z:0;else{const Ne=Math.pow(2,-I);dt=Math.floor(oe.width*Ne),xt=Math.floor(oe.height*Ne),v.isDataArrayTexture?Et=oe.depth:v.isData3DTexture?Et=Math.floor(oe.depth*Ne):Et=1,Ft=0,Ot=0,Ct=0}z!==null?(Yt=z.x,Kt=z.y,le=z.z):(Yt=0,Kt=0,le=0);const qt=Vt.convert(L.format),Pt=Vt.convert(L.type);let me;L.isData3DTexture?(S.setTexture3D(L,0),me=T.TEXTURE_3D):L.isDataArrayTexture||L.isCompressedArrayTexture?(S.setTexture2DArray(L,0),me=T.TEXTURE_2D_ARRAY):(S.setTexture2D(L,0),me=T.TEXTURE_2D),T.pixelStorei(T.UNPACK_FLIP_Y_WEBGL,L.flipY),T.pixelStorei(T.UNPACK_PREMULTIPLY_ALPHA_WEBGL,L.premultiplyAlpha),T.pixelStorei(T.UNPACK_ALIGNMENT,L.unpackAlignment);const $t=T.getParameter(T.UNPACK_ROW_LENGTH),Ve=T.getParameter(T.UNPACK_IMAGE_HEIGHT),Gn=T.getParameter(T.UNPACK_SKIP_PIXELS),Pe=T.getParameter(T.UNPACK_SKIP_ROWS),Ti=T.getParameter(T.UNPACK_SKIP_IMAGES);T.pixelStorei(T.UNPACK_ROW_LENGTH,oe.width),T.pixelStorei(T.UNPACK_IMAGE_HEIGHT,oe.height),T.pixelStorei(T.UNPACK_SKIP_PIXELS,Ft),T.pixelStorei(T.UNPACK_SKIP_ROWS,Ot),T.pixelStorei(T.UNPACK_SKIP_IMAGES,Ct);const re=v.isDataArrayTexture||v.isData3DTexture,Ie=L.isDataArrayTexture||L.isData3DTexture;if(v.isDepthTexture){const Ne=vt.get(v),ye=vt.get(L),Ae=vt.get(Ne.__renderTarget),zs=vt.get(ye.__renderTarget);$.bindFramebuffer(T.READ_FRAMEBUFFER,Ae.__webglFramebuffer),$.bindFramebuffer(T.DRAW_FRAMEBUFFER,zs.__webglFramebuffer);for(let wn=0;wnMath.PI&&(n-=we),s<-Math.PI?s+=we:s>Math.PI&&(s-=we),n<=s?this._spherical.theta=Math.max(n,Math.min(s,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(n+s)/2?Math.max(n,this._spherical.theta):Math.min(s,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let r=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),r=a!=this._spherical.radius}if(he.setFromSpherical(this._spherical),he.applyQuaternion(this._quatInverse),e.copy(this.target).add(he),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){const o=he.length();a=this._clampDistance(o*this._scale);const l=o-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),r=!!l}else if(this.object.isOrthographicCamera){const o=new R(this._mouse.x,this._mouse.y,0);o.unproject(this.object);const l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),r=l!==this.object.zoom;const c=new R(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=he.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(gs.origin.copy(this.object.position),gs.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(gs.direction))Mr||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Mr||this._lastTargetPosition.distanceToSquared(this.target)>Mr?(this.dispatchEvent(Wo),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(t){return t!==null?we/60*this.autoRotateSpeed*t:we/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(t*.01);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){he.setFromMatrixColumn(e,0),he.multiplyScalar(-t),this._panOffset.add(he)}_panUp(t,e){this.screenSpacePanning===!0?he.setFromMatrixColumn(e,1):(he.setFromMatrixColumn(e,0),he.crossVectors(this.object.up,he)),he.multiplyScalar(t),this._panOffset.add(he)}_pan(t,e){const n=this.domElement;if(this.object.isPerspectiveCamera){const s=this.object.position;he.copy(s).sub(this.target);let r=he.length();r*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*r/n.clientHeight,this.object.matrix),this._panUp(2*e*r/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const n=this.domElement.getBoundingClientRect(),s=t-n.left,r=e-n.top,a=n.width,o=n.height;this._mouse.x=s/a*2-1,this._mouse.y=-(r/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(we*this._rotateDelta.x/e.clientHeight),this._rotateUp(we*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(we*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-we*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(we*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-we*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0;break}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(this._pointers.length===1)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._rotateStart.set(n,s)}}_handleTouchStartPan(t){if(this._pointers.length===1)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panStart.set(n,s)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),n=t.pageX-e.x,s=t.pageY-e.y,r=Math.sqrt(n*n+s*s);this._dollyStart.set(0,r)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(this._pointers.length==1)this._rotateEnd.set(t.pageX,t.pageY);else{const n=this._getSecondPointerPosition(t),s=.5*(t.pageX+n.x),r=.5*(t.pageY+n.y);this._rotateEnd.set(s,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(we*this._rotateDelta.x/e.clientHeight),this._rotateUp(we*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(this._pointers.length===1)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panEnd.set(n,s)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),n=t.pageX-e.x,s=t.pageY-e.y,r=Math.sqrt(n*n+s*s);this._dollyEnd.set(0,r),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const a=(t.pageX+e.x)*.5,o=(t.pageY+e.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e=0&&(E[ct]=null,b[ct].disconnect(Mt))}for(let it=0;it=E.length){E.push(Mt),ct=Pt;break}else if(E[Pt]===null){E[Pt]=Mt,ct=Pt;break}if(ct===-1)break}const Ct=b[ct];Ct&&Ct.connect(Mt)}}const X=new P,at=new P;function k(V,it,Mt){X.setFromMatrixPosition(it.matrixWorld),at.setFromMatrixPosition(Mt.matrixWorld);const ct=X.distanceTo(at),Ct=it.projectionMatrix.elements,Pt=Mt.projectionMatrix.elements,nt=Ct[14]/(Ct[10]-1),Q=Ct[14]/(Ct[10]+1),O=(Ct[9]+1)/Ct[5],ot=(Ct[9]-1)/Ct[5],T=(Ct[8]-1)/Ct[0],lt=(Pt[8]+1)/Pt[0],tt=nt*T,rt=nt*lt,$=ct/(-T+lt),Ft=$*-T;if(it.matrixWorld.decompose(V.position,V.quaternion,V.scale),V.translateX(Ft),V.translateZ($),V.matrixWorld.compose(V.position,V.quaternion,V.scale),V.matrixWorldInverse.copy(V.matrixWorld).invert(),Ct[10]===-1)V.projectionMatrix.copy(it.projectionMatrix),V.projectionMatrixInverse.copy(it.projectionMatrixInverse);else{const _t=nt+$,S=Q+$,_=tt-Ft,F=rt+(ct-Ft),j=O*Q/S*_t,K=ot*Q/S*_t;V.projectionMatrix.makePerspective(_,F,j,K,_t,S),V.projectionMatrixInverse.copy(V.projectionMatrix).invert()}}function ut(V,it){it===null?V.matrixWorld.copy(V.matrix):V.matrixWorld.multiplyMatrices(it.matrixWorld,V.matrix),V.matrixWorldInverse.copy(V.matrixWorld).invert()}this.updateCamera=function(V){if(s===null)return;let it=V.near,Mt=V.far;x.texture!==null&&(x.depthNear>0&&(it=x.depthNear),x.depthFar>0&&(Mt=x.depthFar)),M.near=N.near=R.near=it,M.far=N.far=R.far=Mt,(C!==M.near||W!==M.far)&&(s.updateRenderState({depthNear:M.near,depthFar:M.far}),C=M.near,W=M.far),R.layers.mask=V.layers.mask|2,N.layers.mask=V.layers.mask|4,M.layers.mask=R.layers.mask|N.layers.mask;const ct=V.parent,Ct=M.cameras;ut(M,ct);for(let Pt=0;Pt0&&(p.alphaTest.value=h.alphaTest);const A=t.get(h),b=A.envMap,E=A.envMapRotation;b&&(p.envMap.value=b,Xn.copy(E),Xn.x*=-1,Xn.y*=-1,Xn.z*=-1,b.isCubeTexture&&b.isRenderTargetTexture===!1&&(Xn.y*=-1,Xn.z*=-1),p.envMapRotation.value.setFromMatrix4(Im.makeRotationFromEuler(Xn)),p.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=h.reflectivity,p.ior.value=h.ior,p.refractionRatio.value=h.refractionRatio),h.lightMap&&(p.lightMap.value=h.lightMap,p.lightMapIntensity.value=h.lightMapIntensity,e(h.lightMap,p.lightMapTransform)),h.aoMap&&(p.aoMap.value=h.aoMap,p.aoMapIntensity.value=h.aoMapIntensity,e(h.aoMap,p.aoMapTransform))}function a(p,h){p.diffuse.value.copy(h.color),p.opacity.value=h.opacity,h.map&&(p.map.value=h.map,e(h.map,p.mapTransform))}function o(p,h){p.dashSize.value=h.dashSize,p.totalSize.value=h.dashSize+h.gapSize,p.scale.value=h.scale}function l(p,h,A,b){p.diffuse.value.copy(h.color),p.opacity.value=h.opacity,p.size.value=h.size*A,p.scale.value=b*.5,h.map&&(p.map.value=h.map,e(h.map,p.uvTransform)),h.alphaMap&&(p.alphaMap.value=h.alphaMap,e(h.alphaMap,p.alphaMapTransform)),h.alphaTest>0&&(p.alphaTest.value=h.alphaTest)}function c(p,h){p.diffuse.value.copy(h.color),p.opacity.value=h.opacity,p.rotation.value=h.rotation,h.map&&(p.map.value=h.map,e(h.map,p.mapTransform)),h.alphaMap&&(p.alphaMap.value=h.alphaMap,e(h.alphaMap,p.alphaMapTransform)),h.alphaTest>0&&(p.alphaTest.value=h.alphaTest)}function u(p,h){p.specular.value.copy(h.specular),p.shininess.value=Math.max(h.shininess,1e-4)}function d(p,h){h.gradientMap&&(p.gradientMap.value=h.gradientMap)}function f(p,h){p.metalness.value=h.metalness,h.metalnessMap&&(p.metalnessMap.value=h.metalnessMap,e(h.metalnessMap,p.metalnessMapTransform)),p.roughness.value=h.roughness,h.roughnessMap&&(p.roughnessMap.value=h.roughnessMap,e(h.roughnessMap,p.roughnessMapTransform)),h.envMap&&(p.envMapIntensity.value=h.envMapIntensity)}function m(p,h,A){p.ior.value=h.ior,h.sheen>0&&(p.sheenColor.value.copy(h.sheenColor).multiplyScalar(h.sheen),p.sheenRoughness.value=h.sheenRoughness,h.sheenColorMap&&(p.sheenColorMap.value=h.sheenColorMap,e(h.sheenColorMap,p.sheenColorMapTransform)),h.sheenRoughnessMap&&(p.sheenRoughnessMap.value=h.sheenRoughnessMap,e(h.sheenRoughnessMap,p.sheenRoughnessMapTransform))),h.clearcoat>0&&(p.clearcoat.value=h.clearcoat,p.clearcoatRoughness.value=h.clearcoatRoughness,h.clearcoatMap&&(p.clearcoatMap.value=h.clearcoatMap,e(h.clearcoatMap,p.clearcoatMapTransform)),h.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=h.clearcoatRoughnessMap,e(h.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),h.clearcoatNormalMap&&(p.clearcoatNormalMap.value=h.clearcoatNormalMap,e(h.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(h.clearcoatNormalScale),h.side===Ne&&p.clearcoatNormalScale.value.negate())),h.dispersion>0&&(p.dispersion.value=h.dispersion),h.iridescence>0&&(p.iridescence.value=h.iridescence,p.iridescenceIOR.value=h.iridescenceIOR,p.iridescenceThicknessMinimum.value=h.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=h.iridescenceThicknessRange[1],h.iridescenceMap&&(p.iridescenceMap.value=h.iridescenceMap,e(h.iridescenceMap,p.iridescenceMapTransform)),h.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=h.iridescenceThicknessMap,e(h.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),h.transmission>0&&(p.transmission.value=h.transmission,p.transmissionSamplerMap.value=A.texture,p.transmissionSamplerSize.value.set(A.width,A.height),h.transmissionMap&&(p.transmissionMap.value=h.transmissionMap,e(h.transmissionMap,p.transmissionMapTransform)),p.thickness.value=h.thickness,h.thicknessMap&&(p.thicknessMap.value=h.thicknessMap,e(h.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=h.attenuationDistance,p.attenuationColor.value.copy(h.attenuationColor)),h.anisotropy>0&&(p.anisotropyVector.value.set(h.anisotropy*Math.cos(h.anisotropyRotation),h.anisotropy*Math.sin(h.anisotropyRotation)),h.anisotropyMap&&(p.anisotropyMap.value=h.anisotropyMap,e(h.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=h.specularIntensity,p.specularColor.value.copy(h.specularColor),h.specularColorMap&&(p.specularColorMap.value=h.specularColorMap,e(h.specularColorMap,p.specularColorMapTransform)),h.specularIntensityMap&&(p.specularIntensityMap.value=h.specularIntensityMap,e(h.specularIntensityMap,p.specularIntensityMapTransform))}function g(p,h){h.matcap&&(p.matcap.value=h.matcap)}function x(p,h){const A=t.get(h).light;p.referencePosition.value.setFromMatrixPosition(A.matrixWorld),p.nearDistance.value=A.shadow.camera.near,p.farDistance.value=A.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:s}}function Fm(i,t,e,n){let s={},r={},a=[];const o=i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS);function l(A,b){const E=b.program;n.uniformBlockBinding(A,E)}function c(A,b){let E=s[A.id];E===void 0&&(g(A),E=u(A),s[A.id]=E,A.addEventListener("dispose",p));const D=b.program;n.updateUBOMapping(A,D);const w=t.render.frame;r[A.id]!==w&&(f(A),r[A.id]=w)}function u(A){const b=d();A.__bindingPointIndex=b;const E=i.createBuffer(),D=A.__size,w=A.usage;return i.bindBuffer(i.UNIFORM_BUFFER,E),i.bufferData(i.UNIFORM_BUFFER,D,w),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,b,E),E}function d(){for(let A=0;A0&&(E+=D-w),A.__size=E,A.__cache={},this}function x(A){const b={boundary:0,storage:0};return typeof A=="number"||typeof A=="boolean"?(b.boundary=4,b.storage=4):A.isVector2?(b.boundary=8,b.storage=8):A.isVector3||A.isColor?(b.boundary=16,b.storage=12):A.isVector4?(b.boundary=16,b.storage=16):A.isMatrix3?(b.boundary=48,b.storage=48):A.isMatrix4?(b.boundary=64,b.storage=64):A.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",A),b}function p(A){const b=A.target;b.removeEventListener("dispose",p);const E=a.indexOf(b.__bindingPointIndex);a.splice(E,1),i.deleteBuffer(s[b.id]),delete s[b.id],delete r[b.id]}function h(){for(const A in s)i.deleteBuffer(s[A]);a=[],s={},r={}}return{bind:l,update:c,dispose:h}}class Om{constructor(t={}){const{canvas:e=uh(),context:n=null,depth:s=!0,stencil:r=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:d=!1,reverseDepthBuffer:f=!1}=t;this.isWebGLRenderer=!0;let m;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");m=n.getContextAttributes().alpha}else m=a;const g=new Uint32Array(4),x=new Int32Array(4);let p=null,h=null;const A=[],b=[];this.domElement=e,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=Ye,this.toneMapping=Un,this.toneMappingExposure=1;const E=this;let D=!1,w=0,R=0,N=null,y=-1,M=null;const C=new le,W=new le;let H=null;const q=new Dt(0);let J=0,X=e.width,at=e.height,k=1,ut=null,xt=null;const Rt=new le(0,0,X,at),Vt=new le(0,0,X,at);let wt=!1;const V=new Ya;let it=!1,Mt=!1;this.transmissionResolutionScale=1;const ct=new ne,Ct=new ne,Pt=new P,nt=new le,Q={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let O=!1;function ot(){return N===null?k:1}let T=n;function lt(v,U){return e.getContext(v,U)}try{const v={alpha:!0,depth:s,stencil:r,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:u,failIfMajorPerformanceCaveat:d};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${Oa}`),e.addEventListener("webglcontextlost",Z,!1),e.addEventListener("webglcontextrestored",St,!1),e.addEventListener("webglcontextcreationerror",vt,!1),T===null){const U="webgl2";if(T=lt(U,v),T===null)throw lt(U)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(v){throw console.error("THREE.WebGLRenderer: "+v.message),v}let tt,rt,$,Ft,_t,S,_,F,j,K,Y,Et,ft,ht,Ot,et,gt,Lt,Bt,yt,Zt,kt,se,L;function pt(){tt=new Yf(T),tt.init(),kt=new Rm(T,tt),rt=new Hf(T,tt,t,kt),$=new Am(T,tt),rt.reverseDepthBuffer&&f&&$.buffers.depth.setReversed(!0),Ft=new Zf(T),_t=new fm,S=new wm(T,tt,$,_t,rt,kt,Ft),_=new Vf(E),F=new Xf(E),j=new eu(T),se=new Bf(T,j),K=new qf(T,j,Ft,se),Y=new $f(T,K,j,Ft),Bt=new Kf(T,rt,S),et=new kf(_t),Et=new dm(E,_,F,tt,rt,se,et),ft=new Nm(E,_t),ht=new mm,Ot=new Sm(tt),Lt=new Of(E,_,F,$,Y,m,l),gt=new Tm(E,Y,rt),L=new Fm(T,Ft,rt,$),yt=new zf(T,tt,Ft),Zt=new jf(T,tt,Ft),Ft.programs=Et.programs,E.capabilities=rt,E.extensions=tt,E.properties=_t,E.renderLists=ht,E.shadowMap=gt,E.state=$,E.info=Ft}pt();const G=new Um(E,T);this.xr=G,this.getContext=function(){return T},this.getContextAttributes=function(){return T.getContextAttributes()},this.forceContextLoss=function(){const v=tt.get("WEBGL_lose_context");v&&v.loseContext()},this.forceContextRestore=function(){const v=tt.get("WEBGL_lose_context");v&&v.restoreContext()},this.getPixelRatio=function(){return k},this.setPixelRatio=function(v){v!==void 0&&(k=v,this.setSize(X,at,!1))},this.getSize=function(v){return v.set(X,at)},this.setSize=function(v,U,B=!0){if(G.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}X=v,at=U,e.width=Math.floor(v*k),e.height=Math.floor(U*k),B===!0&&(e.style.width=v+"px",e.style.height=U+"px"),this.setViewport(0,0,v,U)},this.getDrawingBufferSize=function(v){return v.set(X*k,at*k).floor()},this.setDrawingBufferSize=function(v,U,B){X=v,at=U,k=B,e.width=Math.floor(v*B),e.height=Math.floor(U*B),this.setViewport(0,0,v,U)},this.getCurrentViewport=function(v){return v.copy(C)},this.getViewport=function(v){return v.copy(Rt)},this.setViewport=function(v,U,B,z){v.isVector4?Rt.set(v.x,v.y,v.z,v.w):Rt.set(v,U,B,z),$.viewport(C.copy(Rt).multiplyScalar(k).round())},this.getScissor=function(v){return v.copy(Vt)},this.setScissor=function(v,U,B,z){v.isVector4?Vt.set(v.x,v.y,v.z,v.w):Vt.set(v,U,B,z),$.scissor(W.copy(Vt).multiplyScalar(k).round())},this.getScissorTest=function(){return wt},this.setScissorTest=function(v){$.setScissorTest(wt=v)},this.setOpaqueSort=function(v){ut=v},this.setTransparentSort=function(v){xt=v},this.getClearColor=function(v){return v.copy(Lt.getClearColor())},this.setClearColor=function(){Lt.setClearColor.apply(Lt,arguments)},this.getClearAlpha=function(){return Lt.getClearAlpha()},this.setClearAlpha=function(){Lt.setClearAlpha.apply(Lt,arguments)},this.clear=function(v=!0,U=!0,B=!0){let z=0;if(v){let I=!1;if(N!==null){const st=N.texture.format;I=st===Wa||st===Ga||st===Va}if(I){const st=N.texture.type,mt=st===En||st===$n||st===Qi||st===Ui||st===za||st===Ha,Tt=Lt.getClearColor(),bt=Lt.getClearAlpha(),zt=Tt.r,Ht=Tt.g,Ut=Tt.b;mt?(g[0]=zt,g[1]=Ht,g[2]=Ut,g[3]=bt,T.clearBufferuiv(T.COLOR,0,g)):(x[0]=zt,x[1]=Ht,x[2]=Ut,x[3]=bt,T.clearBufferiv(T.COLOR,0,x))}else z|=T.COLOR_BUFFER_BIT}U&&(z|=T.DEPTH_BUFFER_BIT),B&&(z|=T.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),T.clear(z)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){e.removeEventListener("webglcontextlost",Z,!1),e.removeEventListener("webglcontextrestored",St,!1),e.removeEventListener("webglcontextcreationerror",vt,!1),Lt.dispose(),ht.dispose(),Ot.dispose(),_t.dispose(),_.dispose(),F.dispose(),Y.dispose(),se.dispose(),L.dispose(),Et.dispose(),G.dispose(),G.removeEventListener("sessionstart",$a),G.removeEventListener("sessionend",Ja),On.stop()};function Z(v){v.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),D=!0}function St(){console.log("THREE.WebGLRenderer: Context Restored."),D=!1;const v=Ft.autoReset,U=gt.enabled,B=gt.autoUpdate,z=gt.needsUpdate,I=gt.type;pt(),Ft.autoReset=v,gt.enabled=U,gt.autoUpdate=B,gt.needsUpdate=z,gt.type=I}function vt(v){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",v.statusMessage)}function Gt(v){const U=v.target;U.removeEventListener("dispose",Gt),he(U)}function he(v){ye(v),_t.remove(v)}function ye(v){const U=_t.get(v).programs;U!==void 0&&(U.forEach(function(B){Et.releaseProgram(B)}),v.isShaderMaterial&&Et.releaseShaderCache(v))}this.renderBufferDirect=function(v,U,B,z,I,st){U===null&&(U=Q);const mt=I.isMesh&&I.matrixWorld.determinant()<0,Tt=rc(v,U,B,z,I);$.setMaterial(z,mt);let bt=B.index,zt=1;if(z.wireframe===!0){if(bt=K.getWireframeAttribute(B),bt===void 0)return;zt=2}const Ht=B.drawRange,Ut=B.attributes.position;let $t=Ht.start*zt,te=(Ht.start+Ht.count)*zt;st!==null&&($t=Math.max($t,st.start*zt),te=Math.min(te,(st.start+st.count)*zt)),bt!==null?($t=Math.max($t,0),te=Math.min(te,bt.count)):Ut!=null&&($t=Math.max($t,0),te=Math.min(te,Ut.count));const de=te-$t;if(de<0||de===1/0)return;se.setup(I,z,Tt,B,bt);let ue,Jt=yt;if(bt!==null&&(ue=j.get(bt),Jt=Zt,Jt.setIndex(ue)),I.isMesh)z.wireframe===!0?($.setLineWidth(z.wireframeLinewidth*ot()),Jt.setMode(T.LINES)):Jt.setMode(T.TRIANGLES);else if(I.isLine){let It=z.linewidth;It===void 0&&(It=1),$.setLineWidth(It*ot()),I.isLineSegments?Jt.setMode(T.LINES):I.isLineLoop?Jt.setMode(T.LINE_LOOP):Jt.setMode(T.LINE_STRIP)}else I.isPoints?Jt.setMode(T.POINTS):I.isSprite&&Jt.setMode(T.TRIANGLES);if(I.isBatchedMesh)if(I._multiDrawInstances!==null)Jt.renderMultiDrawInstances(I._multiDrawStarts,I._multiDrawCounts,I._multiDrawCount,I._multiDrawInstances);else if(tt.get("WEBGL_multi_draw"))Jt.renderMultiDraw(I._multiDrawStarts,I._multiDrawCounts,I._multiDrawCount);else{const It=I._multiDrawStarts,Me=I._multiDrawCounts,ee=I._multiDrawCount,Ze=bt?j.get(bt).bytesPerElement:1,ni=_t.get(z).currentProgram.getUniforms();for(let Fe=0;Fe{function st(){if(z.forEach(function(mt){_t.get(mt).currentProgram.isReady()&&z.delete(mt)}),z.size===0){I(v);return}setTimeout(st,10)}tt.get("KHR_parallel_shader_compile")!==null?st():setTimeout(st,10)})};let je=null;function un(v){je&&je(v)}function $a(){On.stop()}function Ja(){On.start()}const On=new $l;On.setAnimationLoop(un),typeof self<"u"&&On.setContext(self),this.setAnimationLoop=function(v){je=v,G.setAnimationLoop(v),v===null?On.stop():On.start()},G.addEventListener("sessionstart",$a),G.addEventListener("sessionend",Ja),this.render=function(v,U){if(U!==void 0&&U.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(D===!0)return;if(v.matrixWorldAutoUpdate===!0&&v.updateMatrixWorld(),U.parent===null&&U.matrixWorldAutoUpdate===!0&&U.updateMatrixWorld(),G.enabled===!0&&G.isPresenting===!0&&(G.cameraAutoUpdate===!0&&G.updateCamera(U),U=G.getCamera()),v.isScene===!0&&v.onBeforeRender(E,v,U,N),h=Ot.get(v,b.length),h.init(U),b.push(h),Ct.multiplyMatrices(U.projectionMatrix,U.matrixWorldInverse),V.setFromProjectionMatrix(Ct),Mt=this.localClippingEnabled,it=et.init(this.clippingPlanes,Mt),p=ht.get(v,A.length),p.init(),A.push(p),G.enabled===!0&&G.isPresenting===!0){const st=E.xr.getDepthSensingMesh();st!==null&&ir(st,U,-1/0,E.sortObjects)}ir(v,U,0,E.sortObjects),p.finish(),E.sortObjects===!0&&p.sort(ut,xt),O=G.enabled===!1||G.isPresenting===!1||G.hasDepthSensing()===!1,O&&Lt.addToRenderList(p,v),this.info.render.frame++,it===!0&&et.beginShadows();const B=h.state.shadowsArray;gt.render(B,v,U),it===!0&&et.endShadows(),this.info.autoReset===!0&&this.info.reset();const z=p.opaque,I=p.transmissive;if(h.setupLights(),U.isArrayCamera){const st=U.cameras;if(I.length>0)for(let mt=0,Tt=st.length;mt0&&to(z,I,v,U),O&&Lt.render(v),Qa(p,v,U);N!==null&&R===0&&(S.updateMultisampleRenderTarget(N),S.updateRenderTargetMipmap(N)),v.isScene===!0&&v.onAfterRender(E,v,U),se.resetDefaultState(),y=-1,M=null,b.pop(),b.length>0?(h=b[b.length-1],it===!0&&et.setGlobalState(E.clippingPlanes,h.state.camera)):h=null,A.pop(),A.length>0?p=A[A.length-1]:p=null};function ir(v,U,B,z){if(v.visible===!1)return;if(v.layers.test(U.layers)){if(v.isGroup)B=v.renderOrder;else if(v.isLOD)v.autoUpdate===!0&&v.update(U);else if(v.isLight)h.pushLight(v),v.castShadow&&h.pushShadow(v);else if(v.isSprite){if(!v.frustumCulled||V.intersectsSprite(v)){z&&nt.setFromMatrixPosition(v.matrixWorld).applyMatrix4(Ct);const mt=Y.update(v),Tt=v.material;Tt.visible&&p.push(v,mt,Tt,B,nt.z,null)}}else if((v.isMesh||v.isLine||v.isPoints)&&(!v.frustumCulled||V.intersectsObject(v))){const mt=Y.update(v),Tt=v.material;if(z&&(v.boundingSphere!==void 0?(v.boundingSphere===null&&v.computeBoundingSphere(),nt.copy(v.boundingSphere.center)):(mt.boundingSphere===null&&mt.computeBoundingSphere(),nt.copy(mt.boundingSphere.center)),nt.applyMatrix4(v.matrixWorld).applyMatrix4(Ct)),Array.isArray(Tt)){const bt=mt.groups;for(let zt=0,Ht=bt.length;zt0&&is(I,U,B),st.length>0&&is(st,U,B),mt.length>0&&is(mt,U,B),$.buffers.depth.setTest(!0),$.buffers.depth.setMask(!0),$.buffers.color.setMask(!0),$.setPolygonOffset(!1)}function to(v,U,B,z){if((B.isScene===!0?B.overrideMaterial:null)!==null)return;h.state.transmissionRenderTarget[z.id]===void 0&&(h.state.transmissionRenderTarget[z.id]=new en(1,1,{generateMipmaps:!0,type:tt.has("EXT_color_buffer_half_float")||tt.has("EXT_color_buffer_float")?Sn:En,minFilter:Kn,samples:4,stencilBuffer:r,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Qt.workingColorSpace}));const st=h.state.transmissionRenderTarget[z.id],mt=z.viewport||C;st.setSize(mt.z*E.transmissionResolutionScale,mt.w*E.transmissionResolutionScale);const Tt=E.getRenderTarget();E.setRenderTarget(st),E.getClearColor(q),J=E.getClearAlpha(),J<1&&E.setClearColor(16777215,.5),E.clear(),O&&Lt.render(B);const bt=E.toneMapping;E.toneMapping=Un;const zt=z.viewport;if(z.viewport!==void 0&&(z.viewport=void 0),h.setupLightsView(z),it===!0&&et.setGlobalState(E.clippingPlanes,z),is(v,B,z),S.updateMultisampleRenderTarget(st),S.updateRenderTargetMipmap(st),tt.has("WEBGL_multisampled_render_to_texture")===!1){let Ht=!1;for(let Ut=0,$t=U.length;Ut<$t;Ut++){const te=U[Ut],de=te.object,ue=te.geometry,Jt=te.material,It=te.group;if(Jt.side===an&&de.layers.test(z.layers)){const Me=Jt.side;Jt.side=Ne,Jt.needsUpdate=!0,eo(de,B,z,ue,Jt,It),Jt.side=Me,Jt.needsUpdate=!0,Ht=!0}}Ht===!0&&(S.updateMultisampleRenderTarget(st),S.updateRenderTargetMipmap(st))}E.setRenderTarget(Tt),E.setClearColor(q,J),zt!==void 0&&(z.viewport=zt),E.toneMapping=bt}function is(v,U,B){const z=U.isScene===!0?U.overrideMaterial:null;for(let I=0,st=v.length;I0),Ut=!!B.morphAttributes.position,$t=!!B.morphAttributes.normal,te=!!B.morphAttributes.color;let de=Un;z.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(de=E.toneMapping);const ue=B.morphAttributes.position||B.morphAttributes.normal||B.morphAttributes.color,Jt=ue!==void 0?ue.length:0,It=_t.get(z),Me=h.state.lights;if(it===!0&&(Mt===!0||v!==M)){const Re=v===M&&z.id===y;et.setState(z,v,Re)}let ee=!1;z.version===It.__version?(It.needsLights&&It.lightsStateVersion!==Me.state.version||It.outputColorSpace!==Tt||I.isBatchedMesh&&It.batching===!1||!I.isBatchedMesh&&It.batching===!0||I.isBatchedMesh&&It.batchingColor===!0&&I.colorTexture===null||I.isBatchedMesh&&It.batchingColor===!1&&I.colorTexture!==null||I.isInstancedMesh&&It.instancing===!1||!I.isInstancedMesh&&It.instancing===!0||I.isSkinnedMesh&&It.skinning===!1||!I.isSkinnedMesh&&It.skinning===!0||I.isInstancedMesh&&It.instancingColor===!0&&I.instanceColor===null||I.isInstancedMesh&&It.instancingColor===!1&&I.instanceColor!==null||I.isInstancedMesh&&It.instancingMorph===!0&&I.morphTexture===null||I.isInstancedMesh&&It.instancingMorph===!1&&I.morphTexture!==null||It.envMap!==bt||z.fog===!0&&It.fog!==st||It.numClippingPlanes!==void 0&&(It.numClippingPlanes!==et.numPlanes||It.numIntersection!==et.numIntersection)||It.vertexAlphas!==zt||It.vertexTangents!==Ht||It.morphTargets!==Ut||It.morphNormals!==$t||It.morphColors!==te||It.toneMapping!==de||It.morphTargetsCount!==Jt)&&(ee=!0):(ee=!0,It.__version=z.version);let Ze=It.currentProgram;ee===!0&&(Ze=ss(z,U,I));let ni=!1,Fe=!1,zi=!1;const ce=Ze.getUniforms(),Ve=It.uniforms;if($.useProgram(Ze.program)&&(ni=!0,Fe=!0,zi=!0),z.id!==y&&(y=z.id,Fe=!0),ni||M!==v){$.buffers.depth.getReversed()?(ct.copy(v.projectionMatrix),fh(ct),ph(ct),ce.setValue(T,"projectionMatrix",ct)):ce.setValue(T,"projectionMatrix",v.projectionMatrix),ce.setValue(T,"viewMatrix",v.matrixWorldInverse);const Le=ce.map.cameraPosition;Le!==void 0&&Le.setValue(T,Pt.setFromMatrixPosition(v.matrixWorld)),rt.logarithmicDepthBuffer&&ce.setValue(T,"logDepthBufFC",2/(Math.log(v.far+1)/Math.LN2)),(z.isMeshPhongMaterial||z.isMeshToonMaterial||z.isMeshLambertMaterial||z.isMeshBasicMaterial||z.isMeshStandardMaterial||z.isShaderMaterial)&&ce.setValue(T,"isOrthographic",v.isOrthographicCamera===!0),M!==v&&(M=v,Fe=!0,zi=!0)}if(I.isSkinnedMesh){ce.setOptional(T,I,"bindMatrix"),ce.setOptional(T,I,"bindMatrixInverse");const Re=I.skeleton;Re&&(Re.boneTexture===null&&Re.computeBoneTexture(),ce.setValue(T,"boneTexture",Re.boneTexture,S))}I.isBatchedMesh&&(ce.setOptional(T,I,"batchingTexture"),ce.setValue(T,"batchingTexture",I._matricesTexture,S),ce.setOptional(T,I,"batchingIdTexture"),ce.setValue(T,"batchingIdTexture",I._indirectTexture,S),ce.setOptional(T,I,"batchingColorTexture"),I._colorsTexture!==null&&ce.setValue(T,"batchingColorTexture",I._colorsTexture,S));const Ge=B.morphAttributes;if((Ge.position!==void 0||Ge.normal!==void 0||Ge.color!==void 0)&&Bt.update(I,B,Ze),(Fe||It.receiveShadow!==I.receiveShadow)&&(It.receiveShadow=I.receiveShadow,ce.setValue(T,"receiveShadow",I.receiveShadow)),z.isMeshGouraudMaterial&&z.envMap!==null&&(Ve.envMap.value=bt,Ve.flipEnvMap.value=bt.isCubeTexture&&bt.isRenderTargetTexture===!1?-1:1),z.isMeshStandardMaterial&&z.envMap===null&&U.environment!==null&&(Ve.envMapIntensity.value=U.environmentIntensity),Fe&&(ce.setValue(T,"toneMappingExposure",E.toneMappingExposure),It.needsLights&&ac(Ve,zi),st&&z.fog===!0&&ft.refreshFogUniforms(Ve,st),ft.refreshMaterialUniforms(Ve,z,k,at,h.state.transmissionRenderTarget[v.id]),Gs.upload(T,no(It),Ve,S)),z.isShaderMaterial&&z.uniformsNeedUpdate===!0&&(Gs.upload(T,no(It),Ve,S),z.uniformsNeedUpdate=!1),z.isSpriteMaterial&&ce.setValue(T,"center",I.center),ce.setValue(T,"modelViewMatrix",I.modelViewMatrix),ce.setValue(T,"normalMatrix",I.normalMatrix),ce.setValue(T,"modelMatrix",I.matrixWorld),z.isShaderMaterial||z.isRawShaderMaterial){const Re=z.uniformsGroups;for(let Le=0,sr=Re.length;Le0&&S.useMultisampledRTT(v)===!1?I=_t.get(v).__webglMultisampledFramebuffer:Array.isArray(Ht)?I=Ht[B]:I=Ht,C.copy(v.viewport),W.copy(v.scissor),H=v.scissorTest}else C.copy(Rt).multiplyScalar(k).floor(),W.copy(Vt).multiplyScalar(k).floor(),H=wt;if(B!==0&&(I=lc),$.bindFramebuffer(T.FRAMEBUFFER,I)&&z&&$.drawBuffers(v,I),$.viewport(C),$.scissor(W),$.setScissorTest(H),st){const bt=_t.get(v.texture);T.framebufferTexture2D(T.FRAMEBUFFER,T.COLOR_ATTACHMENT0,T.TEXTURE_CUBE_MAP_POSITIVE_X+U,bt.__webglTexture,B)}else if(mt){const bt=_t.get(v.texture),zt=U;T.framebufferTextureLayer(T.FRAMEBUFFER,T.COLOR_ATTACHMENT0,bt.__webglTexture,B,zt)}else if(v!==null&&B!==0){const bt=_t.get(v.texture);T.framebufferTexture2D(T.FRAMEBUFFER,T.COLOR_ATTACHMENT0,T.TEXTURE_2D,bt.__webglTexture,B)}y=-1},this.readRenderTargetPixels=function(v,U,B,z,I,st,mt){if(!(v&&v.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Tt=_t.get(v).__webglFramebuffer;if(v.isWebGLCubeRenderTarget&&mt!==void 0&&(Tt=Tt[mt]),Tt){$.bindFramebuffer(T.FRAMEBUFFER,Tt);try{const bt=v.texture,zt=bt.format,Ht=bt.type;if(!rt.textureFormatReadable(zt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!rt.textureTypeReadable(Ht)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}U>=0&&U<=v.width-z&&B>=0&&B<=v.height-I&&T.readPixels(U,B,z,I,kt.convert(zt),kt.convert(Ht),st)}finally{const bt=N!==null?_t.get(N).__webglFramebuffer:null;$.bindFramebuffer(T.FRAMEBUFFER,bt)}}},this.readRenderTargetPixelsAsync=async function(v,U,B,z,I,st,mt){if(!(v&&v.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Tt=_t.get(v).__webglFramebuffer;if(v.isWebGLCubeRenderTarget&&mt!==void 0&&(Tt=Tt[mt]),Tt){const bt=v.texture,zt=bt.format,Ht=bt.type;if(!rt.textureFormatReadable(zt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!rt.textureTypeReadable(Ht))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(U>=0&&U<=v.width-z&&B>=0&&B<=v.height-I){$.bindFramebuffer(T.FRAMEBUFFER,Tt);const Ut=T.createBuffer();T.bindBuffer(T.PIXEL_PACK_BUFFER,Ut),T.bufferData(T.PIXEL_PACK_BUFFER,st.byteLength,T.STREAM_READ),T.readPixels(U,B,z,I,kt.convert(zt),kt.convert(Ht),0);const $t=N!==null?_t.get(N).__webglFramebuffer:null;$.bindFramebuffer(T.FRAMEBUFFER,$t);const te=T.fenceSync(T.SYNC_GPU_COMMANDS_COMPLETE,0);return T.flush(),await dh(T,te,4),T.bindBuffer(T.PIXEL_PACK_BUFFER,Ut),T.getBufferSubData(T.PIXEL_PACK_BUFFER,0,st),T.deleteBuffer(Ut),T.deleteSync(te),st}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(v,U=null,B=0){v.isTexture!==!0&&(yi("WebGLRenderer: copyFramebufferToTexture function signature has changed."),U=arguments[0]||null,v=arguments[1]);const z=Math.pow(2,-B),I=Math.floor(v.image.width*z),st=Math.floor(v.image.height*z),mt=U!==null?U.x:0,Tt=U!==null?U.y:0;S.setTexture2D(v,0),T.copyTexSubImage2D(T.TEXTURE_2D,B,0,0,mt,Tt,I,st),$.unbindTexture()};const cc=T.createFramebuffer(),hc=T.createFramebuffer();this.copyTextureToTexture=function(v,U,B=null,z=null,I=0,st=null){v.isTexture!==!0&&(yi("WebGLRenderer: copyTextureToTexture function signature has changed."),z=arguments[0]||null,v=arguments[1],U=arguments[2],st=arguments[3]||0,B=null),st===null&&(I!==0?(yi("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),st=I,I=0):st=0);let mt,Tt,bt,zt,Ht,Ut,$t,te,de;const ue=v.isCompressedTexture?v.mipmaps[st]:v.image;if(B!==null)mt=B.max.x-B.min.x,Tt=B.max.y-B.min.y,bt=B.isBox3?B.max.z-B.min.z:1,zt=B.min.x,Ht=B.min.y,Ut=B.isBox3?B.min.z:0;else{const Ge=Math.pow(2,-I);mt=Math.floor(ue.width*Ge),Tt=Math.floor(ue.height*Ge),v.isDataArrayTexture?bt=ue.depth:v.isData3DTexture?bt=Math.floor(ue.depth*Ge):bt=1,zt=0,Ht=0,Ut=0}z!==null?($t=z.x,te=z.y,de=z.z):($t=0,te=0,de=0);const Jt=kt.convert(U.format),It=kt.convert(U.type);let Me;U.isData3DTexture?(S.setTexture3D(U,0),Me=T.TEXTURE_3D):U.isDataArrayTexture||U.isCompressedArrayTexture?(S.setTexture2DArray(U,0),Me=T.TEXTURE_2D_ARRAY):(S.setTexture2D(U,0),Me=T.TEXTURE_2D),T.pixelStorei(T.UNPACK_FLIP_Y_WEBGL,U.flipY),T.pixelStorei(T.UNPACK_PREMULTIPLY_ALPHA_WEBGL,U.premultiplyAlpha),T.pixelStorei(T.UNPACK_ALIGNMENT,U.unpackAlignment);const ee=T.getParameter(T.UNPACK_ROW_LENGTH),Ze=T.getParameter(T.UNPACK_IMAGE_HEIGHT),ni=T.getParameter(T.UNPACK_SKIP_PIXELS),Fe=T.getParameter(T.UNPACK_SKIP_ROWS),zi=T.getParameter(T.UNPACK_SKIP_IMAGES);T.pixelStorei(T.UNPACK_ROW_LENGTH,ue.width),T.pixelStorei(T.UNPACK_IMAGE_HEIGHT,ue.height),T.pixelStorei(T.UNPACK_SKIP_PIXELS,zt),T.pixelStorei(T.UNPACK_SKIP_ROWS,Ht),T.pixelStorei(T.UNPACK_SKIP_IMAGES,Ut);const ce=v.isDataArrayTexture||v.isData3DTexture,Ve=U.isDataArrayTexture||U.isData3DTexture;if(v.isDepthTexture){const Ge=_t.get(v),Re=_t.get(U),Le=_t.get(Ge.__renderTarget),sr=_t.get(Re.__renderTarget);$.bindFramebuffer(T.READ_FRAMEBUFFER,Le.__webglFramebuffer),$.bindFramebuffer(T.DRAW_FRAMEBUFFER,sr.__webglFramebuffer);for(let Bn=0;BnMath.PI&&(n-=Ue),s<-Math.PI?s+=Ue:s>Math.PI&&(s-=Ue),n<=s?this._spherical.theta=Math.max(n,Math.min(s,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(n+s)/2?Math.max(n,this._spherical.theta):Math.min(s,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let r=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),r=a!=this._spherical.radius}if(pe.setFromSpherical(this._spherical),pe.applyQuaternion(this._quatInverse),e.copy(this.target).add(pe),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){const o=pe.length();a=this._clampDistance(o*this._scale);const l=o-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),r=!!l}else if(this.object.isOrthographicCamera){const o=new P(this._mouse.x,this._mouse.y,0);o.unproject(this.object);const l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),r=l!==this.object.zoom;const c=new P(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=pe.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(Ns.origin.copy(this.object.position),Ns.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(Ns.direction))zr||8*(1-this._lastQuaternion.dot(this.object.quaternion))>zr||this._lastTargetPosition.distanceToSquared(this.target)>zr?(this.dispatchEvent(gl),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(t){return t!==null?Ue/60*this.autoRotateSpeed*t:Ue/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(t*.01);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){pe.setFromMatrixColumn(e,0),pe.multiplyScalar(-t),this._panOffset.add(pe)}_panUp(t,e){this.screenSpacePanning===!0?pe.setFromMatrixColumn(e,1):(pe.setFromMatrixColumn(e,0),pe.crossVectors(this.object.up,pe)),pe.multiplyScalar(t),this._panOffset.add(pe)}_pan(t,e){const n=this.domElement;if(this.object.isPerspectiveCamera){const s=this.object.position;pe.copy(s).sub(this.target);let r=pe.length();r*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*r/n.clientHeight,this.object.matrix),this._panUp(2*e*r/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const n=this.domElement.getBoundingClientRect(),s=t-n.left,r=e-n.top,a=n.width,o=n.height;this._mouse.x=s/a*2-1,this._mouse.y=-(r/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(Ue*this._rotateDelta.x/e.clientHeight),this._rotateUp(Ue*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(Ue*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-Ue*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(Ue*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-Ue*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0;break}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(this._pointers.length===1)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._rotateStart.set(n,s)}}_handleTouchStartPan(t){if(this._pointers.length===1)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panStart.set(n,s)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),n=t.pageX-e.x,s=t.pageY-e.y,r=Math.sqrt(n*n+s*s);this._dollyStart.set(0,r)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(this._pointers.length==1)this._rotateEnd.set(t.pageX,t.pageY);else{const n=this._getSecondPointerPosition(t),s=.5*(t.pageX+n.x),r=.5*(t.pageY+n.y);this._rotateEnd.set(s,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(Ue*this._rotateDelta.x/e.clientHeight),this._rotateUp(Ue*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(this._pointers.length===1)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),n=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panEnd.set(n,s)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),n=t.pageX-e.x,s=t.pageY-e.y,r=Math.sqrt(n*n+s*s);this._dollyEnd.set(0,r),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const a=(t.pageX+e.x)*.5,o=(t.pageY+e.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e');function Dm(i,t){Hl(t,!0);let e=Ua(t,"events",19,()=>[]),n=Ua(t,"isDreaming",3,!1),s,r,a,o,l,c,u,f,d,m,g,x,p,h,A=new Map,b=new Map,E=new Map,U=null,w=null,C=new Map,N=0,y=0,M=[],P=[],W=[],H=[];Bl(()=>{Y(),Q(),k(),it(),gt(),window.addEventListener("resize",Tt),s.addEventListener("pointermove",ut),s.addEventListener("click",Dt)}),zl(()=>{cancelAnimationFrame(m),window.removeEventListener("resize",Tt),r==null||r.dispose(),c==null||c.dispose()});function Y(){a=new ih,a.fog=new Ps(328976,.008),o=new Ue(60,s.clientWidth/s.clientHeight,.1,2e3),o.position.set(0,30,80),r=new em({antialias:!0,alpha:!0,powerPreference:"high-performance"}),r.setSize(s.clientWidth,s.clientHeight),r.setPixelRatio(Math.min(window.devicePixelRatio,2)),r.toneMapping=Zo,r.toneMappingExposure=1.2,s.appendChild(r.domElement),l=new im(o,r.domElement),l.enableDamping=!0,l.dampingFactor=.05,l.rotateSpeed=.5,l.zoomSpeed=.8,l.minDistance=10,l.maxDistance=500,l.autoRotate=!0,l.autoRotateSpeed=.3,c=new Sm(r),c.addPass(new ym(a,o)),u=new yi(new At(s.clientWidth,s.clientHeight),.8,.4,.85),c.addPass(u);const at=new dh(1710650,.5);a.add(at);const tt=new po(6514417,1.5,200);tt.position.set(50,50,50),a.add(tt);const O=new po(11032055,1,200);O.position.set(-50,-30,-50),a.add(O),f=new _h,f.params.Points={threshold:2},d=new At}function Q(){const at=new pe,tt=3e3,O=new Float32Array(tt*3),st=new Float32Array(tt);for(let ot=0;ot{const T=1-2*st/(at-1||1),ot=Math.sqrt(1-T*T),J=2*Math.PI*st/tt,rt=30+at*.5,$=new R(ot*Math.cos(J)*rt,T*rt,ot*Math.sin(J)*rt);O.isCenter&&$.set(0,0,0),b.set(O.id,$),C.set(O.id,new R);const Ut=.5+O.retention*2,vt=kl[O.type]||"#6b7280",S=new Ea(Ut,16,16),_=new lh({color:new Rt(vt),emissive:new Rt(vt),emissiveIntensity:.3+O.retention*.5,roughness:.3,metalness:.1,transparent:!0,opacity:.3+O.retention*.7}),F=new ze(S,_);F.position.copy($),F.userData={nodeId:O.id,type:O.type,retention:O.retention},A.set(O.id,F),g.add(F);const j=new la({color:new Rt(vt),transparent:!0,opacity:.15+O.retention*.2,blending:je}),K=new so(j);K.scale.set(Ut*4,Ut*4,1),K.position.copy($),K.userData={isGlow:!0,nodeId:O.id},g.add(K);const X=O.label||O.type,bt=V(X,"#e2e8f0");bt.position.copy($),bt.position.y+=Ut*2+1.5,bt.userData={isLabel:!0,nodeId:O.id,offset:Ut*2+1.5},g.add(bt),E.set(O.id,bt)}),t.edges.forEach(O=>{const st=b.get(O.source),T=b.get(O.target);if(!st||!T)return;const ot=[st,T],J=new pe().setFromPoints(ot),rt=new ca({color:4868730,transparent:!0,opacity:Math.min(.1+O.weight*.5,.6),blending:je}),$=new oo(J,rt);$.userData={source:O.source,target:O.target},x.add($)}),a.add(x),a.add(g)}function it(){const tt=new pe,O=new Float32Array(500*3),st=new Float32Array(500*3);for(let ot=0;ot<500;ot++)O[ot*3]=(Math.random()-.5)*100,O[ot*3+1]=(Math.random()-.5)*100,O[ot*3+2]=(Math.random()-.5)*100,st[ot*3]=.4+Math.random()*.3,st[ot*3+1]=.3+Math.random()*.2,st[ot*3+2]=.8+Math.random()*.2;tt.setAttribute("position",new _e(O,3)),tt.setAttribute("color",new _e(st,3));const T=new Ts({size:.3,vertexColors:!0,transparent:!0,opacity:.4,blending:je,sizeAttenuation:!0});p=new hr(tt,T),a.add(p)}function V(at,tt){const O=document.createElement("canvas"),st=O.getContext("2d");O.width=512,O.height=64;const T=at.length>40?at.slice(0,37)+"...":at;st.clearRect(0,0,O.width,O.height),st.font="bold 28px -apple-system, BlinkMacSystemFont, sans-serif",st.textAlign="center",st.textBaseline="middle",st.shadowColor="rgba(0, 0, 0, 0.8)",st.shadowBlur=6,st.shadowOffsetX=0,st.shadowOffsetY=2,st.fillStyle=tt,st.fillText(T,O.width/2,O.height/2);const ot=new oh(O);ot.needsUpdate=!0;const J=new la({map:ot,transparent:!0,opacity:0,depthTest:!1,sizeAttenuation:!0}),rt=new so(J);return rt.scale.set(12,1.5,1),rt}function ht(){if(N>300)return;N++;const at=Math.max(.001,1-N/300),tt=500,O=.01,st=.9,T=Array.from(b.keys());for(let ot=0;ot{const J=b.get(ot.source),rt=b.get(ot.target);if(!J||!rt)return;const $=new R().subVectors(rt,J),vt=$.length()*O*ot.weight*at,S=$.normalize().multiplyScalar(vt);C.get(ot.source).add(S),C.get(ot.target).sub(S)}),T.forEach(ot=>{const J=b.get(ot),rt=C.get(ot);rt.sub(J.clone().multiplyScalar(.001*at)),rt.multiplyScalar(st),J.add(rt);const $=A.get(ot);$&&$.position.copy(J)}),g.children.forEach(ot=>{if(ot.userData.nodeId){const J=b.get(ot.userData.nodeId);if(!J)return;ot.userData.isGlow?ot.position.copy(J):ot.userData.isLabel&&(ot.position.copy(J),ot.position.y+=ot.userData.offset)}}),x.children.forEach(ot=>{const J=ot,rt=b.get(J.userData.source),$=b.get(J.userData.target);if(rt&&$){const Ut=J.geometry.attributes.position;Ut.setXYZ(0,rt.x,rt.y,rt.z),Ut.setXYZ(1,$.x,$.y,$.z),Ut.needsUpdate=!0}})}function gt(){m=requestAnimationFrame(gt);const at=performance.now()*.001;if(ht(),p){const tt=p.geometry.attributes.position;for(let O=0;O{const st=t.nodes.find(J=>J.id===O);if(!st)return;const T=1+Math.sin(at*1.5+t.nodes.indexOf(st)*.5)*.05*st.retention;tt.scale.setScalar(T);const ot=tt.material;O===U?ot.emissiveIntensity=1:O===w?ot.emissiveIntensity=.8:ot.emissiveIntensity=.3+st.retention*.5}),E.forEach((tt,O)=>{const st=b.get(O);if(!st)return;const T=o.position.distanceTo(st),ot=tt.material,J=O===U||O===w?1:T<40?.9:T<80?.9*(1-(T-40)/40):0;ot.opacity+=(J-ot.opacity)*.1}),n()?(l.autoRotateSpeed=.1,u.strength=1.5,a.fog=new Ps(656672,.006)):(l.autoRotateSpeed=.3,u.strength=.8),wt(),lt(),l.update(),c.render()}function wt(){var tt,O,st,T,ot;if(!e()||e().length<=y)return;const at=e().slice(y);y=e().length;for(const J of at)switch(J.type){case"MemoryCreated":{const rt=(tt=J.data)==null?void 0:tt.id,$=rt?b.get(rt):null,Ut=($==null?void 0:$.clone())??new R((Math.random()-.5)*40,(Math.random()-.5)*40,(Math.random()-.5)*40);Ht(Ut,new Rt(1096065)),Zt(Ut,new Rt(1096065));break}case"SearchPerformed":{(O=J.data)==null||O.query,A.forEach((rt,$)=>{M.push({nodeId:$,intensity:.6+Math.random()*.4,color:new Rt(3900150),decay:.02})});break}case"DreamStarted":{A.forEach((rt,$)=>{M.push({nodeId:$,intensity:1,color:new Rt(11032055),decay:.005})});break}case"DreamProgress":{const rt=(st=J.data)==null?void 0:st.memory_id;rt&&A.has(rt)&&M.push({nodeId:rt,intensity:1.5,color:new Rt(12616956),decay:.01});break}case"DreamCompleted":{Ht(new R(0,0,0),new Rt(11032055)),Zt(new R(0,0,0),new Rt(11032055));break}case"ConnectionDiscovered":{const rt=J.data,$=rt.source?b.get(rt.source):null,Ut=rt.target?b.get(rt.target):null;$&&Ut&&q($,Ut,new Rt(16096779));break}case"RetentionDecayed":{const rt=(T=J.data)==null?void 0:T.id;rt&&A.has(rt)&&M.push({nodeId:rt,intensity:.8,color:new Rt(15680580),decay:.03});break}case"MemoryPromoted":{const rt=(ot=J.data)==null?void 0:ot.id;if(rt&&A.has(rt)){M.push({nodeId:rt,intensity:1.2,color:new Rt(1096065),decay:.01});const $=b.get(rt);$&&Zt($,new Rt(1096065))}break}case"ConsolidationCompleted":{A.forEach((rt,$)=>{M.push({nodeId:$,intensity:.4+Math.random()*.3,color:new Rt(16096779),decay:.015})});break}}}function Ht(at,tt){const st=new pe,T=new Float32Array(180),ot=new Float32Array(180);for(let $=0;$<60;$++){T[$*3]=at.x,T[$*3+1]=at.y,T[$*3+2]=at.z;const Ut=Math.random()*Math.PI*2,vt=Math.acos(2*Math.random()-1),S=.3+Math.random()*.5;ot[$*3]=Math.sin(vt)*Math.cos(Ut)*S,ot[$*3+1]=Math.sin(vt)*Math.sin(Ut)*S,ot[$*3+2]=Math.cos(vt)*S}st.setAttribute("position",new _e(T,3)),st.setAttribute("velocity",new _e(ot,3));const J=new Ts({color:tt,size:.6,transparent:!0,opacity:1,blending:je,sizeAttenuation:!0}),rt=new hr(st,J);a.add(rt),W.push({position:at.clone(),age:0,particles:rt})}function Zt(at,tt){const O=new ya(.1,.5,64),st=new Ns({color:tt,transparent:!0,opacity:.8,side:Ke,blending:je}),T=new ze(O,st);T.position.copy(at),T.lookAt(o.position),a.add(T),H.push({mesh:T,age:0,maxAge:60})}function q(at,tt,O){const st=[at.clone(),tt.clone()],T=new pe().setFromPoints(st),ot=new ca({color:O,transparent:!0,opacity:1,blending:je}),J=new oo(T,ot);a.add(J),P.push({line:J,intensity:1})}function lt(at){for(let tt=M.length-1;tt>=0;tt--){const O=M[tt];if(O.intensity-=O.decay,O.intensity<=0){M.splice(tt,1);continue}const st=A.get(O.nodeId);if(st){const T=st.material;T.emissive.lerp(O.color,O.intensity*.3),T.emissiveIntensity=Math.max(T.emissiveIntensity,O.intensity)}}for(let tt=W.length-1;tt>=0;tt--){const O=W[tt];if(O.age++,O.age>120){a.remove(O.particles),O.particles.geometry.dispose(),O.particles.material.dispose(),W.splice(tt,1);continue}const st=O.particles.geometry.attributes.position,T=O.particles.geometry.attributes.velocity;for(let J=0;J=0;tt--){const O=H[tt];if(O.age++,O.age>O.maxAge){a.remove(O.mesh),O.mesh.geometry.dispose(),O.mesh.material.dispose(),H.splice(tt,1);continue}const st=O.age/O.maxAge,T=1+st*20;O.mesh.scale.setScalar(T),O.mesh.material.opacity=.8*(1-st),O.mesh.lookAt(o.position)}for(let tt=P.length-1;tt>=0;tt--){const O=P[tt];if(O.intensity-=.015,O.intensity<=0){a.remove(O.line),O.line.geometry.dispose(),O.line.material.dispose(),P.splice(tt,1);continue}O.line.material.opacity=O.intensity}}function Tt(){if(!s)return;const at=s.clientWidth,tt=s.clientHeight;o.aspect=at/tt,o.updateProjectionMatrix(),r.setSize(at,tt),c.setSize(at,tt)}function ut(at){const tt=s.getBoundingClientRect();d.x=(at.clientX-tt.left)/tt.width*2-1,d.y=-((at.clientY-tt.top)/tt.height)*2+1,f.setFromCamera(d,o);const O=Array.from(A.values()),st=f.intersectObjects(O);st.length>0?(U=st[0].object.userData.nodeId,s.style.cursor="pointer"):(U=null,s.style.cursor="grab")}function Dt(){var at;if(U){w=U,(at=t.onSelect)==null||at.call(t,U);const tt=b.get(U);if(tt){const O=tt.clone();l.target.lerp(O,.5)}}}var It=Tm();Gl(It,at=>s=at,()=>s),Fl(i,It),Vl()}export{Dm as G}; + }`})}}Oi.BlurDirectionX=new At(1,0);Oi.BlurDirectionY=new At(0,1);var a_=nn('
');function o_(i,t){Na(t,!0);let e=Ws(t,"events",19,()=>[]),n=Ws(t,"isDreaming",3,!1),s,r,a,o,l,c,u,d,f,m,g,x,p,h,A=new Map,b=new Map,E=new Map,D=null,w=null,R=new Map,N=0,y=0,M=[],C=[],W=[],H=[];Ml(()=>{q(),J(),X(),at(),xt(),window.addEventListener("resize",Mt),s.addEventListener("pointermove",ct),s.addEventListener("click",Ct)}),uc(()=>{cancelAnimationFrame(m),window.removeEventListener("resize",Mt),s==null||s.removeEventListener("pointermove",ct),s==null||s.removeEventListener("click",Ct),a==null||a.traverse(nt=>{var Q;(nt instanceof De||nt instanceof Hh)&&((Q=nt.geometry)==null||Q.dispose(),Array.isArray(nt.material)?nt.material.forEach(O=>O.dispose()):nt.material&&nt.material.dispose())}),r==null||r.dispose(),c==null||c.dispose()});function q(){a=new Fh,a.fog=new Zs(328976,.008),o=new He(60,s.clientWidth/s.clientHeight,.1,2e3),o.position.set(0,30,80),r=new Om({antialias:!0,alpha:!0,powerPreference:"high-performance"}),r.setSize(s.clientWidth,s.clientHeight),r.setPixelRatio(Math.min(window.devicePixelRatio,2)),r.toneMapping=bl,r.toneMappingExposure=1.2,s.appendChild(r.domElement),l=new zm(o,r.domElement),l.enableDamping=!0,l.dampingFactor=.05,l.rotateSpeed=.5,l.zoomSpeed=.8,l.minDistance=10,l.maxDistance=500,l.autoRotate=!0,l.autoRotateSpeed=.3,c=new i_(r),c.addPass(new s_(a,o)),u=new Oi(new At(s.clientWidth,s.clientHeight),.8,.4,.85),c.addPass(u);const nt=new Zh(1710650,.5);a.add(nt);const Q=new ko(6514417,1.5,200);Q.position.set(50,50,50),a.add(Q);const O=new ko(11032055,1,200);O.position.set(-50,-30,-50),a.add(O),d=new Jh,d.params.Points={threshold:2},f=new At}function J(){const nt=new xe,Q=3e3,O=new Float32Array(Q*3),ot=new Float32Array(Q);for(let lt=0;lt{const T=1-2*ot/(nt-1||1),lt=Math.sqrt(1-T*T),tt=2*Math.PI*ot/Q,rt=30+nt*.5,$=new P(lt*Math.cos(tt)*rt,T*rt,lt*Math.sin(tt)*rt);O.isCenter&&$.set(0,0,0),b.set(O.id,$),R.set(O.id,new P);const Ft=.5+O.retention*2,_t=Sc[O.type]||"#6b7280",S=new ja(Ft,16,16),_=new Wh({color:new Dt(_t),emissive:new Dt(_t),emissiveIntensity:.3+O.retention*.5,roughness:.3,metalness:.1,transparent:!0,opacity:.3+O.retention*.7}),F=new De(S,_);F.position.copy($),F.userData={nodeId:O.id,type:O.type,retention:O.retention},A.set(O.id,F),g.add(F);const j=new Pa({color:new Dt(_t),transparent:!0,opacity:.15+O.retention*.2,blending:sn}),K=new Co(j);K.scale.set(Ft*4,Ft*4,1),K.position.copy($),K.userData={isGlow:!0,nodeId:O.id},g.add(K);const Y=O.label||O.type,Et=k(Y,"#e2e8f0");Et.position.copy($),Et.position.y+=Ft*2+1.5,Et.userData={isLabel:!0,nodeId:O.id,offset:Ft*2+1.5},g.add(Et),E.set(O.id,Et)}),t.edges.forEach(O=>{const ot=b.get(O.source),T=b.get(O.target);if(!ot||!T)return;const lt=[ot,T],tt=new xe().setFromPoints(lt),rt=new Da({color:4868730,transparent:!0,opacity:Math.min(.1+O.weight*.5,.6),blending:sn}),$=new No(tt,rt);$.userData={source:O.source,target:O.target},x.add($)}),a.add(x),a.add(g)}function at(){const Q=new xe,O=new Float32Array(500*3),ot=new Float32Array(500*3);for(let lt=0;lt<500;lt++)O[lt*3]=(Math.random()-.5)*100,O[lt*3+1]=(Math.random()-.5)*100,O[lt*3+2]=(Math.random()-.5)*100,ot[lt*3]=.4+Math.random()*.3,ot[lt*3+1]=.3+Math.random()*.2,ot[lt*3+2]=.8+Math.random()*.2;Q.setAttribute("position",new ve(O,3)),Q.setAttribute("color",new ve(ot,3));const T=new Vs({size:.3,vertexColors:!0,transparent:!0,opacity:.4,blending:sn,sizeAttenuation:!0});p=new Cr(Q,T),a.add(p)}function k(nt,Q){const O=document.createElement("canvas"),ot=O.getContext("2d");O.width=512,O.height=64;const T=nt.length>40?nt.slice(0,37)+"...":nt;ot.clearRect(0,0,O.width,O.height),ot.font="bold 28px -apple-system, BlinkMacSystemFont, sans-serif",ot.textAlign="center",ot.textBaseline="middle",ot.shadowColor="rgba(0, 0, 0, 0.8)",ot.shadowBlur=6,ot.shadowOffsetX=0,ot.shadowOffsetY=2,ot.fillStyle=Q,ot.fillText(T,O.width/2,O.height/2);const lt=new Gh(O);lt.needsUpdate=!0;const tt=new Pa({map:lt,transparent:!0,opacity:0,depthTest:!1,sizeAttenuation:!0}),rt=new Co(tt);return rt.scale.set(12,1.5,1),rt}function ut(){if(N>300)return;N++;const nt=Math.max(.001,1-N/300),Q=500,O=.01,ot=.9,T=Array.from(b.keys());for(let lt=0;lt{const tt=b.get(lt.source),rt=b.get(lt.target);if(!tt||!rt)return;const $=new P().subVectors(rt,tt),_t=$.length()*O*lt.weight*nt,S=$.normalize().multiplyScalar(_t);R.get(lt.source).add(S),R.get(lt.target).sub(S)}),T.forEach(lt=>{const tt=b.get(lt),rt=R.get(lt);rt.sub(tt.clone().multiplyScalar(.001*nt)),rt.multiplyScalar(ot),tt.add(rt);const $=A.get(lt);$&&$.position.copy(tt)}),g.children.forEach(lt=>{if(lt.userData.nodeId){const tt=b.get(lt.userData.nodeId);if(!tt)return;lt.userData.isGlow?lt.position.copy(tt):lt.userData.isLabel&&(lt.position.copy(tt),lt.position.y+=lt.userData.offset)}}),x.children.forEach(lt=>{const tt=lt,rt=b.get(tt.userData.source),$=b.get(tt.userData.target);if(rt&&$){const Ft=tt.geometry.attributes.position;Ft.setXYZ(0,rt.x,rt.y,rt.z),Ft.setXYZ(1,$.x,$.y,$.z),Ft.needsUpdate=!0}})}function xt(){m=requestAnimationFrame(xt);const nt=performance.now()*.001;if(ut(),p){const Q=p.geometry.attributes.position;for(let O=0;O{const ot=t.nodes.find(tt=>tt.id===O);if(!ot)return;const T=1+Math.sin(nt*1.5+t.nodes.indexOf(ot)*.5)*.05*ot.retention;Q.scale.setScalar(T);const lt=Q.material;O===D?lt.emissiveIntensity=1:O===w?lt.emissiveIntensity=.8:lt.emissiveIntensity=.3+ot.retention*.5}),E.forEach((Q,O)=>{const ot=b.get(O);if(!ot)return;const T=o.position.distanceTo(ot),lt=Q.material,tt=O===D||O===w?1:T<40?.9:T<80?.9*(1-(T-40)/40):0;lt.opacity+=(tt-lt.opacity)*.1}),n()?(l.autoRotateSpeed=.1,u.strength=1.5,a.fog=new Zs(656672,.006)):(l.autoRotateSpeed=.3,u.strength=.8),Rt(),it(),l.update(),c.render()}function Rt(){var Q,O,ot,T,lt;if(!e()||e().length<=y)return;const nt=e().slice(y);y=e().length;for(const tt of nt)switch(tt.type){case"MemoryCreated":{const rt=(Q=tt.data)==null?void 0:Q.id,$=rt?b.get(rt):null,Ft=($==null?void 0:$.clone())??new P((Math.random()-.5)*40,(Math.random()-.5)*40,(Math.random()-.5)*40);Vt(Ft,new Dt(1096065)),wt(Ft,new Dt(1096065));break}case"SearchPerformed":{(O=tt.data)==null||O.query,A.forEach((rt,$)=>{M.push({nodeId:$,intensity:.6+Math.random()*.4,color:new Dt(3900150),decay:.02})});break}case"DreamStarted":{A.forEach((rt,$)=>{M.push({nodeId:$,intensity:1,color:new Dt(11032055),decay:.005})});break}case"DreamProgress":{const rt=(ot=tt.data)==null?void 0:ot.memory_id;rt&&A.has(rt)&&M.push({nodeId:rt,intensity:1.5,color:new Dt(12616956),decay:.01});break}case"DreamCompleted":{Vt(new P(0,0,0),new Dt(11032055)),wt(new P(0,0,0),new Dt(11032055));break}case"ConnectionDiscovered":{const rt=tt.data,$=rt.source_id?b.get(rt.source_id):null,Ft=rt.target_id?b.get(rt.target_id):null;$&&Ft&&V($,Ft,new Dt(16096779));break}case"RetentionDecayed":{const rt=(T=tt.data)==null?void 0:T.id;rt&&A.has(rt)&&M.push({nodeId:rt,intensity:.8,color:new Dt(15680580),decay:.03});break}case"MemoryPromoted":{const rt=(lt=tt.data)==null?void 0:lt.id;if(rt&&A.has(rt)){M.push({nodeId:rt,intensity:1.2,color:new Dt(1096065),decay:.01});const $=b.get(rt);$&&wt($,new Dt(1096065))}break}case"ConsolidationCompleted":{A.forEach((rt,$)=>{M.push({nodeId:$,intensity:.4+Math.random()*.3,color:new Dt(16096779),decay:.015})});break}}}function Vt(nt,Q){const ot=new xe,T=new Float32Array(180),lt=new Float32Array(180);for(let $=0;$<60;$++){T[$*3]=nt.x,T[$*3+1]=nt.y,T[$*3+2]=nt.z;const Ft=Math.random()*Math.PI*2,_t=Math.acos(2*Math.random()-1),S=.3+Math.random()*.5;lt[$*3]=Math.sin(_t)*Math.cos(Ft)*S,lt[$*3+1]=Math.sin(_t)*Math.sin(Ft)*S,lt[$*3+2]=Math.cos(_t)*S}ot.setAttribute("position",new ve(T,3)),ot.setAttribute("velocity",new ve(lt,3));const tt=new Vs({color:Q,size:.6,transparent:!0,opacity:1,blending:sn,sizeAttenuation:!0}),rt=new Cr(ot,tt);a.add(rt),W.push({position:nt.clone(),age:0,particles:rt})}function wt(nt,Q){const O=new qa(.1,.5,64),ot=new tr({color:Q,transparent:!0,opacity:.8,side:an,blending:sn}),T=new De(O,ot);T.position.copy(nt),T.lookAt(o.position),a.add(T),H.push({mesh:T,age:0,maxAge:60})}function V(nt,Q,O){const ot=[nt.clone(),Q.clone()],T=new xe().setFromPoints(ot),lt=new Da({color:O,transparent:!0,opacity:1,blending:sn}),tt=new No(T,lt);a.add(tt),C.push({line:tt,intensity:1})}function it(nt){for(let Q=M.length-1;Q>=0;Q--){const O=M[Q];if(O.intensity-=O.decay,O.intensity<=0){M.splice(Q,1);continue}const ot=A.get(O.nodeId);if(ot){const T=ot.material;T.emissive.lerp(O.color,O.intensity*.3),T.emissiveIntensity=Math.max(T.emissiveIntensity,O.intensity)}}for(let Q=W.length-1;Q>=0;Q--){const O=W[Q];if(O.age++,O.age>120){a.remove(O.particles),O.particles.geometry.dispose(),O.particles.material.dispose(),W.splice(Q,1);continue}const ot=O.particles.geometry.attributes.position,T=O.particles.geometry.attributes.velocity;for(let tt=0;tt=0;Q--){const O=H[Q];if(O.age++,O.age>O.maxAge){a.remove(O.mesh),O.mesh.geometry.dispose(),O.mesh.material.dispose(),H.splice(Q,1);continue}const ot=O.age/O.maxAge,T=1+ot*20;O.mesh.scale.setScalar(T),O.mesh.material.opacity=.8*(1-ot),O.mesh.lookAt(o.position)}for(let Q=C.length-1;Q>=0;Q--){const O=C[Q];if(O.intensity-=.015,O.intensity<=0){a.remove(O.line),O.line.geometry.dispose(),O.line.material.dispose(),C.splice(Q,1);continue}O.line.material.opacity=O.intensity}}function Mt(){if(!s)return;const nt=s.clientWidth,Q=s.clientHeight;o.aspect=nt/Q,o.updateProjectionMatrix(),r.setSize(nt,Q),c.setSize(nt,Q)}function ct(nt){const Q=s.getBoundingClientRect();f.x=(nt.clientX-Q.left)/Q.width*2-1,f.y=-((nt.clientY-Q.top)/Q.height)*2+1,d.setFromCamera(f,o);const O=Array.from(A.values()),ot=d.intersectObjects(O);ot.length>0?(D=ot[0].object.userData.nodeId,s.style.cursor="pointer"):(D=null,s.style.cursor="grab")}function Ct(){var nt;if(D){w=D,(nt=t.onSelect)==null||nt.call(t,D);const Q=b.get(D);if(Q){const O=Q.clone();l.target.lerp(O,.5)}}}var Pt=a_();Mc(Pt,nt=>s=nt,()=>s),Qe(i,Pt),Fa()}var l_=nn('
'),c_=nn('
');function h_(i,t){Na(t,!0);let e=Ws(t,"width",3,240),n=Ws(t,"height",3,80);function s(p){return t.stability<=0?0:Math.exp(-p/t.stability)}let r=Hr(()=>{const p=[],h=Math.max(t.stability*3,30),A=4,b=e()-A*2,E=n()-A*2;for(let D=0;D<=50;D++){const w=D/50*h,R=s(w),N=A+D/50*b,y=A+(1-R)*E;p.push(`${D===0?"M":"L"}${N.toFixed(1)},${y.toFixed(1)}`)}return p.join(" ")}),a=Hr(()=>[{label:"Now",days:0,value:t.retention},{label:"1d",days:1,value:s(1)},{label:"7d",days:7,value:s(7)},{label:"30d",days:30,value:s(30)}]);function o(p){return p>.7?"#10b981":p>.4?"#f59e0b":"#ef4444"}var l=c_(),c=qt(l),u=qt(c),d=Kt(u),f=Kt(d),m=Kt(f),g=Kt(m);Sl(),Yt(c);var x=Kt(c,2);kr(x,21,()=>Nt(a),Vr,(p,h)=>{var A=l_(),b=qt(A),E=qt(b);Yt(b);var D=Kt(b,2),w=qt(D);Yt(D),Yt(A),vn((R,N)=>{be(E,`${Nt(h).label??""}:`),yl(D,`color: ${R??""}`),be(w,`${N??""}%`)},[()=>o(Nt(h).value),()=>(Nt(h).value*100).toFixed(0)]),Qe(p,A)}),Yt(x),Yt(l),vn(p=>{Oe(c,"width",e()),Oe(c,"height",n()),Oe(c,"viewBox",`0 0 ${e()??""} ${n()??""}`),Oe(u,"y1",4+(n()-8)*.5),Oe(u,"x2",e()-4),Oe(u,"y2",4+(n()-8)*.5),Oe(d,"y1",4+(n()-8)*.8),Oe(d,"x2",e()-4),Oe(d,"y2",4+(n()-8)*.8),Oe(f,"d",Nt(r)),Oe(m,"d",`${Nt(r)??""} L${e()-4},${n()-4} L4,${n()-4} Z`),Oe(g,"cy",4+(1-t.retention)*(n()-8)),Oe(g,"fill",p)},[()=>o(t.retention)]),Qe(i,l),Fa()}var u_=nn('

Loading memory graph...

'),d_=nn('

Your Mind Awaits

'),f_=nn(' · · ',1),p_=nn(' '),m_=nn('
'),__=nn("
"),g_=nn(`

Memory Detail

Retention Forecast
◬ Explore Connections
`),v_=nn(`
`);function F_(i,t){Na(t,!0);const e=()=>xc(yc,"$eventFeed",n),[n,s]=vc();let r=zn(null),a=zn(null),o=zn(!0),l=zn(""),c=zn(!1),u=zn(""),d=zn(150);Ml(()=>f());async function f(wt,V){We(o,!0),We(l,"");try{We(r,await Hi.graph({max_nodes:Nt(d),depth:3,query:wt||void 0,center_id:V||void 0}),!0)}catch{We(l,"No memories yet. Start using Vestige to populate your graph.")}finally{We(o,!1)}}async function m(){We(c,!0);try{await Hi.dream(),await f()}catch{}finally{We(c,!1)}}async function g(wt){try{We(a,await Hi.memories.get(wt),!0)}catch{We(a,null)}}function x(){Nt(u).trim()&&f(Nt(u))}var p=v_(),h=qt(p);{var A=wt=>{var V=u_();Qe(wt,V)},b=wt=>{var V=d_(),it=qt(V),Mt=Kt(qt(it),4),ct=qt(Mt,!0);Yt(Mt),Yt(it),Yt(V),vn(()=>be(ct,Nt(l))),Qe(wt,V)},E=wt=>{o_(wt,{get nodes(){return Nt(r).nodes},get edges(){return Nt(r).edges},get centerId(){return Nt(r).center_id},get events(){return e()},get isDreaming(){return Nt(c)},onSelect:g})};rs(h,wt=>{Nt(o)?wt(A):Nt(l)?wt(b,1):Nt(r)&&wt(E,2)})}var D=Kt(h,2),w=qt(D),R=qt(w);mc(R);var N=Kt(R,2);Yt(w);var y=Kt(w,2),M=qt(y),C=qt(M);C.value=C.__value=50;var W=Kt(C);W.value=W.__value=100;var H=Kt(W);H.value=H.__value=150;var q=Kt(H);q.value=q.__value=200,Yt(M);var J=Kt(M,2),X=qt(J,!0);Yt(J);var at=Kt(J,2);Yt(y),Yt(D);var k=Kt(D,2),ut=qt(k);{var xt=wt=>{var V=f_(),it=dc(V),Mt=qt(it);Yt(it);var ct=Kt(it,4),Ct=qt(ct);Yt(ct);var Pt=Kt(ct,4),nt=qt(Pt);Yt(Pt),vn(()=>{be(Mt,`${Nt(r).nodeCount??""} nodes`),be(Ct,`${Nt(r).edgeCount??""} edges`),be(nt,`depth ${Nt(r).depth??""}`)}),Qe(wt,V)};rs(ut,wt=>{Nt(r)&&wt(xt)})}Yt(k);var Rt=Kt(k,2);{var Vt=wt=>{var V=g_(),it=qt(V),Mt=Kt(qt(it),2);Yt(it);var ct=Kt(it,2),Ct=qt(ct),Pt=qt(Ct),nt=qt(Pt,!0);Yt(Pt);var Q=Kt(Pt,2);kr(Q,17,()=>Nt(a).tags,Vr,(ht,Ot)=>{var et=p_(),gt=qt(et,!0);Yt(et),vn(()=>be(gt,Nt(Ot))),Qe(ht,et)}),Yt(Ct);var O=Kt(Ct,2),ot=qt(O,!0);Yt(O);var T=Kt(O,2);kr(T,21,()=>[{label:"Retention",value:Nt(a).retentionStrength},{label:"Storage",value:Nt(a).storageStrength},{label:"Retrieval",value:Nt(a).retrievalStrength}],Vr,(ht,Ot)=>{var et=m_(),gt=qt(et),Lt=qt(gt),Bt=qt(Lt,!0);Yt(Lt);var yt=Kt(Lt,2),Zt=qt(yt);Yt(yt),Yt(gt);var kt=Kt(gt,2),se=qt(kt);Yt(kt),Yt(et),vn(L=>{be(Bt,Nt(Ot).label),be(Zt,`${L??""}%`),yl(se,`width: ${Nt(Ot).value*100}%; background: ${Nt(Ot).value>.7?"#10b981":Nt(Ot).value>.4?"#f59e0b":"#ef4444"}`)},[()=>(Nt(Ot).value*100).toFixed(1)]),Qe(ht,et)}),Yt(T);var lt=Kt(T,2),tt=Kt(qt(lt),2);{let ht=Hr(()=>Nt(a).storageStrength*30);h_(tt,{get retention(){return Nt(a).retentionStrength},get stability(){return Nt(ht)}})}Yt(lt);var rt=Kt(lt,2),$=qt(rt),Ft=qt($);Yt($);var _t=Kt($,2),S=qt(_t);Yt(_t);var _=Kt(_t,2);{var F=ht=>{var Ot=__(),et=qt(Ot);Yt(Ot),vn(gt=>be(et,`Accessed: ${gt??""}`),[()=>new Date(Nt(a).lastAccessedAt).toLocaleString()]),Qe(ht,Ot)};rs(_,ht=>{Nt(a).lastAccessedAt&&ht(F)})}var j=Kt(_,2),K=qt(j);Yt(j),Yt(rt);var Y=Kt(rt,2),Et=qt(Y),ft=Kt(Et,2);Yt(Y),Sl(2),Yt(ct),Yt(V),vn((ht,Ot)=>{be(nt,Nt(a).nodeType),be(ot,Nt(a).content),be(Ft,`Created: ${ht??""}`),be(S,`Updated: ${Ot??""}`),be(K,`Reviews: ${Nt(a).reviewCount??0??""}`)},[()=>new Date(Nt(a).createdAt).toLocaleString(),()=>new Date(Nt(a).updatedAt).toLocaleString()]),Tn("click",Mt,()=>We(a,null)),Tn("click",Et,()=>{Nt(a)&&Hi.memories.promote(Nt(a).id)}),Tn("click",ft,()=>{Nt(a)&&Hi.memories.demote(Nt(a).id)}),Qe(wt,V)};rs(Rt,wt=>{Nt(a)&&wt(Vt)})}Yt(p),vn(()=>{J.disabled=Nt(c),_c(J,1,`px-4 py-2 rounded-lg bg-dream/20 border border-dream/40 text-dream-glow text-sm + hover:bg-dream/30 transition-all backdrop-blur-sm disabled:opacity-50 + ${Nt(c)?"glow-dream animate-pulse-glow":""}`),be(X,Nt(c)?"◈ Dreaming...":"◈ Dream")}),Tn("keydown",R,wt=>wt.key==="Enter"&&x()),pc(R,()=>Nt(u),wt=>We(u,wt)),Tn("click",N,x),Tn("change",M,()=>f()),gc(M,()=>Nt(d),wt=>We(d,wt)),Tn("click",J,m),Tn("click",at,()=>f()),Qe(i,p),Fa(),s()}fc(["keydown","click","change"]);export{F_ as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/6.eFd2PZKr.js.br b/apps/dashboard/build/_app/immutable/nodes/6.eFd2PZKr.js.br new file mode 100644 index 0000000000000000000000000000000000000000..6bd79fc4c430cb905e1edb6505cc920f54a15a16 GIT binary patch literal 113060 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 z zk2C&G-k1mrSZrdC4WCpq91LcMGWWquYurxo=wb}I&!dak$Ixn|8jE!YN@`+4z#cdwYKR>FCAlXGhPD&Yyk%T{QM;-Y6Q67rAr;=pA|! zLXSWp=2@6e-$<@f&AXON0nhh*4_?c{Y&7`(KS(l)#=oJcvJ_!~1x`FW<{su90VR{=yj}D7-PeoL zNxP;C@Kyad7Q1VfBFP%Ea+t1`S%w@PQHrWZbLnlD_eW)lRY?lFdt#E!pN8<-?O{0? zi&fV6OAmW&x_S*WEzC*Q5H??p2nk;4ETFMq{KP;*B{_-?>UeO|6ob%V9R&TbWFy&T zb3SAXg69ybPN{iIui>?tU54Q^e1*d>c&Mh}OR=!77~Xrn`UPgq$H z1)wLqVa=u27hfxmCWBuFdPNR_@~jz!upR?W5G#Z)Lb-G0B|F#4qu1Ym=j@EzSYE+l zc`Kbk@A^o5zP|W>BM14;y0(~Z@&NT|6}h$@%ix*t-`}IsR$97k7|2X= z=iZaSt))~dm84RsRK-&1v}~QX56^EJm-}xU2EsLGIvkH@chgxoVFCBZsoh_#a z23p28kadleJ^O}HgC!hq2^;@IHt3}7MK-QhA>9_eA1C&n(~eCJ4onhmpjABwlC$E} zuIRke8O+HB3e1NGb<9R|%!e~}wkgXHrdAvmI9nuR@6|>e_6A{R7Iwj0iTL7$%ketx zIAI&T**zFUhkAPGW&qE_lg9q#;rV{c$vUq#HbAWHjDy+LB<#!wLEL0uli*SMnQ*U; z8;vsxb9xtsqfdp`IJ-IBzi_h7>(?@ayQ+X0NlD!u&(3ZL3kI_}@kN;-DH(^m%ca2u zUGYtKJ63Az0)2`7g*AdRFg_{FtP2;_em4PgCb_^3%=SYP~ zBwOC8P!IN7hsVvcx0J%)NK(E%Y44xCJ!!PT`oB&5T@$MQ4=v#I2km+syl>W>w)iPg zh(;!e#r?M)_<%M~o_ys7TI_6}$(jOfBH7g^ECXYZB$L@AG=);g?_9&dyipwJyh z)S!liS{tqXv$u`278`h4uSK*O`{)&R;Z&226IjCqEQ4soAeyA%^fRXFB^x=i_7!F{gd`Z6C`j^ z+t~!!eoF{5lkt1HQy#mhRF+@`ojZW_$O z?mKs=PVnYsv);HmY@8i7xRPcV%nHs=KmS6G6_<^}oqPo}4Kp}MI)$8H%oj^V-*vY0 zxk|a>m&%|=l?ppvVYlQuj+firDd)ZXF4XYz#k^mtK&gDLSlKNV zydte%^hzaw<>m6F9p5kcuQnuc<8V3(2l>{xNmgG->#;Pp^ip>EBc2`Q$-ogCJ5&U% zlo>XQ=``5lb?Dg@XKjltx=lh0&2iisb95Lcu!Iex*(~ff$zZcRVblRz+$Nm%k+Ntq ze(#fWty<05W{s=$C|X+4t%Rb=ey(B44&Bd$s#?Q}qEZBtFkA$KD-e#O1u;}+NSt5P zUA8FPMZKA#^_tv~%kvsjEx^ileo=Qe>6yMFG#?AJyq9vt-BLN+_6n|3%oY8-M}L=c zesLFmBbCWyEEFb=mn-jj`EV-_x`LfbsX%}GIX}N!B)?HbqF&_{i@Acovm0*ZE3Q+? z74pS0{awzLJ>Mh0QAM(O)Bxd4#;vGx1S(mgi47;g!hw-v(3hcW@mX_ z(#-wx15qy3oJww|xRVdJy`rtHVy@)x`V>3fq@VK(l?rrKYx!3v@BD_FN7XkqTsRia z8&D;dcT3^+jvzqXzjbQbQnN|Og61k0P$c6tJ0uzjXPohTHjTPr^Zb(Yb2tlp z{<|}twurf`#}j6E5J+Lzx{Er$(`6K(-v-n0NLfvqQdt$rW}D}ippU!HC@s@AvAQKs z*8F@fUvSMfRUP3p8Uc>})gMlc5mCZ+-ssI^ts5;ZdZ_~D$rLcHfEojtlBj5Kx$l@V zhme7f16meIod>f4vF2h>2$M^)Dr-xU+A9}#8Q1iDb!)xMv;7oxS{844z9;&6>G?>p zeHQ_!Jm_p_$2G!!r{ExJTr?FZ(7;8L5T6tf98EZga)-8GF=Zs>Fqbn%rBbQDaIxx_ zo=GAG(lt0hGFd3?Oi-9=EI4rrbaDA0nnMQ8YTCeJ}#n#)O|*7H*9d5QJ> z)OtRuCw2<47ihIMEmLh%QUcRKo*ZCAi6{UqO3HdbDmHk84L1q3UB?TzOL73^f=0{J zX#kbcC{4x01_sSiSQeQ>t9VG}4QYGJxtx;Jrc-kc^D=)(@~6%=zy%tOW5U>@nM1O? zJ!j~AS9AP5XKTwD@_BtYBnmWwF{wg9T@3|Q?OSvP>TlAWT1g?~1e`aTWWyoQovR^V zDufE+KI1f9%zK(1zO9`g#2jt4~A5KR*1lZs^STvn+|kNfP5ad7{*+FK0oY>wR1 z91jK<*77N^mMSc{*!vlRo(piX=r#%C**w0b2kHIzmI=VqdE9GH#(XD*Pjb9+9XSSk z`z7(P#Ctis+b*u6{xJASJ=oC^;_&&6+@4zJXQR$CtA1w^Z5$BA2Ry8%_37>oM1vd5OLA{bKbNp< zD90Jpak$$SAVe3*$pTtYCtIIRHs|d6w0(Heytp9hv5S-av&NP4y_0`MRgV)A9BD7@ z%89d}2#yBvlw6TOnkHI!B$W)J$@wJckSmlLyF%IcpGh3_hk-L6kynlF!FW7rgQ<_Q zq>)uSzvo2Gch2=$^ZZQ5oMdfn@l_6xhb26kOrlXAFq{7BM9y!pSZO#rHD{ZR-Qggb za21nFiNF|Xi+#OUAn;C-J7IC1rUEC&B%k(m15;pAy`x=FJ?e z$Tnh!qb|vbdUnb>-`O~Yv`PncK8nVpL)*xv4y`t}iGylwT^;R}!~G27{nP>9Fvznh z4f_(fn0tTpvI ztIbs2hN~H zp;~!yv{9=C)T(}6%5F&)f`vM`hq$DU2CoE*#AZ#r2oQ;TYuwH6lt0VCpDf1u- zM>?p&0r;Euz63A~?h8783)~>+G~k~_?%s74Icn@n41Fb(U=hYaKTHKgcU!3(DbW7` zA3G1Ps4Wf!7YC!R3d?uq3%bd(@RX=DF#`1bTxGYi>pDc^zO$S23kBEdI5nqO*eUJi zO2raU1L0a-ag3cWa^&z%l>&i#3+AHEl6Nhog0yr6_(vgKMJuo3kke{o3-sSE7% zypZN+T5E6AT3KoXEfTQZ33Z3zG}#3h7_f=^YqpZok1o;&fN)5jS>6)u)x#bKbEz1@ z2{?+0p$d;1#PL+k9#K!0#UB#QEtKs}7jRywh8)rxl3?{NxipWc6_P{!2`Od^NQsf* z`I~HOgt|;y$W1QT@)1$LeXZwe*=TT6RFN&i4LNj{xCc2USL1RrLMGF)(t<;xq?`>W zTyah(_z*tHk}(9$IQ!+3U%-G+!!v6vMUADXv6MA@v&IKe7C1GBxUKumGJp{0_u>FhFTe=hhwu_li1Q12TId@?ZQOsRVg5hmQud(n_tw_{q_BObnfQ&9@ zRIt6gVe-K4Z!5j@yeutu&g`^$bGfC=40h|a66Ss@fzKWP(h?&4mwnC z<)K?lTswE~e6J>a;OGA}%CZ*~8?2eGQj)BRKfu3Lr@$0jOtoXFu@p5ts8OTz_)Q_SNZ&4Yhan&fWJ-yEAao248E`u{3ns8_&Ds> zAWrf)u1^QaYV?^E5wE#LCc0+3jRq0%N_hzDN(S9~vOtOnJUNWWy8}hkWwSsmLH0!@ z8qC7D$%WyJZNb}S&|PUYz?x%qc($dkwtihv3u(IKbDT*LdII4Gni`*gxSw>^ZL*OD zNZX86x0E#zN`9|$F?r@$6BS{(fMVMHE|dM``lfxl|5N+4c>%ZnqBB|1%w~-jY&CvroV0&z)?3E{sGfV=AWrZ0s9u_E zXyO8x+#580Y9VVLJu4&FYQEqnJs4!=L)eQ8eZBz?1H#3rPWQpsFylNKGIJlz(=j#6 zdrm&LYnJ!uerT32I{94DEMK%kFOhS1zGRj!kwG@gmx&d(XBID0>42Tq`9q`D_%xbu zn>F1_rvSFo$ z4nojHz2mgssW1vfl0y7Gq){m16pB_-DEf2?MQc*X);y25&NPM= zL>L}NC(VoYRkPlx+xxL?t!oU8=!&%`8KM#o2jnI5sj9>@iz_-!NiU42y^-xTX!Xv$ zR81-C&8v%({X_7glweY+g*Y}$D~-s;sU=9zLV3M*xB?se2yja==2Kqo(d`k5n|fGg zXHi#EsL>@T<}~byO`V1>e$02FV%#`wUR^bB8h|bAiQzDsPDy|Sc0GxOV3tKOYRE5U zKFZ+M8;9rhM*F5&Z=4e;zIA;m8+x^|p|>!-e0xAu-C^7~ZyjYc9MD7djoEk>40y|z zK{q06201h+Rj7o{yIfD{vdJ!}lM=+qy!LH>&_0R-acxVtw$}K3KAX&EE%Hni?rCM2 z?B2KTHQkJg&Iv8fx_RCp-K6T$B6hsPH$RfX^sGe-fl_M9Z4=%>QvW<)_&_YXi#xmJ z9lx?$7H_S{6F1*0_&a&8$WBHD@=&HoFT~XP`JJ6YrBc`>&)#Uk0g-X;f>Gm-c`!iD zA#-T*vW`0+;s67opjNxLk}yf#lkF9~a=Fa3<>bv>NxVRV*L-@X$Q`2ph~DH2ULn70 z@6S88sqq?UU&YL5oZYm4Jik1tUz}e_r#2)W26-D1^yTvnCHx1M!*Eg6G?-$y4G%f# z3Jp6V+wIhJFCpD$>HMY;%XKL&L;MV3;@=3-oI7CM0*k>?5O4+Eq}=DyM%d2r7mrf^d16XgsnCzLwH8{mX-+(4D$K&gapj0a@gHBv2qqKJ+DQ z$`Qs&lXL=dRhb>-gOkQtotV9xUZ1p@7bicz+SnM+XZ>+B>eI_!`OZuxy6Pu+tuc~z zF0Ocad^L-y^JUQuc+0`D#&$*qKFyy%?Y<5&&))ccy>4lItERL>?Az0uGDV^@`XtI>5|HDgs*c)m^Cgz+rAUvpQdg+I@}Zfo1< z<+E+>#)E^CH+!a|F!@ATfI zw@R!WMFG1BBizK#a69sx>(T2#)xE(EnG)}bWK4coviiVJ18 zCE7o^B{L&V9W!agiS5O>I|#iQVweezurC{J%3BsgHPzgd-kCEQU9~#n4j1LK9((?o z)nk+9t}!Y5kbAE*pd<|vG1DB+4SQGB52S7Wt?)02D3QaqSHihaB<4Sz%rG-?EpD=_ zxujH`d~Ve+piRx3(9VBUx5EausaokKnIg(Y{(0lN!jI~cNi3gKu<1kW!;HCvi)n)a zr4t6|o%_eU_KvSpU_~2;oiJL2S9d{o{C@A1vatpzur+@-q@OlmZERm$o*y)>$YDVN z0BhhyJiZNobt>|y+AHQd>1~KMwEbDeaKI*9uiYJv!(K1y5Ok&h3(qbo<>tU;p!iz4 z&IkGRfzP5ioX!VCP}Jd)8z-{O?CzF*e+Q-!l-x3ldQg9J(XggM z*h$7Yz3E*xY@$lWp>D*t0q-TY!KF}yy>maL>AdDtML8VEF8^g#An?An@Oj%pkbcf zna{?(USf7P>;%iky?6j4H)2-fC>RXJy`Bgh0A_)3{h+n0K?32|lkUY;Jebuk)dJ{E zZE~+VQV0-kv5H!|&Kn&v@|nk>CgzR9{ zAF!&*Ee;m9F?1cAQlCAvg2%@7<|W-s*gIn;jf%Mv48)@%^FfmOUg-e|<3|0imcZUs zqvpv2bC7g^Q`OSVQE!Z>xe_{Pz%_YyAf?0XVBI#5q>3i|p==vI;$DdG3? z+)N)8y5`ep+u#g~1I|t4t(XqfK1|s2D+7olbSRU)Cf@KVMO7X_$Y|Wr;V+<*R#b?~rRexh!eyDG{3T zUyM0%7cg&%8X9X_AU!i<3b@bBmwc7xDkH7Fi(0l?=}*=DhuX&*o00^=#s|YiBP4eX zWYnlPfw$hr%r0$uVVqz(=?xim)}L^gXqGfN-5x*Rlq&$WN1Fdc19mSMz(ZSXaw(?m zW#h2b-oI?@+ve_N*qQCeVW7=lF*)tCnK-2Wk*M~Rl;e;9(dHsjv&}kfZ!aOkM^#ju zV*JIXvC*a9_VivKH%^F>)!g%16AJRfxrEh35z^-ld}Xk(my zL*D+i+E#hq)`E3C!Uvf&)v*9zpZ+A9sUCg|*@ZlPMMRn*oK{mazr%jvEdmo z0?f>(OuGW(8I884pl36PhL;HxT-WQq-7)0e6ivsocsyA?Gf(K{ zZ=)GESvJnC90e{Tq%#tG-58E!C=TXN6SaW@I1ry{xHRGM-jBC+f=CyaN@p$wpcVF+^ zf30_$r8H!}$}(@PNTt8wb(NKXf?!OwInMbLii zl@zJ-&i&tc?VSu5^Srm=;xU478f0FWi>N&{8LQ^e7wiAG-cn@gXTsgO8E?qEaF^IV z;ws)6BI)n4yruBTf9Hj~9jFL9X@!b8z}h?494MVC_L*i$zd}K=Hl4&-m9~5*2le`5 z7xCxe)6cY&OXMHBpv#)?+<(t&?=J3^)2IV49-q3XBPn(m&Vm79C21f?SI+w-_v%3% znSdAm(Rg%0{r`)1lkl>K7g;71A#nLE8Xf0LA^Fyj3q^2v?>f}ceU|U6b|o9 zqVxs50UqTM+7u?_0juBW8C%Fho&`xurh$%FXDCH01j_VMW?jHlc(fqz)NaN|Ipa>mQpSY%(4UwigKGoz)Wrf?JTQ0lG2YfA0k)BjRt0>>0KC(#Nl0hXp#!4gyjWWb#1d2 z8Eluv-$+m}w=_~vU0cB;keUuNc1K>b7|13qUK)4{(%PbRrKbtmB9X>eGjB~6IQdA6 zd>T-fc{AcqTcpz4b0Yp4Y2e=0mTJ~U&W&W|#dr{C9x5<4r1Sgu8;f`Fas;(QEEAQU zY+|iCH8a&(&c%J|S-{7FgbM42_1+yyNzHc`RPa(KxyaaJp!+|?-ipUfe^XSXA6 zvyHk&+#b>_&&XQZfgNyQo(0%;Qak8H&#YT}#|`K7V{hvFnHX)^YiRwBD)~KR$||_f|yC6QBT4$12f-{qM@Zc#UOnHw1uKgicf1z7rO_t5fGUy;;1z%0XMe8Fbd-x zh0|AAQB5Flc;OPq(C=2(U-CatXqB^p4qid(k z6T75|nsPC#Ux=cHVA@*NWn0<-dNRk9F@j6@0hlV4bR#5tS*}mAmWBaZ1FBL^hlmR@ z_u%c>xP6p2oSi??MY!WQj(m#3qywtAf5Zb^8Kj`cp+oz#gp)v=Ist;K8n>DMSud|)F%>&BLPU`=gVS?C~vvFuE!7^*2uH9!$n*a)@bVj zcq|3li3aV&RX7gCf}mU{SWdB16Vla!Nm7UdpLdAPj;(`XO+7eP2n;MOI!~KWTwxcS zg;`$9f%NK!ZS=zXem-iaXd?q1%hIW|Qd@=RVyC{sa&)C-72Rgbp&i*-q}_z{M> z#NJ6YA7?Zn?&q*QRO&^m?t?&`E_B`{RuawVb&iwkaMblWHO+Kw))7LBxF3>d{D__WyLsx4TCIBb(OyrPX5dI7a0(#{A)kY zXbfyS-dNceAD31$?W1}2DJ=U0j(q~dK80V`WY@$q+z~&&AEB##^B`u=wE2=tIElbE z%2#~bQ6JM>nY^u=^lJ9?sCArPOHfg%b&!VQK_ZF=H|f>vC>|WA*Rr6PxZJ4ngQlW! z(F)U|k`NP!T6AUN0?mz(Yb@*3+D#DYg9!vozA!E>UuN0loM>M?Sun7Z)?u3j0#g^k zGksOOS!JV6b7|Jeb*p{V{H5X4oHC8#W8@z0pETf&k0>iIMR}5?-a&K!N{E%HT9OCTdpD zvI@DPw^OPV^H8&x^U7X%$1gftMrjB%=e%)lMat|hoCWP^G=d+%TleCD+z-yesj}xd z?12IuZy+pF77+b`OM*7p@+wusK@j zg@}6Rka%%oJ};ygvhd*Xhs-9r-EAc$FCS9Dkpt%y(n`ZxufGdGOhGjF^4%mi5W6q| zI$7sCHY`>=!PkE_uOgp_1o zZ;lq+3B8OBN&WWI_9Qs=s80|X)*{&j5YJ#e)jPNC(C`->Gy?Y0o~5*(SlYLgE+m#N zSV~j8@e>U^CI-ruf}U2;Pb%nZ1q(?93#=gJM{TJx-fg(rt9s)yC5D!Va9y8 zl%zLIInS{BhtXo66{5aN0(ODGpSn-|JEprj<~kO6kra&}7p?VB0k+Ki&aTHSPJ~{W z+>>s}Hkn>ELjk!mgE|PL8!^3GrID7U!uc$m--d%(Mpf$>+B{t&#yXi1fyww2QYx5i zORH-xsOW)G;kx{pPQuy^k|7CdclmNV`X?Pjsh}-bTQ`G{Qa6_9#qb-a2|nV;Zo|nq zb!XGLVY7@1?-W||-~*R2?r@+2N%MIbSc8&+Yh<58l$yh#4mk^KZ+!Wg%@XDA0JU`J6{LY19EIpj^_( z0jR${#$P=N4qx04rM^|u|*h3@73of7?3+M!o@zHij?L_H6R z6#Ww18WtIhBHtN{POR} ztidgcMoQ7}012XEC-6z}5ARWc!qnn?Jf?h)!>~=XFQzDXW{95FpH)ga)lp9qdqdy`%KhA z`a9QnZG)^V(jH{f2QCzmh`4RJq8(InhNR~#14f4GfKrI_x%ubm9ixh;Cvje)YL=>Y zWBsuJ>z_7OrdAgDwLh}G%|J*OoTKTq0b2N@m0Zu(9$K82)bfT?;i|kL&7O{eMV~ey zuknv!=Jh#W+$npNJysF`Fr+qVMQPvk; zwv%dUjrqydwojt1-}H zAIuxwk>(QVhRQZ`SL=&!rrY}Tm;6YjmGm%0y+?ht=K;8w{ZvGg-5$J{0~yOY@@4xU zc#hTMrMwU5MCL4$NaZ9NCsSXVxcw7{2Sz7hkxe$K->R8pA;%qEN0W%X(QBK5qH8xv zbkocaAGH$V{wVxsef+1XiuGYl?o!ISXCD8F)1R8{+7_QM6AN{~6FT)=8FrPOOzEJa z{!G&htf5+Z1R+-VcTopd(H^a5FotbTG@`l&0kQ5PNlElleR~3;h+!bawZaMp3vKC8 z_S9!%_~58X(ZWTF@J^z&my2B^sZS(nJ@Hnk;H|4a-ro^#>U~)cfKIf{#JRAy&UVDf zlm=#{^BcZ2o8^R-2NyRqKaX{plU9$@N~vgUm#_GxFH8rXectH|=2KhX2m50R7QsVQ zTct)fu4v#&m|p;y(DmR=QR|;~gd6Vd-SZ%Fre& zUi;%m$O@?h_X9v~-_v%D?Vb=D6lNGY!0Q}!KlS-A)X%3esl>DV1iFcZ_rO(%t$ zsHfRW!iU@sY7Y=o_e;Q%4W**;NK|OhNL?9gj1MR4ynZdsR>XQnG*{Me8ny_`SI7JH z^B-v};n%PAc33u3m`k8E%oqaA0wS@9YMV-!jB|ZMAOu12myXpTME#{PYEz3G1u-n? z%p;cY%Oz$+M%59T?66YYT&W3ijpH|6?QHWP9CdM|f{ZP&O4{VM1SH|+1SCQ8K04+R zy~c5O@6`rG3yekr1`F@L#=0OeRF?$-igDvq{r<#70ntTS6GSUG*oU$rXz^T7@Rl{# zgS0ts5~KZNvvu4)-M_d}f~}*1#6LNOVS!71wLiMm)op3@2!hBjd}>uYD%(k@Y^_Nd zNFumA)_e`C*j501^%DF82G2N`D&PN%KAV8pyoYHg9I zh9Kc;QHq5xb}{`N&Ap&(=~sJ)e{;3Qa`!xljJY$^vfL6I-H%LI3`HnHmEy zZ7W+DcyGqVHVl}|ni`Ujnck`04wM@R%YB6&9V97~uqAk~ZAI3jhi@SG z;Mg=FIt{D%L^@N}wC{Gzq890h2>p;XSD5u*DY3a-9X2R<9Sx z?1Sek46DFn4&+5a?5A8EEEAT-LkiE*fKl4wb=BHGtM6adwPZ_hDaz)`Or!jwMV(7# zYuj)qB9_1hNgf$YoNTeX*0(D`_hxoa21(u|`8m@>=#$V$x^A{!qhCIy?Zm}<#pO4j zRndC0%1q5DHW7c-_Vb9f$C8{u_8rQcaBXHBe{G-Mxl?^8U=2HeTW?&njt{PnNT>RP z_E8-4>)`|pj2F%6MHrKNfLXK%`7Oy04l71a=pUS_GZ^>%jI)q+iB;!dOg|3hy`w|= zq*7uNuYnB@Dau?ZU~pu4XEBPH+W^tFnWgkXq7ZbIxS6Q&X8=A<1CD7-FADpEHs=G- z%;=P-t&vMTluV;6W}Hbp{tp$ldE7-j?gJGQ9vigC!p?TtU0)Jg4Li8$<=X=qF*1xB=dGiRwOPE5srCRhTY1^Jj-_*ESluDf z?(!;kHqN74&7Xg&srx4v$NP|F**W39z@I3pJ1IqO!UFSBsDnvq2 z#e7O8Mx`eVhZtqBen*sDNuX5ruv5gW!pR`J-|g1k(Ir8Tn^BV~%0>BUqqTn`Jg8Gk zeue(DX=kwXB9vu}=XPn$UkG8P)4<|L4b3Z!{PB*(+%+1vK% z`Q^nizqcQb6%S>J8@PI(Yi417%wKmv0-btM=jf^;rwfqeh*BU>b^g4(rrW zIP2VHSTRZ^*NN!+&b&(|P;*4R3peZFM2AH?u%3lXOqAo09sh{D4Oxv$L>@V(AS44h z53MT`K@B1Uz?pI(CUz2mp4dmDVQ7<10(#{@O&07!Nz^*ua3czaBb75xNd;KvZo+sL z-Z$&66S)p`wUZ2OPuv8VNWBa??1Z%nB_1i54_aHBM}*2}B#gt!)vJy1E!mjaq38L> zY;6)Kc%%}-gI(ssDniKq_bvTr7{kIoN?sf^0WXC($tBlVPxzP_i`sr12TKfW%H}Q# zXAhIuR)*+R`F*n_r?5051G%7t9d*NdSItp6U}ledy=lmwA(8}GWS}IdF9cX;Q|&a9 z#@bgcVm#$+F-Ut1%#tsjwDOyzenIFWsBy2>*mjmGXIN@cb74~Cnz$Q?sGM`}I!o8+ zx8elUTuGHCTn-eLPK5^-X*@XNl0n%0oKp~^kvaqOkDY<{Lh|SZolq#=iAs~4)5fFO zQP3fB*AF0ER;hKO5Jiqo_UVO3qt1PvcEL9s#2z%P0(p@oEwW53GD?me-s|4G03wTm zl_geMV5Jc|f}CF;oHW{3O+b2MBoXoM zpbF)arj=sQ`D4x5?TEkCR65$?QPf=}`9OwO=NXDt3Bl}#GX~@+4u)YywKZ%;rE~}RGGRBiQ3a}M8VUr123lXRPj>s0O;S4j=7qkF5F2c6UahNF?JEz*9-K#5yT4&u z**LzSwAn;lV3})4OBH{g6HLyYP7G3;nA&V|^sYL=fNY62tjS8VNgK4IdT@Pu!IlD1 ze?rHbBC;Rfrton0xO=~B_uh9iSy$WAkXq}Ca>>Zt!j#zM!d-)P=Bj1c9NRN8#9TEM z+{-TmjYc9GXSNZPvWU62YN+w$D+z#D-T+^@s@eAa1=m;0MUlMzr@x7_0kdPRgvG$7 zqYxaAfEJ zPsUU3^lu*b+N4je!!?x1>B%2?A^)*zux7~n%0E0I{n-lm&U7Y0%on-oOv#hA)x3g3 z)-Zt^YHkw76X~4x4-fpg%KW^Vf98@d$b1rBjltL?sDXb9R*58d^yosJEb3*KdRY`= zsvFL@`$>3+(sG>^1k)uS2d;CVMrfE44g^&&RICXf#?+OZ;=h=bz^5bT&6eOmpb*&N z=b3gMx>YBQ9vP%#JjXFNWVz7pCji59Q3ZQy>_r_zDoGSoEW48em~B%UM803yx`sC{ z;+{~&6KyH)6MCAk++a9+>k5!5V9t`3FMD6p8dQUGrnHIUZc0L2YHD3A_^b&}4K=&s zHJ27qHWeCha^C8Qk#Chk55+>dcFBFfvDC)bDyp_$Zu@2yAlS zHl__2-Us@(3SjElHtyfToMW@?;T3kxe-U(kzn<`Q%P*C4&Kt)sm2!Ky)HSqRAHN^T zk|kQQtd_jGi+Zz5LZw|8Bwj{ov^iS%rIO4qiG0wu5uE4^$5eWlByY+HB>smiA(l_^ zH;X{}tOE?FFZ@Jm{c@T2UW7oduRtoOkP5=sNT-krB<|Zl-zuPsD(Ir<`YO=3HrN4s z;8_HIgu7^9$9?0CEfWlg6ZnPm9ow?xwnTBr=Unuk@EX5xzNZ)5Mg=eDqW_Tl*~Ppk zy?*w{<~r^Iq)ionmy|^HZc*8J&)LMBrkCxnRaU{5mZOa65&)ZcYPh6%EhXq7&&?{4 zpFrb6<`MKQWLDGmHkr1!pGvR7TJ(}$Zx!l1fjE9F*IE;*kT~(?^c60{3<&+oSk?V9D=gG9Cru819$W7(de2hXWNfoEVJY zMW`OwHHZ}qX*8{0oGmEM9NNRrZCX~MGuH8Fjfr~Z7t`qi$$T0*P!)W9U>u0HEev9V zGRV^D1qj1%*kTmQg6fWwC#_9D* zt9fzKY}DyZzA*8VFXA?9j*=EgIs1ePtwm?JKn^PCBtt475epaz+6Vis!{g@J+gBS( z-P>T+xr;`9q4Siv)>DJHGuGfl%#67`vh0>#Erw~c(v#=)qYQ7tt28%hMR zJtbRs`||ApvWNFea$($7Kk*j@W`P6Vo9UrK&vl*cqzttKSmi-GyJgf-bRB2n_EVTe z3%e`ilNK?RdN`JLSC`1GEz(`Y=!on(3w&Z`S1WqM-0n&g#b$Cx>e+hLNj-To1)pYy*&odCYI{cUR%ZAY|~r3&7;>+DNh(JZQ9?& z*LH&>^On3=?ujP6TmWh^|Q)%X)&sMJM$z}v6ZH-whFRk;h| zZhI=cCt&hAt^zs749HVzY2}ls4Qlz8?Iwr ztkh)sjNM#|T)K8n<*KO&+JeIv-=cEV&q@tfrT$fL!UtmZr>>RE3(-+LpU&n(M+I7z{vBmkEq$3#e#y#<279!*Rydu(Ns2eG)%$?zft4e!XR#R^{NSmC8!c$rf8p4>lgtqWN%oC=xT9T3dl zkaLg%26C2`ocjXQ@ho*9XNhwJ6GD)O4a=S+r-#a*MAHF;@7|MDX$eXyb-c6A){~*a z%zk#L-Fxpvp!zP1$V*Vbe{Nh0F9J2s!b(3oU7ri;vlH$Sitr~~o!-K4VKW^!|N z%KU}$#aAeB9wU40;kP>i)Tc;uit{(52!L?{Yc8QnP|xy;4y-f34O`>u8+JP;G*4o| z{TZ7z2e(u5A`yI=E)2We*7$IK8;Usepwu8Wh)II{Si1D@2X5I5K#7|Q2?MlRS{jOM zK{)`UDAZt+K`;uy9D?n=%n)iY98YKa+_99GD=7fnW6|#7gVBP&hRD7dn-&vDXzSE577=B)T;V{JqHsQtk+a9mw7(sp?eS zU-{?JbE&1U$8oEoJyk6x{h77K=uTbJmXVSIgjV__9QDC9&H#R73}`}!n^1GxK=?bM z8C$0Y={i@YsXE~a81JtQgKATCWNZbAX08bCWEr^*FZtD|QAtGg^Z~)ki{Q0L5Uk5F@!ifOw`j6vyAl)*sN2$WU zo|wp%XXG^6Id?)SqVY(mHe27sey?7ApXBq}0H%7rwqWbjocGH27PEmi>9v^}6(Fbc zFL!0Mv61R9zm~kUknBx6iPv+ty~YaiBr;pTJuji{LB!HXYz@4{!;w8RS(EK(v8eND zp`aKjH6YY#s>;AlX)Dg71KHS`2E!O}s8z?$8s;WvTj7P=X^j(8GiAiI(OVf{;GKIc zOv;4?(rGaLJp&ZBYCWDLJgzAc?R{b(7VGR=BOZ$$&V+S&v!;bAd1|1NRUt}N2Pa7l zOY*dUBq`jnw&0m4*X@1sgtrZ)H3Zy~1}`-zRAM-<57S5KxZ`{`8m;c}mRAy-$wP zX&se>V4aT|m&Zi1Opalh7QHedZsnsRR;I?POo>vt*5I<$7K|2eJr(kT8*TJaA?@gLKQzsGOF zZj$<@9OrJMQJ4E9O3GbP23Lspi%2#@XZ=Or_@+lYy6T@e@ppF)G*C0Akv)EFu^qGC7-qnrY>hvfR&U-ih zY8Jy)p7L7s>Y{OYeX@V4Jr)(AV6+gYG?iZ4Udb=^QdDnASmLqtTrAw-T8bi{M(^C8 zH3r0J+MeSHR3wN$bbs@$^D_vNaM3(_i^9R+C(Se9l*we}qvro0kA%};Hjjf@_=?Bb zLem>;#(Ly{lPRBAVk|1Xv94jk4VCN zw_JwNh&*mdg)QPcS}`=6rsc_%EDoT%B|ysN52H~y9(_vVJX$Uov7p#zE`zZRkClqp zkH&;ZoE%GX#Z=Duf;7z5lU*q%mGN>r(4%}VUzUM_{hY7#?((v=KkA;>TSw6>qj)o+ z7CU6J1Mmd}af*l!hl#WXHbe zv-Y0I$Mvg><(rBbPsv>9J1dA{ct^QFSBSK5UYVyEo+MXyrHm-Bv! zjp$B!r&1|;yXAbrtK==qM#(GZ%U-dxTVi{)IkxJuM{eU-5qadw@@tY6kJ=nU)mvU z_$9AWC>QhPQl*qH=1VFms4TMIzdwyejRibB^!!|Lr%);E8AXD7C{oPj{c^rs*;{+N zPM_oEqNp*WSpfEb_;4LB-1gu>FVCbA{LG~^BZLIeU%Ky$zTq5HkqLFIJ>}sqFOs}! zSeA5+^UUsn%#tMIm;#7S=Y-YXY$v5-*l&$kPtL;mEGFJQSFS0{MJCZa5;L7RoU(V; z`P?pL)}qFP^^omlyqs5B&0w@DOx|e3I+BZB{MBc4BR(jRuRLL;ckg@$yM*(DLtL$u ziP`HWUDchcL=+gOCWFv$*IB{u3OhpM^2=x(?y8{HcP4eRj!JcIs!834ZW|RuiBb6e zf?@*Yy5#N_I2&5pa=Mnvjv~o$2ydW@^diVXg8R~pI!K$mfo)Me3(_)XpkX9uDrH+y z)^+;$a4?_F#={iWQiFlu)sr-30_rD?*=+Bt8to8g(KCHZO#zS9u{{c}>gL!+5v?)g z>zK5JKCfA~pU%5cf+jMPZV*lRLM=BkUN^rK4Ng$ow~i+FjXC}MP7!=;Z=()=)HEZZ z4uzK}q)kU}ng(O;cL(01!((%4k^bR5_j=DPJR>O88;r+sMmUC|FV<;}c(aZk{Ppuh z{Dl#ki+(r2iAP&)`}CyWLPP<$w37`wa?;gVb*X$Zqa1z~(-xD1v?#1B_@=Wck0mhz`zi8020 zq;)9)KYosdIDQjy_qZWLew(z3!;BC*&@qdc9)?AkBd~d_oelW~4{G^yO?qNQX#DEr zo!@AHC<+TzT&7p_5-Wa4ujs24%}^=^Jz%|&M>DmrVs{KClfkk%j$32l-PbUWL5CZ2 zxYRvW6ot4%pje9FI?d-##WfYvgA6&`GK5Cm$$pQ!fOemPqFjEsdN4tx1(zF}cG94R z1S`pSzsgc*7lK{c3-BWV6AewX1?fY^b@Kwm<`lbp{&PiHJj)xST4jK_*r) zs5#_7X54m5O(=B zh>F*yvBnd1uUO}goSM@ZEuwfl8iu3U!Dao3Gmo~BDm$l?T9GnCX;_5d$f)TMIZ93G z8!5LS)38aPM0VmXl#ZytsdnCFnY@r?Ze=k+5T2?z_5bR2k!0JuzF84}SJAlo&fIkpH9)6-)3DTRz&u)niFHpKt^E@j>_sJfI12{ihRs%63l*c(Rs+FUX)3tGM%z&| z9na$NWSLlB4M3|_KSaT2SJY0XyDb9mV*<-2KwC{2J)*1%sHsGgT?s+Eu1SQYUZ~m~ ze>56r?Zfkv^Gge;tGh6y%kv5VX+#1bs|lo9ovRSARe4(7>oBx8)p{ElH>9q=!8TtOKqjD7F=TwRoV&V7Mk3~BllUAjnOun!q1P~jFl#El(gg~ z9=&6$T!}aA6z+WNzOFQaW6CGD@x;yF-qP7>KK@iW!QSxYT7&iosY2hrm1d`S_fBr^ ziJQFH)Ox*JQykFcC8fDY5towN`ZTdBsmaz_8|vf4Fxy);N?9rUq|o#U0+O|rHMr$d zBq?i~Sdd!X?th8c_3x*OUDpetTqZZa9=rujK9*BUOQN*Eq8C+U6*3NSUV42)9g`*j zLT7dMLQAzH>ENGUQ}DzfFYQfG8QzJB%+BXH9#vHRy7@p&;cL}w;BaSZ>Bn6fL1L6q-;-CUb`WM!iF@cw3$L@9oYKKYsxvhV5p#Bl`u_IFyNKw z7*eL?oea7QGUQFsyas4>!|J57%(PkR^jbNk-np}$Mfhx--B3@7SOBdzuUh+OhYcm! zF}*7qnYh<9KP|93xqN-EIe1L*i@RIhWu)bqMDq;# zYX=yO=&j{SfO74N6!J!9)XD~yrbn=;MIkg@KlOB zyX76fvRkH3S?L4YlJ6D#oxE4X4{VEsY_16+zq3=QREXydUUm>pr>(nS)c9i_4Ae$l z*+?;8r0zyku@r(h;{p62@>i9(`|&t6GC!=WFlrq^X*2(IFeS4g1lky#U8o z3ij-!kjz4?4Mw&2oBG*{d*bOAUH51RkHhPOhVhsQVjYE}1#>i{#HP|K!x7&097@)= z_yFn+qDg}lNSaFrgLxcB^p)8f^G&@i5G5|hvw#lV+QT}(4cqfYI}UpTnu}OO8|y@h zCe3a_+6<$OYe7@2U6Mj1NyU~#v(l4!~dKk2OrS9C7= zM{IUq&Tuq{;T0rA`(||@F$@|H? zpm;e82sa7*pMy^Zu)6A;fQF7qX6;E3PsKRN{P`j&2dk%s!6d2Ja2!wWWGtgSU4=wj1hr>}bBqIKN9*gyOi@l9B(IR!tT*I$r}c_|Kx$4MA&;7Bu;wbJt$YKP$IGOK zl~pit1UE4B9PxvIR#$`l36ZUPWlBL@Q{ZNI#qwo z|K_|gQ@!8BQ|2`KXd4ryzI;TqjWNi&oO(!}vjO%@z+^(yNjF>L%eM#n83k@CFh2=P z6=X)kRLX2gfD3B@*5TR&!iRV69a%}3|52`~d6nuU;qSgHr*FAm_tYlWITP` zhMF4ng*rigc<0V-^FZ;k5{JDoCRY=3DyaJ`akVSo8EVIKob}}C^>^HzS8cp}!a2{p zwSI=ZQ9NXv;aAuy|81Lm1ifOlGPL@(!c5Gs2;w25fP^63xI%*E5NB*@yx_w-xBIs| zoEdv?`wYH~N2-ceU6 zx&!=KFrXPv=1|0kwr%Xm`>bH$7dyJHdp7NIH+RZmXr0{@oH-1M4%u&einMr>s4m1b@s!JLIP= zwc1p$W=!I6I3LWS$sh{5ZICR~#k&1sy3la6NI7i1;L`l!s?*1v<6dk{www=pnwf*e zXo6cuu<$u>z4W}tKlNa`;%tZyaMUyP=Q%yT=uVY(xMb60_5Rj>?Ec1M!5p3J(};PE zy6&Tr8Y!-&z3oP`yD%2h%DS1n&^Gs19VdfvY9nCromzs8B_-a@eZDootQO4V_E#Zm?xIpU3ll{|!#$`*>Xxv2M`!7UE|1we~lQ~{a z=APT3%8KUUt^`nypOu!_$t({A=EOOe|E|DcG~St4cyr}2s1TlNl)zfv^@xhw_%(@ zVr}KNA~qjRQVURAQj7eP#QMKT2&O*zh?bB)+a%%Bxyx0tQv3r?83vd0JU$IlN(_U^ zR9(=~{I;LX)R~f2CIt_@gn@@%ARKkSPZj^yk>s^QhO_DvV&|uS_yOP)ZN{hjt;79` z&mjM&itcM34nC)Z|5bqhD!~8s_nvFW^$+jdD|3QB>84Z~KMaFehdc**>N@dXAb6+B zva6)i=MX8sDuG{GJbSYAMW;&?zOP5IX78iSXCda^Yo$OGW&m;@m<8^(NV&%%GI3np ziN_>11j~1wdud2CUx?5&-SI5r-1ERBMCOK+rA%S&<%^XPwxpImePC^2nrOO4SZt4I zhRY*FDbLQ-O4#%op33HPG;T7f3=xB}=1VlIT&Qb;Nw^W&)ZgN^ezhRCMC&|tE%Hiv zM~`j-EuNg1GayTjbW_sWKYQCaYh7LJlSlXZb)vTZuf9}#adq)OP3-$r@oc4F_*H&; z8Tsv{=iy2*P(I6On5#sx1;H1ycs$ZR{U0Y_Y0s};Qp|d?Sd;j2h}xO3H%UmkP#>b9 zo9*+9{eNFKw8uy}8SGkea|?0v#qs&s+pl+*|J8SwFQ(b}x^;fNy96ow)>v_#baSZ$ zPt#Q|)4OP7^``Rmrt|Af=hJRFCwJqt(f@kS`SqUj>piEKC;#kQPHTPc$ub!LD)HZV zPr8pbe)5XDzJFO?aoVu@>(o!aKiWJle%_9gU*le7IiO;GULE@UE`2h49~QKv(^% zYb>MrhPRC`_6(oEEEad~NszFk_cS(O-MqvsvXjTK3K3&LOvK6JXJ~i zRkiVQstq(f>{LwiwfkfZ$=z}qb<*?~>0S<=MKiJr1?)xtv#U_VD!txFCKeLgaB6E} zPyVX0`Kqx=U>-Zhm~mc8sUzpYYGBD_KS5W-R*o-AT?DMhwLPDxEmGK7D1d68szOp- zP2uHrmF`RF+?Iw{nqo?q>o$B2=Regu$?+E<;sLDcyjbzV%Nqr7WNt>j&S%Uaao9#u_P&L-fIb+&LID}!uC z4ksO0Dw<%eFU$X)>c~rUpl_X@pMAN84_~#3U$u!}wTWMbHu2$|d#EoQUteDTeGl#Z zIOs-r`Ta7i4QAsn;H3QZRQg|bD*X%11c1T++uuU}Jq70r(?PMt@hfv$yry5*FU`L& zIxb$EH_uvE?duyo_&W)6xRD&Yk!$L$LDV$BkBRJPp1;0$x5W@9CmPMb18t45i=t9! z{?gcQwHjyF`z^Q_+qfN%2TnA-2xD?_H;WdeqVi4sl4l&&8U$z+p313TT(y4IQSjJ= z7_;Cg`i&|$en{}3_OhNVH7T?Hcz=~o_Mpt9fLYWTgrD_Y@83k?cz%z`g8EMq2OhcM z{}UW9pM0X@<F=4WaPRs;3)I6qw`mB!u?V`W*nf1w(JYLg z8hRsTdHPFqs??dlLXUDz)NNGC`qe2ozlmTfAVqOE2t2$FiXQW;lXre23ORDHw&r_0 zpFd+9{l&5&3mKy65I?An5qu{YMEy~Stp=62>drQ~Zh@gE{v?1NB*tEr`F>!hA_@yQ zC&VG1RgG8{rciZ? z64l}{%TY*H4RESjVLW$L{akgxQ`CZ;xoea1t9K}!CC%q9mNctf_N@q})!y6%@u@nQ zyEbFK>TvE__3G93+)d)!YTwLLD=!iXFs$y)Y?gC6ch!?&^@^vcEi9E}R=dFy*>{V4 zlXb0nJ9krT6|4Jm*Cy9j-_PBY3+?Kqnay$z=dMj{T)j}!)jri3`YN+mPn2Y}%JtmU zUR70_BFScNSv?ckYWk6y&iZjKQ>`YE)&GbBtj59ImAg{)1O37vk7<&C@H;9Z5^v^i z;x$(F?cB9rl~sRaIi_#Y>Q6?NTJ>j+K+hwX#HCa>gUy4+|Jn{sy`>n3K!f>*Bn^pwS+s7qT`0u-Jq6KpG zvg>LRLiMogGBrW2ikJTg9ldfyt^Hi^Ks)|6f>sqZ>t7lq{5x7y)Gh_5nHLo(roS%^L78$m{fom;lQP34u$C+-ZqW za^7=!=vG>)ixQwjuji5opd|QV$a*zVlAzSE=MKZ^-EA<9I$*mEc3c8oGb^+J3?ZoS9m9nC!vpOAaqbElIynz7MticiQr>pi&LS?wc}FF&&L zPxa#>7|g@!D17hKXBn@&v$NxSrR;;tj)uH|_dqr=QG7laK!Ug`#ejaCJ|m3H$?-{i+|s(ZT>g(=M5UMaQf+h$aoC*0%THa^ZZT zk}4X<;wx8zVsQX6{3QX-^KzBlhX;DFs(uW{Cb`BqG!=pm8Ogom(q{D|k8h>IHKJZ2 z&>~7!B6N2Cs(vIt4A?9&afC_!6;Z*-HXr0RU;Rjb8em0oB4AoV0Zp>@XBp4+vJVgX z(TB_dnP4=iWhOR@%W3^m@(!Y4ikTW6tEwOQhsl#NBY8lum{|QNz6@YECm9+RAgUi@ z^axXhhI5jkp;J-yBmdB0J&+Ss^-QoJiZNas)$M+3{Dsno=L>HNf^(fa7uWJm8*VypvU0q z$A<^AKD{$ZfaP=$*TltQEMa18iP!qI$q8wc#O8+L*vMO(D_S%@ZD*N8>ZtyDx6 zbn3xw{si(dT42&WU}%3mVOYXpFbv~>PEIuqrl-KtN+=~qC)FKU`X+Z_9Iij#roS%_ zIsKR@EN37ow;zYWdx-SkGqi6rQim$PTSMA)mf+QYYQ8d-<~9IO@Y$#Q`=mI zNy62qi(D?UfiqTgDpfwINAy-s+nsYIH%E%cn&6fHd=lq_8;@!q;p|cU$gZNM)r&Cm zYj>8T613Z$<&a!TKB;U;et|?sesDpI{O*nWzhzx|*dt6I#?_x@IrZ4%^7Esu0LgoB z*;(iL@IrzJ`DD@^`6;9_@}WsjtVaUa)D=RE#u54K!$U&H@mVgR>-cE*;KH%%Z`E~i zEYatQ=j|4EJyL)>%H$;q`9y-rgJ=S|lCAyNdzCLoc zeB==E_LzVt(%mFric~prkJWLd>B(y^Qngr`L7JBbmny5$$N_!S_h?e>O5MikYj2e1 zTgjj)%`Et7I!AnC?8yQQhQYC0s?*p5ZXleZl=Y^WjqxovVwb^61@UOdY2?Z2iX6_0XU zxXSSi_oKK=L{meg88Z#%B(4`7)#*htkh7KQQLSjAp42s6=-K*nnWz`E7D-i~Qipq} z6?FA#Pc<4<^AcNAJ@H8ueL>06z3_>0`Fuh->Vc1!D<+pqMjIDO#2;L&Ad*N|F1C{g zcE_jPmEf%O)-EmLx8a`80)4H~$Cs+8TR7Q(u4S$T`-=MX!(tcZd22DVNj^3h$HYOM ztuvCrY!;5@upR2lYF^1r99`_3Q$Jj~bSmo(Jna`|tNB3p+lg7h;?vXK3@(vO7R_a& zK3a-PMorU$vl7);&vq8v>x@U!nR7C&eT=Jl_qLjM`()^T9Mwo$cO&t3Y}Rc&h<5K~yWe<>8uc2%X0KkW0g^x5WybCxTdlu-UC%{RV6@k- zGk2M~>t)?W?VEg-ReWEIa`!Q5rZHMX@puGRW`l6lJso$$Om^>mtycRs=yoIWR^Zzo zM!DO0uNTJC9EbzCX*dH1QJK6;{_nX#wo0oI_1^X^f%NU`*DI>!-5~2`qFgYajUoNd zKO5QCuQRe5oPkI+qA|>Tlh3-AJa`GC=85J+UPL`Q;nsjYE=s5qh&bVD7LGd6Ae)uL zFv;Ay4bDe|{*CNj{q^e%5PW_cvO)gy&w7p-z0_*8e^0YNWahP64NS)KuU}{8lmo*I z`4djr65^7tW|;Xn3Wj0z+XF@7K4q?{zIBCgbQERcktUc62}zrIW92l znlGThcyti<#&LKVj=Eu7f82J=Q|Qnz;gs*yk)jMBWM*d?+XgvThv3;~~8yD`t** zxnb~o$P1CI#(WUQnIA`4g}lVl?KGH7!fx%~GqSkSZ83~9b-E&55fkm~H?>+Ex|!}b zwOakpKYQd4nTtds`t#4>H?>+MAVs4-SrAbhqcH4FuYt2_-{jqHt?u?@eRrr;cIUZ4 zup~=jI0|kD;r?Kd$-1|>`Dl6<^=6qlns%rwusD+~B`bClxqEf+Le^0hvN+?re)2N5 z#uB#H^0ofbWnZ>N>n&TIb(SsrGSWfI$Z+j7Waif`3rGi0G5J@NuGOvikDVi(CvtL~ zEv)pb2iS}L~^&Ojjuu^iM*+)&3&eJDKCw-!H5I3NHpot=7ggYuD z+!Df(0G20H_s2md%3389DiEDabFq6e&GpGYw{F7?5WM|N_T&5;EIlB`jHZ+EG|VUq zkx0zC9bB(ttJksBd!YPDxK_$a7XBSSxKn$PTeng3vLF9Hd*A+@Hj*^@bLOwW>@1&T z+6vg2*&QhzAA<2~4EEq>Lbyag1B!)&C1FEs{`Y&TUur$DJ+m{r``vTT?8d0Oy82yR zU0n|!`l$7F3F1@!na7swtCFMM_woj74+&Jgd5 zSzE;e`H|iS1ouX;12c4H2lkXi1bD+{?WT9tXkRpLdbNv-_R+_49eEg39q>q_(@gIR z0S=K3Y`DbiYfV%~*XR)4F)sZ$=F)HQP&-7|sIFVV2F5p~k`~|_G|&RWr^G|o(J`KC zO$1PPIyx?u#_`wP2IKBarASbOJLDLRlSZ@Ay6Dx~?b@f_$IJcwMq5YP@zawHI{})9 z8lqJy7RTs2-tZ$`hgv=!MEAUQr}O2iE^arTCdU{A#E!@nrN*@&u$P(wInbI4C{(Hf zHWkQu0+P|%b+AL$CozeK_}X}IsKV!z(H%NNci8JR4QJT3?$p!j4(5{Q;5#;%$M~*O zr=Z6w=rMru9DK|`Z}4&Fuq&>0H!AoI9%(LYIDo)6I=YFQJc91A=GJkii>~3HL)__F zBR|ksb1T-}dt%*{%X+)+f zUxn`pJHpqn#^M%fIvov`eOqw6f*tA3NVB8PZP#%90cE~E;EJej5#hVeZI>c$NB9_i zJ0q2-Eh1xRM>b8NzjQXw8x`xOT;?>mppI&54(Hy@(^Fv3N!h^oaHYs5GE?%n z`U@ulP%Ze-FaFrLFaCvbU*wEC?^Zj)k1MOK3_DÃP&oi_Rl^AsJya>DHh(Xm&C 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
t`ilmuYcbc7O56=K@R9H{qj=V6QwK*nYOUx3 zU&``vFrXX^%Nz_#hM|cGkF`Mp8Eh3+hU*fSb)wE(CD5HAl;N2Rm#|Ij;WDSfCJ&vV zHSxL?cQw;>)Lb!7A43vGfuF#X3AHI`4Qsv_=a>R9OniEIcUKAjHHu`GCc|3B31O`8 zOmi?Rmla1izmlbJRx=OD@WPpr5Lc5GF4(8KqVOI|ORgjQKvU`b4P8ypR3bPDBQLJU#{7o^||*<7 zui%dgME7EZTU$u^!Zdzkdf-LKF$jk>Bzj^CBrD{A5pU#}L|4k-AMI(eZDj7qCMQcb zoFU-YPt4bAuq0=g;*lZGGV6-TC^bE2U5TvKvlIQy6j&@&hMWpvkD&SrVzKPbNyPlJ zf@d3uw7bf5D^-!wh1XXzpTg`UE8;GR=F@e4ss>X@4Im(7h7wd%7tGS;0fi`_krcU4 z7pVTmM$9M6WQqo|-*a#sGXyVIxtDS@!h){wD?hW9nBp+DeUkC09wGP-EiIl z$#O1y`c};|BH#B|`gvq~LpvC%g_fZ+5G^_5U+eOl^yMnfWiMGp1RgT-djUCnb~qtQ zokRLvMAYm#RO+JNMRd*uN+O*Jn2P9p7C4bI$|3zOD&aR5+EVW00i|_IU=J{^>=x(u zMf2R7V>Z{@;T3ezfs-tUkD3;Y7zJ}*Obc_$<2w69HX*glt817!fjX1ryJl`?Wk0;A+#SAd|-@!3wQ0vaHjT{7!z(21lZ>h9(R`X z1nyePc)iM)PTG{Q2u*u&CNebzP)87LSV<_AUg8)j$01ma&@3XQG%6;do1?-!q=K9& zDhdnfqAu=siwGY-6RYufZJ5U6HQ_Pa5ne>`b!`zPBV=Ah5Pk6FP?V*Tb`?Qf$K#g* zQZmTxJji5NN(RWoK|Vz23ONyKQfsogq`VHnf!CQwUF#vjPRdg23R03M599M6BD_q4 zF4J6yD?*Vib>u`e-dp3fBH65Kr5Zy2*;vn)^&PR~-tLeYtjg2Mj19ZxN0hK|1gf}+q2wl)b`UZ^Lh<=Dy zV-&G({sN2w_9-7?(U0^yrI?KN8JP0kih3+beVjt)G)aBjLOr}xo>V_n&^}(q50oD& z=o?-t&yF7|=vN>l@e|;O3i^bX>{aMP1vOw^)z_O36*P))uT-LaRv&NCB*ObFU44E< zr`crrP>M)4Q+Bm9X$B%Z|3GMS#J?lT)@pT8xgA__3(veQJkeV_JAT&USZH@wyOC1B07hOkPnF;D(F6n0pQUP9q>gX zE_jTAm=JvFSxYIxCc{!m8wlgkr>8+=IN?oO-AZ)P!&Q3%?(bCDH{X9tf*(V^E6sU? z;yahgP5~5Ox6CE;ikY~DKSb$!_Z8w6qUKWAilPB^pOqvKrW5h>Go69`u zGuzjSjMiML5?dsX5_5{g)1T=@DDezvdQqu#X!MvUKN+SJ#czn_S%gwAisl(DnHK;N zrECN_Xig+l#1FXeD#13IBb0t8Fy(yjIz~=r{tDO~L^7E2AO>$aD5ZO3%5@m0p{YGH ze?yE?nx}{{7N#Ge*xcLn6AT8*+BuuIh>}(F0tt$0x)I{k)Qln|DXAGmC`CriQK|GJ zQi!OzuM|);Xv`ogl@zMXt@FtQzsDRT^dzHV}MWe?tm=G=D`&GHQ+^w1$3~C$O;z@yt&sK|sxqJR?!- zGC~T~G(X3mvfOQ)rcz5YBuFKbW+Or=vT2?mm0Fs!2q~n}JV5NN&E)hJVzhV>moY4j zz6%onq+6X`K{%Cc#~q1EIZVAXQzG+m^X9m;i< zNhDpio!h63Ez+2mOJ?L2NZA;jWJ{_LF^aTd(MMh|k)8ri^=_#a$?sXxUg)zZ5T|BA zl{Vd`;B%UlZ}Jn8WI;7ME}XUSIbp?88A^%dV9$8_qTCTy3^YIUHOf`WmQaNjj8bc>wrXjW~;%OwE9hyz16Q<pHjRKM zC@`@TMYCy4$kb8tQtlFy9TD=kS#FQwBD7z5z-dp2ydSRt6d(^uk+XsIgO;sLFys-vZu3?1uxI))MNMYYegjRL|fCEXsM$<`@_*>#Rz()>8bgEe5zih21bL&4*hY-3O3aT z0hyLndX!m;=eTsDDn(E->1|E+S0_G zO36sxpVSs6FH1^J@?Mme(aLT2nwyRSk-p62XC<#K3QX!=lFnIMZQ`bplb(+<_xhj! zWUdHm-nuRb_knQ=XL{9|lgz6+%V|C@ohJ{0bZ){+cOqGJY@NtZTy^KCQ}5D=EXD72 zB0c48JGWWFb@ZCXV_@FxE}008}g!R&uJzoI1PV$?WZ9HWel-**lQU#Is83 zJ4j^|R7w2_Qu73-3e3+57*$-V0R01iBvnx|{z)4fQw$~R7s!$lIko?EXw<8(npurA z*)>_s+>SGWB~Y_=)U549);l$8Cz172oD~}(#o2UlV*0FR{X=#SWQ=MK9TV~3pk~k! ziAB8XoLAH`nH5o$>(n=H@iu-zc zC8|U-y#kZIJ(3Ggxq+vbUiK!CUV-UrR%Rh8H;2qRl(&b>B23*NGAmKu^D+xjJ*_fJ zkshC!709IInbjwSKAF{*y`^Q>;o6H_W?iPl?$54FB?z#}VaIAF@U~e8cDos?ng?E| z*|qBU8{C0>k7(B-YG}ySk?VLVlLYr$SK`?+D$Q^U*YMZ4f)4RqL^Zp9e`sCD(Mj&` zymL+Y{<~O@6yv7;SjTs$T&~ADWZdDe@c3I-HP`A?QH(m%ZK5T_HJuCAT}Mg_A7C_` zk+!w9OsX`-V>D;?$I}rgOw2pYE}nNp>$j?1K-{)!?!k zWJn!D-i^nk9?lHKn!xggHbIK=v)MrQfCjP=y5D<MlgIPL2OP;4>2toGnB&+D8n$D zrs8vq1Ajg{4Tc2di;?oVtLAN~Ii|z)#p7bi_iiG0E0Je9QaRLchP0&ey_?A0O5~Z2 z@twkd-*t@dTaoeIbQq8`RC?$BhkGa57#ZKUocuOUT}>)eflPq;B(F&4+?}onBnW|- z)Flw%ii{qJE69s~hVrN4@mw3C5t^bgTA&$Qyc6s|L=rwalQ`g~Ho=e1&>R}h5c!mW zGlxhh6PhC=Cc>N|WuV4L?fg(33iRDvFi^0ffLifHH?;}q($ZQc2CE0dPf-&dp^2Py zJcS%t8y=&HS_4kjH!;5Bg(!e$I*Q6=G*P^!Cr5(~_5>#f$(p8=nRa;u#))oD(~rks zY9%s>_@#J0|DzSoy>Q};qP2A@`9%3pViZCZ`lDDWAF5#R9{NF~4WFK7Q(Z0`$njXt z=;>+Z>T(@HPN?Q60e-YNwkX8!9bqA;w}$UW)-XQ%rr7BW>Df1hY3Kgvne%&^Le*5J zVj=J^xfb}hTn-|iPB46kqw=M!Y?yKWU3y7AU*Srg)|0mgMR{D1>Kh6+p|f}iT9je}0u zMYeh#tvM0kEQloKS6%Vwo7fpg6rfBz%SjOgoA^6!xN(5)7dzFYvUOcv9n~p2LEKl-jI7+$2)>L$iWr z#G6n1fz7^#WMD7NN}|G8+>lq}x*GB@fg~iHO-Ml2_dC2@)>V|SlD%Pl-Do6)C=_9$ zL8-=0Yw1xFasp4lJO+?RAPe2N?9Z0|I`{`_a`ZPGpqa^>Z4=B#wgbwYL6}3VC9kdQE5%JCJZJX&+L^&a-n56LmjTV;nCM zETR?}13Tn0wcTyAqHjT1lw?v_qk4L~Rh}(=$1AIuh*|>8?@bZGu;7q~AGwXcSwR!f zrFvAJcTbpl{8p8zAH<*ZtyzAF7v(qw-jL%jCVEW18HYUMEPfdlN$2tbSWTf%z3fwc z&)ur7kUi~#!kO8rpbDyV;X2YMCRp{vwWdB9{@g^+G|Nv1zZsAPy%&FlcvgJJh!gMF zDR6;FjGX%W)*DL7HcO$?0Km$Fdg_x`mPirR!L-2N=U&q*=@G81a>)dqY5Z4VyP!M#7!NQrHO6VBZxeN*(^Vu)D3)K&yuS=&9 z__Dg;gf+Hq>0s;gGQKu~%|kSVALGqKG=d-f%|jL~ke7*PCgufiaK*ZL|BH2_4A@N< zjGE2|wo8Urgxb_WdyIh+Cb)CcMTff8E|*to73ot#49X3r5Bpl3#!bB8T1o?dw$%7A z=?0h8Eumr?s+5DKqq;)6^w=I>3=_KLCWLj}x;0Wn8-sb19Dk7wu?i zj$rn)S1uzv;?_&F*8>v5tGc?_N~H%dT~6Sj)3NBXxuz45w>Nw< z)y9~4`?KhdvX~XJonDIn8>y4Xin&n8WuCkYa8#9o*iQhA>;QSHYF=l|R#TFjfYjr3 zD&0QgEH&#>YDPgJ`v#3u)0?`jTTYG+v>1tFiaspaO$}8hh1;@?=8aFAISF0Hf zrpDyX#nZ-lj~~@N8rHSPJbo2*CIiyq^+- zX74vJUO-Bc#oxeq2B|Tdzk%@tQgT`S4UB6%Q)TxzFz)kYh2`JCxS^y1Pr8Be9#2vj z(+!N@1a(<>7K#w$M}9)E+>S{12kus7=D34 z%9Vs~z!{#atk;o8U)JR%gxy)>C1moxW=-NtNFNV66Dq{*Kf{$baFTl*cCAL7u!bS* zCmF(UEm%Y!^OMjC^z%MAlTnkX=ocOoWs9|$j)uxP(9h#%p&yhPoI(d)U}*d47D;$} zHglH@`W@8!-#8Z2)L7)QWeu!wO5;CuOl-p$5-)P1CB%Sb=Vq#OpeSA}SsAj30(%g( z{fPOb3!si9H`q^cgN-aV*iUkUDuzTe?NsS><~TKmS+)@dkTD{oKXvp*shZbtG*CU| zG!}ngL%zI*fVG#eFd>QNGt)=(FN7yCT}0h2n4bCy;ilz)R5FOGU-0Ns2a4j8cER9xy*oWXavpm6?ZLxAF29pNTZ#b zgiBlbr-xWunV5_Lnn`O_)r{JFTuBK#eVhvUcn#PXa$^`@{o>;aouLW*L5mCFY-OO& zm4Mf|uUAA1Q4ni}*qr$dnPkhCzPpt7E9Sw7P9b7@DMTF~p0I)s*p^RNDwxgnc68nJ zvE2!}NsS12)L!$7MdT|M_-A6C1*Z5bZOhaKP4U9x4{ye9Ppsbprp{J18IlDRsz#-t zTR*J6qQ(?|%?5d4)7P8XVQBrJcp}~|1SIs`IrTy;Gbk@!U^gP`hrc=Az?~0C;r)yo zbo`KN8*4Nx#p(yw*HBX`Dk7-!QN#v8e}Hqau^SySW{ZVJ|0Ze$NcO z3RvQQk7=iO0j^*cwv9^RZ9$XSTVhBQ40aH$M?ebzxE~ZW-WP{Aqu>xVaQc>I>b)ArHl)7C}pq<2<3KmXy)n>TbC;HFG9oZ0-& zJs4|nQ+45QAKLCni+#Lm>TIHd7Q4~)gQ2ll7Rq#HHQ6piyQmj7`IHv)!dqqD3pyRA zH*e^`mvN#k#)4)g<|YlYENrF|$|)pi2#WP@K-d908%C-!oa#GO3j8B|uNV~+Pt5P= zJ5-q8W!k*W7=i`R`Qgp#hc|r5(m!wIO8MbUYDp(PRXDx@qG4}H?kQjpX-V)chJBO$ zfkr31C*uMP8eJ+EK8&5l2Liy6M6EL_5fjG??!%2yQ06%9lbv{5s73s7p%(GS1(zW1 z<87inCQQ4c$x7#L-#$&y0F=b$7$WNkoo*^g8RExI%j=pgf;uhIHCvz{;B`&gTcHsx zd_({-^MvxKP!RKmjb>4Fyf6h;7WPv}d|KFs~jHa%Ij&Q=v| zRgv)%+Tnkjhj7B<|Q6GWKJ1RGHr2c&2+nz`MB^B3#Z7=f# zO2{x2X;sB(Xv1Zma1RPzd=}l)gwPz>fo`44TwQzxDUBeuF}$VTJ56b1NjIVjSiXzU7|Fri2JR;4yN2KhWlH=aI31`{M!!#$pq`ki^3h zA$Q3OFEfRgG#dxT5(+Ps!ZcCWS&DQJb;#{J@0eRCJ~izKC#Q7xaq4*cG>(9I3vN-y z@?&K_t}KdFIs~L&u`V&M5;iySpzF{?)Q)(DbVEd)`GP1Wp`mbExH&7QgAXL6@@~yEvPq1CRYkoM6)yv&5kK`Ua2b{Fl#_I#Td1)ctoS#O(p1vzM`MmVTh&c$~Y;xJarw7q%DD= zoX7?}VsYX@UImTMXcdz32PzajuO$S3rO6JsY@V`^kx*e~b~WrqueA}qwYJa*E$B}j zO<(K)V3wVjzN!<`KiG-acVH?ypxW2b(-|!pKi8zQX9+cnR$?EpHD>GF8 zy7ZMe)`e^0y406w=Aw5^A2|lZ3~_}ep|l)oQxkn5AZGiKvO%D&LD?Y&p_m_vLU9s5 zGdD1hz@a^{-8|L9Ug%B%bjW> zaR=NlB;z{~qT#M{*tL#Tpkv$=oF#%>e2m(lOVYTfx+-BrJQ8R{enb=zSiU#$F`U*- z>-zaBOl}b(S!#KTZ6TAuVz_Y-gksxvi^*gLJ zb?chh_2ZV%l5DCrW}JF}^_Mf!9^?w6j2~y!X@+Yrfj^Fb18(y#ogNdcWx(Zw{**`9 zFXlsuLBvo0kQa~vaqfvw9%<5*3V<6A#)zHo;KhRspPoGW?oX#PWahWpgRbk34@N3f zv}7|S-_Xi=8A1;UIk4p7<>CAQkyjq1We`#5*od?%X|@+O7loefhe_zFcA59L}$r*FnsSL8TkPpK+QpH z4iC{HLbq#5uzkKk$LN8>t#1;? zB!s2c_`w)V9CsLy_(pYzD+nBh^RYjCe`g(*%X&k*?i_aIB3DfwA7CBvS0`p-ww?wn zaTZ$OX=ES&^3PyQ0L6)nx6yI`4n``n*eow4Z7xCfI2@0UGrOjI-i5CdFH5$Cs%S# zSX96Woj`~a{%{&`u?{_^4pgS$GtXhlpr8&Kzk)RF@HSSLKacdsgAI(&!LRQLRq_}x z{}bV@b{-+|KOG(5^GIKTwEx5(+>&7u#|b`E(axhy zJR#_w{W+k2bTngvd!?9;J{#n2Zo8p2i)8E#&TUaKS{j;OPiK*?Q<0Kt902Xys3JC2 z=rgVA|C0Ca-)ZE`qUg_O{}tFPhtoY)80=*7%?HtVfenN)7!MC8wy!U{4FcMRZbA$E z{@>3kz17`dl9|2lUhA%z71L6w^e&Z3^?1K8#>liZ2#nzdx5q{y{-?t&f{byMPP%n% zD{hN0Xa3aHqgRcJr;Odox2|wy6b5t=PIuknoF3LF_kqOID&M+JjpiDyua$PcQK@$O zm2X{Cqq)mUy9I%=A&g+lTh;39P8SNLON!uJj@ua{e~DgG^L| z@nr?8%V3Z)1KF&zqWETZwW8N9x)c*4>_6DtcoE5b0~<+(8PGU>?i8X$x`y3E<{}PK zYJ4qSbS#+fahOJ>V?&(z35dUXrG^D_8^@9axr~FrgSRYL52b!-R_M%^wmVp+or;Z{E<>-sJn%+|^NR zS2L*evMZS@{z3>N`1?rW``%vVK5?HLFE5Ty_)70|E2l^GhPl?Qq_pJ@I2h6JiCXV) zoDKXbTk$@llh`L|OWr5wmY`+eK07sr;^hUF`z?8SVS~M7T$)12XHu3yHS7~~iEjxE z#4_L&wC1VkS5)AyQBlE!Br9mm4fHE$HH_&kff1Dz#8(X)MC_BaRpYZmL=28R20FYh zHZqTdk4*YX`CGHD4txHxqO3N=yGkV9P{eDoh@T^0wz(cHOuwW%CQR5TW^+Xm45HE-tF)U@;ByyTHA=TIE6xGnB zXJInscLQ<4O38z2r|&e7pOZ7&te^I)^+vbSMsW0%+CZQ-mnhYeB@{PbgEdj3pKHY$ zh?*N1V_o#a@ym;ya&X))wcDkOLsnxQ0`+`2cIFi2k)MOdQTEVtsXzT(@3d2|!Qw1m zbSuE67IfJID7#mS72i}?>XfXg*yc^P2%7ZDY~(fefr{${WPO0k9J9btugu~+$BM~h zluYWMwK{diqJ2Z3V%X#uB^tq#QA*N&qDdd(efVJZ;lnX6Vmz_&Tf{!7%jjn}@V}%X zToh;QI50b3&OjlDy}6+Ub)rxJAN3lIezkN|aZwlE`1G!z({$qyVrhpp$^{@*H|6?-q9UjcbT(Ccoj$Ag;AUqd)qgTrLR?lwR<)cbRX;)axlM}VZJrLY~T;QjJayUN2*__?E2qt))0y4}*z z7YGKN*Vc3^@byunx>#{VKi6n+1^c`POmJwDOXZpemcke}m1R#= zf+$;;6#;SYb^1m*VVb}50YwyqS* zHv}bJbv`0n)PR6dgq;HZtOED>LCPH%4_sRR9oLDQ=++aS6SLyCEwJ zw6jCNqc9~7UoPnrwjs~D=0$;t+C*uAEy6V|V2d|>IhmOjGVcv!DJT++m$%RL0jF6A z-a@7xth}i|%*dcAh0HFJcUVqgwjJ!);Qn(%9z*fpHSj3|{?CrCeMgC1P7K3zb~Bmd z26}`Gp4fUFI7(h#=CFhDioU$m;B=|cmzPV#^FTyu3FYMxaEbguM210ApLwZ%aMj^erWdE)x`%?qdC0s){_!1rC6-D>B z231Umlv1``p)tj-siy{hF0Gu9+yX)HU-;(+q@t+JWtJemJjIZ}2gqavrjiwCXvgk{ zM>ZQ(h_O{dFx=2i--}GlQo}nn#*x)r)QCqIY9zuC9Ww5$&~-GdEGDNwes>lF`SUoU zaVYMkUV~cS#}T!@*>5^$cb z1nLbb&|vAsP+`Ax(IvRnGs>HgP2s9kx6zQiAobNIBV=V6QmS*LO6!`(NaOgqre9ess6oRxC)6&}wU28snk0mpDP- zc|XNn@_h&68Yd>!q;V!6 zeF1X!9oJ+d(~ucgXdir7HAtN}3ADP5?sF4RCMVvAN_f|~TI0gnq@F|C0VUchQhyz*hyfG$9+ z+J+J2wjo=lIu)ynYqRm!R{kO5?x@?HRP@o6-hwI1;_(??_h$12iNO1+5|nWJEyqXR zV!Q+`h{$~%c#=u+@Y^dqOKU&j;stGi~mpA_fovF~YI{w*ijA;6Z{nzwp z@0=A243|RwRnytE%t&(h?YL~2MDid}vzGVGg8nu*t zZm}?@=n^$@{r(M4V2V_%2`-w-URX6p%x9*OS}N&-nPe~?X0j=CHPci12@}9No1KdZgoP?}H-)!UH{3a!}Tac-=vXe*hfAx->0N3gRJNnyvt>^ay z6?h#)*Vdaf`!*kCKOX%1)_wN89A1Y0Lr6OAb26oom49D7GV5Q70Sm=-klgP zi&B{7ID;tqY_l?&v69@3De|^N)=C8|2^AM(ZvbsqO2?_7hJaQkX}+0{vmjA<_Ixw& zf|VC>GkX0w5z&$iI>i7d#?d!9!x{7Q$D=-(?B|=7g60JfbKz{SZam5ZXg9ay{#XzmQ? z+@drFw{U_qj{pIx^??pCskw@3uiTPB3NI;2IX@uUw8=0*ylj)ZfiT$?(_6Se7J~|5 zsMm0lELwLu>j%NQ#a@Fr*>WR6cxyI4K{V&~S zgDs!Rlqt~j{&zAWcvBk4%ZpK#_hoZo3r3Y@D9b*bdGnNVMy@Ks0=+P@lu|%v%7uJk znjhZ&B8I|66&lYFV^bWOOz04goeNZ<>H&5{asN=H6^2sVU_?1ye1S$(V8Rs&AMwS) z9zI#eoDSn<7%H^ZjI=GnR~9mYmSw<@^oEcCjOqO+GR%P9NygdT6P?@JeSqJ*6??mG zhK7)P!O|;`lG}CBi1No2-hj@l`m+!*w}!T6Aw7Dr~Z%MK4=V&*#?E25)`$d6dd!F1WQ_c}~!Y!npm zhvPM%AC5H;)7mlNUS1&YND*ZQAcp2JsnSs}lT0fzw&&3;I)P_Rc$e%5@*;eqchVf9 zcdm%;Cl7u^{a~Eox?0T0Bk-mfILthn`9HgRoxR=v zv+FV+-WRwJRHx6>A=;JWY}ToA)d+C>m(4mCkpAJI>LQ-beEM0L`=3;%rMe^Ye|KG^ z@b~Md-AawATWl)Qt0z!)zO>p#ohcCYQ=`E;-$JZXW9U@6g`}>VUP~XD+Qy-&y)`y9 zV{mHQjZN*%!KuA9I<gj+EZ+NojpoN^AR4TGyFUtT)+gvhMzG{eQFn+Ld!%^56Z+Z{{#4cVHBs9Da)m zvEbOZZZT~`Km#^y326C-O;MpNw)P=Bh}X)$bAiV11u+`wquu|=|1;|NxCZh!_TRpS z{H#+NRIJW9R61UNq64uX(oM7U8h%-s8Qk`Z^%T&5SnDRl7hJrvf(a=Wfu zc)MSq;e6IQt(v`jPkcVIJwCki;}jhnHGOxVdO7Zf`f z-z8F}!69Qhr{Va(QS5nNu;+cnp6~4!pdjOYj8`O;CPOIY593J%n+Z`ZvyCS^IUg7} z_pl!?zHbKl>&Q*r#~oo*SM0xGp?B}1Q>X8ue$J2Vu#HO@magxb!Tx@xlD3PQ7MfEN zO~CdMzajN={r)|<8BgnhPjQTK5-fcccXCm&kWOH}qF>-EQ!}CryJCb8jbzcJ+>d@q3AJaP|ib?sO>YYe% zH}*)FJjS|$yxfe;!o{OfD}Ddoh^ew}U^`MDL(Fb0!LYQ{{j(rk7p-N_U8$pbi}S_X z&!397V7r^J0ao2N_Tts;wX2Gs;C%7q^BORz^?I_m=gNUKrJZYvU7cLJ!t=uRh1{ab zVAS$PgqxKpc<19d3{b$q?rYnPf*TvbG#J_c+aK%y4|d+(g+JGMpe7=4-I&>14WQMfS4|z13c1lubb_m@H=j@V zrjt?>zW1xFO&2k;BaAss$`l82)5wfL8yI4X6tWPwX3VIs4n(vyys>^!N*En{q`06z zaAY{Wi#CWeBuF9CT|5H!A@0TO&MO@sW|p8&mARkzQ<4Ew+Dz@NC%Kp?69&`A%F^98b+Fq`E4Z1 zYkrm8@{Np9Jb`&}(w{N8jFDrwQ5GtF8tK%ZUl`xq%VcTlkAoQ#;;J0R_Og)eka!z{ zms358e{yzAE@JyMigO$9-~{e4r_=ge5xL^IyCYqmLtunzuHP4*U`ipgWOcV#@Jx&^ zkbx$DKxjAf7Iz@33l|ywevr9YQt$`Iux3E~mKi}n2k;ChJwDtr{SMey%KzKntB+Ua zM;Skmm_>EZ=S~&D_)1OsS7NCwS@u!Y*zQJ#hL_2fecLo++YElZQR~|z45hYhnMeP- zn)YG);kx^~ZSv`sjZ&6tZ!}GL6@0#;9$0gqRNKjXETtt0}8mek~UID}m=E zNM`b{SJZ}91ruJ;c?A%&5An`_<+Cr)BS2TJDgO8#&DOM2DkXYlnF@Ldhxy>^k)NtncTQcYrAVA$Tk-PX9);9fNj{{A^dMKokVj=H|#U zpk{>H(4bfou3c~h&$b0f#?%^MZSE`f#vh2#MPgH#3;m8*OLhkqaW-qG@XheUThZ{$ z)i-#pKlZ_87Lf103zzNX0t_)qnio?<-Vpk2>RQnr!;#ZLRbwf9>z7XJomRKqI=f&_ zVz_Y053E)p=8CN8J?MrwE{nLdzNOeiVEW;>r-lp?9@IOjq826@Ff(@YsK3e0-o1Ki zy~TYY#VGR2JeOqLy2TR{{Rva`VLCIn=tPyiz~7xdJ3BAfA*n?k?(@mj#kGY3zMrM0 zdBO-EDd|oj|C+qW?Cqf{GcN=*S`xIkSJWc$tBxf;s?Z&)dMnowEmdezw$x{`6I}vd zpib-@$E+=)h0@=gA=*5*bqh>tRdhgh2M@dE6DI7Ab$=lQDfjX+f{iqRH|W#WX{F%j z%I((IPNm&Hu2f6CMz_xtZi;?x?mv(zs1_05fp?6v($Pu3+NhuPFE|Y9%X`=w;Inq6 z*=uy`XN?P?7%IypuXbxtlp6KgDOic4e)5vHrVO)U?3|U3;3zm1K1M{H8$!JVb z!$y&ia=XQIphA6)=8;OvGniZP~}1*!;?T&bvmFLH2EY!h$z2wrfG zMVHy><45L0j9aF-qB@Q-uKP%I5k;^K@8}`16#DHe-aaZ*M1)!k{19&w1!6kqu!`i< zi=ez1Id)~%ms?32WP|;Yb4k_9hWmU+vsq~ArdG}=)OiV^0!6j_x76iPUQBQvU1Ej4 zSo?fgtnKZ&j}%`r6VW?**pO8zEjzoe8q?N!l>K{D{o}oRq-<_B4Nwgln}Q%8Ls9I< z1ubAj%Es-E9y;3%O3K`!x4Ouct5c?sw~vVS{hdW1aahYB@nGd9GOY6^b!~h&P7?@h zULmYGuxs94D*nh(t3__B9gJxJIb$l7bikKCcUafponQ`Hxr6U02l`stp>c=ei_l3~ z5C*;CL`gfnT+vK8%GhWPuY_U=L5wz!y$-DCFCF@;Ooo^9PXDaZ?pGQWMyZ_@-P?CJ z!nj4U&dw-p#Q8p1rLOdSSOqoezV^9Ve8cF4!yh;@KT%ogwvLo!fxg1(wka93(8ltEOl~=c0*W=2!on2#^|uBrouK{nAlVrC zL)L#QeYbY(q1vv8a@^MFS#N&=7^9V@X};}2pwRsHE~3K!sPpeN&LUXEUsKp0IRR3R zBt`qt+oZY%lsW~+21~W!hlui#h1L zMVz;+B)@6IW4wTYdL!P=)3}+%ux_Dl8XINR`r&x1b+d`&emMS#p;$|8KOFzf0Z8gA zi9IAX)K77g{OO2OV3mD|6@Vhp9dIMqp`YjAmw0c_T~8!BtgagK5op{SQ0%zeL0cVQdw0-KZ14HhPP2H=B=GSEBUjO;qgQRnBQb`54;VxhjLaWPgCH$HG zZg)M9Yb>#CQ?CLFx;S_GZZC6RaycDzN|o61VS)SoRbmU3LK8mLk-A(6pWG_hzZNsPubB1 z#bcn9sJw;X>@h`fhAvZuW{l&D72hNQyGRv)-AV!2i57q{5t|T#H7Jw3rR-ZFimSnf zY|$;GN~$Cn_XF_~WU@gMw+?f*o@I{rP2c%VXKSGPYlzeHB$5+86O+1 z2=W4_SIv?Xb8e=ln4D~OPSv~8C7ku+H`trla=w&2T7tx3QIF#Ld?zyV#2AJEK7Iaa(SpHTZQFfxH*6G4D=Ul=--xQ}*PkT~%o zh&T(Vl_u=7dW=)nF8fH>yZrIT1$%Xff-ac?QdYTJd2$Tlu!UQGw^`c}rh$yl1|piOvsTxsj! z6!XPBjA+%{zGXOqPVj9udmDT2JiKMAoV%8|U{9aIwv1y#C(PzQmU<{nz@)Dv?diNA zvvd+{D>gwzIqwUjKjQRFOuN;|5k(g$VenO`9{O+K+7eMJnt0iig2-AKv1u~rxI$54 z-uO|YXDeY`!0m8uO^X|4Sa5rFa*ZsSb|Gon#d?}{VbZjVbeeV%r)hlds@W`?KJFIx zN5{QI5fl5y2mYs5#5#mq&1721*VniAT5P8t8S1F)uDZr7i%u5deFof^RJhMNwgZ*U zIn&@AEN{T61eD5fbG|5H`?<@HlDFyWj?<6Xnc3fQrH5n-&7;aHnwc#j;vdO)f$|^% z5_^6{F|qDyg*0(0+J+Wr!tF7oDyP_F*%%tRw<&iefOu2%@mq!i5ySBp9*(A{N^#Y z1uj#9p5B@IKhT-v+4J{1wFOSmxx|j?1$RMsA7re}!aKZcM_)-X4MkvFwuXE#8ICju zya8JmbC)qCO>18nrZ;A~#K6*yx!UNFH=W*igFB!P={b&z40B$`#eX~td)U<0AR{vk z9lCwPMES&hE#7X@b3NhKhiS<1$!lt(@a=1g(?T~n(nzI}jSY|pWsphQ{yfc7&3pFZlFhx`Y}J2}|5 ze{--;QU`mBkv`deq;FB8?CTHSnF4iZvRRIfTkIPu<4x+^rfx!{OnXsE@Fx2V$h)X& z;A8~djKgGmW)N7lSsGI8kX!6*qI7M|FKEMKbn(VP0e6BEDfndZvMTiD#fftqrW$`D zFQLirqT4i)OPWr<3lf)V${?F$Yy{%05&itBIHH`ADd{aYFtOcrq$9i<(Q6aw1dvYX z=Xm+z1nO9a;c7xPRWsL{pv!A(USH<<=lYX2K#9JLHudF4`;iXM*Nkg61@4O{x(S~_ zL%|S0D!JDQw8Aa6=!Vsn%uE`Nq^&D{hI6Jc0+IfL3ePh8#(1uAS&-gSZN`~!A^=Wr z-=aZpRq7_D^Te7)F?ukzFmA>5t+6IIb`-o#iZ|mmo@}+8U_zxZVL~l&0Et0yal#nH z2@@KZC$vC=!N$OB%fGb~WQ&P3sqohFW1@uy6GL{y)vfcxqM5X4eWQf9=8ZwzR(OCq zrmPO!DXsN8vEl4rUkEsWyt}Q;5%$ytC{(QXN>HIX@Z@%cn2{3w`p{xJO=~?8B;?hx znLRiLYa+B}P*4Z9_}cwr^GtJSi#-Ad$H3^N_5E3N*fOvK&%JBBjdI^&=^jQw<};#r zD?g=a#(4JdjcEFA7*WLBcm3C`@lES{ixs@7tg${vG;KY`s8)>UZKd+OT8>@Cc?1G( z(aY-R+hSEO+7sNrs$RqF&YcriOSr)!EmBsACvI%iW6PSm1D-e+Y0a0h%R|r_LS4pb z8NuZ`++nO{F4(upUnD!nBsToWfjgGa+vHMvIm(>Y_RICIQgr)!w=p#u9ig~p^7$j0 zvcSxR_12kCp>H~V`a5UpBypzl6LI@yt#67c*Gt4@SlbwbK(Y6)yrh+HL~qz)pvX1> zBhq_T+&qhXsV+zqPFJSPO8b&i-zP81SEF8vz=Bw75Ip(_bR9dLBalneKmn@{{7J80 z42dyIKR2!Apob&LV@)hZRa~H1YMdF&Ti^cb1Feu0<;U{-xD)t{8R?p z4W;5U&ZDmW8B*@HDScHY7{s)xmflPxstXr&)h|Ei^H`;^+fK>=z(lSGPfTG*U3Lp2 z+ebJd+s93LlYBk@kE37z%!2(NLI3zt|3Rv?ZkQGOy8T+7nrH0aI3kNbu>7z3Of$)h z&Z&LiD^DOyVYtIN1EhEaJ0fSAvrpwq-w;{+P;d}IM?n6%jHIB?RQ%mH!*3c*@Wch0 zFOcF=vUNa%ALj(<(H zWswYG)Kfp3g})7OniKPWU3IyiYUh^e_rAQGfHR7XZj-cg!l+#4yCd8(^9_n=A(@)!lain_Gn-9B*(Ce8 zDe{+*S;Mg1?cxPByhgLAMeef>An61s!i|9YvssAq%EPgJ7%`bJ7#36l6+FZCD=z__ zyc7V-fxLwLvK~@6ke850(-g>>pO#LK)M)h5GW%9_ zZDU+w?%pLxJpm$)XbEsb|fxj*B zw=DiXMIf2<*f9gY7TAi&rOhamm$B#r9rUBc_-5Bd3p2zFuSPaw!MwV)E1eE3Cy3k8 z`OrP;AAjragQGFouGWSE+^8$HSb6JWAIxG;TNnEcikX3qGSE+@*0bF({lEzQ=m4=f z{*j@v3T!hdR)ICcAut3UUrfIE8;QRQZ@VQmUoFxHEAZA1*4cTxd({6}K07<#@7J4Z zoA_@PIY<@(>cFCT_}D-B(oT+vl`ThM@`Koa+l>7;8~gHyvH!Li`)?-p z;SXZ}v>E#+8~f;ov47f({ga7({)5M^V|;x6NpE>v;XQEK+x*0>}P7z^(e&JZw!yw36;E| zCmJTv9i27tq6YJ_eNLv~z^9LCKvNq6T5^_#sT7Qt)6J;77zo4V#=&5~Y72j!I#z6P z#Db&F+3jzWBt z$BiHsYjn!T)&dPf-P%w_6FZ;Z-}(AT~)9TmwY>ROB`L zQ=dLEa<_x=u4v5rn<+T6AMUcLALyy~zzj*x^F!J^i}f+b1P*03(Pt3O?g0fZn&6aW zFhCD((HO{y*ylNj&dnpW&2yAVqQk{ZWV%R!4GA3fP{$-U41^p_Ey=N9Y-l#w$uSHbFeXcs&XC&<;V9}LOE`;i}v$>Kfr z=eyTvXk^pLa&{xqM|i0k3G0+SuyjLbs8U@t!@2wc8sl6(|66fj97#EOB4x9qKW2Ml zc#BENRrD!!A228q40jPs92o{AiVA!d`3K^wslb+_>lSv_HQ_U!y&q?@>l%@Ns}T|P z7IfQYa8_rk30Q6{Pn2xdS@7k?R+^CmYi^-e)-<`Y7AY%hnp{~^y|SiyWliPEnr>KG zi`WTs=uFejq&%9&0CNKfGZ8QDx`k=_nYM_ZM53m|=>=8AKxJLAWLa7A0Ce4As0TK( zhM!uz5zIlP4)}#xXyKwre}~E0iBe`KOwLZIXD8IN6Ux~MH_T3yn4K_vcEZ%ziITGu zrq524oSksZ?1bsF6Q#^fxQRWnciz#=b=7ejn!_$BoSX|6P0c+cv(^0x4RrQEWqT@{ z?O2<}Q^cKSQb`mE|8eTgh+%Um4v#?ae#Ib_T~b27{3XC+|3CGyI?b z!P+qMAaq{l`9J>Se~qX8GqJ2PII|*yk4{Fdv&?=jpK*)-@gJ}MiH@Q4GVo!UX86PF zLOeTjTVSReR8$}=8V=84Pv@yQ{PDc_ABkqI$lxF|2*bsYx9Y&jjHmtT!W$n!V(uaH ztAQKYnU6A)qh~$%U;ZfLaE!T!%paI{jn(zPL}Bi&088Zt$LJP^U(fVh!1W@$H4f!Vlz&PX&dK3R>Y#9QFJkx+&2S3mHn zWW`|hnh2#Zfv=#5E!h%5AdQ$W!Z}$`pRlk&@OZw6TRahE7w8b(1lU6Q>*a;0#^{`? zw{Rs7soQQKiSvNxbQUx9y)`D*9d?)N54 zo8^2V#kN`!EM-arz^Mc{T?6oluiEJJ8Z}w+$)w2R*|O$*sSzxISUkyR^xZaeU8$7Pef!& z26PvFanVKyabbB2j9soa0DWH)@~n3l1M?5d%BPwigap1>_{5e3CIQyCgbCf#TtvgU1EKg5`y6ndfd}I@TnLkn7sfO z^!Qxef?2|Zzh_yy0XA>aQG`Xe)@7SSWF3qqASn3| zumFW~kHT$mhc9C9-t%dOONWxf>1gKju4^`qZtzYAeO62AI zU@%<{N#yLZP$ki>%a7Y8<-}bOI3!$k^5COXp8UN);tH1s zA5qgRQ}+vPA1csEJ-_fSkbLAB#m`Iwoolxj2-AuDoiofL?TDgC6RyJIwaA~=zO|Wp zyVxO4gusO$9tud`t>gqw7~UL5ufIT0D|0GrzH_ z&o7!Xmsrb4@D}VdH%%ze05RHK36SZksQ_4Rr*B~yP{e0_n?Fq$0MlHhpymW=yNLqL zg-beLQXP2!3A2y_JRwovoBCdK__2^jNfVjEDCduZaKY2gnXH|e&AeJJB%2gJD^w<0 z0o7qtsIk7RSt79DMF0M0oep=Kn_0b~mZsS>RGMabegl&2&ZHp8KHpuzbg&mMVhEL%G$~g3aB%>lr*9oih&Mt1fatzXV3r^VtOEGg+@U9B!zU<+95PluFbKZ)4($qq=kksL!Zom(PUji!=HMu82hUxx#HV zVebqmKBL8(1@Z2*&xflsdadLw{HsYVP@{65Ae1%WdNrWe#Uq-{9)a5x)qg4L{3f2b zJ$~;y)01=OoFkvYj(+~eIoxp8Wb#)j2X%aE%FBBQQX{=A5eTmul7G)|LVZs{Pp{N7yT7W+uL_h3&Y31;rFjc^y;^3 z6jG7&UL|!|%I`8Ie~qRTJ7?oyT)$YH=e{pJaGJwE#GA!AfBBetlzell)JnK?-odwt`3LYC#pLRr z=$(rV zW!uPoX7Ueq^N7!tG1_jy&Xi$$SOo(T#g>qozn_@NSHlYJhzZYd;woYt1w}zD&vWpY zg&0j7d5hvhLP+d9Xz}wOLa1aUx#&R&q5t6G9;{Pb7d2T8_>})?^FKg}pgw%c{%x~= zn-n=mI~em4FE3x&?-7@Yr}81H6$M@f$$AT{+^dU@1UB?lph9gPd=LzOqdRQa=_u(e-k-F=fKEmvcorDHtU?{M&Sw{dA}U|!i>#5>IKgJujlJe zyQ|->0o_v=&hWn2(I8)rZD(!6ZU{3ZgBs)icASxVou5epAeq7GYm&jW#mo2{jWit? z~)qV9>uU6pr85T%Q3;shzitcrs0(zT9ZWv^gO_mz>n zwz#jWwSTTi`p8*gE*(Gj$vs&xjR!8A9s|Kz?%1znO^TQ7og*sF4E?XTw9|A`P_pka zX|mCh>q?e%XTR8_I%1!q9wG^7Z7d1rfsx$FC+SMlrYrI>9{4XHFRaSHuvE;J{c-=o zGdUpen&Sl2I>1AUhcaKrq;WTCi~jdeQlb3ZHm6K8xoi7>6OfGPc2tpdJ@7pSfSz$q{Vb>IlPZJIoMUYif3Yl zvNco>xWs^8VpxcNFNp4 zkbfHui=bhsgl+oHd@?nJ;{* z8#mCkf;LQeudAGk1!$~Ru_ocYBb<8!bGe9bjfyOE^PEXeYS@6*qf($VJr~Jsv<5K} zb;E`l`lHb@BB?E#&H?<#gqF$~Gkvb2mjf`JoES1cpI?iGh}4AcI(m#1!T-U zN1=)E_%mRa6xq;NnkI2}I%{-1Em7L)fSG3xZXzcJUG}{w6&NziWh^^ke5-Os8f(1y zZI!SW6kPv6PgkNgz7=XCjiENbtr98gzDpv?q$_j%ZLfVuk)qg=u$r8>=mwWS<_~pL z)X%n1qb}a?abSr8-3|H{@HJC$;pYP^Rrv8Je>|}tH{cL#c|%mh6-Y>7?4>uu1O}LF zyE$U*SwiQJPJPBidlCq;D$6NZINt&na6laGiq(T3Y1!fX{lY$)=N4o%WjA<}P@0Ko zp7TR}=KJA-ms)s?+On4~v!Iy{(>Mh-S}qUyp$fj^2i%@TB)IZTF$oMU5FcXp`_YbB^7F_z6q95zmTrt7zxm+OtA~fRL+=KDY0@fzQ?N7s;HedHHjQuVcVXhM4C}C)I69HZ!rixxewL1 zs!OFHBR4s4$t)AQ?2?&~EGj!*(QgiL9W8;{bzNRs!)@3A_oNUIa zbv;Q*PD5ky`?2hln@bu*;tI0?jk?Ro%M1^1CDx5juaBJfP`%Z*;kpxlaL1;{5B%A3mR3l?v_VZ0v=!E%@E*2Av43s%P|m%bl!i#o zc`PYj)Lv=njZIW(=56dmN+YbiwOC`sgh}q%-A=6wGfB0HE%wvS#a$44WTDaiP(T9P(NG(I!bo(`Hm2f%Gn zN`fV0@}#^^b5zMZyF|)i8qej-Ti{0_U4-*T$-SwBa{|hc#*CQI{0VmuMpml4lG>O# zY~%;&ur{z_O3f7AZ!?v%r&da=oVBPmtC{3s5;+ER8ed{&nbHoMyND$wYO{Hacw!Pk zx`aiwIbN@svA(DA`mKy~WU05!vE;aCOu#K}B=FO?l)$G^hKsA8<1!k4Z7(uu0@omw zns#Xd5v7G!vK21o>~SKtbxOI2iJ-;fntH!@6A+YVgwrUHWsqo64aYrc(itF;DCN;A zCo+_!s_b3I^mX$5iWcyX2O)Z-mlL0}Fwz&Vx*zJW*1@xq%G11T6UPs72T)O0VQigiI{g`rgy99@-i{_wh3F<*wqPRT_T zyo5gj09R0HQ$)|XE9Gy;c5|3)zE^HFz4@HC^Df5Ge8!T26jE}(jmgzv5U zWJ&h@1`i##Sc1^VyszxFq7KTe_@*ewM@E|~%Q$n#7>a=80o~(LZW(!F|4ny$oEq4hMH8V8VczPZACu#!$t)=xTl363!P(pTlB_YvFoI zfw$zE#)%n^KPi`7RFWNB@A#j~3BepnFj1Lc3GZ&;4kz;AR^|mHTt?H!%rb&k>5P1a z$&44_avo(C#2ZY=Ft_WXym`GgCQK|SCXtoJ#e@u?aB=hC-DvfWdz?pYrF>kx|J*L# z>-XnV%(Mn_e#Es0Dp&W{?jihJxPpImMAAo`M@@Vx@jQNR79Ta9BYb-G$YOZSoFjCP z9?>z6Um*d$;-g%@AC5*5q3BDj)+0`1+(YrBa3y|lt&{IKubS~E&KLju{6#k7Pu+xX z_{-Iw*Pz(^;Cyq7BCf$VjCc9`?7qAhX*XdwC0?+5=s>&R{rf6^jlZdN+gaYEFWs+u z-;pfhx`l7>u*j(FhZriYwUxhCC9d|ZoP8tbz{)u=az0$+y#D%V!F@2`ezS5u8abb= zoZpO`e_6PHx8Ob*aR0V){$=*a?(FYo*8Vlly9MW4j)rokc@~&@ec!_#GvI{yp1)SX z`Nf9=zA(UZf2V&|Y4bTuVUj_=|rV-|X%7 zclVg<{Nt;(;jY9E;BlX_(C*EJ#tPpT_@CTh8U|pLwv#Watq57nQP*}DnL^qroCC5c z95>p@D_ero9QnTVrjc_mBH0PZQ_i{FLj%MyZibT?o3uz%pdvpG^Xd@W|D-l%8|Tp} zR!T1I&!@$<-kguI9e;DxzIG4c-@+CAtLaP=)+2sY$}*piicO8@D}KCcUMC31S4lv= zN&@m#5)g^^JI0O}Xi4$i|MqC^CR~EH!y|g2_-=1W zizGuY87t6HZ(~6?4-l?U{RM zuROZ$+0BKu;oe2^3}?KFI6b7-OOx?5Cj41;xR6Jprb7O;Xs`ED%IYjxg!M)Z9R7%I zWSj9vw*a8SyPY7yMHTZ7no0!1z~!hmUSsul44pE?ozC!1TG(edd`@WV$)7t zY+3Yj3pYbEMKlIX$eDFT7*#Gn)x9ft5 z>KdOm{K1VMiZkqqWjkh6x#tIpD1USj_mERJ)7StA55^PI+f4~p7r4dYLpKa(A~F{y z(hJkga*Uq`6Ee8t>RGIt5t!nJfss-$^wzy44Ua%pt?Wxx3Zs9?WHy<}WTE-2%~Zn$ zZQX#HZ=})&Q=i>9xxOg$hb1#dLq{U767#6jk6X>+3(;R121Hz8aW6=uRUYPH1Zoxg zif|}@N5_Dk-&KH*V1xY#${%Xp=W zM{%~S@N>)(J<@d2q>QO#aUD%e62v#i;49FwT~Jz(h7sLGm&|hgE!YJCRswXfJ9Mi8OjrYc zX@Gw0q7^UIjrnQoVP5E97dqX=Q|k24%7Eh(7?RyXgATJl8D2*)78F?2oVoYuB=Z<9 z7a8F{WSH?3wFM4kOGMxs=5+wd>COuLu0cz-k-O~ft-u`{$fI1eVoQ=zw4mr6s#0dn ziKJ;KLL>>AHwguH^5cJD%L0 zIbB4li-g(7ml69$fXzkkxN|fOlS>}C+3YBreJ3uo!dV|TOJR`QJgv&HU$RE@`NwF6 zI_$?i$B*7YcNeT5U<=!4ndc+W%&T&b4ea+V_nWW;R1x7Gzo6B(E;?af-`N)oA6Tqi zaJ7F(J7K9VD)R=MK-z-Y%MzY)H*)%v$7v_`nc>W-u)*gO5)niw3snx8rz{g5uK4$C zhFbhrXXe0QHTYL+B#^vA7ifm2E*kTUE+Du-3jpO;Dj0?;pL-WQa;PUUAJFVeo^)#@ zRjHJ`M!2GXqe^bz%{}H5+b0oTP*lk=*L}>n0;ce-T|44Fd~?ApY|sc#AR!X^+;co; zpDdKXI|Qx+Mj@`!S6E+y*4H@y0e$KUkA)8lT(jK9kq4S$wAOu%18Ht24SWq-B(RLa z#ej(HMi^NbB;lr3)Tn6~L5vMnV%IIMve{J*(j?ta!`$Ws?&pvT>KMmwdGkr>_?@<2 zOoLmw&nwdi@eZ%F(Pa5-p&lk${!G5kS)(!;>!N|4X=Rn=^?=eag8zNN77mSatDWv z2+3+>^dO@wgPD_DL?5TJ{AzD^{;-Q=qA1*BsoE$=*#rW|#CQR1nQ5NkZ;a_LcgUl^ z+_|D%#`tc+0)y>7tDfKCa(eH}>v~__sv}3>D?d;W>D^$mwj-m|7T|4jA*H}W|Im~B zyfOqHZEm8s$~~Y}?h&nWPiU39cMCFIltJ&5NuP71YKtqB-MKl&UOLwDANWyZ`ngNA z``p?93GlRLpRZ~5d7{}7$LD-ib^S=ILE|!oO5D>#gKfx_`}{7J>D*JiGCJCtd*7F& z6Q9y0#VZZOo{71we**GBL&B=kx4rcv-Jmw8?sAll!F_H}J1^(W!OXrvk+&ExnE>C7 zwSsZqDWhi8&On@a<%xnu>_<)hIQPJ@PCd0O^D#Q3yl5p5CEm#&fBE7^PyTq4Sig9v zOL20t(2bQU1`$0`+@-k%`ojK>QIGw-DbDDjGlqwyCyK`KjPwQm9$e!d{QYo^Zz$^W zf#dXW>93q_?x@vhwNW08UAN#oi1H7j{DUa}kXGI*{vbmzJiTC%s$br_uf1&6VL9A! zoz8JlS!N0Mc1EUHFD!6`N5J~aR3Rfu; z;I+XsF6!Yim8R{e3?H7dbVg6`9q4!#s16B0r;2dNKqe-mIHs4Ba;O^HNM+FbJ2^p?uolN+!cxrcJyk3<{ZDv|==12?o0CPOs~%sX9TFv63$n zy*FMaYH-ISPS3zJA%N)-{)MH?%R4Irg5{~Y`ut9^a@7T~*fZ}6JvdD&-eBUWZC-Yt zD}Z@Qya*g+LMf;0zPf0YVxFr(dCn0$%sDGpxOL$-OHPT8{RJ5$c|TM~5p|z?I(%9W z|0OS%Gm7iN<~f_K$NZ2{vY7dS7f{FjoQKnCG0;fe;yX@#c}txqG!vrE8;Z;Pp$ASW zcHTba?tNy;HX}ma!yh>}6raH8eU({SrdDRhUhE0I_(bu6c**<%bqp8YJ<~ph)32N} zgiF#}1Z&SbioXbdiN8EiLCUi(JCGX!+81*6foPT*?y6yYF zs!@!X{Bk*W>gWk|DJr8IF>yVoC5VTjn>^1&B+E{$xxVd$n_x;D1A| zA~!zOhYnjOU>VOGaGGlY64_nr7Z4=70xNiubh^1l{j}0?-GY_aZP!buwMM1msvz@q zVRtV$Jc^%KxE+SKShu{`*D2m-_XD#%bt-C?h&qHtpok7rnp2QK;J_jY&~LO_XR#); z^iH>3KNGxBT{!}<5uCN^r(ID6cLk8muIs$$cNwIjWXJ}dCH2`o2QIvI@u;Recm63A z1e*yEt6&F~a)ivJBUoZ7Nhq~KJvFw(hC%jW)9$({t@+tTSbl`+K+h6rngpj{A}Oip zlHeP9sFr)~=8+O`%O#%d3i~MVCDng&a|3>_7i1h#r3R~`b?d4G=ZjVHnUG?Y?CrUM z&o1lm(C&26Zht)OvjIHbMODIf0UsKtPOqxu`qxW>ngo8iujZnc1J0*kmD02Nj-nw! zbwMH2tdz~N{OG8Wa7O6j(bdCP&h=;BgM?#)qXWXGWES>+&BH(|>I7$ik&o)sEv{{3 zlZd|Q&a(`YC-aFE*R1#>8NVY7(bGzr@pu7zFqvY<55`k+=0)5O@}VPuP6=9BoD96g zM*=&NK*1J3Uf>o~B0rMBXOTZm2=w@Mv#d|yGG0Nf!xmplWoFd^4+uRM-Ec+IiHpk6 zQzq>{=h3V*A5nLoIWZbfD4gBG?-T{GLr;9U%)bX9V_;4lsNBGdD0e85&GJnC<n?g?(Z;$| zZe!v^Rt^~YvdL$$DnxLdCwar<%c=y?0n*o&94-@FtV|X086Joi;mnVSQ^$X3Pe~Ew ze*T`4{OXLl&w}91XoBK_Lj-U5=(ySJlTfVzuvh34(^U^m69@pgv+0ia7m&2 z`+4_O9up^D+Won=@TOBT?MIB=?Tdcwx{{TGmKKsYgjc>>67$NpWD>DklFi=QeEd7l zai8_oPdlGh>CC^j;5S==ba4e)aTiz1z(qpQB_h)i*K6T`%4s*5j^6Zx#afD2sFti^ z<)W2*U{|d!80|#0)W8kNJMmg5bs;ux7S>8*E5y9s^g!8;*?H_}CGO4FK7qH8;r1a? zS;x~_K%mgZ3v$%P0|n^T^816>yCB&!FD(fVU#k?So-XR;)X~9-ac?7%UMiBBx+rs~ zT3WCarcd<< zs+V{d=39-sA)2k^9u{dnJ{{M*?)eL#BR%vUn3#&G0_DE?3r0la>0tfj2R>l3bChp6 zNOPD1Ft`=Bn!W$>l593hjQKHjxIQ*&WwQ+y07*c$zpSzww$)>@GY1_Fu8$XtLd*VV zZx8vBH6k>3L&ko<4_ke*mcg!#iBFd) z9p=ni$M+@3p-eN<6@kqh;{Z@k9=&{181vdw9*`L~%-72wdFyya>=f3=^XD$L4(S_p zNYl^(ImrsH!moU+#SpAC8~bz>}ReWZ22oaby3H1b$iH=ZSz`qMnkjXO2r(C0$K{ zYhaq!hJ}7kWaov93u_oU@Pj0kj}?Xds0NDFZW*t{{InKBvQU>QfM~Ri-IXaZwa*}@ z=i1=RJlkZF;gDa?B(Ln^f{kT-?0?+Ga0 z7m9Bb#e1TkztG~7LGgN!ef31I(K~p8yy{Uk+)O-pU3^Eg*>`JJ#yhn#dWtx1y^7Rf zu*wZ4{&ct?!FI%&9rr+`1zphG|6iUa7D5z)SMtPSHJL{iy!2YKh@y3XfjS0U?0XfYck$MPUbLyHD85tKf84$HYz;#1ID@5jEa07eGiKFaG#zy5Ww{~OBv28j6Ee2nud%U0b$s|?eGVkKt0AlX`TnD~R2 z{4!qyb*g;XLP>)0^kW1Az(D}XRG;4B31RRyFolpU7qB6-=ZJ=VK019G_Jz93uCNwm zFE3x134^4+J)pnufKM0Xw?{v}qs5+aa!`VMS3L>_T$qwv$c}QfWFKQ8kcQ_bO4Nyh z>g>2fcfE~`nd z<2*kU#T?f^N3>YiGYrS$Rs9;y;Te?^EI180!LW6tU~8s%hr$z#s$@xkvoxo+tfkB( z1o>)@J!7ILioQ@Y&Jqb@&)_LC6eAn0aT!NY;{APzXj zMENXZ;*vxyaJH{$*NU~Pp7P>RH`jiB&5K7}t@C<()mBop2b?nMA$}d@)yk)kzfl_A zNVb4Z-ad_qF+AO?MXMI8i0NwTH9Tp}3{+Q#9rKR^#zd)t55$xqc>0RFZG)9tp_X46 zs9r!J$!gswC@vLeN*X7GG1x`HNIz)}ktZ{FB3`X?mfy=IY_vc;KgOU`GDc6rgCus= zVyG7SE*}K}`|@Jd?J6YFs}#2Kcl6~))Fn2m)ihbQu!XCS3=~8em^Mx$}Z}5HTFO*(S7w8@IjHxK!F!F?+G5G;YF4RK+e*1MtK*IcG+2IDqb^4&RL0u)GRy zcH^_z9Z#s?{Yz~skq=5M4CmP*ydg1|Iivx^kkJS~47@3?BL-;Xr-2J0<@!P#0E$NQ zkfv4v85Te~QpncWpn}qZc&Qj=CL01e=BgQz66HkM<9r1ya3 z>n=>dJ3W&$q@soF*pSQk6!W*n8}@d3QFc(iS(?92P-D!Km0Ee${H4|s%Z(M7uZNzi zp<`$7#00;H77M!y)GT@b=sA`=u^fN`tO)n)~jSm_$PU4H-S zix^r?4?d9wa$nU8y;;s+I79x7D4!qH8C@(VVl3lcGVF3WcLNGf?CPa{8mU~xyJvqR zrHI1I=?^PMmW`!YFwJl=pI9&~1(kErogV}ozx;{Hxf$eg<~_na>r>`(zEI_gPnpY_ zpfdSa3@=lzi6Q3-H|1QgoE_O@zn4toaCIqC1@f+-%v4kcu85KccD)8v=BLW-fXCf1bpciFxOp-r2EqTScgyWLnOrWY*z27a!T3 z)GkQ*M1V|v=SfF>0iMuwXX=7BEfi%ds+3f!g=>9UKF0_es%g2biHwmO5)hm`sre_v zY}S#3|MIeCsDX_c5?dT2Cw)oq`sTj8tZQmo4r?Yz9hSzcz>FPIRUNgxvsAG~YnA2`2w`tL$;n`jb3$yPnyD zW8v6(bofCh+rf{Pl=;~T#eN)xZUq(eZwKQW3Uml=x1v@GA3GRFlmRA=tsP6RJ2juM zWd13Um?xS7F%w+|X&!Am7(Y=XRUT+NaKB{f=GnW0anDE<2l@`i?~GJV-*+&kge4j@ zZ3p8aNnn-ww|`QggFqF)VIupBOp1UNsoubyxLA&b!=F+q7H~d5MQM1L8bGoM(vhz}fo49gH8d zS?3WB>mko}QQ*J4G+~0lqSk(q8XN8}+(T!e-d>Z@Oh*%E0D49I&wyA;*KzP&h-B>+ z-h@i4C{}2t#Cp57Tu?=>=R?{cctBY68Ls9aU*d}mVl3{4h5T&0*L&trWEzgWg-<6l ze_%Nki8Xf$@g;e7^=KCz{OT|jZZJ+;f&1pYefL+E(l|YEU8L9=D+DBL-emYlof?Zd zsWW0RD%bH$Jja%FxQVX#QENdbu;k_wf3V9GT+9>^0h_TCh%GQUr18pHmajs+-XP`f zGq0#M=eJR(i|S|>{KJWPmTO=gfSCDRIrVLJG<8xNEY4SnDOpVnfLUV*!MLstZNgn2zKLCf0DkZi2y%ce z@gEu7z%Iz3`7>-}A3lktlUh7c8pcw(Wl7;Vfdo1=qF7J0jbC1BL@=Fp+CUu3LX4Ts zmR0=TIx3?};v%QYkAnpn5PwCua9{`Hx}Du7^=K!0&Ly9cn|{%-UuyPC2EtX z@k()0w`;$z$z&JBIdgB|oD=lqgTe+hTeCVNnoGLI2jGbLM9QskkFP6my z`5Y~Z4Wb`U%K>has|L9)HY7u?zcy=K*_b>&o}G|&TL4B-$bscqWer!eN@app=^WE) zEw8gmgnZU%<_;B;#|1^N(jQ9+0*w-&u~m?xrg*Z^zFRmfS378s6`7`hw>7vWl}SRL zYTqs?1U*W)U6S%&DMWK~{XX+VA&-C_QXq`|@2-I>C!c+bPq}`7;zgAQN)~}PRgC~f zFW2vbnr>+d#tPKbufk>ZWVs1UD|&6OCj)eI3;$jG*Lxbi7o{`Gyg^L(w zZpgq}Mg(kUi0EWS76HKdB3$`HGTe1pPnMBXH3{XgY5yg$8LPr$H@|qrEP&EP_hK^4 zLOoRGRSKnXD^HE^tC+Uw0Cz=L5d+W>-tMAx>u!a57<~QY-RD!hLif0b+PKUg+}XvL zKa51o!|IF*-#;rub5@Wf{951c$cB1ZRcb+D_YTCR59Ns8_t9?`xM=L&ubqkBuBA3gJd$niK2u zebZxtj1_ma#sG8v%o_{eYe4R}vo$kI1T;&!gEn>$AHhPVL@A4&k}(?u)@EQ&1P)}M z$S_0044sgS9}L3(+upY=x2-D+KJWb%jJ8iUX+tzA*-j#vb~(NzUa>7-vd|LrfO;)&QHwyJj~n7pPVn5YTO9kBsnYVoSCYrwJH{Y2G9*O8jVJy z5y3h^!{xz!Gd?J^EUTA~_PumF{y|-Tc^BwEK#7G1C+d5=t*0lMM!ieY$>2H=;W)-U zH50l7_|y`cjQ0wQ7I0DXUIgL>X|Hy`cIM{ld-CP-+SopH=#MXNuN(X)ogJ3ZxHq{M zDtHTDfEh>eUF)5<+xk6o_S-(pqojf==ryu9a0GbkXjj;7Rc?%#{&^Y=*lJ@VV zu%M&zSNBkDuedwlg40x7hIM=D^rB%x|5C?}{MyD}JQ<3snX=A~QvPEq+v`9%4 z*JpF(S+;U@mImaWBTe|lqC$ZJH&s-Vdz)VN7?5kYVnfZeGbao~uqT z&^>iC&F zs&B!&UyakPZX%a|Kra_%vl$5a1L9o1kWTI62E8+?q)ZwX+YBbE1fGS}(DFp#Ds=2uFYl#KIBefq~Eu_J?2A zVGf{+4{5fE1%~s-{NYRud5!KulkfWV(~~8_8lgA|)1n{3eqj3-p$gl7{z#M-M_tVg zdRh-|Em3Qz=7TvD-YEeL4x#&uMob+3UJx5uapeeI(yPn_qaIFt((Y3meeveoy~!Gg zzr^Ia!C6vlK`F@th`u&($L6^D7DB0+W8g}bG~r1T#KLUGZ^LnYo8|rBc|RI9EcT-8 zd+~F^;$$XeD6FN%&wGbc^Xt%P4pK8{B<9vTOz+mGv-rG%y!!&%$My}l)iL8y<34LJ zf!uU;6cB1_+z^M7M6cReK!!E_p$6CdVUEG^@P|2p+k`*NA4UU`El7k{gdDjn{YD&R z#k%DB5S-Vg(_uYlLw$^!mpNp0RVvi?^h=Nm$FMXBAyD5l8kdC@pvzJNP`cXM9y6Te z>#pr}cFxatu8c;eKp`xMt0Aly7Z6O?)7$3d30<@fjt);dR~>4?Mwj%k_No;4^nCyL z@~C}ydUVyF7gkQjM?`*j9)+adK zoKqWZ`vO$6Li!U5keEoNeWj9ty%1khzg4TYNa(2S(IGjJC`4q20D@-@37hFsLHzm$ErN@JeOIhW`e5QQFYBDT%e{F z8wK~ycRr=c#!*pOdGPx-aIEIrVDpAF-v%oyMi;ycX4%qm$Q9YLa+^po5QpfJth^0i zq|2Mg(J-Tl%UlyNgz1Dfs3Prq>bZ%|7Du*Lvh|Vu&c6VF+UCjr&iVdDd%;0s%E3Zo z!or2f(5aw9Fs>~)qBqApZ%O7Sgd1$;xc|1<}l<6_pEiT^@1r|>Uo#z0K*d=7(WAHPr-yg|Dovw^7Z z>Bp2Lp+~M9VWdynGGVZiBU^lsF{yXBuAt7C8DOdt-)f z)TW-0Qkh@R42e2WPT_+1EuyMmyqJ>m zJ6=dT3A_cglLNevcEa50SU|i>GZVT8EZONK{TLVR!%^vey1qAON1bvB`ne5teQ$v+ z_1mH?^^eq+x?rDOOYgJm*XU6BT!U@4fhL~*&u5|u$lYKJ#?N7dyX>Kk%NT2wqLLLF z+7-J!^Pfg}S1Z^4rXsMUSLXPUxDFY!oGaiYyU4pjX&`SnVa5@~MRi-FKw49g8LEtz>HSE01x)qQ%DkJrBw};Q2#>Tpi(}mBP&;I2Z~tSv z)jGQ9bXZj5d^&xZ2fU|gXa^lEnY*Kygah_n32*3gycP7=!^HLc24FZfj47DfyI~mh zyuby+XiV@R@g*Av6d-#?EdeNgWE#Rt=L-@35>x(7Y9jWXPUfjh-DqNZyf0r4WS4em zsWW1Bvd~JVhrl z4Vpn>bnmk_tpoISz$_`rAc(( zk1!lu3^DFGwhBW-x?l+v(a#jzH#|Adr?S$gZXk;e-5>=KcO#4gIulM^c2`n>e#4Vf z0sSgLuO05P5f#+Y;KLljToNl@lQqW9yHVMRqVVAe-;xTtJmsI4!wNbFWrlyB zgOXK2Z(Hql>zJqQg%3f6%h^FVit*bKA@KAst9QpU8ONjJ!@a$ueMq1afmgianWsC# zQI>?GZXd_aBh0;hS+f191z&PTO;y&m9Oc98`eA@YC}wf*goChvTQW5b3q6^JgA|t6 z>4gLS;K>I(p>jNCYX-~q-I$1*XX?D78D}H#PYy)ZZ-J7>Pp^uKejmAn7tjrH$qnxI zv*$l!9WKToT0*ywjV!}ZO7aUlG+qLlJ{1``~C8J$f_CQf8;g)CUF^W{37BA6g{9yxo{*PNr!XFlmk6=877iX4ac z*!ebKw;v$S$U?x}bl%T`xEwkk3-kH1e~g2X^Lru0F%bT#kFoE3E(G|1ClrCJ!rV5@ zbv7{H%K<2jf0VaR8+ccqPs@KQ$fwkI@sR2_QRvf(J}dxuIdqotV2Ol~&U#$64+4no z#=-c-75a<@OMlE1F9-_8Iiv@IwrGTND3sUHg$3QO#0@k3*LR5pKM&r}>&ddk8~v0xy3V1@(Tz6SaSeMptRULS1(VJA}pytDrIVJU3m8 zcG!fk1Yv+H)1DWX4_x8niq9XrS=B&JrAQ1subRT#WNVG_<_|jK3K5)g1iXt z!mvW^P%hp2JoYMVaUl+SE?a?KM%jwJ<@zXI!j)V$rTT$ThqJpqxk{VEz6YRO33mNC z;G~a<3k8Idp8?IPN<9wN4s}J_GNyj6Z((aWe}2lv!I+_8k!i{BJ(iY9F1VJ0EHt_c z;m2&iu?wN6sZ@Vd)l%kdul80(DOCV6-91w!opRH}V@mDKv}N%saw@NclW3$Np#>*t zJ(b56uiRrdM)H1hV)nT6Gb>)fhIPvGNGb{&E>zZ=L(GuJh8d4;()~KbEVO^3YU_#O zn^Sa!GR+j}x;_-rGub5Z#hYR42z+@e*HvMw#G8SMC(3$Zz~&wi3VCV^x~&&Z#TBPW z?Pht)`7J9dnEoYI4EtU|1xDlfcs#FB9zMk>+PI_GDcZF+z4!oZkXR242+_|!=(88W zW|f-)wu2St5;uY^{tcN`=Mr296PTF7#0pHzV1i92-Yz6Pd093<^3lc^6~Y=uqqvU3 z)Ga+&iH+6Tw$egzwT<}=7mY%Kdfu#((2}>V6xCJG!odB8FWg%>iPJU}8uv|=MQ*Q0 zL)rJ(1k*FyL{!9$ney2(hPvTT=0CG!r8B#}I~X$WUA@RCRcMk*S0NGL^;1rc_;tyg z*+oc&+@|m8Nfl&8kyngtPe;r^#iCmopE_pY5 z*{-OJk(bA;6<_BMgbUWF9wELrpvNAVD|`|_z5#zJQ(LNn+_ z(=BA3FvTU}Dzg(--DaUKQY>sj)24F58O9+mmVcM#My2qo+NH)~+F0a3P@NoJ+-q$yvb!Z@ z7i*Oukh^SVhV#eERe6bxTRIHDr=9bY!;^OntrgvPVt*Bzf5aLN=-bUW!aca=KMKAD z;X@$a&V*wit*QaF;LFUUw~P+}$HqlA^QN2GG~_MtspU<~yQ*!l05dSbB*Uioj|EK0 zUAJ|OWQoaY{tf*kHp9rf^MYCXgOfN3HS!Y}G46A3Vm&=rW-lbVTDM_rz8!4O5w#8d zUMkfrzTZyJ+YN`l8@LfQ3}l)?DM5V_Cl8p>;Dq|UpMo$9h!X;d`^&@(Edc7>xqRcr3l09%TL6=R-me;oAWd!rhdgg#~85`5o)>N2DiZq?7Lj>^UuoQII z_bA}d4Oo>38;^;4$2fR5^hbk0$DpGOaaPtN1Qiw@QsM7ibczeRfwAw^ta*t zs`O`AwO^|WBpu7zGFgsR;Sdz!VZCSWb45#qEOt56Ys+|{LgFglY+1dnr%@uyDH0-j zEi|?E;9Fv>=0vf;=M!}XoJRvrw?e{Us*RhFkZ>@gm2#?$hW<+xnV}oxwHL*Mz&55# zU2ct%>0Zuv^Y^3M%IdS~kY7v=MRk>GXC+kewM~$982oaomj6SkVk!W9E6*oUX#y9z zbIPfB=dn}^u$m=Oh+fX+Z=~*0u03amkg-Fm0i8!Ea&R>O_D8N0a7WtE3AiV1Gqpi* z;#GIKR<+X`1*fVvg^)_dczr@RVWX7vF zCBD-LUk-~)O=gy2otmhR34z(e{%rqdI6}Ch%dLdX(v^aoc|DnB^aXlRxC!O^kd@E)9Tl^t@Y+)<)ic$P zv+YfcOw}sEtnFFk($n#0ixD6jLM;&YYBM$JB?HA_VW|1ft@Hqwaf>WiOaebn1^nqd z9$E4kR0N)JT7 zhjbjrHp;Y{p?ilxmcZYu)LD~oExp6!0(Zlpcbax%giUndnCr`;mKAJ{LH|sWu2!%) zF`C6~2PihCd3w0KUx1j5*7NU2Nvh!zGNc0V929u-RnVhj{&iIaJvw4GfcSev^k6wy ziI-!6O-6gPP-K*#qb{Y%#zpXG83m}ArHjX{q~(md`E!k@XKLv@NTHC{b<3G5JwXy3 zqnxRN1x7SZF;xIe6{VOe$W9N@atx#R|21w^cEVgZFic_c*Gc23yD0EWHuxze3 zXDIY83QKx@VR5aF(|l>2Or7FppChZwS}qmUDS15YxIMu@${tTl;~_+^;}6K<=n$Bb zId&>VSco~T_@2cVrSP>3Gy!oY@MfXNXhPtLoILr0uN_ClBa3J}^t~>ohZQ39=(OX- z?a1wZgV)&-bblQVteqDYZx9Z%2(+g(#u{3rYq0ugdG@Butdb7(;3<-;(^(=S5hh7p zj^kuVwyw7`DfV?E2h&U)tLCu9*V9gyUe2YvYjzr$!hr5-kHa2Df%C{W*NtSG%{SRH z&Vg6FC9_b!9C&-@uR@&1GwFAA7YlbH(t$d`d29OFhpAGZu8?1so?9o^PIA>UQl@G8;O_rV5ci94DWLMtbz6pU z^4B?%q!-yc6Y1&t!BwQ$r<^pSRd8OE^faE|Ns2n@87l7yetb5ACmL<8LO$5f>20BF zdwGHJIk%ATSCxy<<*AvTe|iD|UT84PjRwl$#!nlVrjgZ<K68etAnNuX9#6yP+245e3ZF$v)5D_kN0_a<-)098n{JsLZkNJ(D@oX0wuZPIpe4 zb7y2~Nhs=;_NP|TElI?Zl6k?$?l~05y=n;=vdv77rDCNlg3iLjr*30sB9$7+xt;vW z<>DU;PJ@iJOvR;nK8L4dX8L#`Bk+=lH_znkMC>h4|1ajrl=fD3%$ie5Fqy$q z37`C4CTH`~KPmKq7V_Z02{t3#>!~6)Ntw_S*3aC>Pt^B(2!+zS_zI3o&%@FF$xGco zi6+}lcwOf)a0j?i*$syi_8w&giC0b=k7Uogy&c84@kn3SrEfb-Q8;wF9+`+ldpboB zlLe1i1&yzN|NGzmcJD?LFSyh0akr-3U*0!qBG_RDt{3Qr_6P}oyT82G9Bp*pgpWJF zBX%#Eqh()a*Os-+^RU`7RKKQc!oLb>wrObwZEN}!-A3*mbft`5c09cMaZc#J=W;_Zw?_x~vO9SwNA|dl0$ok!sBm$Y{%~eDm*&j46+> z6~w8qT71%Y@u?fflE<_0v*`P$7Z2`GrgVMmCc&0?Jmv6$`Yt;!Y>2paLH*Mnrz}%1 zdH4w0ZD^(d(gq`Vq6Q}~s^A_xy3)gucaM7-up+!#kwgm+fzo~(P^;VrU$5E-{;S%^ z0(&E)`z(npHpZDQU=hU(`Rb*7yc>4mj3+8I%FqMWzf^5hr}s=)19kf68r6-$@}v8t zq=jnq0f-vF*9;lrjdUpHX9JFE+)YP56V}uLj{7W{8`en&5hEKjfkK#fI2>RSO-z|9 zhJc185Wi&s^xJ^N-5c;XWU~vKgIo4fsWB2LSjnjKVlvYDk)}U%0XWr zVx0*$V#1#UGxpu6i~{h*^=>`ft04C9PuyrRk4=!9cYzMUj7*+oB!V%8Pg?j9Q~k_} zAY!Hyrh@lw=qB+G~Jw;5y1PG&m51VNGOL_pVvz?XA=g*`E$@_mw^Gd&~2oy<* zZJlIaa@ASLM^2QM0@66xhj!hYz4UNhN+-&8UpC4mN(R}(G>4!T}xv)Oqj zNJ?f{s$eqj_$(Ovi_e0%iv#TNqXp(=?ckKm&C6t4gf3_ z=)jd0*RfIPq^gP8FtM1YG08Nd;0#STV6SC7q|qfa|m7sy3x zwKr>THeS`8?C+nV)StN{C8lgpx^QLYt2zx+>nxpFb4Z;5#TeX{ z2zi~n;1D~phzDtQf}4qiK7lcQH712YzmJ9dLu&KjNn^1 z>XafcNg#F_iiLLtdkQFvN2+W-mqo9=2&QmY$`=*7zB-lt+gscv5Ewa(;ng!@SCpGo z979}$Ax>T6P~ZHpg-BHsYYt9F!%St)!>YzNP!EwO-gtBJ?Iy2PmVwlYHEJ0sHI8u- zHxaxpsNzmXprdQCbbcPO4L7Faf2W$ws3^tg$ukOSk4!GEw*mL`@t68 z50)yNRA&Z0%#3F_J-LL9xYrTYlPJdT_KjN{Fy8LzBluBUU{ z<7>D!>Za^BRK&U2$xtvsc<<)BGB%K#S_B0lsF-;Z?nVR!P*@6hicFA%&dBvkqFMQw z%t9&OOcu7#JZZIy*0%Iy{z*Cvq_$Mh3^&fIGGIFP)rVwVb>}tqw?QH`Qi(wa+%I6v zjOjE(eNJ8B;oG=tVs1Su;JJdeNnPZ!;Hd>~;e`T`0+F4p3BN>i6f}_8MWmOV8JV_N z@6)STCjRrEUXY|MClRf@GfAc!(>F28I!MG^D(Rwv)mnBu_=pyDlA15YP~=$6s7P=| zD=UU7d7|r71wgODKZ)0!!f(>lljVn0kK{IvKR@nL2IMxE@hlSy3RsA49;rJ@h0veB z;|%X{6nQ;}UBfLR%0`23tDRU$p%48zQPFO-EBD=UyPDs?c0#|G?AV#9iexupCu@k3q8IHxi|jgpMkBSwbyBtcta)bc-ne843OhG9 z0wukf?KlBi&RVmWhwk7LevO3{IO;f$^Uh5C(ZCD9B0XvMBOLcbzn7e!pm-35q)!7t zD5?DXjM6A;qccml44K_ZpT=0f<}~Kt`#7fP&?U*e$KAT7c1JUJl9TR@e15?I1Tbpp3Y%!$$9-?jA(R9oN3i6TeLIVF&xy5h(0!^ry)2E_H{ z_CA&W5l4hRQ6X}JV{aHc>pUI~z48%3xC=dlv^id_LBP2g5R=uKk=MK4M$FK|tUD2M zRWnTqbjD0_8ARCi-}>}IM;x0s5qmskUg^xMZR+l_=UC0&X3_)AUb3USEk?F^I|r?P zWu=F1XS6TBolD@pkn6-$)0|hoT*hbCF6UjU?lM(sX6q$uO1AluMI+yS zp3^h-s}wipGGVypI#Z;~knGSwU0h*Biq#Z6L#dr>F=T6SG;fqMro$N;S}|xz2S@W) zPn1qYG783&A~)+-6A5~GX5$j(4bsa&$s*+taND`J$)puc#EyLe|$*- zXatVc3^qwKSXnVJ+o_xNH?QBUv0&7AJk+b^`f{)wtm>qW`clHi1FB)X3+^kTgMEazFYYnQwe~0MiIx^S6=r87YN&cNXiet|Wc0+u7>vbWh zLo7gX?r0!y-~QX*vIg$I{VjV<<5!*xKy3v_1OM=Xu0QHwZL=E=24S$p5GzDCe}tfR zZW@M`oh>kUfQ4P0yQ#lW1sCxqS zztOH7-Lu&9nv?XZwk-NyTh_)3c%2WPJ&(?nq+UvLK^?VubyQ30P`>ZLhrr8(=_9Az0-jx|+lPCpKCrDiQ!Okae(XP-d*>MHgZ;);{TVJlhlEt#T zcrU{4zzgmwsE)ww6C*fD4Uvz!XoPy`77frH8lxfVqaBLtu{%UJ^4Grnwa47v9@w9A znSSC}XyRDt7!K2S;h#_N&wJ3}k9{3bdi<^%=r`R!pW(GOaO$O=y$@c{3m*#ZdPg|+ ze&7l^hM=bN0)KT&fV#fd{Z>J{#F!dr)MbdUSH^b&Z$MvQI)J!{aMa6DDZJ91!iKpe zJw3$>#H;EqP$0n)xdPOMN7v{bE1PhTsm|`L z8luiK#U#8FMefA(V)|DPNOG@nTlp|=!)V{__Vt#t)k;bm4F%@qOSM1(Gle5g-g2b0 z+!cw6g?g&+`FGuTbSY;Y^pR`chIjPi_gJsjUcY&@flSMK4W921TPq|%S4vk%E zpb;B0k9)As>2x^NTtnvTb+x{cu(b!wBj@+NZojgvjdcsQ>`j-x&K1ZvInOB2w@}|$ zx7XI}SI9QkQO&Z9=2@Dr)-6Q;hpP@y#hIv~C2Fv3t6sC#*OARCXr(Ktu3M;Dw@@{y zqh%m=)b?8+^-M6E3}TapY>AymY1nSmrs$S0HA%pW-{k!xPUsk;GpCO0h#_&z0=5Q7aR8s>WD zyj6zWFxM!=4k0)g(M1Jvl{4I_(PWVZb|XC?s4WJzuS6#KtQ(I^)U`b{=06f1C1w!z zq|ZG%b98$p32eM>7^}6WfDuw#Z=sOTC67~QS8K~5S=9qlwV$4B1NlUWj%-)k%WVS@ z;>btd0Qw9?#Hm{=0fA7%OZ=@@pD>ti80&->%Mn3s_(!D2@Ej6N2M+h*T?jo9y?nW( zK0kazKU${OLrVraPrhgyVpI-@W3I2X%m@=4KwmA_P=`1d-7hT@+`+D&o+|&?xOr83 zZB@_(#qSSSKOo57K=y`#SU8AJeKD%sbFf1Uga;lA#Zr)V7!Vx9bbRZn*3ESkg`>NE zfaADf))9o?^Vx@8$|9L6UQG>jAc9X^ppMZzNW=gQ{=8(M19KGPXwN0C^9Un**lW<< zp+0bob|mX;DD_X#PSTeL2D+o%b|5pEwL5Gx~Z>I;qtfko-ePHYz>VFu`4<>yU zjbd;>me&yd$2QQ1Jc%C^6217HA3i{{3b9j;{0D*jmD4hP_XhhyWOZa0FFna6ln7Of^Iqfzv)Q(0yC(;C?e)g%S9PmwWTggT+AA%S*}s6p%?%?n#BAoDggPMzX7!TNZ;YOX zAPg~T8iK4T8q*G2f(~M$Z!CV?DKZfD1&`{2JH|!J)VgJrEmSNkw^*%P*8JtlvgRyT z2|%qBfG$_ig1NSmUbD=)$b|aMdN#WzvuoFm`8t=~JX>tN%YsohP}jS9!FtD5xH>o7 zaZBF|YsQMFx+vvWzp2q2iWToHS@4ExTw_=Y&%}7QoL<-+vFB|f3=c3c^;EBP-QeDh zD|EbD>b=lPtyh7?g!=aC>@gydAfV8*17koQ*yBGBPAPfl7 zVmFAZF^;_33e*62@A%$b;8ePFL6oU)-5C2`fSt;~>-Bt0GvdD63m=%1RwcT-adiu6 z{D1Scp}>H_!P!W@nJN7T@PMdgh25hIQdH_nLyKuF?YABi=g4O%V;S@B8W^MLoIZm4f}L*{a?l%N=4Y2LyE>UwPUx`>e->(L7h$rW3RSYFL5*eKWITOtXuc zPvojb1O+~k%UYzQsS6u{g)JiKm2IhnL_#QyOOnLp*0N8;5)}}1;VjJ}uR{cV31*bW z3qfOo9i{UER;TtH8Yyw2xX}bwgl9$NCE+XZX{6z(?)37d zUIdE#wEm@*Wa^bMof>FdLYSn$Ckb~Er4GS*O9gof3r6JS%O%kv2gD(Xoy>H_ni(e# zXCKhb@iHP|FCa1`=(ULhvOXdVE@r<-&oKBT>5A2?g11G}YM>r-K zJLH%sb_vDEWCq~_XaSaG0~sLR&@j=JhO?;<(x~NF&DQ3bNuMBYwpLaQsw`aTEp!IG zcBQwB6}f#2$VzM3w4v1+S1UdX$j=fIHh>J$S~u9c@@HA{`!8SWeP%x5!*Ap28d8$R zE6zHut{Z44*}a~jmZ2)oa(nB6e=2dd2r)f~VcimHb6T*p9a|*^j0P*B4iQfzB=A}e z;Jv;al4OSi%9dDS_-t(}tKgZmcs5&(oMsa$5MMY%UT%W=& zqqJA}2BNGB6ticKo8sCbl{_gjU{^sYd3s_v+l}_-nze1dX|y+A!{24yuIlaTnq{o6 zSw;iaJd>~FD~?V`HTgD{O?zsfKsUDa0u!H&M#=p_Si4hJ-i`H*jaN0W@@{}{QlW`Z zDQ~_u&^gQoj|K{n(QZ*!#=uOb9sn{^Is(%OY9pV}e#5YUg7ju<&89O+_hUdDy4|9> zGYI1$-qqZ|=~p1Xrypf9Cim&6KWY;Us#wP1&`W}#=K8qJTegGbyxU|VlCtc`WU zKo5n3E+Lfq~_A7y4|yJU#k=JSTee4QDY^^Moo`fG(z z>*S<0Ez;j$?g>C`WM4J<^&>HErwJ35cWUFNA1Y$9I6z%Y!?`CfZEA_i!QEp&1O-9D z`KmRF8xE4=mot9wvQcJ1u;*H#qyYhTTd<|%CwuUQ{U^?D0{cdggnDxCaKl1F7kue` z95*7Os_+jaW4nSTzPq|XtV!D>i4t1MOlhxC?DcTN4KnuDwm2T3r#Q`aW={nt zw{6o8!*4r8PqaK?X=@wkJ*N+1NjKV@q=7r$xx2UXIqZd zJgZid;X3|uMx*1kOj%vkX_-`VASH3ru|RV2=z?c7`gs@-FBsve?5Q1Y!B=+Dp>$(! zJ7MA-(QHe7-voapy~XaOs7)@Lbr{$DzChZm3NqCSjOjG#g-^43;gjqI_YSYDAo_R9 zu35&T%RN=}mMQ0efs~JesOYKef{@Oi=JaD>?FGA8)Se3}`%)Vm zlTV-FKqDkqc=gkLD7h}#m?cbPA-hV)dlkkTj58oT9diS=c`O5*6BJf@KZ}*#7qU{z zWYQ+ZPauteS4v{*i<|-mdOw$e0BzAIg6)4umTOj%SDD|?=Nc3JWWI)e0GY-i@^V(` zn%!Alvs)xs zw6je!G+hYaPn-Z82SUCbKh3yq>#D~TT}e?l{hi>_Ws+T3x@h2ww{RKP3+{Gl)AY~= zg3^o~J&@0+R?kcy-x6c>j2&n!*Qz$UH78D0PoS=gB zIzfAhqZ8Bb_vk{Vs5nvyX!?Ao#n&);#c4W)HcyG;c66h8+|^GB0>{PJ2?%vbjSX~$ zbq}2q10A@!LE-(pAMCA<$C^j*Ag;0#GVRVCR&DB>Tm52N!|`=xYcn3Yfha+91|!&2 zY-yXTkhP_4@;~fTc+;Y8zQK6tc5!u5twFW-cWHmz%GM^#8*OYmm9>f%lPLU#oytFI zZp~fCBB9DoAS;%+E|Yq0+;@RfoJtL?fkQ7;R8k$jU0YjQt6M));m{?04bJbJN)QHE zsdb~iv2kl>>#WHHDBpF5PKDlWhZ>=-RE?v^*ZOi@#;50h79;9lsB=d*QV+iE12Acw0;rZHtf z7~V(R@tMx#A$Vr@6HP!Vuv|xV%RoEM8oB`kXLV<}2HxN7msF8xALz2qSC z!P#3~x0d_p+==xE1D!ZKD>UT>O`M$--L9S+%lpkCQ|G@fJ?_Di(A$;cN~3aAnJzt^ zm?S*##<-{3#uP0*PSo$OhIq4jX#Np;fnL!n)R#mM_vMlL1T`ur;X?)W+)3Q95W9~= zRKF+zX7@Oh&7or2tjK;PvR}#US4wu>68UvY0@N*IdaXL_D?>KiGGA?1{$X1;Z(iG# z#&FAA+phfMcKr>uZYm8S04hucIrwcTKSAAMbVJRy4DU|w3=+m*_+ z@zp>RU*AJt*}hO)dOW8YUk!AF^#@vpCj84+V~V~2s-ezmq1|gx?9~)-wlO4&SjIJ7 zUxsK0*y4(Sf6*1~zxzNRI$Mt|tas&{11mXVDPq0_Nz%QCAKr%J3i@hkmbUbWb%Wxj zEjngpyB0QPbfycX%{3VOK;7~n0c^eX6t z=n=zyK)=}tL>%iQNUi3gRfqtFG7 zRAWYa?JjbMebY2ISBII^0rmdM4$%hgxcX2X^t9o)`nsUN`q&qXc(ra-w*Kv3|BIlm zUrRxbeMTLRF}ZaWjw0>Y3wqklgX@uabG2Wa-6vWB^|ze*lzyhA6uQB$Jt zt(?jr2J!}z2aE$*sqD1D4K&JC+u3@omS!E>Tvu^Ru{@l%-1^}|weR(MI7ssY=ekq@ zYOkXk+^XyQT5l9lTWWQksY}UF$^q?AvMZYmGn!g4&>c`GXBI%-&&jBcXJ{X8weB_@M5+UKC*^`X-@G&=g_c9pj$%(Dw*t$PXh-@uT9bU)@;Cj&DWqnpU=# zOLFr*6t2m~i*!Ok)yj|! z38gB{Hgp_q5cPE!wwfHY8|YQo+RL$GpK>%ApCw>*OPTtWt$+JZ|5fAXj*`=~XEaVN z>9TG5m2a8>fR>_N2m zo=L?LTs0VXC>u3SsCk55Eojsc^)PEZkf$f+AcL5U?0CJ#N0Bx)ppj|UCEflbYw9Fq zJ2?->+5{6*quyfLD26@WM;sIH4rH=642L7%C0Lul?uhOBz#Q)duJ2Dc0r2W%hQfhP zsq5122cjfBbY%e#1e$QG3%t}iyM=Y$=@0O@66+y1=^;S~wd+5S46!a^(R&pKW!(V# z!N@R40ezOhz(76Y5Q6Ee}L!-$}NDm@P!AEBVM*wG-jo}pCsCm5(b=8Ej z9}RR&z_Rq6=pHf9nt{4BI&8q;PJ>wQGAKOuT(Y(Ic)twBkI-#5snUy(t5uJ%#Qn6lxZ#<{*?oI~gE_rYim zy81aY;GF=>IT!=4Xbz-JAngIl9RvKtK)bZ_jpi;7Rk&+*I_%fFMT>lbBD+TO69@Pt z0c?vwya$L+M)N&~c%MM9vj-(dl%2kD9vu^v5pOvo_PU%A85cGgyU~iev<;5{XYNvfE(7Rt zfKv+4r2qj1IAs8E$i-O|Y@)|Rn&c?&?ScyeGtN;~WLD5!1qwJ&fuan_paO!vQrV^n zSo+1Sl2c_i085RC};D76WJlK#Swn7B+Nw)FAhX6@CW5u$Jaf5kD$9H@F~S z<|T>UIrmbfnLq=DK=20Eg@?udcj(qBii(k_?ktB8oW);N^K;3cgP-P{GXh`8Y)sH=mBv5)2bK zJs!}3U83W)#NavuScR)rgHaLE<^X_OI0%+ zGFuaG&+E~fm`Tao@{&EAE0|gV&yy9xEu>ua0Mfx}Jpkl9PQ0)wLy83U(Mqh{H z>RQT>1UoR*LR4fHS}QRz32R2i&Xh6>P_uh(D=4sQh@+czi&aGjziVt)pcPi1Ji8i> zd|{kzNY43;c!7WW*Z-^u-IQK~Pf{wP`@i8yFMJ3p=$v-q1A*Jmj^kAJ>2cJ{mt#0J z9d`9|v1*SD3i%1nJReAU{7=xBfA`%0R>5N=Hh}1^s~?Lxda{mQu8!Z(AocB%qz-!Y zIAlkU2;N-2?do3=8blG%{I$`<<6#()$AgaM#u|-19^imXn}7d5lAMW;l1c~w*U_%) literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/7.B8i7WFBk.js b/apps/dashboard/build/_app/immutable/nodes/7.B8i7WFBk.js new file mode 100644 index 0000000..200e4ab --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/7.B8i7WFBk.js @@ -0,0 +1 @@ +import"../chunks/Bzak7iHL.js";import{o as ue}from"../chunks/BycUxjt3.js";import{p as fe,s as T,c as Q,t as u,a as ge,e as d,d as r,h as $,g as e,r as t,G as be}from"../chunks/DEYVqDYQ.js";import{d as ye,s as o,a as he}from"../chunks/ZM2C7QQX.js";import{i as R}from"../chunks/CpubbTHs.js";import{e as U,i as D}from"../chunks/CiJhRXcr.js";import{a as l,f as n}from"../chunks/D5-kFxsM.js";import{s as q}from"../chunks/zt9hmg4X.js";import{a as Z}from"../chunks/BcuCGYSa.js";var we=n(""),Re=n('
'),Ne=n('
'),Se=n('

Use "Remind me..." in conversation to create intentions.

'),ke=n(' '),Oe=n(' '),$e=n('

'),ze=n('
'),Ce=n('

No predictions yet. Use Vestige more to train the predictive model.

'),Ie=n(" "),Pe=n(' '),Te=n('

'),Ue=n('
'),De=n('

Intentions & Predictions

Prospective Memory

"Remember to do X when Y happens"

Predicted Needs

What you might need next
');function We(ee,te){fe(te,!0);let z=T(Q([])),j=T(Q([])),A=T(!0),N=T("active");const ae={active:"text-synapse-glow bg-synapse/10 border-synapse/30",fulfilled:"text-recall bg-recall/10 border-recall/30",cancelled:"text-dim bg-surface border-subtle/30",snoozed:"text-dream-glow bg-dream/10 border-dream/30"},re={critical:"text-decay",high:"text-amber-400",normal:"text-dim",low:"text-muted"},se={time:"⏰",context:"◎",event:"⚡"};ue(async()=>{await B()});async function B(){$(A,!0);try{const[s,i]=await Promise.all([Z.intentions(e(N)),Z.predict()]);$(z,s.intentions||[],!0),$(j,i.predictions||[],!0)}catch{}finally{$(A,!1)}}async function ie(s){$(N,s,!0),await B()}function F(s){if(!s)return"";try{return new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return s}}var G=De(),L=r(G),H=d(r(L),2),de=r(H);t(H),t(L);var M=d(L,2),Y=d(r(M),2);U(Y,20,()=>["active","fulfilled","snoozed","cancelled","all"],D,(s,i)=>{var v=we(),a=r(v,!0);t(v),u(p=>{q(v,1,`px-3 py-1.5 rounded-lg text-xs transition ${e(N)===i?"bg-synapse/20 text-synapse-glow border border-synapse/40":"bg-surface/40 text-dim border border-subtle/20 hover:border-subtle/40"}`),o(a,p)},[()=>i.charAt(0).toUpperCase()+i.slice(1)]),he("click",v,()=>ie(i)),l(s,v)}),t(Y);var oe=d(Y,2);{var ve=s=>{var i=Ne();U(i,20,()=>Array(4),D,(v,a)=>{var p=Re();l(v,p)}),t(i),l(s,i)},le=s=>{var i=Se(),v=d(r(i),2),a=r(v);t(v),be(2),t(i),u(()=>o(a,`No ${e(N)==="all"?"":e(N)+" "}intentions.`)),l(s,i)},ne=s=>{var i=ze();U(i,21,()=>e(z),D,(v,a)=>{var p=$e(),g=r(p),b=r(g),C=r(b,!0);t(b);var f=d(b,2),S=r(f),I=r(S,!0);t(S);var y=d(S,2),h=r(y),P=r(h,!0);t(h);var w=d(h,2),E=r(w);t(w);var k=d(w,2),x=r(k);t(k);var c=d(k,2);{var O=m=>{var _=ke(),W=r(_);t(_),u(X=>o(W,`deadline: ${X??""}`),[()=>F(e(a).deadline)]),l(m,_)};R(c,m=>{e(a).deadline&&m(O)})}var V=d(c,2);{var me=m=>{var _=Oe(),W=r(_);t(_),u(X=>o(W,`snoozed until ${X??""}`),[()=>F(e(a).snoozed_until)]),l(m,_)};R(V,m=>{e(a).snoozed_until&&m(me)})}t(y),t(f);var K=d(f,2),_e=r(K,!0);t(K),t(g),t(p),u((m,_)=>{o(C,se[e(a).trigger_type]||"◇"),o(I,e(a).content),q(h,1,`px-2 py-0.5 text-[10px] rounded border ${(ae[e(a).status]||"text-dim bg-surface border-subtle/30")??""}`),o(P,e(a).status),q(w,1,`text-[10px] ${(re[e(a).priority]||"text-muted")??""}`),o(E,`${e(a).priority??""} priority`),o(x,`${e(a).trigger_type??""}: ${m??""}`),o(_e,_)},[()=>e(a).trigger_value.length>40?e(a).trigger_value.slice(0,37)+"...":e(a).trigger_value,()=>F(e(a).created_at)]),l(v,p)}),t(i),l(s,i)};R(oe,s=>{e(A)?s(ve):e(z).length===0?s(le,1):s(ne,!1)})}t(M);var J=d(M,2),ce=d(r(J),2);{var pe=s=>{var i=Ce();l(s,i)},xe=s=>{var i=Ue();U(i,21,()=>e(j),D,(v,a,p)=>{var g=Te(),b=r(g);b.textContent=p+1;var C=d(b,2),f=r(C),S=r(f,!0);t(f);var I=d(f,2),y=r(I),h=r(y,!0);t(y);var P=d(y,2);{var w=x=>{var c=Ie(),O=r(c);t(c),u(V=>o(O,`${V??""}% retention`),[()=>(Number(e(a).retention)*100).toFixed(0)]),l(x,c)};R(P,x=>{e(a).retention&&x(w)})}var E=d(P,2);{var k=x=>{var c=Pe(),O=r(c);t(c),u(()=>o(O,`${e(a).predictedNeed??""} need`)),l(x,c)};R(E,x=>{e(a).predictedNeed&&x(k)})}t(I),t(C),t(g),u(()=>{o(S,e(a).content),o(h,e(a).nodeType)}),l(v,g)}),t(i),l(s,i)};R(ce,s=>{e(j).length===0?s(pe):s(xe,!1)})}t(J),t(G),u(()=>o(de,`${e(z).length??""} intentions`)),l(ee,G),ge()}ye(["click"]);export{We as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/7.B8i7WFBk.js.br b/apps/dashboard/build/_app/immutable/nodes/7.B8i7WFBk.js.br new file mode 100644 index 0000000000000000000000000000000000000000..83358ed535aa47fd2749d01e4c8300b31d2d9eef GIT binary patch literal 2194 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 YetSujCNacj-2Bsj0Q>d&1~nJ}0PcD2KL7v# literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/7.CenRva5o.js b/apps/dashboard/build/_app/immutable/nodes/7.CenRva5o.js deleted file mode 100644 index 7d1c702..0000000 --- a/apps/dashboard/build/_app/immutable/nodes/7.CenRva5o.js +++ /dev/null @@ -1 +0,0 @@ -import{a as l,f as n}from"../chunks/wmwKEafM.js";import{o as ue}from"../chunks/DZf5toYK.js";import{p as fe,d as T,h as Q,t as u,a as ge,e as d,c as r,s as $,g as e,r as t,G as be}from"../chunks/DleE0ac1.js";import{d as ye,s as v,a as he}from"../chunks/8PSwG_AU.js";import{i as R}from"../chunks/BHs8FnOA.js";import{e as U,i as D}from"../chunks/BsRos8Kb.js";import{s as q}from"../chunks/BK028jHP.js";import{a as Z}from"../chunks/BcuCGYSa.js";var we=n(""),Re=n('
'),Ne=n('
'),Se=n('

Use "Remind me..." in conversation to create intentions.

'),ke=n(' '),Oe=n(' '),$e=n('

'),ze=n('
'),Ce=n('

No predictions yet. Use Vestige more to train the predictive model.

'),Ie=n(" "),Pe=n(' '),Te=n('

'),Ue=n('
'),De=n('

Intentions & Predictions

Prospective Memory

"Remember to do X when Y happens"

Predicted Needs

What you might need next
');function Ve(ee,te){fe(te,!0);let z=T(Q([])),j=T(Q([])),A=T(!0),N=T("active");const ae={active:"text-synapse-glow bg-synapse/10 border-synapse/30",fulfilled:"text-recall bg-recall/10 border-recall/30",cancelled:"text-dim bg-surface border-subtle/30",snoozed:"text-dream-glow bg-dream/10 border-dream/30"},re={critical:"text-decay",high:"text-amber-400",normal:"text-dim",low:"text-muted"},se={time:"⏰",context:"◎",event:"⚡"};ue(async()=>{await B()});async function B(){$(A,!0);try{const[s,i]=await Promise.all([Z.intentions(e(N)),Z.predict()]);$(z,s.intentions||[],!0),$(j,i.predictions||[],!0)}catch{}finally{$(A,!1)}}async function ie(s){$(N,s,!0),await B()}function F(s){if(!s)return"";try{return new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return s}}var G=De(),L=r(G),H=d(r(L),2),de=r(H);t(H),t(L);var M=d(L,2),Y=d(r(M),2);U(Y,20,()=>["active","fulfilled","snoozed","cancelled","all"],D,(s,i)=>{var o=we(),a=r(o,!0);t(o),u(p=>{q(o,1,`px-3 py-1.5 rounded-lg text-xs transition ${e(N)===i?"bg-synapse/20 text-synapse-glow border border-synapse/40":"bg-surface/40 text-dim border border-subtle/20 hover:border-subtle/40"}`),v(a,p)},[()=>i.charAt(0).toUpperCase()+i.slice(1)]),he("click",o,()=>ie(i)),l(s,o)}),t(Y);var ve=d(Y,2);{var oe=s=>{var i=Ne();U(i,20,()=>Array(4),D,(o,a)=>{var p=Re();l(o,p)}),t(i),l(s,i)},le=s=>{var i=Se(),o=d(r(i),2),a=r(o);t(o),be(2),t(i),u(()=>v(a,`No ${e(N)==="all"?"":e(N)+" "}intentions.`)),l(s,i)},ne=s=>{var i=ze();U(i,21,()=>e(z),D,(o,a)=>{var p=$e(),g=r(p),b=r(g),C=r(b,!0);t(b);var f=d(b,2),S=r(f),I=r(S,!0);t(S);var y=d(S,2),h=r(y),P=r(h,!0);t(h);var w=d(h,2),E=r(w);t(w);var k=d(w,2),x=r(k);t(k);var c=d(k,2);{var O=m=>{var _=ke(),W=r(_);t(_),u(X=>v(W,`deadline: ${X??""}`),[()=>F(e(a).deadline)]),l(m,_)};R(c,m=>{e(a).deadline&&m(O)})}var V=d(c,2);{var me=m=>{var _=Oe(),W=r(_);t(_),u(X=>v(W,`snoozed until ${X??""}`),[()=>F(e(a).snoozed_until)]),l(m,_)};R(V,m=>{e(a).snoozed_until&&m(me)})}t(y),t(f);var K=d(f,2),_e=r(K,!0);t(K),t(g),t(p),u((m,_)=>{v(C,se[e(a).trigger_type]||"◇"),v(I,e(a).content),q(h,1,`px-2 py-0.5 text-[10px] rounded border ${(ae[e(a).status]||"text-dim bg-surface border-subtle/30")??""}`),v(P,e(a).status),q(w,1,`text-[10px] ${(re[e(a).priority]||"text-muted")??""}`),v(E,`${e(a).priority??""} priority`),v(x,`${e(a).trigger_type??""}: ${m??""}`),v(_e,_)},[()=>e(a).trigger_value.length>40?e(a).trigger_value.slice(0,37)+"...":e(a).trigger_value,()=>F(e(a).created_at)]),l(o,p)}),t(i),l(s,i)};R(ve,s=>{e(A)?s(oe):e(z).length===0?s(le,1):s(ne,!1)})}t(M);var J=d(M,2),ce=d(r(J),2);{var pe=s=>{var i=Ce();l(s,i)},xe=s=>{var i=Ue();U(i,21,()=>e(j),D,(o,a,p)=>{var g=Te(),b=r(g);b.textContent=p+1;var C=d(b,2),f=r(C),S=r(f,!0);t(f);var I=d(f,2),y=r(I),h=r(y,!0);t(y);var P=d(y,2);{var w=x=>{var c=Ie(),O=r(c);t(c),u(V=>v(O,`${V??""}% retention`),[()=>(Number(e(a).retention)*100).toFixed(0)]),l(x,c)};R(P,x=>{e(a).retention&&x(w)})}var E=d(P,2);{var k=x=>{var c=Pe(),O=r(c);t(c),u(()=>v(O,`${e(a).predictedNeed??""} need`)),l(x,c)};R(E,x=>{e(a).predictedNeed&&x(k)})}t(I),t(C),t(g),u(()=>{v(S,e(a).content),v(h,e(a).nodeType)}),l(o,g)}),t(i),l(s,i)};R(ce,s=>{e(j).length===0?s(pe):s(xe,!1)})}t(J),t(G),u(()=>v(de,`${e(z).length??""} intentions`)),l(ee,G),ge()}ye(["click"]);export{Ve as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/7.CenRva5o.js.br b/apps/dashboard/build/_app/immutable/nodes/7.CenRva5o.js.br deleted file mode 100644 index 37b39f27a20f2bef5bf1da5edd0b7fe7e2f3da68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2180 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'),Ke=f('
'),Ue=f(' '),Ve=f('

'),We=f(''),Xe=f('
'),Ze=f(`

Memories

Min retention:
`);function ct(fe,ge){Qe(ge,!0);let w=g(Ye([])),S=g(""),k=g(""),be="",b=g(0),M=g(!0),P=g(null),X;qe(()=>m());async function m(){p(M,!0);try{const o={};e(S)&&(o.q=e(S)),e(k)&&(o.node_type=e(k)),e(b)>0&&(o.min_retention=String(e(b)));const v=await F.memories.list(o);p(w,v.memories,!0)}catch{p(w,[],!0)}finally{p(M,!1)}}function me(){clearTimeout(X),X=setTimeout(m,300)}function he(o){return o>.7?"#10b981":o>.4?"#f59e0b":"#ef4444"}var C=Ze(),A=r(C),Z=t(r(A),2),ye=r(Z);a(Z),a(A);var E=t(A,2),T=r(E);_e(T);var h=t(T,2),N=r(h);N.value=N.__value="";var O=t(N);O.value=O.__value="fact";var R=t(O);R.value=R.__value="concept";var j=t(R);j.value=j.__value="event";var L=t(j);L.value=L.__value="person";var q=t(L);q.value=q.__value="place";var Q=t(q);Q.value=Q.__value="note";var Y=t(Q);Y.value=Y.__value="pattern";var ee=t(Y);ee.value=ee.__value="decision",a(h);var te=t(h,2),$=t(r(te),2);_e($);var ae=t($,2),we=r(ae);a(ae),a(te),a(E);var Se=t(E,2);{var ke=o=>{var v=Ke();W(v,20,()=>Array(8),ce,(y,s)=>{var c=Je();_(y,c)}),a(v),_(o,v)},Pe=o=>{var v=Xe();W(v,21,()=>e(w),y=>y.id,(y,s)=>{var c=We(),z=r(c),B=r(z),G=r(B),re=r(G),H=t(re,2),Te=r(H,!0);a(H);var $e=t(H,2);W($e,17,()=>e(s).tags.slice(0,3),ce,(i,n)=>{var d=Ue(),J=r(d,!0);a(d),D(()=>l(J,e(n))),_(i,d)}),a(G);var oe=t(G,2),De=r(oe,!0);a(oe),a(B);var se=t(B,2),I=r(se),Fe=r(I);a(I);var ie=t(I,2),Me=r(ie);a(ie),a(se),a(z);var Ce=t(z,2);{var Ae=i=>{var n=Ve(),d=r(n),J=r(d,!0);a(d);var K=t(d,2),U=r(K),Ee=r(U);a(U);var V=t(U,2),Ne=r(V);a(V);var ne=t(V,2),Oe=r(ne);a(ne),a(K);var de=t(K,2),le=r(de),ve=t(le,2),Re=t(ve,2);a(de),a(n),D((u,je,Le)=>{l(J,e(s).content),l(Ee,`Storage: ${u??""}%`),l(Ne,`Retrieval: ${je??""}%`),l(Oe,`Created: ${Le??""}`)},[()=>(e(s).storageStrength*100).toFixed(1),()=>(e(s).retrievalStrength*100).toFixed(1),()=>new Date(e(s).createdAt).toLocaleDateString()]),x("click",le,u=>{u.stopPropagation(),F.memories.promote(e(s).id)}),x("click",ve,u=>{u.stopPropagation(),F.memories.demote(e(s).id)}),x("click",Re,u=>{u.stopPropagation(),F.memories.delete(e(s).id),m()}),_(i,n)};pe(Ce,i=>{var n;((n=e(P))==null?void 0:n.id)===e(s).id&&i(Ae)})}a(c),D((i,n)=>{var d;Ge(c,1,`text-left p-4 bg-surface/50 border border-subtle/20 rounded-lg hover:border-synapse/30 - hover:bg-surface transition-all duration-200 group - ${((d=e(P))==null?void 0:d.id)===e(s).id?"border-synapse/50 glow-synapse":""}`),xe(re,`background: ${(Ie[e(s).nodeType]||"#6b7280")??""}`),l(Te,e(s).nodeType),l(De,e(s).content),xe(Fe,`width: ${e(s).retentionStrength*100}%; background: ${i??""}`),l(Me,`${n??""}%`)},[()=>he(e(s).retentionStrength),()=>(e(s).retentionStrength*100).toFixed(0)]),x("click",c,()=>{var i;return p(P,((i=e(P))==null?void 0:i.id)===e(s).id?null:e(s),!0)}),_(y,c)}),a(v),_(o,v)};pe(Se,o=>{e(M)?o(ke):o(Pe,!1)})}a(C),D(o=>{l(ye,`${e(w).length??""} results`),l(we,`${o??""}%`)},[()=>(e(b)*100).toFixed(0)]),x("input",T,me),ue(T,()=>e(S),o=>p(S,o)),x("change",h,m),He(h,()=>e(k),o=>p(k,o)),x("change",$,m),ue($,()=>e(b),o=>p(b,o)),_(fe,C),ze()}Be(["input","change","click"]);export{ct as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/8.Dd_gKrfw.js.br b/apps/dashboard/build/_app/immutable/nodes/8.Dd_gKrfw.js.br deleted file mode 100644 index 6b05003df7de27c6102b5c26b6689f083753681e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2195 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 VI4{=xQSWX0Qv-LY^zw+X_1E!_Md1Jd diff --git a/apps/dashboard/build/_app/immutable/nodes/8.Dd_gKrfw.js.gz b/apps/dashboard/build/_app/immutable/nodes/8.Dd_gKrfw.js.gz deleted file mode 100644 index 0d469f3ea03f48a8f475b6a6e7a459f1bc53f2f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2536 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 diff --git a/apps/dashboard/build/_app/immutable/nodes/8.yF23YJzi.js b/apps/dashboard/build/_app/immutable/nodes/8.yF23YJzi.js new file mode 100644 index 0000000..a2bdb9f --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/8.yF23YJzi.js @@ -0,0 +1,4 @@ +import"../chunks/Bzak7iHL.js";import{o as qe}from"../chunks/BycUxjt3.js";import{p as Qe,s as b,c as Ye,t as E,g as e,a as ze,d as o,e as t,h as u,r as a}from"../chunks/DEYVqDYQ.js";import{d as Be,a as p,s as v}from"../chunks/ZM2C7QQX.js";import{i as ce}from"../chunks/CpubbTHs.js";import{e as Z,i as ue}from"../chunks/CiJhRXcr.js";import{a as x,f as g}from"../chunks/D5-kFxsM.js";import{b as _e,r as xe}from"../chunks/Bew31VOg.js";import{s as Ge}from"../chunks/zt9hmg4X.js";import{s as fe}from"../chunks/B9t3YtL9.js";import{b as He}from"../chunks/DNwVrE-V.js";import{a as f}from"../chunks/BcuCGYSa.js";import{N as Ie}from"../chunks/Dwpy08gq.js";var Je=g('
'),Ke=g('
'),Ue=g(' '),Ve=g('

Promote Demote Delete
'),We=g(''),Xe=g('
'),Ze=g(`

Memories

Min retention:
`);function ut(ge,me){Qe(me,!0);let k=b(Ye([])),P=b(""),S=b(""),be="",h=b(0),F=b(!0),T=b(null),ee;qe(()=>m());async function m(){u(F,!0);try{const r={};e(P)&&(r.q=e(P)),e(S)&&(r.node_type=e(S)),e(h)>0&&(r.min_retention=String(e(h)));const c=await f.memories.list(r);u(k,c.memories,!0)}catch{u(k,[],!0)}finally{u(F,!1)}}function he(){clearTimeout(ee),ee=setTimeout(m,300)}function ye(r){return r>.7?"#10b981":r>.4?"#f59e0b":"#ef4444"}var M=Ze(),C=o(M),te=t(o(C),2),we=o(te);a(te),a(C);var A=t(C,2),$=o(A);xe($);var y=t($,2),N=o(y);N.value=N.__value="";var O=t(N);O.value=O.__value="fact";var R=t(O);R.value=R.__value="concept";var j=t(R);j.value=j.__value="event";var L=t(j);L.value=L.__value="person";var q=t(L);q.value=q.__value="place";var Q=t(q);Q.value=Q.__value="note";var Y=t(Q);Y.value=Y.__value="pattern";var ae=t(Y);ae.value=ae.__value="decision",a(y);var oe=t(y,2),D=t(o(oe),2);xe(D);var re=t(D,2),ke=o(re);a(re),a(oe),a(A);var Pe=t(A,2);{var Se=r=>{var c=Ke();Z(c,20,()=>Array(8),ue,(w,s)=>{var _=Je();x(w,_)}),a(c),x(r,c)},Te=r=>{var c=Xe();Z(c,21,()=>e(k),w=>w.id,(w,s)=>{var _=We(),z=o(_),B=o(z),G=o(B),se=o(G),H=t(se,2),$e=o(H,!0);a(H);var De=t(H,2);Z(De,17,()=>e(s).tags.slice(0,3),ue,(n,d)=>{var l=Ue(),J=o(l,!0);a(l),E(()=>v(J,e(d))),x(n,l)}),a(G);var ie=t(G,2),Ee=o(ie,!0);a(ie),a(B);var ne=t(B,2),I=o(ne),Fe=o(I);a(I);var de=t(I,2),Me=o(de);a(de),a(ne),a(z);var Ce=t(z,2);{var Ae=n=>{var d=Ve(),l=o(d),J=o(l,!0);a(l);var K=t(l,2),U=o(K),Ne=o(U);a(U);var V=t(U,2),Oe=o(V);a(V);var le=t(V,2),Re=o(le);a(le),a(K);var pe=t(K,2),W=o(pe),X=t(W,2),ve=t(X,2);a(pe),a(d),E((i,je,Le)=>{v(J,e(s).content),v(Ne,`Storage: ${i??""}%`),v(Oe,`Retrieval: ${je??""}%`),v(Re,`Created: ${Le??""}`)},[()=>(e(s).storageStrength*100).toFixed(1),()=>(e(s).retrievalStrength*100).toFixed(1),()=>new Date(e(s).createdAt).toLocaleDateString()]),p("click",W,i=>{i.stopPropagation(),f.memories.promote(e(s).id)}),p("keydown",W,i=>{i.key==="Enter"&&(i.stopPropagation(),f.memories.promote(e(s).id))}),p("click",X,i=>{i.stopPropagation(),f.memories.demote(e(s).id)}),p("keydown",X,i=>{i.key==="Enter"&&(i.stopPropagation(),f.memories.demote(e(s).id))}),p("click",ve,async i=>{i.stopPropagation(),await f.memories.delete(e(s).id),m()}),p("keydown",ve,async i=>{i.key==="Enter"&&(i.stopPropagation(),await f.memories.delete(e(s).id),m())}),x(n,d)};ce(Ce,n=>{var d;((d=e(T))==null?void 0:d.id)===e(s).id&&n(Ae)})}a(_),E((n,d)=>{var l;Ge(_,1,`text-left p-4 bg-surface/50 border border-subtle/20 rounded-lg hover:border-synapse/30 + hover:bg-surface transition-all duration-200 group + ${((l=e(T))==null?void 0:l.id)===e(s).id?"border-synapse/50 glow-synapse":""}`),fe(se,`background: ${(Ie[e(s).nodeType]||"#6b7280")??""}`),v($e,e(s).nodeType),v(Ee,e(s).content),fe(Fe,`width: ${e(s).retentionStrength*100}%; background: ${n??""}`),v(Me,`${d??""}%`)},[()=>ye(e(s).retentionStrength),()=>(e(s).retentionStrength*100).toFixed(0)]),p("click",_,()=>{var n;return u(T,((n=e(T))==null?void 0:n.id)===e(s).id?null:e(s),!0)}),x(w,_)}),a(c),x(r,c)};ce(Pe,r=>{e(F)?r(Se):r(Te,!1)})}a(M),E(r=>{v(we,`${e(k).length??""} results`),v(ke,`${r??""}%`)},[()=>(e(h)*100).toFixed(0)]),p("input",$,he),_e($,()=>e(P),r=>u(P,r)),p("change",y,m),He(y,()=>e(S),r=>u(S,r)),p("change",D,m),_e(D,()=>e(h),r=>u(h,r)),x(ge,M),ze()}Be(["input","change","click","keydown"]);export{ut as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/8.yF23YJzi.js.br b/apps/dashboard/build/_app/immutable/nodes/8.yF23YJzi.js.br new file mode 100644 index 0000000000000000000000000000000000000000..79a5eef178cfd4c950f27384e446356727f1d735 GIT binary patch literal 2291 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 Running...',1),Xe=l('
Processed
'),Ze=l('
Decayed
'),et=l('
Embedded
'),tt=l('
'),st=l(' Dreaming...',1),at=l('
'),rt=l('
Insights Discovered:
',1),dt=l('
Connections found:
'),it=l('
Memories replayed:
'),ot=l('
'),nt=l('
'),vt=l('
'),lt=l('

Retention Distribution

'),ct=l('
'),xt=l(`

Settings & System

Memories
Avg Retention
WebSocket
v2.0
Vestige

Cognitive Operations

FSRS-6 Consolidation
Apply spaced-repetition decay, regenerate embeddings, run maintenance
Memory Dream Cycle
Replay memories, discover hidden connections, synthesize insights

Keyboard Shortcuts

About

V
Vestige v2.0 "Cognitive Leap"
Your AI's long-term memory system
29 cognitive modules
FSRS-6 spaced repetition
Nomic Embed v1.5 (256d)
Jina Reranker v1 Turbo
USearch HNSW (20x FAISS)
Local-first, zero cloud
Built with Rust + Axum + SvelteKit 2 + Svelte 5 + Three.js + Tailwind CSS 4
`);function kt(ge,_e){He(_e,!0);const ye=()=>te(Ue,"$memoryCount",N),K=()=>te(Ye,"$avgRetention",N),se=()=>te(qe,"$isConnected",N),[N,he]=Be();let E=k(!1),A=k(!1),y=k(null),b=k(null),we=k(null),$=k(null),ae=k(!0),ke=k(null);Je(()=>{O()});async function O(){m(ae,!0);try{const[a,o,c]=await Promise.all([T.stats().catch(()=>null),T.health().catch(()=>null),T.retentionDistribution().catch(()=>null)]);m(we,a,!0),m(ke,o,!0),m($,c,!0)}finally{m(ae,!1)}}async function Se(){m(E,!0),m(y,null);try{m(y,await T.consolidate(),!0),await O()}catch{}finally{m(E,!1)}}async function Ce(){m(A,!0),m(b,null);try{m(b,await T.dream(),!0),await O()}catch{}finally{m(A,!1)}}var V=xt(),z=t(V),Re=i(t(z),2);e(z);var H=i(z,2),J=t(H),re=t(J),$e=t(re,!0);e(re),_(2),e(J);var L=i(J,2),P=t(L),Ae=t(P);e(P),_(2),e(L);var de=i(L,2),ie=t(de),oe=t(ie),ne=i(oe,2),De=t(ne,!0);e(ne),e(ie),_(2),e(de),_(2),e(H);var W=i(H,2),B=i(t(W),2),U=t(B),I=i(t(U),2),Ge=t(I);{var Fe=a=>{var o=Qe();_(),v(a,o)},Me=a=>{var o=pe("Consolidate");v(a,o)};p(Ge,a=>{s(E)?a(Fe):a(Me,!1)})}e(I),e(U);var je=i(U,2);{var Te=a=>{var o=tt(),c=t(o),f=t(c);{var S=d=>{var r=Xe(),n=t(r),x=t(n,!0);e(n),_(2),e(r),w(()=>u(x,s(y).processed)),v(d,r)};p(f,d=>{s(y).processed!==void 0&&d(S)})}var g=i(f,2);{var h=d=>{var r=Ze(),n=t(r),x=t(n,!0);e(n),_(2),e(r),w(()=>u(x,s(y).decayed)),v(d,r)};p(g,d=>{s(y).decayed!==void 0&&d(h)})}var C=i(g,2);{var G=d=>{var r=et(),n=t(r),x=t(n,!0);e(n),_(2),e(r),w(()=>u(x,s(y).embedded)),v(d,r)};p(C,d=>{s(y).embedded!==void 0&&d(G)})}e(c),e(o),v(a,o)};p(je,a=>{s(y)&&a(Te)})}e(B);var ve=i(B,2),Y=t(ve),D=i(t(Y),2),Ee=t(D);{var Oe=a=>{var o=st();_(),v(a,o)},Ie=a=>{var o=pe("Dream");v(a,o)};p(Ee,a=>{s(A)?a(Oe):a(Ie,!1)})}e(D),e(Y);var Ke=i(Y,2);{var Ne=a=>{var o=ot(),c=t(o);{var f=d=>{var r=rt(),n=i(Pe(r),2);Z(n,17,()=>s(b).insights,ee,(x,F)=>{var R=at(),M=t(R,!0);e(R),w(q=>u(M,q),[()=>typeof s(F)=="string"?s(F):JSON.stringify(s(F))]),v(x,R)}),v(d,r)},S=j(()=>s(b).insights&&Array.isArray(s(b).insights));p(c,d=>{s(S)&&d(f)})}var g=i(c,2);{var h=d=>{var r=dt(),n=i(t(r)),x=t(n,!0);e(n),e(r),w(()=>u(x,s(b).connections_found)),v(d,r)};p(g,d=>{s(b).connections_found!==void 0&&d(h)})}var C=i(g,2);{var G=d=>{var r=it(),n=i(t(r)),x=t(n,!0);e(n),e(r),w(()=>u(x,s(b).memories_replayed)),v(d,r)};p(C,d=>{s(b).memories_replayed!==void 0&&d(G)})}e(o),v(a,o)};p(Ke,a=>{s(b)&&a(Ne)})}e(ve),e(W);var le=i(W,2);{var Ve=a=>{var o=lt(),c=i(t(o),2),f=t(c);{var S=h=>{var C=vt();Z(C,21,()=>s($).buckets,ee,(G,d,r)=>{const n=j(()=>Math.max(...s($).buckets.map(Q=>Q.count),1)),x=j(()=>s(d).count/s(n)*100),F=j(()=>r<2?"#ef4444":r<4?"#f59e0b":r<7?"#6366f1":"#10b981");var R=nt(),M=t(R),q=t(M,!0);e(M);var ue=i(M,2),ze=i(ue,2);ze.textContent=`${r*10}%`,e(R),w(Q=>{u(q,s(d).count),fe(ue,`height: ${Q??""}%; background: ${s(F)??""}; opacity: 0.7`)},[()=>Math.max(s(x),2)]),v(G,R)}),e(C),v(h,C)},g=j(()=>s($).buckets&&Array.isArray(s($).buckets));p(f,h=>{s(g)&&h(S)})}e(c),e(o),v(a,o)};p(le,a=>{s($)&&a(Ve)})}var ce=i(le,2),xe=i(t(ce),2),me=t(xe);Z(me,20,()=>[{key:"⌘ K",desc:"Command palette"},{key:"/",desc:"Focus search"},{key:"G",desc:"Go to Graph"},{key:"M",desc:"Go to Memories"},{key:"T",desc:"Go to Timeline"},{key:"F",desc:"Go to Feed"},{key:"E",desc:"Go to Explore"},{key:"S",desc:"Go to Stats"}],ee,(a,o)=>{var c=ct(),f=t(c),S=t(f,!0);e(f);var g=i(f,2),h=t(g,!0);e(g),e(c),w(()=>{u(S,o.key),u(h,o.desc)}),v(a,c)}),e(me),e(xe),e(ce),_(2),e(V),w(a=>{u($e,ye()),fe(P,`color: ${K()>.7?"#10b981":K()>.4?"#f59e0b":"#ef4444"}`),u(Ae,`${a??""}%`),be(oe,1,`w-2.5 h-2.5 rounded-full ${se()?"bg-recall animate-pulse-glow":"bg-decay"}`),u(De,se()?"Online":"Offline"),I.disabled=s(E),D.disabled=s(A),be(D,1,`px-4 py-2 bg-dream/20 border border-dream/40 text-dream-glow text-sm rounded-lg hover:bg-dream/30 transition disabled:opacity-50 flex items-center gap-2 - ${s(A)?"glow-dream animate-pulse-glow":""}`)},[()=>(K()*100).toFixed(1)]),X("click",Re,O),X("click",I,Se),X("click",D,Ce),v(ge,V),Le(),he()}We(["click"]);export{kt as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/9.CFdF6F7Z.js.br b/apps/dashboard/build/_app/immutable/nodes/9.CFdF6F7Z.js.br deleted file mode 100644 index d34ef51aa1ed32ece886cd1b99a7e928cf86e827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2972 zcmV;N3uE*fB_{x!gK^_rvU^eAZmp?Bwuy+i7$M25Uwc=5{c@Z&SKVvQi8_XwMJKGyPSI0?M>+#jkQIa(mM<-oh}Ou z0$G$7%FZDuh(@;|p`$2-e>%N}({6*B5(3W)9%=4Ik@&z1q)=1`j!(xG+^ZT_ZmnB~ zVU(@~!vcsXi{}M0HHw9@jHFF5~t% z#(Mk$MLQ_reeL#V0;Oh8MlRdN6fH1{m#TI@@&w;@;8A}Ozu>I4wmpILy!)o@d=ay3 z%_BWCgWg_@s(55$+^vDF-~3mjoukqS8ppR-ISAt<8OB5kZhb%61n&0vm$|W)F{+=! zvb}8oNMAvO%Vg%kjuk@OxH(_`^{_7&{sR$~uMJ@fy63FBzGN)vpE4jjB_c1go0HhI z+aK73X+jb%CYB$SZtcTz|Jc8;z(YQTqwvbo>zw-G?wev;XJ3j!oybp(TBfr?<7XjU zC$q<>ml4HgAtZFs&4Mv`8ujha2u8_EpPgVnrDq%pJo_qq zZ%VG}zALi`Mqk{=!C%og*QbKSKJ7baASbc#a7U{6S1K!O9|Fe$GtEMNB(n3ARF7#F zVG)##9pcdvo}TW&^2}Yst2_#VKLh#@FmQovF~{?{L7ocqkq|)9x-dh5QoE^V5k!z> zn_k1_IOYcg3M>N`8uG%bqrI9!Zsu@INj>wyN%=tL$^{(x0ZseYAvsP9e6R3e;N z4Q*~J&cAA)n?qWmDmlqY5=P=15o^daf%%w40z6)8#b!2TW3KduiQ@hXS)YDKFTdKr z0nc!X8F7xQ@xv3Xvm`O4XQ)0Nr>GHtv;@5rw7{n-CHx^zH59*+bT0P@N%~fB*Rz?G z+jsRX-7BW%8V2FBmY1P3R)J8!C+0Q@;!E|^k<@Xht5b)kl0v1ePmy7w^!XjQwU%b6 zrk)dD+)r{tDM@GGVoHIl@@ILfj_OHJF)~Vh&EdOgqewVtt@6rvUGCHy5Ml&oHg{vJw*Jq{6D8mmm_Gyb0>0W(BW;LDonari$-D2M8F)Cv z60rD{LwE+;242m%p~!l}WmgA{o83N6l?^}Z-*}wj&*Vc8X9bc{ZADkxium3-lNO@p z_VMl`^yJNtL>LQg?aHBZvq1h2|M|qZT8k_XbW6DPuOt-Oe&5X(A%5U5#1)f2ldipn z{ax?XD=)lTTUCziib3pSh&?O% z}*o=C*7=Rk1OOs&75IUEWVs#=TZNZU+Z{n7y9rhLsFJv92 z!?>1%Eh|6{7DZrxGEj~qsOQ4@6`92zMc`^*2E%T+te~;d-T7+mUcxBzdjopGSfcwM>0WmX6Y6{GX_LpDta1O1XZ1wCdA?lw7EL9wM$q# z)QS_DLKWhK42+Hf@URa$aYtvfv2YY}6TT_RE#N9;DtZbqK3<_h~E3CRoz`wRGH8i1Ep|hl?V$t?5Wn#ryVcTB?JilT#R>nAY z+B~BGrv;$4hT<#6@}W1vCM<Ksn-I~&l zhId%K&fj9%NVH27q^I03XF5o|#M0IiN1ULa474SIl-;`9D!5q|->)VMcQa}=5iXF> z(0o-a371W}6d&YPrcK<3aIxej{x#4TCBkfZX=USy&EN~mo5{as9ixbtEt_RU7ZcC6 zvFj~9z`$s6!NuevJgeqh=@c@f!!rV6N_VwSwnL)(nKFX}-5k8@vkGdT&Xn5&&5R{G zZqZk!>+4E4(WfvRuT>vfQ)ut*u2!Nl@c85`hA0fX?`B6kGrk>fHMrXSU(dkwu#e^5 zr>EPBC7fru{~cS{`g*Q|?BHO@H?6&W)c0@O;tZnVhbFa}#HC&AS`vF?S+3;rDcu9e z$ciDdt|mWdUvFHrclh{f_?0CMg&+CbQ^SDgh8Qk%U;7%(-&}V+22Tc~PhW31XM;i2(TPMLmyWI&$tGJns(h`s-Fio!n?08-0|8vYI!vR&ch9YJs!$}str*<_`f_5x+ zBTLXFlXmCfM{oHrEVrs}mENJXYOoo$2JlDlfJ}CLcI^X#OJx1y`0xgctji-mHQ0wO z&n5j*L;#^optcfALTO8ZG>Li9j(H9tCDq+TB(#Z1`~qBeU&z%)j@gh}De;{~*BRmu zIinIs`?P{&@xJU2KXjugcCF=%6N S|D_t6dPB)PY2GtXUD;bBrO7V< diff --git a/apps/dashboard/build/_app/immutable/nodes/9.CFdF6F7Z.js.gz b/apps/dashboard/build/_app/immutable/nodes/9.CFdF6F7Z.js.gz deleted file mode 100644 index 4b8da744e2260209a3b05044619fec34968d0f94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3399 zcmV-N4Y=|jiwFP!000026UAEFa@#o4zTSNbgyVI99f+1>JCm_YrEK{a$FXBM&Lpl> z43RB~HV+B`>R^}e_hM^r_kV=HYTs&}WUB#^qAVrx94ect2qe)!f8F@H(FE;>gE&!l zf(S{5yo*i16*dF7?TG73jWyP|t+UrVdun}GuqJpg`y?MvVi+tAD~ z;(FRwz&&hlcn=%NU2GHwY~QMLa3 z`rvd~Arq><+jUGA_33&rfK%Z{PfryA32q_(FR9Pkc$|~u^i3ds6R7N6+{HV9G zUd^AV{258&H1fc!bkiUpBJx9_pdtr;WHmQeaOx&GOCuDuZTl&&G5(8D>-obb{^Y6^ zj8!G*5#8bs>Bf<&NC^E-9C%ifY_8xKGB@b5RvnB#nt@@ez_XgCN$i4@;F&Sz_bKBa z9--RJU6X z4Xx&3B=MmnJHB+|Atc~!#TsS$hML~J!%aTI~8{5X=Ni{LiMj9ZN)!q?Q&ptXMr z?EWLP977l(oI$nWeT&daX*ip6DNygM7?8{l#L~|U)r3ECRA5}(`%X$Lg$Jt~^Hdk&s zUUN}&Vua0w%@~cinsw1L5{hwUR9PDbBpg>ns^TIvp3ic5-s0<2D!)6abU=*&Fj4kv zvk@PBnFUs}4NCb@Pm*QQo=64Z=1RZTB%7U7sW|##O6_B6+nDa`(>Sr3XV6VR_BU6| z9E-x_!8TJTp|>%;T{FARtmVIlNe}j|hjCh8TxNiM9~b0m}CKU=U0UP_L4}0F=&>M8A`8l0Xk4^a>ErB|he2PLebtq3|OG zk%(NFUDVmsJQ!Eja9^vV`||g?di4u0d}~#MEq~d|%`Q3Br1sKetJP9^C!Q}wCjf6F z9thW0lgfJaEBwHX{J}Qx3no)dfByuKp%ZLPXR|T>BJ)ONV^{= z%1xF0(<;TU6&0o!%$8-g2rv8T`};@}VuD%nU%896I&rGLcUnY%YqLV5O07=%_>)gK z4iG^v5uOi`s;IcqNeG@qW$)}N&e#0gJ9*iAd2u=|1Y}=$@km=>uCjSo>Q$?GQHr=P zhwkDcH`^fz?yJO_Zb+{{46H{*^7}YV$kyRgNrE`)RTLzl3F`@wS=l_l`#zeR(;a=F zFp+16B40SGY1V%xZec?hdufnYpT;}cW@R=VGTn5_GOy#%cZoh$B13#NqV@G>9xIEy z^dmveAQ90GBxG14=V{W3%Mx$fAQHDv4qmt45n8W~$==psyFD|@tJoDmrRyhBadHbu zOxz$&y)Sxd@d+3@re-y_Q$J8-Z{!-5mh^1pG;rHQYFoicG+v%xNm1 zZ-HA&h7PSbjg-Y-Gk%o!zQ=k9V?v};q&)DzF?8pZ^-F^9*_u-?n4U{zkP-NG+ zp-*azZ)NSoxuH=S1dMlzs}U5JOU0GIhfk`E-xR%#mq1bX-3ev)tRdtia!FzE31xR7 z6~j-m&QC*UahlJO;M6SJT|6JY!ktuqevr5X3i z@##w(cj_qmit#O!KSkNoLiCjp^-%FEl=V@_1IA;#@PY9N`(nV(9eft$8Y93N{Hb1V zdU;^xedqY}07q_X!``7`{H>$tHsgo-(Odm!A16L!jXNB)2aa%>`Z9LjV5EGaj1Q^c zF}vr-<=z2MYg)X6#TuDdV?g(TqoAa_?1i9vz%~RuHbi3gKo1e-TLbeNO?-<^*Ylp2 zRVZ8^*HJWPyz40HW>CF`C+($A5! z9G~_IB>N>Kpnf|N$Uce8Kxs{(P_RX5QIAvULr7@t_ISD3gd0EhNFoN4=-G{jD z+epCoj-o?gd`FY=y(Z-@l5!_A>!i#HsUDE>@F6MnE5!^QcXK3LNXHXR$HOTdcM$q} z1M3K3y)Qiax;%M2rK9QXmi(OY_FiS0|>(wR=i8UyNP3}`c4?`}B?+=Wr#<-S1n&Czd; zc^zh#-r7Ftk24FSVUgf(jSK%bW6R$)Kjoiv7KXUNjI&NmOWIq#ZIYW$^546SWwTzHU%KX-X3k zWlT91s&9v4Ol{jPkFi5Bpl_V!8{5U|jPaWGWlk@Tndd8#M(ppkYL)T5tTWlHzp#FQ z?%LYgnzfN^uD!5+=&t_^)eheM^uqe#+3K@r-I}#w{ZOlReturFj33UNs0b6rKRb#Z zXX|!s1X6U=F?!(^uTtDL8@FI%$=izY;72)EOLxiNYt{R|UGXf+-Z;&>lz!$@(2REh zM_=^;V_<_U-MxA7!m{rF)*v0>-t-dl^>FD915NidNOp9yL8|soSM1(|Y~ejg$GAK? zCihKD0&U@4pSRdO?-ib#x_CY=r+qpsyS%Tt(__oaeX}_&O2a|Uu_ev13&>-{MK1-q zxEPz_#|2HI5R>m1kT4;A^@epy5~k{ zB^TI>-Bc2(UulZo{k(TSCMqWTi5N^fk7qmcF9AjW`E38WA41?qQ`LL3{d)jj(YHI> zw>usLaWWm+p6za91#aDc)Zu~7%!0{vT;!pNG~RX;?Pfge8Xo4=0q;AC_OiYnu8W)J zmb;X;d2HXngz=R2d2FL*ld1)G4L?Gi1;+Z zQP#9El(GQY&=1OyRz%?a6(ZOIezkNb49l+=?*LYvHGVa!)a`ZB*S|A=Nw9P$fwC9) zh1z_}EdI7&kOtZLyR~6HV7p?H>Dd8phMh!u)i$h?ZdYG1erV_CpbplJe5ZWBr7`Uw zq?yxM^XCS0XS3#Uelk1#sQ=Z&Su^N&AI<*tFZ$n-DKjiommTLU^bC3=OB3{nnj~qf zc+Ve$M{AfWexa5d`0kCx&w!tl?+ Running...',1),Xe=l('
Processed
'),Ze=l('
Decayed
'),et=l('
Embedded
'),tt=l('
'),st=l(' Dreaming...',1),at=l('
'),rt=l('
Insights Discovered:
',1),it=l('
Connections found:
'),dt=l('
Memories replayed:
'),ot=l('
'),nt=l('
'),vt=l('
'),lt=l('

Retention Distribution

'),ct=l('
'),xt=l(`

Settings & System

Memories
Avg Retention
WebSocket
v2.0
Vestige

Cognitive Operations

FSRS-6 Consolidation
Apply spaced-repetition decay, regenerate embeddings, run maintenance
Memory Dream Cycle
Replay memories, discover hidden connections, synthesize insights

Keyboard Shortcuts

About

V
Vestige v2.0 "Cognitive Leap"
Your AI's long-term memory system
29 cognitive modules
FSRS-6 spaced repetition
Nomic Embed v1.5 (256d)
Jina Reranker v1 Turbo
USearch HNSW (20x FAISS)
Local-first, zero cloud
Built with Rust + Axum + SvelteKit 2 + Svelte 5 + Three.js + Tailwind CSS 4
`);function Ct(fe,_e){Je(_e,!0);const ye=()=>te(Ue,"$memoryCount",K),I=()=>te(Ye,"$avgRetention",K),se=()=>te(qe,"$isConnected",K),[K,he]=He();let E=S(!1),A=S(!1),y=S(null),b=S(null),we=S(null),$=S(null),ae=S(!0),Se=S(null);ze(()=>{O()});async function O(){m(ae,!0);try{const[a,o,c]=await Promise.all([T.stats().catch(()=>null),T.health().catch(()=>null),T.retentionDistribution().catch(()=>null)]);m(we,a,!0),m(Se,o,!0),m($,c,!0)}finally{m(ae,!1)}}async function ke(){m(E,!0),m(y,null);try{m(y,await T.consolidate(),!0),await O()}catch{}finally{m(E,!1)}}async function Ce(){m(A,!0),m(b,null);try{m(b,await T.dream(),!0),await O()}catch{}finally{m(A,!1)}}var N=xt(),V=t(N),Re=d(t(V),2);e(V);var z=d(V,2),J=t(z),re=t(J),$e=t(re,!0);e(re),_(2),e(J);var L=d(J,2),W=t(L),Ae=t(W);e(W),_(2),e(L);var ie=d(L,2),de=t(ie),oe=t(de),ne=d(oe,2),Ge=t(ne,!0);e(ne),e(de),_(2),e(ie),_(2),e(z);var B=d(z,2),H=d(t(B),2),U=t(H),P=d(t(U),2),De=t(P);{var Me=a=>{var o=Qe();_(),v(a,o)},Fe=a=>{var o=pe("Consolidate");v(a,o)};p(De,a=>{s(E)?a(Me):a(Fe,!1)})}e(P),e(U);var je=d(U,2);{var Te=a=>{var o=tt(),c=t(o),g=t(c);{var k=i=>{var r=Xe(),n=t(r),x=t(n,!0);e(n),_(2),e(r),w(()=>u(x,s(y).nodesProcessed)),v(i,r)};p(g,i=>{s(y).nodesProcessed!==void 0&&i(k)})}var f=d(g,2);{var h=i=>{var r=Ze(),n=t(r),x=t(n,!0);e(n),_(2),e(r),w(()=>u(x,s(y).decayApplied)),v(i,r)};p(f,i=>{s(y).decayApplied!==void 0&&i(h)})}var C=d(f,2);{var D=i=>{var r=et(),n=t(r),x=t(n,!0);e(n),_(2),e(r),w(()=>u(x,s(y).embeddingsGenerated)),v(i,r)};p(C,i=>{s(y).embeddingsGenerated!==void 0&&i(D)})}e(c),e(o),v(a,o)};p(je,a=>{s(y)&&a(Te)})}e(H);var ve=d(H,2),Y=t(ve),G=d(t(Y),2),Ee=t(G);{var Oe=a=>{var o=st();_(),v(a,o)},Pe=a=>{var o=pe("Dream");v(a,o)};p(Ee,a=>{s(A)?a(Oe):a(Pe,!1)})}e(G),e(Y);var Ie=d(Y,2);{var Ke=a=>{var o=ot(),c=t(o);{var g=i=>{var r=rt(),n=d(We(r),2);Z(n,17,()=>s(b).insights,ee,(x,M)=>{var R=at(),F=t(R,!0);e(R),w(q=>u(F,q),[()=>typeof s(M)=="string"?s(M):JSON.stringify(s(M))]),v(x,R)}),v(i,r)},k=j(()=>s(b).insights&&Array.isArray(s(b).insights));p(c,i=>{s(k)&&i(g)})}var f=d(c,2);{var h=i=>{var r=it(),n=d(t(r)),x=t(n,!0);e(n),e(r),w(()=>u(x,s(b).connections_found)),v(i,r)};p(f,i=>{s(b).connections_found!==void 0&&i(h)})}var C=d(f,2);{var D=i=>{var r=dt(),n=d(t(r)),x=t(n,!0);e(n),e(r),w(()=>u(x,s(b).memories_replayed)),v(i,r)};p(C,i=>{s(b).memories_replayed!==void 0&&i(D)})}e(o),v(a,o)};p(Ie,a=>{s(b)&&a(Ke)})}e(ve),e(B);var le=d(B,2);{var Ne=a=>{var o=lt(),c=d(t(o),2),g=t(c);{var k=h=>{var C=vt();Z(C,21,()=>s($).distribution,ee,(D,i,r)=>{const n=j(()=>Math.max(...s($).distribution.map(Q=>Q.count),1)),x=j(()=>s(i).count/s(n)*100),M=j(()=>r<2?"#ef4444":r<4?"#f59e0b":r<7?"#6366f1":"#10b981");var R=nt(),F=t(R),q=t(F,!0);e(F);var ue=d(F,2),Ve=d(ue,2);Ve.textContent=`${r*10}%`,e(R),w(Q=>{u(q,s(i).count),ge(ue,`height: ${Q??""}%; background: ${s(M)??""}; opacity: 0.7`)},[()=>Math.max(s(x),2)]),v(D,R)}),e(C),v(h,C)},f=j(()=>s($).distribution&&Array.isArray(s($).distribution));p(g,h=>{s(f)&&h(k)})}e(c),e(o),v(a,o)};p(le,a=>{s($)&&a(Ne)})}var ce=d(le,2),xe=d(t(ce),2),me=t(xe);Z(me,20,()=>[{key:"⌘ K",desc:"Command palette"},{key:"/",desc:"Focus search"},{key:"G",desc:"Go to Graph"},{key:"M",desc:"Go to Memories"},{key:"T",desc:"Go to Timeline"},{key:"F",desc:"Go to Feed"},{key:"E",desc:"Go to Explore"},{key:"S",desc:"Go to Stats"}],ee,(a,o)=>{var c=ct(),g=t(c),k=t(g,!0);e(g);var f=d(g,2),h=t(f,!0);e(f),e(c),w(()=>{u(k,o.key),u(h,o.desc)}),v(a,c)}),e(me),e(xe),e(ce),_(2),e(N),w(a=>{u($e,ye()),ge(W,`color: ${I()>.7?"#10b981":I()>.4?"#f59e0b":"#ef4444"}`),u(Ae,`${a??""}%`),be(oe,1,`w-2.5 h-2.5 rounded-full ${se()?"bg-recall animate-pulse-glow":"bg-decay"}`),u(Ge,se()?"Online":"Offline"),P.disabled=s(E),G.disabled=s(A),be(G,1,`px-4 py-2 bg-dream/20 border border-dream/40 text-dream-glow text-sm rounded-lg hover:bg-dream/30 transition disabled:opacity-50 flex items-center gap-2 + ${s(A)?"glow-dream animate-pulse-glow":""}`)},[()=>(I()*100).toFixed(1)]),X("click",Re,O),X("click",P,ke),X("click",G,Ce),v(fe,N),Le(),he()}Be(["click"]);export{Ct as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/9.DHKRJT48.js.br b/apps/dashboard/build/_app/immutable/nodes/9.DHKRJT48.js.br new file mode 100644 index 0000000000000000000000000000000000000000..217f75fb49314668756a838af52cad28c60d8aef GIT binary patch literal 3006 zcmV;v3qkZ7q$dEJ18&ni65)PC>+QNaNzozVr6VMn_5E_@xxJj!DM@`&h^GK>V#AMj z0=8c~q1`PwyTG#N&}8niILZQ}GG^v8T<2h`=#C6liM z#!s5C!kPWw)RKc2SCF;GUC0vio z*Y3wd;|$`{S1rMYuK2Gv0?&7jf3QRB)2`2k()RGIuqnDFnwvzEkZO7~6D8(c3lk|e zQ#H&Nvf_Ht(|Ql4x1qk+u8!(6s~_^K)&qs%-GH$MXBY|El8F7_zZQck&QN$nY3MV3SaXB zYmR=|n2JB=U~zLz;JVtAPTw-Uh$-8Yg?vJ;&o)wra>0S(|6ky9A2p32Y>e(p!r@^{ zw6L__>Vj_U$O;h0j9?q)LA<`m{594e8By(*V!}u6Mf-?;G1IMWkgv$op$a?muULXC zIV;uBr1|q*rtxo$oXezcVELvxVsYI~6d})5n##ZMt}xG(xo&r7V+Y+{U2wtIA^S9L z&=xv=7mIST7GXjvz&N)rYF!0uzq#r)~=K@ z4jZl1BnSm)umZ3bAPzK=_-|@r(svE9t#$zoVFY^5%35@0Y~hyuppgCeb}_(MU`+0& z{%M1g3DgQ_#;H)uFE|u<))n{~%hme6H+m7Yzqn7LzZNa;_Y8{t$$ppg@FyMNk($IY zuc@qTxVN0JOh;PgS0+1K_1u_=+DgNUu`N0p;!Uh3(Vua6_5J#bCf=7yS z7;bXx*969URr_3kG1?1~;2TGL-PCiE2x~=dy`+gxlK;Ck(r<0HMkEK0AtEa&gUO>Er-P3wfsfsdeb-;>r+yrOoQNFfg8FSYYg0(b>+I>sw+id<} zL`qd=nSf2=x>DduRTco*#@sM!#H?#bmkj9uBP-ZWqxsA~K3fNPU)ET}4lBK98M-O) ztiahy+fkrR^bry86a8GWIwCCh-lH0laU|c<+9W!s&9XXJn{;?&yTgY;fehdOHCcd9 zr2^>>SZ9^^Pk)9CV;6-I*4%D*c~x`-bv2Y9dY0e}Q=d(qC(j zJ6O%ZIoBMfs{1cw`*>jd%VybQxLjQT!zn?1#AIbLT_fpyW{0~Zp97381YRBdi9>bLRY1l_EBQ6k5A#!s z?ZLC9*KRH%z!Cw^O9;W$kE(6RNW1&gCy%bdf#E3U!RmXVOlXGv`dir77%cX?w7R;> zVu*igew?od9O#?|`V(tD*9oSfwJnF7&2LO>8#Dh~J-J{3b2_h@ z4>7cDKi!?LZ2ak;P+N_E7n1@X@sFv|05==nFZP?0&9BuOXwS`e7W-L7Ke&uZf^rcw z(4RhvAwEMPPDN5OPqpE##*OQRIRf+Jb;aFUK?UV%;|3Si9W2QDaC>zxT5$|71oQA> zC?geMw)T~A8`henl9IBcOa#7XOmmVF%ijNkzGsnnR-Upi%-|EIyb^#|%BwQP(p4y} zj)&bzt{w&_HobMQqn6UwE4;9Eq->9CxYRb*#HEs2!&lZ#(p9D5%7s@6V6{Zhb}WI= z4EI|oYLpvOjb^Wu6SLPUJDscECE4lKHZ4bGk7e|mLfAX8RO+!9&Z+;Z!GnkXPiNTr zskF@Rg?W00+KQt?kZ!F}1bz@s47AQVR-u>QAguA_ggr=rtTWS?_#=m?CYRm;AWMNn z)LUmTD;@ zD|jmsbB2%r!OWZ1sFVm^5>g|%rB-H}9)-O=q6U>mczCIIs~4`yy;N9uA;0y7<(V(O z9I12{)0uSJ^Hcc)qZHh`-vPNn*|e|A03Q&sj$?-KD{=F6a!GmlxLneMy_zWWGFN}0NU3xKrJq6gMLv6!T-M3i#o_7GB*AGEH>_F2d0%0vy1 z+r@^Or~c1$ zT^2(@psZvzQo^v0w+T0r?RGj1Desf73-HLru^fD=E>sNhY0KevbRy&HQ%3#KXekt| z*gfI*Z(YF#p~*A_Y8+kN6&)Q&oycbBKC3S81Q26uqbTaPe6N4KbA=xWo&U*Kl{qp! z>+i%zMZ8bQp+ot#f>Y1!-}KQf#s=}E%WM!6JNOh_Wckc-N3=mWZ*u4FIdc#QhmL11$n-``il{`g$nw5G|-w*(T3|H zFi}_p?sRuWX{fB7(An)bIrzQ{AV%Vz%_0ULm2YrBF(g5jsV*U0ugo4#SgU0jwuF~5 z8l1li=?2Xc28k!C7SQ?!K-bVSxOwBtxs84(XC&9Q1?sGbxu?;Qu{bZYrtj5``Bj3) zQQPonX`tsYg9iQH7ixvO4OMQi=M3r#E|{kP^Iik*;l__*>8UQ2uS6v)CWim*4fqG{ A%m4rY literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/9.DHKRJT48.js.gz b/apps/dashboard/build/_app/immutable/nodes/9.DHKRJT48.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..affe24c0c972c1085883a4d3170827c197d17d51 GIT binary patch literal 3424 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 CjK6aL literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/version.json b/apps/dashboard/build/_app/version.json index e3d29ff..90aa5b4 100644 --- a/apps/dashboard/build/_app/version.json +++ b/apps/dashboard/build/_app/version.json @@ -1 +1 @@ -{"version":"1771750550252"} \ No newline at end of file +{"version":"1771796675335"} \ No newline at end of file diff --git a/apps/dashboard/build/_app/version.json.br b/apps/dashboard/build/_app/version.json.br index 0917d024e043b97fe493d26d83a954ed02c9beb2..486c63fe71923af86391ef204e9fff88921f8d2f 100644 GIT binary patch literal 31 ncmb1^V)(&YlDtyi#PWN_x}-3sZU@%`e0_;4kNA}9%wz`uwKNOg literal 31 mcmd<)ZKzf%OD!tS%+FJ@QZh6*H#9djFf}zWGBr}FWd;C@uLt`8 diff --git a/apps/dashboard/build/_app/version.json.gz b/apps/dashboard/build/_app/version.json.gz index be281262f6babd38ce7c4d733063df7d00f011b8..23e9cc5a36667eef30cf83f01bcbae7dd0a57bbf 100644 GIT binary patch delta 25 gcmdPbpCB!=-Ne|~+|
diff --git a/apps/dashboard/src/routes/+layout.svelte b/apps/dashboard/src/routes/+layout.svelte index 50f89d0..5a4cda5 100644 --- a/apps/dashboard/src/routes/+layout.svelte +++ b/apps/dashboard/src/routes/+layout.svelte @@ -37,7 +37,7 @@ } // Single-key navigation shortcuts const shortcutMap: Record = { - g: '/', m: '/memories', t: '/timeline', f: '/feed', + g: '/graph', m: '/memories', t: '/timeline', f: '/feed', e: '/explore', i: '/intentions', s: '/stats', }; const target = shortcutMap[e.key.toLowerCase()]; @@ -55,7 +55,7 @@ }); const nav = [ - { href: '/', label: 'Graph', icon: '◎', shortcut: 'G' }, + { href: '/graph', label: 'Graph', icon: '◎', shortcut: 'G' }, { href: '/memories', label: 'Memories', icon: '◈', shortcut: 'M' }, { href: '/timeline', label: 'Timeline', icon: '◷', shortcut: 'T' }, { href: '/feed', label: 'Feed', icon: '◉', shortcut: 'F' }, @@ -69,9 +69,8 @@ const mobileNav = nav.slice(0, 5); function isActive(href: string, currentPath: string): boolean { - // Strip base prefix for comparison const path = currentPath.startsWith(base) ? currentPath.slice(base.length) || '/' : currentPath; - if (href === '/') return path === '/' || path === '/graph'; + if (href === '/graph') return path === '/' || path === '/graph'; return path.startsWith(href); } @@ -94,7 +93,7 @@