vendor: 8,435 bytes, lines 1-25
1var DS=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var zL=DS(nc=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const u of l.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&a(u)}).observe(document,{childList:!0,subtree:!0});function t(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function a(o){if(o.ep)return;o.ep=!0;const l=t(o);fetch(o.href,l)}})();var kh={exports:{}},Pl={};/** 2 * @license React 3 * react-jsx-runtime.production.js 4 * 5 * Copyright (c) Meta Platforms, Inc. and affiliates. 6 * 7 * This source code is licensed under the MIT license found in the 8 * LICENSE file in the root directory of this source tree. 9 */var Cv;function US(){if(Cv)return Pl;Cv=1;var n=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function t(a,o,l){var u=null;if(l!==void 0&&(u=""+l),o.key!==void 0&&(u=""+o.key),"key"in o){l={};for(var f in o)f!=="key"&&(l[f]=o[f])}else l=o;return o=l.ref,{$$typeof:n,type:a,key:u,ref:o!==void 0?o:null,props:l}}return Pl.Fragment=e,Pl.jsx=t,Pl.jsxs=t,Pl}var Av;function PS(){return Av||(Av=1,kh.exports=US()),kh.exports}var m=PS(),Gh={exports:{}},Ol={},Wh={exports:{}},Xh={};/** 10 * @license React 11 * scheduler.production.js 12 * 13 * Copyright (c) Meta Platforms, Inc. and affiliates. 14 * 15 * This source code is licensed under the MIT license found in the 16 * LICENSE file in the root directory of this source tree. 17 */var Rv;function OS(){return Rv||(Rv=1,(function(n){function e(j,Z){var Y=j.length;j.push(Z);e:for(;0<Y;){var he=Y-1>>>1,O=j[he];if(0<o(O,Z))j[he]=Z,j[Y]=O,Y=he;else break e}}function t(j){return j.length===0?null:j[0]}function a(j){if(j.length===0)return null;var Z=j[0],Y=j.pop();if(Y!==Z){j[0]=Y;e:for(var he=0,O=j.length,ee=O>>>1;he<ee;){var Me=2*(he+1)-1,be=j[Me],te=Me+1,xe=j[te];if(0>o(be,Y))te<O&&0>o(xe,be)?(j[he]=xe,j[te]=Y,he=te):(j[he]=be,j[Me]=Y,he=Me);else if(te<O&&0>o(xe,Y))j[he]=xe,j[te]=Y,he=te;else break e}}return Z}function o(j,Z){var Y=j.sortIndex-Z.sortIndex;return Y!==0?Y:j.id-Z.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var l=performance;n.unstable_now=function(){return l.now()}}else{var u=Date,f=u.now();n.unstable_now=function(){return u.now()-f}}var d=[],h=[],g=1,v=null,x=3,y=!1,b=!1,w=!1,M=!1,S=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,T=typeof setImmediate<"u"?setImmediate:null;function R(j){for(var Z=t(h);Z!==null;){if(Z.callback===null)a(h);else if(Z.startTime<=j)a(h),Z.sortIndex=Z.expirationTime,e(d,Z);else break;Z=t(h)}}function P(j){if(w=!1,R(j),!b)if(t(d)!==null)b=!0,I||(I=!0,ce());else{var Z=t(h);Z!==null&&me(P,Z.startTime-j)}}var I=!1,F=-1,V=5,U=-1;function L(){return M?!0:!(n.unstable_now()-U<V)}function z(){if(M=!1,I){var j=n.unstable_now();U=j;var Z=!0;try{e:{b=!1,w&&(w=!1,N(F),F=-1),y=!0;var Y=x;try{t:{for(R(j),v=t(d);v!==null&&!(v.expirationTime>j&&L());){var he=v.callback;if(typeof he=="function"){v.callback=null,x=v.priorityLevel;var O=he(v.expirationTime<=j);if(j=n.unstable_now(),typeof O=="function"){v.callback=O,R(j),Z=!0;break t}v===t(d)&&a(d),R(j)}else a(d);v=t(d)}if(v!==null)Z=!0;else{var ee=t(h);ee!==null&&me(P,ee.startTime-j),Z=!1}}break e}finally{v=null,x=Y,y=!1}Z=void 0}}finally{Z?ce():I=!1}}}var ce;if(typeof T=="function")ce=function(){T(z)};else if(typeof MessageChannel<"u"){var ue=new MessageChannel,ge=ue.port2;ue.port1.onmessage=z,ce=function(){ge.postMessage(null)}}else ce=function(){S(z,0)};function me(j,Z){F=S(function(){j(n.unstable_now())},Z)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(j){j.callback=null},n.unstable_forceFrameRate=function(j){0>j||125<j?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):V=0<j?Math.floor(1e3/j):5},n.unstable_getCurrentPriorityLevel=function(){return x},n.unstable_next=function(j){switch(x){case 1:case 2:case 3:var Z=3;break;default:Z=x}var Y=x;x=Z;try{return j()}finally{x=Y}},n.unstable_requestPaint=function(){M=!0},n.unstable_runWithPriority=function(j,Z){switch(j){case 1:case 2:case 3:case 4:case 5:break;default:j=3}var Y=x;x=j;try{return Z()}finally{x=Y}},n.unstable_scheduleCallback=function(j,Z,Y){var he=n.unstable_now();switch(typeof Y=="object"&&Y!==null?(Y=Y.delay,Y=typeof Y=="number"&&0<Y?he+Y:he):Y=he,j){case 1:var O=-1;break;case 2:O=250;break;case 5:O=1073741823;break;case 4:O=1e4;break;default:O=5e3}return O=Y+O,j={id:g++,callback:Z,priorityLevel:j,startTime:Y,expirationTime:O,sortIndex:-1},Y>he?(j.sortIndex=Y,e(h,j),t(d)===null&&j===t(h)&&(w?(N(F),F=-1):w=!0,me(P,Y-he))):(j.sortIndex=O,e(d,j),b||y||(b=!0,I||(I=!0,ce()))),j},n.unstable_shouldYield=L,n.unstable_wrapCallback=function(j){var Z=x;return function(){var Y=x;x=Z;try{return j.apply(this,arguments)}finally{x=Y}}}})(Xh)),Xh}var Nv;function IS(){return Nv||(Nv=1,Wh.exports=OS()),Wh.exports}var qh={exports:{}},dt={};/** 18 * @license React 19 * react.production.js 20 * 21 * Copyright (c) Meta Platforms, Inc. and affiliates. 22 * 23 * This source code is licensed under the MIT license found in the 24 * LICENSE file in the root directory of this source tree. 25 */var Lv;function BS(){if(Lv)return dt;Lv=1;var n=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),v=Symbol.iterator;function x(O){return O===null||typeof O!="object"?null:(O=v&&O[v]||O["@@iterator"],typeof O=="function"?O:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,w={};function M(O,ee,Me){this.props=O,this.context=ee,this.refs=w,this.updater=Me||y}M.prototype.isReactComponent={},M.prototype.setState=function(O,ee){if(typeof O!="object"&&typeof O!="function"&&O!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,O,ee,"setState")},M.prototype.forceUpdate=function(O){this.updater.enqueueForceUpdate(this,O,"forceUpdate")};function S(){}S.prototype=M.prototype;function N(O,ee,Me){this.props=O,this.context=ee,this.refs=w,this.updater=Me||y}var T=N.prototype=new S;T.constructor=N,b(T,M.prototype),T.isPureReactComponent=!0;var R=Array.isArray,P={H:null,A:null,T:null,S:null,V:null},I=Object.prototype.hasOwnProperty;function F(O,ee,Me,be,te,xe){return Me=xe.ref,{$$typeof:n,type:O,key:ee,ref:Me!==void 0?Me:null,props:xe}}function V(O,ee){return F(O.type,ee,void 0,void 0,void 0,O.props)}function U(O){return typeof O=="object"&&O!==null&&O.$$typeof===n}function L(O){var ee={"=":"=0",":":"=2"};return"$"+O.replace(/[=:]/g,function(Me){return ee[Me]})}var z=/\/+/g;function ce(O,ee){return typeof O=="object"&&O!==null&&O.key!=null?L(""+O.key):ee.toString(36)}function ue(){}function ge(O){switch(O.status){case"fulfilled":return O.value;case"rejected":throw O.reason;default:switch(typeof O.status=="string"?O.then(ue,ue):(O.status="pending",O.then(function(ee){O.status==="pending"&&(O.status="fulfilled",O.value=ee)},function(ee){O.status==="pending"&&(O.status="rejected",O.reason=ee)})),O.status){case"fulfilled":return O.value;case"rejected":throw O.reason}}throw O}function me(O,ee,Me,be,te){var xe=typeof O;(xe==="undefined"||xe==="boolean")&&(O=null);var Ee=!1;if(O===null)Ee=!0;else switch(xe){case"bigint":case"string":case"number":Ee=!0;break;case"object":switch(O.$$typeof){case n:case e:Ee=!0;break;case g:return Ee=O._init,me(Ee(O._payload),ee,Me,be,te)}}if(Ee)return te=te(O),Ee=be===""?"."+ce(O,0):be,R(te)?(Me="",Ee!=null&&(Me=Ee.replace(z,"$&/")+"/"),me(te,ee,Me,"",function(ut){return ut}
vendor: 5,143 bytes, line 25
25)):te!=null&&(U(te)&&(te=V(te,Me+(te.key==null||O&&O.key===te.key?"":(""+te.key).replace(z,"$&/")+"/")+Ee)),ee.push(te)),1;Ee=0;var Te=be===""?".":be+":";if(R(O))for(var Ue=0;Ue<O.length;Ue++)be=O[Ue],xe=Te+ce(be,Ue),Ee+=me(be,ee,Me,xe,te);else if(Ue=x(O),typeof Ue=="function")for(O=Ue.call(O),Ue=0;!(be=O.next()).done;)be=be.value,xe=Te+ce(be,Ue++),Ee+=me(be,ee,Me,xe,te);else if(xe==="object"){if(typeof O.then=="function")return me(ge(O),ee,Me,be,te);throw ee=String(O),Error("Objects are not valid as a React child (found: "+(ee==="[object Object]"?"object with keys {"+Object.keys(O).join(", ")+"}":ee)+"). If you meant to render a collection of children, use an array instead.")}return Ee}function j(O,ee,Me){if(O==null)return O;var be=[],te=0;return me(O,be,"","",function(xe){return ee.call(Me,xe,te++)}),be}function Z(O){if(O._status===-1){var ee=O._result;ee=ee(),ee.then(function(Me){(O._status===0||O._status===-1)&&(O._status=1,O._result=Me)},function(Me){(O._status===0||O._status===-1)&&(O._status=2,O._result=Me)}),O._status===-1&&(O._status=0,O._result=ee)}if(O._status===1)return O._result.default;throw O._result}var Y=typeof reportError=="function"?reportError:function(O){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var ee=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof O=="object"&&O!==null&&typeof O.message=="string"?String(O.message):String(O),error:O});if(!window.dispatchEvent(ee))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",O);return}console.error(O)};function he(){}return dt.Children={map:j,forEach:function(O,ee,Me){j(O,function(){ee.apply(this,arguments)},Me)},count:function(O){var ee=0;return j(O,function(){ee++}),ee},toArray:function(O){return j(O,function(ee){return ee})||[]},only:function(O){if(!U(O))throw Error("React.Children.only expected to receive a single React element child.");return O}},dt.Component=M,dt.Fragment=t,dt.Profiler=o,dt.PureComponent=N,dt.StrictMode=a,dt.Suspense=d,dt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=P,dt.__COMPILER_RUNTIME={__proto__:null,c:function(O){return P.H.useMemoCache(O)}},dt.cache=function(O){return function(){return O.apply(null,arguments)}},dt.cloneElement=function(O,ee,Me){if(O==null)throw Error("The argument must be a React element, but you passed "+O+".");var be=b({},O.props),te=O.key,xe=void 0;if(ee!=null)for(Ee in ee.ref!==void 0&&(xe=void 0),ee.key!==void 0&&(te=""+ee.key),ee)!I.call(ee,Ee)||Ee==="key"||Ee==="__self"||Ee==="__source"||Ee==="ref"&&ee.ref===void 0||(be[Ee]=ee[Ee]);var Ee=arguments.length-2;if(Ee===1)be.children=Me;else if(1<Ee){for(var Te=Array(Ee),Ue=0;Ue<Ee;Ue++)Te[Ue]=arguments[Ue+2];be.children=Te}return F(O.type,te,void 0,void 0,xe,be)},dt.createContext=function(O){return O={$$typeof:u,_currentValue:O,_currentValue2:O,_threadCount:0,Provider:null,Consumer:null},O.Provider=O,O.Consumer={$$typeof:l,_context:O},O},dt.createElement=function(O,ee,Me){var be,te={},xe=null;if(ee!=null)for(be in ee.key!==void 0&&(xe=""+ee.key),ee)I.call(ee,be)&&be!=="key"&&be!=="__self"&&be!=="__source"&&(te[be]=ee[be]);var Ee=arguments.length-2;if(Ee===1)te.children=Me;else if(1<Ee){for(var Te=Array(Ee),Ue=0;Ue<Ee;Ue++)Te[Ue]=arguments[Ue+2];te.children=Te}if(O&&O.defaultProps)for(be in Ee=O.defaultProps,Ee)te[be]===void 0&&(te[be]=Ee[be]);return F(O,xe,void 0,void 0,null,te)},dt.createRef=function(){return{current:null}},dt.forwardRef=function(O){return{$$typeof:f,render:O}},dt.isValidElement=U,dt.lazy=function(O){return{$$typeof:g,_payload:{_status:-1,_result:O},_init:Z}},dt.memo=function(O,ee){return{$$typeof:h,type:O,compare:ee===void 0?null:ee}},dt.startTransition=function(O){var ee=P.T,Me={};P.T=Me;try{var be=O(),te=P.S;te!==null&&te(Me,be),typeof be=="object"&&be!==null&&typeof be.then=="function"&&be.then(he,Y)}catch(xe){Y(xe)}finally{P.T=ee}},dt.unstable_useCacheRefresh=function(){return P.H.useCacheRefresh()},dt.use=function(O){return P.H.use(O)},dt.useActionState=function(O,ee,Me){return P.H.useActionState(O,ee,Me)},dt.useCallback=function(O,ee){return P.H.useCallback(O,ee)},dt.useContext=function(O){return P.H.useContext(O)},dt.useDebugValue=function(){},dt.useDeferredValue=function(O,ee){return P.H.useDeferredValue(O,ee)},dt.useEffect=function(O,ee,Me){var be=P.H;if(typeof Me=="function")throw Error("useEffect CRUD overload is not enabled in this build of React.");return be.useEffect(O,ee)},dt.useId=function(){return P.H.useId()},dt.useImperativeHandle=function(O,ee,Me){return P.H.useImperativeHandle(O,ee,Me)},dt.useInsertionEffect=function(O,ee){return P.H.useInsertionEffect(O,ee)},dt.useLayoutEffect=function(O,ee){return P.H.useLayoutEffect(O,ee)},dt.useMemo=function(O,ee){return P.H.useMemo(O,ee)},dt.useOptimistic=function(O,ee){return P.H.useOptimistic(O,ee)},dt.useReducer=function(O,ee,Me){return P.H.useReducer(O,ee,Me)},dt.useRef=function(O){return P.H.useRef(O)},dt.useState=function(O){return P.H.useState(O)},dt.useSyncExternalStore=function(O,ee,Me){return P.H.useSyncExternalStore(O,ee,Me)},dt.useTransition=function(){return P.H.useTransition()}
vendor: 5,094 bytes, lines 25-41
25,dt.version="19.1.1",dt}var Dv;function Bs(){return Dv||(Dv=1,qh.exports=BS()),qh.exports}var Yh={exports:{}},Fn={};/** 26 * @license React 27 * react-dom.production.js 28 * 29 * Copyright (c) Meta Platforms, Inc. and affiliates. 30 * 31 * This source code is licensed under the MIT license found in the 32 * LICENSE file in the root directory of this source tree. 33 */var Uv;function FS(){if(Uv)return Fn;Uv=1;var n=Bs();function e(d){var h="https://react.dev/errors/"+d;if(1<arguments.length){h+="?args[]="+encodeURIComponent(arguments[1]);for(var g=2;g<arguments.length;g++)h+="&args[]="+encodeURIComponent(arguments[g])}return"Minified React error #"+d+"; visit "+h+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function t(){}var a={d:{f:t,r:function(){throw Error(e(522))},D:t,C:t,L:t,m:t,X:t,S:t,M:t},p:0,findDOMNode:null},o=Symbol.for("react.portal");function l(d,h,g){var v=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:v==null?null:""+v,children:d,containerInfo:h,implementation:g}}var u=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function f(d,h){if(d==="font")return"";if(typeof h=="string")return h==="use-credentials"?h:""}return Fn.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=a,Fn.createPortal=function(d,h){var g=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!h||h.nodeType!==1&&h.nodeType!==9&&h.nodeType!==11)throw Error(e(299));return l(d,h,null,g)},Fn.flushSync=function(d){var h=u.T,g=a.p;try{if(u.T=null,a.p=2,d)return d()}finally{u.T=h,a.p=g,a.d.f()}},Fn.preconnect=function(d,h){typeof d=="string"&&(h?(h=h.crossOrigin,h=typeof h=="string"?h==="use-credentials"?h:"":void 0):h=null,a.d.C(d,h))},Fn.prefetchDNS=function(d){typeof d=="string"&&a.d.D(d)},Fn.preinit=function(d,h){if(typeof d=="string"&&h&&typeof h.as=="string"){var g=h.as,v=f(g,h.crossOrigin),x=typeof h.integrity=="string"?h.integrity:void 0,y=typeof h.fetchPriority=="string"?h.fetchPriority:void 0;g==="style"?a.d.S(d,typeof h.precedence=="string"?h.precedence:void 0,{crossOrigin:v,integrity:x,fetchPriority:y}):g==="script"&&a.d.X(d,{crossOrigin:v,integrity:x,fetchPriority:y,nonce:typeof h.nonce=="string"?h.nonce:void 0})}},Fn.preinitModule=function(d,h){if(typeof d=="string")if(typeof h=="object"&&h!==null){if(h.as==null||h.as==="script"){var g=f(h.as,h.crossOrigin);a.d.M(d,{crossOrigin:g,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0})}}else h==null&&a.d.M(d)},Fn.preload=function(d,h){if(typeof d=="string"&&typeof h=="object"&&h!==null&&typeof h.as=="string"){var g=h.as,v=f(g,h.crossOrigin);a.d.L(d,g,{crossOrigin:v,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0,type:typeof h.type=="string"?h.type:void 0,fetchPriority:typeof h.fetchPriority=="string"?h.fetchPriority:void 0,referrerPolicy:typeof h.referrerPolicy=="string"?h.referrerPolicy:void 0,imageSrcSet:typeof h.imageSrcSet=="string"?h.imageSrcSet:void 0,imageSizes:typeof h.imageSizes=="string"?h.imageSizes:void 0,media:typeof h.media=="string"?h.media:void 0})}},Fn.preloadModule=function(d,h){if(typeof d=="string")if(h){var g=f(h.as,h.crossOrigin);a.d.m(d,{as:typeof h.as=="string"&&h.as!=="script"?h.as:void 0,crossOrigin:g,integrity:typeof h.integrity=="string"?h.integrity:void 0})}else a.d.m(d)},Fn.requestFormReset=function(d){a.d.r(d)},Fn.unstable_batchedUpdates=function(d,h){return d(h)},Fn.useFormState=function(d,h,g){return u.H.useFormState(d,h,g)},Fn.useFormStatus=function(){return u.H.useHostTransitionStatus()},Fn.version="19.1.1",Fn}var Pv;function zS(){if(Pv)return Yh.exports;Pv=1;function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),Yh.exports=FS(),Yh.exports}/** 34 * @license React 35 * react-dom-client.production.js 36 * 37 * Copyright (c) Meta Platforms, Inc. and affiliates. 38 * 39 * This source code is licensed under the MIT license found in the 40 * LICENSE file in the root directory of this source tree. 41 */var Ov;function VS(){if(Ov)return Ol;Ov=1;var n=IS(),e=Bs(),t=zS();function a(i){var s="https://react.dev/errors/"+i;if(1<arguments.length){s+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)s+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+i+"; visit "+s+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(i){return!(!i||i.nodeType!==1&&i.nodeType!==9&&i.nodeType!==11)}function l(i){var s=i,r=i;if(i.alternate)for(;s.return;)s=s.return;else{i=s;do s=i,(s.flags&4098)!==0&&(r=s.return),i=s.return;while(i)}return s.tag===3?r:null}function u(i){if(i.tag===13){var s=i.memoizedState;if(s===null&&(i=i.alternate,i!==null&&(s=i.memoizedState)),s!==null)return s.dehydrated}return null}function f(i){if(l(i)!==i)throw Error(a(188))}function d(i){var s=i.alternate;
vendor: 18,848 bytes, lines 41-48
41if(!s){if(s=l(i),s===null)throw Error(a(188));return s!==i?null:i}for(var r=i,c=s;;){var p=r.return;if(p===null)break;var _=p.alternate;if(_===null){if(c=p.return,c!==null){r=c;continue}break}if(p.child===_.child){for(_=p.child;_;){if(_===r)return f(p),i;if(_===c)return f(p),s;_=_.sibling}throw Error(a(188))}if(r.return!==c.return)r=p,c=_;else{for(var E=!1,A=p.child;A;){if(A===r){E=!0,r=p,c=_;break}if(A===c){E=!0,c=p,r=_;break}A=A.sibling}if(!E){for(A=_.child;A;){if(A===r){E=!0,r=_,c=p;break}if(A===c){E=!0,c=_,r=p;break}A=A.sibling}if(!E)throw Error(a(189))}}if(r.alternate!==c)throw Error(a(190))}if(r.tag!==3)throw Error(a(188));return r.stateNode.current===r?i:s}function h(i){var s=i.tag;if(s===5||s===26||s===27||s===6)return i;for(i=i.child;i!==null;){if(s=h(i),s!==null)return s;i=i.sibling}return null}var g=Object.assign,v=Symbol.for("react.element"),x=Symbol.for("react.transitional.element"),y=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),w=Symbol.for("react.strict_mode"),M=Symbol.for("react.profiler"),S=Symbol.for("react.provider"),N=Symbol.for("react.consumer"),T=Symbol.for("react.context"),R=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),I=Symbol.for("react.suspense_list"),F=Symbol.for("react.memo"),V=Symbol.for("react.lazy"),U=Symbol.for("react.activity"),L=Symbol.for("react.memo_cache_sentinel"),z=Symbol.iterator;function ce(i){return i===null||typeof i!="object"?null:(i=z&&i[z]||i["@@iterator"],typeof i=="function"?i:null)}var ue=Symbol.for("react.client.reference");function ge(i){if(i==null)return null;if(typeof i=="function")return i.$$typeof===ue?null:i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case b:return"Fragment";case M:return"Profiler";case w:return"StrictMode";case P:return"Suspense";case I:return"SuspenseList";case U:return"Activity"}if(typeof i=="object")switch(i.$$typeof){case y:return"Portal";case T:return(i.displayName||"Context")+".Provider";case N:return(i._context.displayName||"Context")+".Consumer";case R:var s=i.render;return i=i.displayName,i||(i=s.displayName||s.name||"",i=i!==""?"ForwardRef("+i+")":"ForwardRef"),i;case F:return s=i.displayName||null,s!==null?s:ge(i.type)||"Memo";case V:s=i._payload,i=i._init;try{return ge(i(s))}catch{}}return null}var me=Array.isArray,j=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z=t.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Y={pending:!1,data:null,method:null,action:null},he=[],O=-1;function ee(i){return{current:i}}function Me(i){0>O||(i.current=he[O],he[O]=null,O--)}function be(i,s){O++,he[O]=i.current,i.current=s}var te=ee(null),xe=ee(null),Ee=ee(null),Te=ee(null);function Ue(i,s){switch(be(Ee,s),be(xe,i),be(te,null),s.nodeType){case 9:case 11:i=(i=s.documentElement)&&(i=i.namespaceURI)?tv(i):0;break;default:if(i=s.tagName,s=s.namespaceURI)s=tv(s),i=nv(s,i);else switch(i){case"svg":i=1;break;case"math":i=2;break;default:i=0}}Me(te),be(te,i)}function ut(){Me(te),Me(xe),Me(Ee)}function Qe(i){i.memoizedState!==null&&be(Te,i);var s=te.current,r=nv(s,i.type);s!==r&&(be(xe,i),be(te,r))}function Et(i){xe.current===i&&(Me(te),Me(xe)),Te.current===i&&(Me(Te),Rl._currentValue=Y)}var Ut=Object.prototype.hasOwnProperty,gt=n.unstable_scheduleCallback,k=n.unstable_cancelCallback,Xt=n.unstable_shouldYield,ft=n.unstable_requestPaint,rt=n.unstable_now,He=n.unstable_getCurrentPriorityLevel,vt=n.unstable_ImmediatePriority,Ke=n.unstable_UserBlockingPriority,ot=n.unstable_NormalPriority,$t=n.unstable_LowPriority,B=n.unstable_IdlePriority,C=n.log,J=n.unstable_setDisableYieldValue,de=null,fe=null;function q(i){if(typeof C=="function"&&J(i),fe&&typeof fe.setStrictMode=="function")try{fe.setStrictMode(de,i)}catch{}}var Ae=Math.clz32?Math.clz32:Ge,Le=Math.log,ze=Math.LN2;function Ge(i){return i>>>=0,i===0?32:31-(Le(i)/ze|0)|0}var _e=256,Re=4194304;function Be(i){var s=i&42;if(s!==0)return s;switch(i&-i){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return i&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return i}}function We(i,s,r){var c=i.pendingLanes;if(c===0)return 0;var p=0,_=i.suspendedLanes,E=i.pingedLanes;i=i.warmLanes;var A=c&134217727;return A!==0?(c=A&~_,c!==0?p=Be(c):(E&=A,E!==0?p=Be(E):r||(r=A&~i,r!==0&&(p=Be(r))))):(A=c&~_,A!==0?p=Be(A):E!==0?p=Be(E):r||(r=c&~i,r!==0&&(p=Be(r)))),p===0?0:s!==0&&s!==p&&(s&_)===0&&(_=p&-p,r=s&-s,_>=r||_===32&&(r&4194048)!==0)?s:p}function De(i,s){return(i.pendingLanes&~(i.suspendedLanes&~i.pingedLanes)&s)===0}function tt(i,s){switch(i){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return s+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function W(){var i=_e;return _e<<=1,(_e&4194048)===0&&(_e=256),i}function Pe(){var i=Re;return Re<<=1,(Re&62914560)===0&&(Re=4194304),i}function we(i){for(var s=[],r=0;31>r;r++)s.push(i);return s}function Ve(i,s){i.pendingLanes|=s,s!==268435456&&(i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0)}function Ce(i,s,r,c,p,_){var E=i.pendingLanes;i.pendingLanes=r,i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0,i.expiredLanes&=r,i.entangledLanes&=r,i.errorRecoveryDisabledLanes&=r,i.shellSuspendCounter=0;var A=i.entanglements,H=i.expirationTimes,ie=i.hiddenUpdates;for(r=E&~r;0<r;){var pe=31-Ae(r),ye=1<<pe;A[pe]=0,H[pe]=-1;var se=ie[pe];if(se!==null)for(ie[pe]=null,pe=0;pe<se.length;pe++){var ae=se[pe];ae!==null&&(ae.lane&=-536870913)}r&=~ye}c!==0&&Se(i,c,0),_!==0&&p===0&&i.tag!==0&&(i.suspendedLanes|=_&~(E&~s))}function Se(i,s,r){i.pendingLanes|=s,i.suspendedLanes&=~s;var c=31-Ae(s);i.entangledLanes|=s,i.entanglements[c]=i.entanglements[c]|1073741824|r&4194090}function Xe(i,s){var r=i.entangledLanes|=s;for(i=i.entanglements;r;){var c=31-Ae(r),p=1<<c;p&s|i[c]&s&&(i[c]|=s),r&=~p}}function lt(i){switch(i){case 2:i=1;break;case 8:i=4;break;case 32:i=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:i=128;break;case 268435456:i=134217728;break;default:i=0}return i}function It(i){return i&=-i,2<i?8<i?(i&134217727)!==0?32:268435456:8:2}function Rt(){var i=Z.p;return i!==0?i:(i=window.event,i===void 0?32:Sv(i.type))}function ni(i,s){var r=Z.p;try{return Z.p=i,s()}finally{Z.p=r}}var bn=Math.random().toString(36).slice(2),vn="__reactFiber$"+bn,Nn="__reactProps$"+bn,Xn="__reactContainer$"+bn,Ia="__reactEvents$"+bn,Cc="__reactListeners$"+bn,Ac="__reactHandles$"+bn,Ba="__reactResources$"+bn,qs="__reactMarker$"+bn;function Ys(i){delete i[vn],delete i[Nn],delete i[Ia],delete i[Cc],delete i[Ac]}function ns(i){var s=i[vn];if(s)return s;for(var r=i.parentNode;r;){if(s=r[Xn]||r[vn]){if(r=s.alternate,s.child!==null||r!==null&&r.child!==null)for(i=rv(i);i!==null;){if(r=i[vn])return r;i=rv(i)}return s}i=r,r=i.parentNode}return null}function is(i){if(i=i[vn]||i[Xn]){var s=i.tag;if(s===5||s===6||s===13||s===26||s===27||s===3)return i}return null}function Fa(i){var s=i.tag;if(s===5||s===26||s===27||s===6)return i.stateNode;throw Error(a(33))}function Zs(i){var s=i[Ba];return s||(s=i[Ba]={hoistableStyles:new Map,hoistableScripts:new Map}),s}function un(i){i[qs]=!0}var Rc=new Set,Nc={};function ss(i,s){D(i,s),D(i+"Capture",s)}function D(i,s){for(Nc[i]=s,i=0;i<s.length;i++)Rc.add(s[i])}var Q=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),re={},oe={};function $(i){return Ut.call(oe,i)?!0:Ut.call(re,i)?!1:Q.test(i)?oe[i]=!0:(re[i]=!0,!1)}function Ne(i,s,r){if($(s))if(r===null)i.removeAttribute(s);else{switch(typeof r){case"undefined":case"function":case"symbol":i.removeAttribute(s);return;case"boolean":var c=s.toLowerCase().slice(0,5);if(c!=="data-"&&c!=="aria-"){i.removeAttribute(s);return}}i.setAttribute(s,""+r)}}function Oe(i,s,r){if(r===null)i.removeAttribute(s);else{switch(typeof r){case"undefined":case"function":case"symbol":case"boolean":i.removeAttribute(s);return}i.setAttribute(s,""+r)}}function je(i,s,r,c){if(c===null)i.removeAttribute(r);else{switch(typeof c){case"undefined":case"function":case"symbol":case"boolean":i.removeAttribute(r);return}i.setAttributeNS(s,r,""+c)}}var ke,it;function Je(i){if(ke===void 0)try{throw Error()}catch(r){var s=r.stack.trim().match(/\n( *(at )?)/);ke=s&&s[1]||"",it=-1<r.stack.indexOf(` 42 at`)?" (<anonymous>)":-1<r.stack.indexOf("@")?"@unknown:0:0":""}return` 43`+ke+i+it}var Ye=!1;function pt(i,s){if(!i||Ye)return"";Ye=!0;var r=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var c={DetermineComponentFrameRoot:function(){try{if(s){var ye=function(){throw Error()};if(Object.defineProperty(ye.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ye,[])}catch(ae){var se=ae}Reflect.construct(i,[],ye)}else{try{ye.call()}catch(ae){se=ae}i.call(ye.prototype)}}else{try{throw Error()}catch(ae){se=ae}(ye=i())&&typeof ye.catch=="function"&&ye.catch(function(){})}}catch(ae){if(ae&&se&&typeof ae.stack=="string")return[ae.stack,se.stack]}return[null,null]}};c.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(c.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(c.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var _=c.DetermineComponentFrameRoot(),E=_[0],A=_[1];if(E&&A){var H=E.split(` 44`),ie=A.split(` 45`);for(p=c=0;c<H.length&&!H[c].includes("DetermineComponentFrameRoot");)c++;for(;p<ie.length&&!ie[p].includes("DetermineComponentFrameRoot");)p++;if(c===H.length||p===ie.length)for(c=H.length-1,p=ie.length-1;1<=c&&0<=p&&H[c]!==ie[p];)p--;for(;1<=c&&0<=p;c--,p--)if(H[c]!==ie[p]){if(c!==1||p!==1)do if(c--,p--,0>p||H[c]!==ie[p]){var pe=` 46`+H[c].replace(" at new "," at ");return i.displayName&&pe.includes("<anonymous>")&&(pe=pe.replace("<anonymous>",i.displayName)),pe}while(1<=c&&0<=p);break}}}finally{Ye=!1,Error.prepareStackTrace=r}return(r=i?i.displayName||i.name:"")?Je(r):""}function Pt(i){switch(i.tag){case 26:case 27:case 5:return Je(i.type);case 16:return Je("Lazy");case 13:return Je("Suspense");case 19:return Je("SuspenseList");case 0:case 15:return pt(i.type,!1);case 11:return pt(i.type.render,!1);case 1:return pt(i.type,!0);case 31:return Je("Activity");default:return""}}function Zt(i){try{var s="";do s+=Pt(i),i=i.return;while(i);return s}catch(r){return` 47Error generating stack: `+r.message+` 48`+r.stack}}function _t(i){switch(typeof i){case"bigint":case"boolean":case"number":case"string":case"undefined":return i;case"object":return i;default:return""}}function Ot(i){var s=i.type;return(i=i.nodeName)&&i.toLowerCase()==="input"&&(s==="checkbox"||s==="radio")}function $e(i){var s=Ot(i)?"checked":"value",r=Object.getOwnPropertyDescriptor(i.constructor.prototype,s),c=""+i[s];if(!i.hasOwnProperty(s)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var p=r.get,_=r.set;return Object.defineProperty(i,s,{configurable:!0,get:function(){return p.call(this)},set:function(E){c=""+E,_.call(this,E)}}),Object.defineProperty(i,s,{enumerable:r.enumerable}),{getValue:function(){return c},setValue:function(E){c=""+E},stopTracking:function(){i._valueTracker=null,delete i[s]}}}}function zt(i){i._valueTracker||(i._valueTracker=$e(i))}function wt(i){if(!i)return!1;var s=i._valueTracker;if(!s)return!0;var r=s.getValue(),c="";return i&&(c=Ot(i)?i.checked?"true":"false":i.value),i=c,i!==r?(s.setValue(i),!0):!1}function En(i){if(i=i||(typeof document<"u"?document:void 0),typeof i>"u")return null;try{return i.activeElement||i.body}catch{return i.body}}var Ks=/[\n"\\]/g;function qt(i){return i.replace(Ks,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function as(i,s,r,c,p,_,E,A){i.name="",E!=null&&typeof E!="function"&&typeof E!="symbol"&&typeof E!="boolean"?i.type=E:i.removeAttribute("type"),s!=null?E==="number"?(s===0&&i.value===""||i.value!=s)&&(i.value=""+_t(s)):i.value!==""+_t(s)&&(i.value=""+_t(s)):E!=="submit"&&E!=="reset"||i.removeAttribute("value"),s!=null?In(i,E,_t(s)):r!=null?In(i,E,_t(r)):c!=null&&i.removeAttribute("value"),p==null&&_!=null&&(i.defaultChecked=!!_),p!=null&&(i.checked=p&&typeof p!="function"&&typeof p!="symbol"),A!=null&&typeof A!="function"&&typeof A!="symbol"&&typeof A!="boolean"?i.name=""+_t(A):i.removeAttribute("name")}function Gt(i,s,r,c,p,_,E,A){if(_!=null&&typeof _!="function"&&typeof _!="symbol"&&typeof _!="boolean"&&(i.type=_),s!=null||r!=null){if(!(_!=="submit"&&_!=="reset"||s!=null))return;r=r!=null?""+_t(r):"",s=s!=null?""+_t(s):r,A||s===i.value||(i.value=s),i.defaultValue=s}c=c??p,c=typeof c!="function"&&typeof c!="symbol"&&!!c,i.checked=A?i.checked:!!c,i.defaultChecked=!!c,E!=null&&typeof E!="function"&&typeof E!="symbol"&&typeof E!="boolean"&&(i.name=E)}function In(i,s,r){s==="number"&&En(i.ownerDocument)===i||i.defaultValue===""+r||(i.defaultValue=""+r)}function xn(i,s,r,c){if(i=i.options,s){s={};for(var p=0;p<r.length;p++)s["$"+r[p]]=!0;for(r=0;r<i.length;r++)p=s.hasOwnProperty("$"+i[r].value),i[r].selected!==p&&(i[r].selected=p),p&&c&&(i[r].defaultSelected=!0)}else{for(r=""+_t(r),s=null,p=0;p<i.length;p++){if(i[p].value===r){i[p].selected=!0,c&&(i[p].defaultSelected=!0);return}s!==null||i[p].disabled||(s=i[p])}s!==null&&(s.selected=!0)}}function wn(i,s,r){if(s!=null&&(s=""+_t(s),s!==i.value&&(i.value=s),r==null)){i.defaultValue!==s&&(i.defaultValue=s);return}i.defaultValue=r!=null?""+_t(r):""}function Ln(i,s,r,c){if(s==null){if(c!=null){if(r!=null)throw Error(a(92));if(me(c)){if(1<c.length)throw Error(a(93));c=c[0]}r=c}r==null&&(r=""),s=r}r=_t(s),i.defaultValue=r,c=i.textContent,c===r&&c!==""&&c!==null&&(i.value=c)}function Fi(i,s){if(s){var r=i.firstChild;if(r&&r===i.lastChild&&r.nodeType===3){r.nodeValue=s;return}}i.textContent=s}var rs=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function t2(i,s,r){var c=s.indexOf("--")===0;r==null||typeof r=="boolean"||r===""?c?i.setProperty(s,""):s==="float"?i.cssFloat="":i[s]="":c?i.setProperty(s,r):typeof r!="number"||r===0||rs.has(s)?s==="float"?i.cssFloat=r:i[s]=(""+r).trim():i[s]=r+"px"}function n2(i,s,r){if(s!=null&&typeof s!="object")throw Error(a(62));if(i=i.style,r!=null){for(var c in r)!r.hasOwnProperty(c)||s!=null&&s.hasOwnProperty(c)||(c.indexOf("--")===0?i.setProperty(c,""):c==="float"?i.cssFloat="":i[c]="");for(var p in s)c=s[p],s.hasOwnProperty(p)&&r[p]!==c&&t2(i,p,c)}else for(var _ in s)s.hasOwnProperty(_)&&t2(i,_,s[_])}function Hf(i){if(i.indexOf("-")===-1)return!1;switch(i){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ny=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode
48-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Ly=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Lc(i){return Ly.test(""+i)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":i}var kf=null;function Gf(i){return i=i.target||i.srcElement||window,i.correspondingUseElement&&(i=i.correspondingUseElement),i.nodeType===3?i.parentNode:i}var br=null,Er=null;function i2(i){var s=is(i);if(s&&(i=s.stateNode)){var r=i[Nn]||null;e:switch(i=s.stateNode,s.type){case"input":if(as(i,r.value,r.defaultValue,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name),s=r.name,r.type==="radio"&&s!=null){for(r=i;r.parentNode;)r=r.parentNode;for(r=r.querySelectorAll('input[name="'+qt(""+s)+'"][type="radio"]'),s=0;s<r.length;s++){var c=r[s];if(c!==i&&c.form===i.form){var p=c[Nn]||null;if(!p)throw Error(a(90));as(c,p.value,p.defaultValue,p.defaultValue,p.checked,p.defaultChecked,p.type,p.name)}}for(s=0;s<r.length;s++)c=r[s],c.form===i.form&&wt(c)}break e;case"textarea":wn(i,r.value,r.defaultValue);break e;case"select":s=r.value,s!=null&&xn(i,!!r.multiple,s,!1)}}}var Wf=!1;function s2(i,s,r){if(Wf)return i(s,r);Wf=!0;try{var c=i(s);return c}finally{if(Wf=!1,(br!==null||Er!==null)&&(gu(),br&&(s=br,i=Er,Er=br=null,i2(s),i)))for(s=0;s<i.length;s++)i2(i[s])}}function Ho(i,s){var r=i.stateNode;if(r===null)return null;var c=r[Nn]||null;if(c===null)return null;r=c[s];e:switch(s){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(c=!c.disabled)||(i=i.type,c=!(i==="button"||i==="input"||i==="select"||i==="textarea")),i=!c;break e;default:i=!1}if(i)return null;if(r&&typeof r!="function")throw Error(a(231,s,typeof r));return r}var os=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Xf=!1;if(os)try{var ko={};Object.defineProperty(ko,"passive",{get:function(){Xf=!0}}),window.addEventListener("test",ko,ko),window.removeEventListener("test",ko,ko)}catch{Xf=!1}var Qs=null,qf=null,Dc=null;function a2(){if(Dc)return Dc;var i,s=qf,r=s.length,c,p="value"in Qs?Qs.value:Qs.textContent,_=p.length;for(i=0;i<r&&s[i]===p[i];i++);var E=r-i;for(c=1;c<=E&&s[r-c]===p[_-c];c++);return Dc=p.slice(i,1<c?1-c:void 0)}function Uc(i){var s=i.keyCode;return"charCode"in i?(i=i.charCode,i===0&&s===13&&(i=13)):i=s,i===10&&(i=13),32<=i||i===13?i:0}function Pc(){return!0}function r2(){return!1}function qn(i){function s(r,c,p,_,E){this._reactName=r,this._targetInst=p,this.type=c,this.nativeEvent=_,this.target=E,this.currentTarget=null;for(var A in i)i.hasOwnProperty(A)&&(r=i[A],this[A]=r?r(_):_[A]);return this.isDefaultPrevented=(_.defaultPrevented!=null?_.defaultPrevented:_.returnValue===!1)?Pc:r2,this.isPropagationStopped=r2,this}return g(s.prototype,{preventDefault:function(){this.defaultPrevented=!0;var r=this.nativeEvent;r&&(r.preventDefault?r.preventDefault():typeof r.returnValue!="unknown"&&(r.returnValue=!1),this.isDefaultPrevented=Pc)},stopPropagation:function(){var r=this.nativeEvent;r&&(r.stopPropagation?r.stopPropagation():typeof r.cancelBubble!="unknown"&&(r.cancelBubble=!0),this.isPropagationStopped=Pc)},persist:function(){},isPersistent:Pc}),s}var za={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(i){return i.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Oc=qn(za),Go=g({},za,{view:0,detail:0}),Dy=qn(Go),Yf,Zf,Wo,Ic=g({},Go,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Qf,button:0,buttons:0,relatedTarget:function(i){return i.relatedTarget===void 0?i.fromElement===i.srcElement?i.toElement:i.fromElement:i.relatedTarget},movementX:function(i){return"movementX"in i?i.movementX:(i!==Wo&&(Wo&&i.type==="mousemove"?(Yf=i.screenX-Wo.screenX,Zf=i.screenY-Wo.screenY):Zf=Yf=0,Wo=i),Yf)},movementY:function(i){return"movementY"in i?i.movementY:Zf}}),o2=qn(Ic),Uy=g({},Ic,{dataTransfer:0}),Py=qn(Uy),Oy=g({},Go,{relatedTarget:0}),Kf=qn(Oy),Iy=g({},za,{animationName:0,elapsedTime:0,pseudoElement:0}),By=qn(Iy),Fy=g({},za,{clipboardData:function(i){return"clipboardData"in i?i.clipboardData:window.clipboardData}}),zy=qn(Fy),Vy=g({},za,{data:0}),l2=qn(Vy),jy={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Hy={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},ky={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Gy(i){var s=this.nativeEvent;return s.getModifierState?s.getModifierState(i):(i=ky[i])?!!s[i]:!1}function Qf(){return Gy}var Wy=g({},Go,{key:function(i){if(i.key){var s=jy[i.key]||i.key;if(s!=="Unidentified")return s}
vendor: 4,180 bytes, line 48
48return i.type==="keypress"?(i=Uc(i),i===13?"Enter":String.fromCharCode(i)):i.type==="keydown"||i.type==="keyup"?Hy[i.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Qf,charCode:function(i){return i.type==="keypress"?Uc(i):0},keyCode:function(i){return i.type==="keydown"||i.type==="keyup"?i.keyCode:0},which:function(i){return i.type==="keypress"?Uc(i):i.type==="keydown"||i.type==="keyup"?i.keyCode:0}}),Xy=qn(Wy),qy=g({},Ic,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),c2=qn(qy),Yy=g({},Go,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Qf}),Zy=qn(Yy),Ky=g({},za,{propertyName:0,elapsedTime:0,pseudoElement:0}),Qy=qn(Ky),$y=g({},Ic,{deltaX:function(i){return"deltaX"in i?i.deltaX:"wheelDeltaX"in i?-i.wheelDeltaX:0},deltaY:function(i){return"deltaY"in i?i.deltaY:"wheelDeltaY"in i?-i.wheelDeltaY:"wheelDelta"in i?-i.wheelDelta:0},deltaZ:0,deltaMode:0}),Jy=qn($y),e5=g({},za,{newState:0,oldState:0}),t5=qn(e5),n5=[9,13,27,32],$f=os&&"CompositionEvent"in window,Xo=null;os&&"documentMode"in document&&(Xo=document.documentMode);var i5=os&&"TextEvent"in window&&!Xo,u2=os&&(!$f||Xo&&8<Xo&&11>=Xo),f2=" ",d2=!1;function h2(i,s){switch(i){case"keyup":return n5.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function p2(i){return i=i.detail,typeof i=="object"&&"data"in i?i.data:null}var wr=!1;function s5(i,s){switch(i){case"compositionend":return p2(s);case"keypress":return s.which!==32?null:(d2=!0,f2);case"textInput":return i=s.data,i===f2&&d2?null:i;default:return null}}function a5(i,s){if(wr)return i==="compositionend"||!$f&&h2(i,s)?(i=a2(),Dc=qf=Qs=null,wr=!1,i):null;switch(i){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1<s.char.length)return s.char;if(s.which)return String.fromCharCode(s.which)}return null;case"compositionend":return u2&&s.locale!=="ko"?null:s.data;default:return null}}var r5={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function m2(i){var s=i&&i.nodeName&&i.nodeName.toLowerCase();return s==="input"?!!r5[i.type]:s==="textarea"}function g2(i,s,r,c){br?Er?Er.push(c):Er=[c]:br=c,s=Mu(s,"onChange"),0<s.length&&(r=new Oc("onChange","change",null,r,c),i.push({event:r,listeners:s}))}var qo=null,Yo=null;function o5(i){Kg(i,0)}function Bc(i){var s=Fa(i);if(wt(s))return i}function v2(i,s){if(i==="change")return s}var x2=!1;if(os){var Jf;if(os){var ed="oninput"in document;if(!ed){var _2=document.createElement("div");_2.setAttribute("oninput","return;"),ed=typeof _2.oninput=="function"}Jf=ed}else Jf=!1;x2=Jf&&(!document.documentMode||9<document.documentMode)}function y2(){qo&&(qo.detachEvent("onpropertychange",S2),Yo=qo=null)}function S2(i){if(i.propertyName==="value"&&Bc(Yo)){var s=[];g2(s,Yo,i,Gf(i)),s2(o5,s)}}function l5(i,s,r){i==="focusin"?(y2(),qo=s,Yo=r,qo.attachEvent("onpropertychange",S2)):i==="focusout"&&y2()}function c5(i){if(i==="selectionchange"||i==="keyup"||i==="keydown")return Bc(Yo)}function u5(i,s){if(i==="click")return Bc(s)}function f5(i,s){if(i==="input"||i==="change")return Bc(s)}function d5(i,s){return i===s&&(i!==0||1/i===1/s)||i!==i&&s!==s}var ii=typeof Object.is=="function"?Object.is:d5;function Zo(i,s){if(ii(i,s))return!0;if(typeof i!="object"||i===null||typeof s!="object"||s===null)return!1;var r=Object.keys(i),c=Object.keys(s);if(r.length!==c.length)return!1;for(c=0;c<r.length;c++){var p=r[c];if(!Ut.call(s,p)||!ii(i[p],s[p]))return!1}return!0}function M2(i){for(;i&&i.firstChild;)i=i.firstChild;return i}function b2(i,s){var r=M2(i);i=0;for(var c;r;){if(r.nodeType===3){if(c=i+r.textContent.length,i<=s&&c>=s)return{node:r,offset:s-i};i=c}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=M2(r)}}function E2(i,s){return i&&s?i===s?!0:i&&i.nodeType===3?!1:s&&s.nodeType===3?E2(i,s.parentNode):"contains"in i?i.contains(s):i.
vendor: 14,545 bytes, line 48
48compareDocumentPosition?!!(i.compareDocumentPosition(s)&16):!1:!1}function w2(i){i=i!=null&&i.ownerDocument!=null&&i.ownerDocument.defaultView!=null?i.ownerDocument.defaultView:window;for(var s=En(i.document);s instanceof i.HTMLIFrameElement;){try{var r=typeof s.contentWindow.location.href=="string"}catch{r=!1}if(r)i=s.contentWindow;else break;s=En(i.document)}return s}function td(i){var s=i&&i.nodeName&&i.nodeName.toLowerCase();return s&&(s==="input"&&(i.type==="text"||i.type==="search"||i.type==="tel"||i.type==="url"||i.type==="password")||s==="textarea"||i.contentEditable==="true")}var h5=os&&"documentMode"in document&&11>=document.documentMode,Tr=null,nd=null,Ko=null,id=!1;function T2(i,s,r){var c=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;id||Tr==null||Tr!==En(c)||(c=Tr,"selectionStart"in c&&td(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Ko&&Zo(Ko,c)||(Ko=c,c=Mu(nd,"onSelect"),0<c.length&&(s=new Oc("onSelect","select",null,s,r),i.push({event:s,listeners:c}),s.target=Tr)))}function Va(i,s){var r={};return r[i.toLowerCase()]=s.toLowerCase(),r["Webkit"+i]="webkit"+s,r["Moz"+i]="moz"+s,r}var Cr={animationend:Va("Animation","AnimationEnd"),animationiteration:Va("Animation","AnimationIteration"),animationstart:Va("Animation","AnimationStart"),transitionrun:Va("Transition","TransitionRun"),transitionstart:Va("Transition","TransitionStart"),transitioncancel:Va("Transition","TransitionCancel"),transitionend:Va("Transition","TransitionEnd")},sd={},C2={};os&&(C2=document.createElement("div").style,"AnimationEvent"in window||(delete Cr.animationend.animation,delete Cr.animationiteration.animation,delete Cr.animationstart.animation),"TransitionEvent"in window||delete Cr.transitionend.transition);function ja(i){if(sd[i])return sd[i];if(!Cr[i])return i;var s=Cr[i],r;for(r in s)if(s.hasOwnProperty(r)&&r in C2)return sd[i]=s[r];return i}var A2=ja("animationend"),R2=ja("animationiteration"),N2=ja("animationstart"),p5=ja("transitionrun"),m5=ja("transitionstart"),g5=ja("transitioncancel"),L2=ja("transitionend"),D2=new Map,ad="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");ad.push("scrollEnd");function Ti(i,s){D2.set(i,s),ss(s,[i])}var U2=new WeakMap;function mi(i,s){if(typeof i=="object"&&i!==null){var r=U2.get(i);return r!==void 0?r:(s={value:i,source:s,stack:Zt(s)},U2.set(i,s),s)}return{value:i,source:s,stack:Zt(s)}}var gi=[],Ar=0,rd=0;function Fc(){for(var i=Ar,s=rd=Ar=0;s<i;){var r=gi[s];gi[s++]=null;var c=gi[s];gi[s++]=null;var p=gi[s];gi[s++]=null;var _=gi[s];if(gi[s++]=null,c!==null&&p!==null){var E=c.pending;E===null?p.next=p:(p.next=E.next,E.next=p),c.pending=p}_!==0&&P2(r,p,_)}}function zc(i,s,r,c){gi[Ar++]=i,gi[Ar++]=s,gi[Ar++]=r,gi[Ar++]=c,rd|=c,i.lanes|=c,i=i.alternate,i!==null&&(i.lanes|=c)}function od(i,s,r,c){return zc(i,s,r,c),Vc(i)}function Rr(i,s){return zc(i,null,null,s),Vc(i)}function P2(i,s,r){i.lanes|=r;var c=i.alternate;c!==null&&(c.lanes|=r);for(var p=!1,_=i.return;_!==null;)_.childLanes|=r,c=_.alternate,c!==null&&(c.childLanes|=r),_.tag===22&&(i=_.stateNode,i===null||i._visibility&1||(p=!0)),i=_,_=_.return;return i.tag===3?(_=i.stateNode,p&&s!==null&&(p=31-Ae(r),i=_.hiddenUpdates,c=i[p],c===null?i[p]=[s]:c.push(s),s.lane=r|536870912),_):null}function Vc(i){if(50<Sl)throw Sl=0,hh=null,Error(a(185));for(var s=i.return;s!==null;)i=s,s=i.return;return i.tag===3?i.stateNode:null}var Nr={};function v5(i,s,r,c){this.tag=i,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=s,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=c,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function si(i,s,r,c){return new v5(i,s,r,c)}function ld(i){return i=i.prototype,!(!i||!i.isReactComponent)}function ls(i,s){var r=i.alternate;return r===null?(r=si(i.tag,s,i.key,i.mode),r.elementType=i.elementType,r.type=i.type,r.stateNode=i.stateNode,r.alternate=i,i.alternate=r):(r.pendingProps=s,r.type=i.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=i.flags&65011712,r.childLanes=i.childLanes,r.lanes=i.lanes,r.child=i.child,r.memoizedProps=i.memoizedProps,r.memoizedState=i.memoizedState,r.updateQueue=i.updateQueue,s=i.dependencies,r.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext},r.sibling=i.sibling,r.index=i.index,r.ref=i.ref,r.refCleanup=i.refCleanup,r}function O2(i,s){i.flags&=65011714;var r=i.alternate;return r===null?(i.childLanes=0,i.lanes=s,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=r.childLanes,i.lanes=r.lanes,i.child=r.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=r.memoizedProps,i.memoizedState=r.memoizedState,i.updateQueue=r.updateQueue,i.type=r.type,s=r.dependencies,i.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext}),i}function jc(i,s,r,c,p,_){var E=0;if(c=i,typeof i=="function")ld(i)&&(E=1);else if(typeof i=="string")E=_S(i,r,te.current)?26:i==="html"||i==="head"||i==="body"?27:5;else e:switch(i){case U:return i=si(31,r,s,p),i.elementType=U,i.lanes=_,i;case b:return Ha(r.children,p,_,s);case w:E=8,p|=24;break;case M:return i=si(12,r,s,p|2),i.elementType=M,i.lanes=_,i;case P:return i=si(13,r,s,p),i.elementType=P,i.lanes=_,i;case I:return i=si(19,r,s,p),i.elementType=I,i.lanes=_,i;default:if(typeof i=="object"&&i!==null)switch(i.$$typeof){case S:case T:E=10;break e;case N:E=9;break e;case R:E=11;break e;case F:E=14;break e;case V:E=16,c=null;break e}E=29,r=Error(a(130,i===null?"null":typeof i,"")),c=null}return s=si(E,r,s,p),s.elementType=i,s.type=c,s.lanes=_,s}function Ha(i,s,r,c){return i=si(7,i,c,s),i.lanes=r,i}function cd(i,s,r){return i=si(6,i,null,s),i.lanes=r,i}function ud(i,s,r){return s=si(4,i.children!==null?i.children:[],i.key,s),s.lanes=r,s.stateNode={containerInfo:i.containerInfo,pendingChildren:null,implementation:i.implementation},s}var Lr=[],Dr=0,Hc=null,kc=0,vi=[],xi=0,ka=null,cs=1,us="";function Ga(i,s){Lr[Dr++]=kc,Lr[Dr++]=Hc,Hc=i,kc=s}function I2(i,s,r){vi[xi++]=cs,vi[xi++]=us,vi[xi++]=ka,ka=i;var c=cs;i=us;var p=32-Ae(c)-1;c&=~(1<<p),r+=1;var _=32-Ae(s)+p;if(30<_){var E=p-p%5;_=(c&(1<<E)-1).toString(32),c>>=E,p-=E,cs=1<<32-Ae(s)+p|r<<p|c,us=_+i}else cs=1<<_|r<<p|c,us=i}function fd(i){i.return!==null&&(Ga(i,1),I2(i,1,0))}function dd(i){for(;i===Hc;)Hc=Lr[--Dr],Lr[Dr]=null,kc=Lr[--Dr],Lr[Dr]=null;for(;i===ka;)ka=vi[--xi],vi[xi]=null,us=vi[--xi],vi[xi]=null,cs=vi[--xi],vi[xi]=null}var Hn=null,nn=null,Dt=!1,Wa=null,zi=!1,hd=Error(a(519));function Xa(i){var s=Error(a(418,""));throw Jo(mi(s,i)),hd}function B2(i){var s=i.stateNode,r=i.type,c=i.memoizedProps;switch(s[vn]=i,s[Nn]=c,r){case"dialog":bt("cancel",s),bt("close",s);break;case"iframe":case"object":case"embed":bt("load",s);break;case"video":case"audio":for(r=0;r<bl.length;r++)bt(bl[r],s);break;case"source":bt("error",s);break;case"img":case"image":case"link":bt("error",s),bt("load",s);break;case"details":bt("toggle",s);break;case"input":bt("invalid",s),Gt(s,c.value,c.defaultValue,c.checked,c.defaultChecked,c.type,c.name,!0),zt(s);break;case"select":bt("invalid",s);break;case"textarea":bt("invalid",s),Ln(s,c.value,c.defaultValue,c.children),zt(s)}r=c.children,typeof r!="string"&&typeof r!="number"&&typeof r!="bigint"||s.textContent===""+r||c.suppressHydrationWarning===!0||ev(s.textContent,r)?(c.popover!=null&&(bt("beforetoggle",s),bt("toggle",s)),c.onScroll!=null&&bt("scroll",s),c.onScrollEnd!=null&&bt("scrollend",s),c.onClick!=null&&(s.onclick=bu),s=!0):s=!1,s||Xa(i)}function F2(i){for(Hn=i.return;Hn;)switch(Hn.tag){case 5:case 13:zi=!1;return;case 27:case 3:zi=!0;return;default:Hn=Hn.return}}function Qo(i){if(i!==Hn)return!1;if(!Dt)return F2(i),Dt=!0,!1;var s=i.tag,r;if((r=s!==3&&s!==27)&&((r=s===5)&&(r=i.type,r=!(r!=="form"&&r!=="button")||Rh(i.type,i.memoizedProps)),r=!r),r&&nn&&Xa(i),F2(i),s===13){if(i=i.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(a(317));e:{for(i=i.nextSibling,s=0;i;){if(i.nodeType===8)if(r=i.data,r==="/$"){if(s===0){nn=Ai(i.nextSibling);break e}s--}else r!=="$"&&r!=="$!"&&r!=="$?"||s++;i=i.nextSibling}nn=null}}else s===27?(s=nn,ha(i.type)?(i=Uh,Uh=null,nn=i):nn=s):nn=Hn?Ai(i.stateNode.nextSibling):null;return!0}function $o(){nn=Hn=null,Dt=!1}function z2(){var i=Wa;return i!==null&&(Kn===null?Kn=i:Kn.push.apply(Kn,i),Wa=null),i}function Jo(i){Wa===null?Wa=[i]:Wa.push(i)}var pd=ee(null),qa=null,fs=null;function $s(i,s,r){be(pd,s._currentValue),s._currentValue=r}function ds(i){i._currentValue=pd.current,Me(pd)}function md(i,s,r){for(;i!==null;){var c=i.alternate;if((i.childLanes&s)!==s?(i.childLanes|=s,c!==null&&(c.childLanes|=s)):c!==null&&(c.childLanes&s)!==s&&(c.childLanes|=s),i===r)break;i=i.return}}function gd(i,s,r,c){var p=i.child;for(p!==null&&(p.return=i);p!==null;){var _=p.dependencies;if(_!==null){var E=p.child;_=_.firstContext;e:for(;_!==null;){var A=_;_=p;for(var H=0;H<s.length;H++)if(A.context===s[H]){_.lanes|=r,A=_.alternate,A!==null&&(A.lanes|=r),md(_.return,r,i),c||(E=null);break e}_=A.next}}else if(p.tag===18){if(E=p.return,E===null)throw Error(a(341));E.lanes|=r,_=E.alternate,_!==null&&(_.lanes|=r),md(E,r,i),E=null}else E=p.child;if(E!==null)E.return=p;else for(E=p;E!==null;){if(E===i){E=null;break}if(p=E.sibling,p!==null){p.return=E.return,E=p;break}E=E.return}p=E}}function el(i,s,r,c){i=null;for(var p=s,_=!1;p!==null;){if(!_){if((p.flags&524288)!==0)_=!0;else if((p.flags&262144)!==0)break}if(p.tag===10){var E=p.alternate;if(E===null)throw Error(a(387));if(E=E.memoizedProps,E!==null){var A=p.type;ii(p.pendingProps.value,E.value)||(i!==null?i.push(A):i=[A])}}else if(p===Te.current){if(E=p.alternate,E===null)throw Error(a(387));E.memoizedState.memoizedState!==p.memoizedState.memoizedState&&(i!==null?i.push(Rl):i=[Rl])}p=p.return}i!==null&&gd(s,i,r,c),s.flags|=262144}function Gc(i){for(i=i.firstContext;i!==null;){if(!ii(i.context._currentValue,i.memoizedValue))return!0;i=i.next}return!1}function Ya(i){qa=i,fs=null,i=i.dependencies,i!==null&&(i.firstContext=null)}function Bn(i){return V2(qa,i)}function Wc(i,s){return qa===null&&Ya(i),V2(i,s)}function V2(i,s){var r=s._currentValue;if(s={context:s,memoizedValue:r,next:null},fs===null){if(i===null)throw Error(a(308));fs=s,i.dependencies={lanes:0,firstContext:s},i.flags|=524288}else fs=fs.next=s;return r}var x5=typeof AbortController<"u"?AbortController:function(){var i=[],s=this.signal={aborted:!1,addEventListener:function(r,c){i.push(c)}};this.abort=function(){s.aborted=!0,i.forEach(function(r){return r()})}},_5=n.unstable_scheduleCallback,y5=n.unstable_NormalPriority,_n={$$typeof:T,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function vd(){return{controller:new x5,data:new Map,refCount:0}}function tl(i){i.refCount--,i.refCount===0&&_5(y5,function(){i.controller.abort()})}var nl=null,xd=0,Ur=0,Pr=null;function S5(i,s){if(nl===null){var r=nl=[];xd=0,Ur=yh(),Pr={status:"pending",value:void 0,then:function(c){r.push(c)}}}return xd++,s.then(j2,j2),s}function j2(){if(--xd===0&&nl!==null){Pr!==null&&(Pr.status="fulfilled");var i=nl;nl=null,Ur=0,Pr=null;for(var s=0;s<i.length;s++)(0,i[s])()}}function M5(i,s){var r=[],c={status:"pending",value:null,reason:null,then:function(p){r.push(p)}};return i.then(function(){c.status="fulfilled",c.value=s;for(var p=0;p<r.length;p++)(0,r[p])(s)},function(p){for(c.status="rejected",c.reason=p,p=0;p<r.length;p++)(0,r[p])(void 0)}),c}var H2=j.S;j.S=function(i,s){typeof s=="object"&&s!==null&&typeof s.then=="function"&&S5(i,s),H2!==null&&H2(i,s)};var Za=ee(null);function _d(){var i=Za.current;return i!==null?i:Yt.pooledCache}function Xc(i,s){s===null?be(Za,Za.current):be(Za,s.pool)}function k2(){var i=_d();return i===null?null:{parent:_n._currentValue,pool:i}}var il=Error(a(460)),G2=Error(a(474)),qc=Error(a(542)),yd={then:function(){}};function W2(i){return i=i.status,i==="fulfilled"||i==="rejected"}function Yc(){}function X2(i,s,r){switch(r=i[r],r===void 0?i.push(s):r!==s&&(s.then(Yc,Yc),s=r),s.status){case"fulfilled":return s.value;case"rejected":throw i=s.reason,Y2(i),i;default:if(typeof s.status=="string")s.then(Yc,Yc);else{if(i=Yt,i!==null&&100<i.shellSuspendCounter)throw Error(a(482));i=s,i.status="pending",i.then(function(c){if(s.status==="pending"){var p=s;p.status="fulfilled",p.value=c}},function(c){if(s.status==="pending"){var p=s;p.status="rejected",p.reason=c}})}switch(s.status){case"fulfilled":return s.value;case"rejected":throw i=s.reason,Y2(i),i}throw sl=s,il}}var sl=null;function q2(){if(sl===null)throw Error(a(459));var i=sl;return sl=null,i}function Y2(i){if(i===il||i===qc)throw Error(a(483))}var Js=!1;function Sd(i){i.updateQueue={baseState:i.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Md(i,s){i=i.updateQueue,s.updateQueue===i&&(s.updateQueue={baseState:i.baseState,firstBaseUpdate:i.firstBaseUpdate,lastBaseUpdate:i.lastBaseUpdate,shared:i.shared,callbacks:null})}function ea(i){return{lane:i,tag:0,payload:null,callback:null,next:null}}function ta(i,s,r){var c=i.updateQueue;if(c===null)return null;if(c=c.shared,(Bt&2)!==0){var p=c.pending;return p===null?s.next=s:(s.next=p.next,p.next=s),c.pending=s,s=Vc(i),P2(i,null,r),s}return zc(i,c,s,r),Vc(i)}function al(i,s,r){if(s=s.updateQueue,s!==null&&(s=s.shared,(r&4194048)!==0)){var c=s.lanes;c&=i.pendingLanes,r|=c,s.lanes=r,Xe(i,r)}}function bd(i,s){var r=i.updateQueue,c=i.alternate;if(c!==null&&(c=c.updateQueue,r===c)){var p=null,_=null;if(r=r.firstBaseUpdate,r!==null){do{var E={lane:r.lane,tag:r.tag,payload:r.payload,callback:null,next:null};_===null?p=_=E:_=_.next=E,r=r.next}
vendor: 1,707 bytes, line 48
48while(r!==null);_===null?p=_=s:_=_.next=s}else p=_=s;r={baseState:c.baseState,firstBaseUpdate:p,lastBaseUpdate:_,shared:c.shared,callbacks:c.callbacks},i.updateQueue=r;return}i=r.lastBaseUpdate,i===null?r.firstBaseUpdate=s:i.next=s,r.lastBaseUpdate=s}var Ed=!1;function rl(){if(Ed){var i=Pr;if(i!==null)throw i}}function ol(i,s,r,c){Ed=!1;var p=i.updateQueue;Js=!1;var _=p.firstBaseUpdate,E=p.lastBaseUpdate,A=p.shared.pending;if(A!==null){p.shared.pending=null;var H=A,ie=H.next;H.next=null,E===null?_=ie:E.next=ie,E=H;var pe=i.alternate;pe!==null&&(pe=pe.updateQueue,A=pe.lastBaseUpdate,A!==E&&(A===null?pe.firstBaseUpdate=ie:A.next=ie,pe.lastBaseUpdate=H))}if(_!==null){var ye=p.baseState;E=0,pe=ie=H=null,A=_;do{var se=A.lane&-536870913,ae=se!==A.lane;if(ae?(Ct&se)===se:(c&se)===se){se!==0&&se===Ur&&(Ed=!0),pe!==null&&(pe=pe.next={lane:0,tag:A.tag,payload:A.payload,callback:null,next:null});e:{var st=i,et=A;se=s;var Ht=r;switch(et.tag){case 1:if(st=et.payload,typeof st=="function"){ye=st.call(Ht,ye,se);break e}ye=st;break e;case 3:st.flags=st.flags&-65537|128;case 0:if(st=et.payload,se=typeof st=="function"?st.call(Ht,ye,se):st,se==null)break e;ye=g({},ye,se);break e;case 2:Js=!0}}se=A.callback,se!==null&&(i.flags|=64,ae&&(i.flags|=8192),ae=p.callbacks,ae===null?p.callbacks=[se]:ae.push(se))}else ae={lane:se,tag:A.tag,payload:A.payload,callback:A.callback,next:null},pe===null?(ie=pe=ae,H=ye):pe=pe.next=ae,E|=se;if(A=A.next,A===null){if(A=p.shared.pending,A===null)break;ae=A,A=ae.next,ae.next=null,p.lastBaseUpdate=ae,p.shared.pending=null}}while(!0);pe===null&&(H=ye),p.baseState=H,p.firstBaseUpdate=ie,p.lastBaseUpdate=pe,_===null&&(p.shared.lanes=0),ca|=E,i.lanes=E,i.memoizedState=ye}}
vendor: 41,233 bytes, line 48
48function Z2(i,s){if(typeof i!="function")throw Error(a(191,i));i.call(s)}function K2(i,s){var r=i.callbacks;if(r!==null)for(i.callbacks=null,i=0;i<r.length;i++)Z2(r[i],s)}var Or=ee(null),Zc=ee(0);function Q2(i,s){i=_s,be(Zc,i),be(Or,s),_s=i|s.baseLanes}function wd(){be(Zc,_s),be(Or,Or.current)}function Td(){_s=Zc.current,Me(Or),Me(Zc)}var na=0,xt=null,Vt=null,fn=null,Kc=!1,Ir=!1,Ka=!1,Qc=0,ll=0,Br=null,b5=0;function rn(){throw Error(a(321))}function Cd(i,s){if(s===null)return!1;for(var r=0;r<s.length&&r<i.length;r++)if(!ii(i[r],s[r]))return!1;return!0}function Ad(i,s,r,c,p,_){return na=_,xt=s,s.memoizedState=null,s.updateQueue=null,s.lanes=0,j.H=i===null||i.memoizedState===null?P1:O1,Ka=!1,_=r(c,p),Ka=!1,Ir&&(_=J2(s,r,c,p)),$2(i),_}function $2(i){j.H=iu;var s=Vt!==null&&Vt.next!==null;if(na=0,fn=Vt=xt=null,Kc=!1,ll=0,Br=null,s)throw Error(a(300));i===null||Tn||(i=i.dependencies,i!==null&&Gc(i)&&(Tn=!0))}function J2(i,s,r,c){xt=i;var p=0;do{if(Ir&&(Br=null),ll=0,Ir=!1,25<=p)throw Error(a(301));if(p+=1,fn=Vt=null,i.updateQueue!=null){var _=i.updateQueue;_.lastEffect=null,_.events=null,_.stores=null,_.memoCache!=null&&(_.memoCache.index=0)}j.H=N5,_=s(r,c)}while(Ir);return _}function E5(){var i=j.H,s=i.useState()[0];return s=typeof s.then=="function"?cl(s):s,i=i.useState()[0],(Vt!==null?Vt.memoizedState:null)!==i&&(xt.flags|=1024),s}function Rd(){var i=Qc!==0;return Qc=0,i}function Nd(i,s,r){s.updateQueue=i.updateQueue,s.flags&=-2053,i.lanes&=~r}function Ld(i){if(Kc){for(i=i.memoizedState;i!==null;){var s=i.queue;s!==null&&(s.pending=null),i=i.next}Kc=!1}na=0,fn=Vt=xt=null,Ir=!1,ll=Qc=0,Br=null}function Yn(){var i={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return fn===null?xt.memoizedState=fn=i:fn=fn.next=i,fn}function dn(){if(Vt===null){var i=xt.alternate;i=i!==null?i.memoizedState:null}else i=Vt.next;var s=fn===null?xt.memoizedState:fn.next;if(s!==null)fn=s,Vt=i;else{if(i===null)throw xt.alternate===null?Error(a(467)):Error(a(310));Vt=i,i={memoizedState:Vt.memoizedState,baseState:Vt.baseState,baseQueue:Vt.baseQueue,queue:Vt.queue,next:null},fn===null?xt.memoizedState=fn=i:fn=fn.next=i}return fn}function Dd(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function cl(i){var s=ll;return ll+=1,Br===null&&(Br=[]),i=X2(Br,i,s),s=xt,(fn===null?s.memoizedState:fn.next)===null&&(s=s.alternate,j.H=s===null||s.memoizedState===null?P1:O1),i}function $c(i){if(i!==null&&typeof i=="object"){if(typeof i.then=="function")return cl(i);if(i.$$typeof===T)return Bn(i)}throw Error(a(438,String(i)))}function Ud(i){var s=null,r=xt.updateQueue;if(r!==null&&(s=r.memoCache),s==null){var c=xt.alternate;c!==null&&(c=c.updateQueue,c!==null&&(c=c.memoCache,c!=null&&(s={data:c.data.map(function(p){return p.slice()}),index:0})))}if(s==null&&(s={data:[],index:0}),r===null&&(r=Dd(),xt.updateQueue=r),r.memoCache=s,r=s.data[s.index],r===void 0)for(r=s.data[s.index]=Array(i),c=0;c<i;c++)r[c]=L;return s.index++,r}function hs(i,s){return typeof s=="function"?s(i):s}function Jc(i){var s=dn();return Pd(s,Vt,i)}function Pd(i,s,r){var c=i.queue;if(c===null)throw Error(a(311));c.lastRenderedReducer=r;var p=i.baseQueue,_=c.pending;if(_!==null){if(p!==null){var E=p.next;p.next=_.next,_.next=E}s.baseQueue=p=_,c.pending=null}if(_=i.baseState,p===null)i.memoizedState=_;else{s=p.next;var A=E=null,H=null,ie=s,pe=!1;do{var ye=ie.lane&-536870913;if(ye!==ie.lane?(Ct&ye)===ye:(na&ye)===ye){var se=ie.revertLane;if(se===0)H!==null&&(H=H.next={lane:0,revertLane:0,action:ie.action,hasEagerState:ie.hasEagerState,eagerState:ie.eagerState,next:null}),ye===Ur&&(pe=!0);else if((na&se)===se){ie=ie.next,se===Ur&&(pe=!0);continue}else ye={lane:0,revertLane:ie.revertLane,action:ie.action,hasEagerState:ie.hasEagerState,eagerState:ie.eagerState,next:null},H===null?(A=H=ye,E=_):H=H.next=ye,xt.lanes|=se,ca|=se;ye=ie.action,Ka&&r(_,ye),_=ie.hasEagerState?ie.eagerState:r(_,ye)}else se={lane:ye,revertLane:ie.revertLane,action:ie.action,hasEagerState:ie.hasEagerState,eagerState:ie.eagerState,next:null},H===null?(A=H=se,E=_):H=H.next=se,xt.lanes|=ye,ca|=ye;ie=ie.next}while(ie!==null&&ie!==s);if(H===null?E=_:H.next=A,!ii(_,i.memoizedState)&&(Tn=!0,pe&&(r=Pr,r!==null)))throw r;i.memoizedState=_,i.baseState=E,i.baseQueue=H,c.lastRenderedState=_}return p===null&&(c.lanes=0),[i.memoizedState,c.dispatch]}function Od(i){var s=dn(),r=s.queue;if(r===null)throw Error(a(311));r.lastRenderedReducer=i;var c=r.dispatch,p=r.pending,_=s.memoizedState;if(p!==null){r.pending=null;var E=p=p.next;do _=i(_,E.action),E=E.next;while(E!==p);ii(_,s.memoizedState)||(Tn=!0),s.memoizedState=_,s.baseQueue===null&&(s.baseState=_),r.lastRenderedState=_}return[_,c]}function e1(i,s,r){var c=xt,p=dn(),_=Dt;if(_){if(r===void 0)throw Error(a(407));r=r()}else r=s();var E=!ii((Vt||p).memoizedState,r);E&&(p.memoizedState=r,Tn=!0),p=p.queue;var A=i1.bind(null,c,p,i);if(ul(2048,8,A,[i]),p.getSnapshot!==s||E||fn!==null&&fn.memoizedState.tag&1){if(c.flags|=2048,Fr(9,eu(),n1.bind(null,c,p,r,s),null),Yt===null)throw Error(a(349));_||(na&124)!==0||t1(c,s,r)}return r}function t1(i,s,r){i.flags|=16384,i={getSnapshot:s,value:r},s=xt.updateQueue,s===null?(s=Dd(),xt.updateQueue=s,s.stores=[i]):(r=s.stores,r===null?s.stores=[i]:r.push(i))}function n1(i,s,r,c){s.value=r,s.getSnapshot=c,s1(s)&&a1(i)}function i1(i,s,r){return r(function(){s1(s)&&a1(i)})}function s1(i){var s=i.getSnapshot;i=i.value;try{var r=s();return!ii(i,r)}catch{return!0}}function a1(i){var s=Rr(i,2);s!==null&&ci(s,i,2)}function Id(i){var s=Yn();if(typeof i=="function"){var r=i;if(i=r(),Ka){q(!0);try{r()}finally{q(!1)}}}return s.memoizedState=s.baseState=i,s.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:hs,lastRenderedState:i},s}function r1(i,s,r,c){return i.baseState=r,Pd(i,Vt,typeof c=="function"?c:hs)}function w5(i,s,r,c,p){if(nu(i))throw Error(a(485));if(i=s.action,i!==null){var _={payload:p,action:i,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(E){_.listeners.push(E)}};j.T!==null?r(!0):_.isTransition=!1,c(_),r=s.pending,r===null?(_.next=s.pending=_,o1(s,_)):(_.next=r.next,s.pending=r.next=_)}}function o1(i,s){var r=s.action,c=s.payload,p=i.state;if(s.isTransition){var _=j.T,E={};j.T=E;try{var A=r(p,c),H=j.S;H!==null&&H(E,A),l1(i,s,A)}catch(ie){Bd(i,s,ie)}finally{j.T=_}}else try{_=r(p,c),l1(i,s,_)}catch(ie){Bd(i,s,ie)}}function l1(i,s,r){r!==null&&typeof r=="object"&&typeof r.then=="function"?r.then(function(c){c1(i,s,c)},function(c){return Bd(i,s,c)}):c1(i,s,r)}function c1(i,s,r){s.status="fulfilled",s.value=r,u1(s),i.state=r,s=i.pending,s!==null&&(r=s.next,r===s?i.pending=null:(r=r.next,s.next=r,o1(i,r)))}function Bd(i,s,r){var c=i.pending;if(i.pending=null,c!==null){c=c.next;do s.status="rejected",s.reason=r,u1(s),s=s.next;while(s!==c)}i.action=null}function u1(i){i=i.listeners;for(var s=0;s<i.length;s++)(0,i[s])()}function f1(i,s){return s}function d1(i,s){if(Dt){var r=Yt.formState;if(r!==null){e:{var c=xt;if(Dt){if(nn){t:{for(var p=nn,_=zi;p.nodeType!==8;){if(!_){p=null;break t}if(p=Ai(p.nextSibling),p===null){p=null;break t}}_=p.data,p=_==="F!"||_==="F"?p:null}if(p){nn=Ai(p.nextSibling),c=p.data==="F!";break e}}Xa(c)}c=!1}c&&(s=r[0])}}return r=Yn(),r.memoizedState=r.baseState=s,c={pending:null,lanes:0,dispatch:null,lastRenderedReducer:f1,lastRenderedState:s},r.queue=c,r=L1.bind(null,xt,c),c.dispatch=r,c=Id(!1),_=Hd.bind(null,xt,!1,c.queue),c=Yn(),p={state:s,dispatch:null,action:i,pending:null},c.queue=p,r=w5.bind(null,xt,p,_,r),p.dispatch=r,c.memoizedState=i,[s,r,!1]}function h1(i){var s=dn();return p1(s,Vt,i)}function p1(i,s,r){if(s=Pd(i,s,f1)[0],i=Jc(hs)[0],typeof s=="object"&&s!==null&&typeof s.then=="function")try{var c=cl(s)}catch(E){throw E===il?qc:E}else c=s;s=dn();var p=s.queue,_=p.dispatch;return r!==s.memoizedState&&(xt.flags|=2048,Fr(9,eu(),T5.bind(null,p,r),null)),[c,_,i]}function T5(i,s){i.action=s}function m1(i){var s=dn(),r=Vt;if(r!==null)return p1(s,r,i);dn(),s=s.memoizedState,r=dn();var c=r.queue.dispatch;return r.memoizedState=i,[s,c,!1]}function Fr(i,s,r,c){return i={tag:i,create:r,deps:c,inst:s,next:null},s=xt.updateQueue,s===null&&(s=Dd(),xt.updateQueue=s),r=s.lastEffect,r===null?s.lastEffect=i.next=i:(c=r.next,r.next=i,i.next=c,s.lastEffect=i),i}function eu(){return{destroy:void 0,resource:void 0}}function g1(){return dn().memoizedState}function tu(i,s,r,c){var p=Yn();c=c===void 0?null:c,xt.flags|=i,p.memoizedState=Fr(1|s,eu(),r,c)}function ul(i,s,r,c){var p=dn();c=c===void 0?null:c;var _=p.memoizedState.inst;Vt!==null&&c!==null&&Cd(c,Vt.memoizedState.deps)?p.memoizedState=Fr(s,_,r,c):(xt.flags|=i,p.memoizedState=Fr(1|s,_,r,c))}function v1(i,s){tu(8390656,8,i,s)}function x1(i,s){ul(2048,8,i,s)}function _1(i,s){return ul(4,2,i,s)}function y1(i,s){return ul(4,4,i,s)}function S1(i,s){if(typeof s=="function"){i=i();var r=s(i);return function(){typeof r=="function"?r():s(null)}}if(s!=null)return i=i(),s.current=i,function(){s.current=null}}function M1(i,s,r){r=r!=null?r.concat([i]):null,ul(4,4,S1.bind(null,s,i),r)}function Fd(){}function b1(i,s){var r=dn();s=s===void 0?null:s;var c=r.memoizedState;return s!==null&&Cd(s,c[1])?c[0]:(r.memoizedState=[i,s],i)}function E1(i,s){var r=dn();s=s===void 0?null:s;var c=r.memoizedState;if(s!==null&&Cd(s,c[1]))return c[0];if(c=i(),Ka){q(!0);try{i()}finally{q(!1)}}return r.memoizedState=[c,s],c}function zd(i,s,r){return r===void 0||(na&1073741824)!==0?i.memoizedState=s:(i.memoizedState=r,i=Cg(),xt.lanes|=i,ca|=i,r)}function w1(i,s,r,c){return ii(r,s)?r:Or.current!==null?(i=zd(i,r,c),ii(i,s)||(Tn=!0),i):(na&42)===0?(Tn=!0,i.memoizedState=r):(i=Cg(),xt.lanes|=i,ca|=i,s)}function T1(i,s,r,c,p){var _=Z.p;Z.p=_!==0&&8>_?_:8;var E=j.T,A={};j.T=A,Hd(i,!1,s,r);try{var H=p(),ie=j.S;if(ie!==null&&ie(A,H),H!==null&&typeof H=="object"&&typeof H.then=="function"){var pe=M5(H,c);fl(i,s,pe,li(i))}else fl(i,s,c,li(i))}catch(ye){fl(i,s,{then:function(){},status:"rejected",reason:ye},li())}finally{Z.p=_,j.T=E}}function C5(){}function Vd(i,s,r,c){if(i.tag!==5)throw Error(a(476));var p=C1(i).queue;T1(i,p,s,Y,r===null?C5:function(){return A1(i),r(c)})}function C1(i){var s=i.memoizedState;if(s!==null)return s;s={memoizedState:Y,baseState:Y,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:hs,lastRenderedState:Y},next:null};var r={};return s.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:hs,lastRenderedState:r},next:null},i.memoizedState=s,i=i.alternate,i!==null&&(i.memoizedState=s),s}function A1(i){var s=C1(i).next.queue;fl(i,s,{},li())}function jd(){return Bn(Rl)}function R1(){return dn().memoizedState}function N1(){return dn().memoizedState}function A5(i){for(var s=i.return;s!==null;){switch(s.tag){case 24:case 3:var r=li();i=ea(r);var c=ta(s,i,r);c!==null&&(ci(c,s,r),al(c,s,r)),s={cache:vd()},i.payload=s;return}s=s.return}}function R5(i,s,r){var c=li();r={lane:c,revertLane:0,action:r,hasEagerState:!1,eagerState:null,next:null},nu(i)?D1(s,r):(r=od(i,s,r,c),r!==null&&(ci(r,i,c),U1(r,s,c)))}function L1(i,s,r){var c=li();fl(i,s,r,c)}function fl(i,s,r,c){var p={lane:c,revertLane:0,action:r,hasEagerState:!1,eagerState:null,next:null};if(nu(i))D1(s,p);else{var _=i.alternate;if(i.lanes===0&&(_===null||_.lanes===0)&&(_=s.lastRenderedReducer,_!==null))try{var E=s.lastRenderedState,A=_(E,r);if(p.hasEagerState=!0,p.eagerState=A,ii(A,E))return zc(i,s,p,0),Yt===null&&Fc(),!1}catch{}finally{}if(r=od(i,s,p,c),r!==null)return ci(r,i,c),U1(r,s,c),!0}return!1}function Hd(i,s,r,c){if(c={lane:2,revertLane:yh(),action:c,hasEagerState:!1,eagerState:null,next:null},nu(i)){if(s)throw Error(a(479))}else s=od(i,r,c,2),s!==null&&ci(s,i,2)}function nu(i){var s=i.alternate;return i===xt||s!==null&&s===xt}function D1(i,s){Ir=Kc=!0;var r=i.pending;r===null?s.next=s:(s.next=r.next,r.next=s),i.pending=s}function U1(i,s,r){if((r&4194048)!==0){var c=s.lanes;c&=i.pendingLanes,r|=c,s.lanes=r,Xe(i,r)}}var iu={readContext:Bn,use:$c,useCallback:rn,useContext:rn,useEffect:rn,useImperativeHandle:rn,useLayoutEffect:rn,useInsertionEffect:rn,useMemo:rn,useReducer:rn,useRef:rn,useState:rn,useDebugValue:rn,useDeferredValue:rn,useTransition:rn,useSyncExternalStore:rn,useId:rn,useHostTransitionStatus:rn,useFormState:rn,useActionState:rn,useOptimistic:rn,useMemoCache:rn,useCacheRefresh:rn},P1={readContext:Bn,use:$c,useCallback:function(i,s){return Yn().memoizedState=[i,s===void 0?null:s],i},useContext:Bn,useEffect:v1,useImperativeHandle:function(i,s,r){r=r!=null?r.concat([i]):null,tu(4194308,4,S1.bind(null,s,i),r)},useLayoutEffect:function(i,s){return tu(4194308,4,i,s)},useInsertionEffect:function(i,s){tu(4,2,i,s)},useMemo:function(i,s){var r=Yn();s=s===void 0?null:s;var c=i();if(Ka){q(!0);try{i()}finally{q(!1)}}return r.memoizedState=[c,s],c},useReducer:function(i,s,r){var c=Yn();if(r!==void 0){var p=r(s);if(Ka){q(!0);try{r(s)}finally{q(!1)}}}else p=s;return c.memoizedState=c.baseState=p,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:i,lastRenderedState:p},c.queue=i,i=i.dispatch=R5.bind(null,xt,i),[c.memoizedState,i]},useRef:function(i){var s=Yn();return i={current:i},s.memoizedState=i},useState:function(i){i=Id(i);var s=i.queue,r=L1.bind(null,xt,s);return s.dispatch=r,[i.memoizedState,r]},useDebugValue:Fd,useDeferredValue:function(i,s){var r=Yn();return zd(r,i,s)},useTransition:function(){var i=Id(!1);return i=T1.bind(null,xt,i.queue,!0,!1),Yn().memoizedState=i,[!1,i]},useSyncExternalStore:function(i,s,r){var c=xt,p=Yn();if(Dt){if(r===void 0)throw Error(a(407));r=r()}else{if(r=s(),Yt===null)throw Error(a(349));(Ct&124)!==0||t1(c,s,r)}p.memoizedState=r;var _={value:r,getSnapshot:s};return p.queue=_,v1(i1.bind(null,c,_,i),[i]),c.flags|=2048,Fr(9,eu(),n1.bind(null,c,_,r,s),null),r},useId:function(){var i=Yn(),s=Yt.identifierPrefix;if(Dt){var r=us,c=cs;r=(c&~(1<<32-Ae(c)-1)).toString(32)+r,s="«"+s+"R"+r,r=Qc++,0<r&&(s+="H"+r.toString(32)),s+="»"}else r=b5++,s="«"+s+"r"+r.toString(32)+"»";return i.memoizedState=s},useHostTransitionStatus:jd,useFormState:d1,useActionState:d1,useOptimistic:function(i){var s=Yn();s.memoizedState=s.baseState=i;var r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return s.queue=r,s=Hd.bind(null,xt,!0,r),r.dispatch=s,[i,s]},useMemoCache:Ud,useCacheRefresh:function(){return Yn().memoizedState=A5.bind(null,xt)}},O1={readContext:Bn,use:$c,useCallback:b1,useContext:Bn,useEffect:x1,useImperativeHandle:M1,useInsertionEffect:_1,useLayoutEffect:y1,useMemo:E1,useReducer:Jc,useRef:g1,useState:function(){return Jc(hs)},useDebugValue:Fd,useDeferredValue:function(i,s){var r=dn();return w1(r,Vt.memoizedState,i,s)},useTransition:function(){var i=Jc(hs)[0],s=dn().memoizedState;return[typeof i=="boolean"?i:cl(i),s]},useSyncExternalStore:e1,useId:R1,useHostTransitionStatus:jd,useFormState:h1,useActionState:h1,useOptimistic:function(i,s){var r=dn();return r1(r,Vt,i,s)},useMemoCache:Ud,useCacheRefresh:N1},N5={readContext:Bn,use:$c,useCallback:b1,useContext:Bn,useEffect:x1,useImperativeHandle:M1,useInsertionEffect:_1,useLayoutEffect:y1,useMemo:E1,useReducer:Od,useRef:g1,useState:function(){return Od(hs)},useDebugValue:Fd,useDeferredValue:function(i,s){var r=dn();return Vt===null?zd(r,i,s):w1(r,Vt.memoizedState,i,s)},useTransition:function(){var i=Od(hs)[0],s=dn().memoizedState;return[typeof i=="boolean"?i:cl(i),s]},useSyncExternalStore:e1,useId:R1,useHostTransitionStatus:jd,useFormState:m1,useActionState:m1,useOptimistic:function(i,s){var r=dn();return Vt!==null?r1(r,Vt,i,s):(r.baseState=i,[i,r.queue.dispatch])},useMemoCache:Ud,useCacheRefresh:N1},zr=null,dl=0;function su(i){var s=dl;return dl+=1,zr===null&&(zr=[]),X2(zr,i,s)}function hl(i,s){s=s.props.ref,i.ref=s!==void 0?s:null}function au(i,s){throw s.$$typeof===v?Error(a(525)):(i=Object.prototype.toString.call(s),Error(a(31,i==="[object Object]"?"object with keys {"+Object.keys(s).join(", ")+"}":i)))}function I1(i){var s=i._init;return s(i._payload)}function B1(i){function s(K,X){if(i){var ne=K.deletions;ne===null?(K.deletions=[X],K.flags|=16):ne.push(X)}}function r(K,X){if(!i)return null;for(;X!==null;)s(K,X),X=X.sibling;return null}function c(K){for(var X=new Map;K!==null;)K.key!==null?X.set(K.key,K):X.set(K.index,K),K=K.sibling;return X}function p(K,X){return K=ls(K,X),K.index=0,K.sibling=null,K}function _(K,X,ne){return K.index=ne,i?(ne=K.alternate,ne!==null?(ne=ne.index,ne<X?(K.flags|=67108866,X):ne):(K.flags|=67108866,X)):(K.flags|=1048576,X)}function E(K){return i&&K.alternate===null&&(K.flags|=67108866),K}function A(K,X,ne,ve){return X===null||X.tag!==6?(X=cd(ne,K.mode,ve),X.return=K,X):(X=p(X,ne),X.return=K,X)}function H(K,X,ne,ve){var qe=ne.type;return qe===b?pe(K,X,ne.props.children,ve,ne.key):X!==null&&(X.elementType===qe||typeof qe=="object"&&qe!==null&&qe.$$typeof===V&&I1(qe)===X.type)?(X=p(X,ne.props),hl(X,ne),X.return=K,X):(X=jc(ne.type,ne.key,ne.props,null,K.mode,ve),hl(X,ne),X.return=K,X)}function ie(K,X,ne,ve){return X===null||X.tag!==4||X.stateNode.containerInfo!==ne.containerInfo||X.stateNode.implementation!==ne.implementation?(X=ud(ne,K.mode,ve),X.return=K,X):(X=p(X,ne.children||[]),X.return=K,X)}function pe(K,X,ne,ve,qe){return X===null||X.tag!==7?(X=Ha(ne,K.mode,ve,qe),X.return=K,X):(X=p(X,ne),X.return=K,X)}function ye(K,X,ne){if(typeof X=="string"&&X!==""||typeof X=="number"||typeof X=="bigint")return X=cd(""+X,K.mode,ne),X.return=K,X;if(typeof X=="object"&&X!==null){switch(X.$$typeof){case x:return ne=jc(X.type,X.key,X.props,null,K.mode,ne),hl(ne,X),ne.return=K,ne;case y:return X=ud(X,K.mode,ne),X.return=K,X;case V:var ve=X._init;return X=ve(X._payload),ye(K,X,ne)}if(me(X)||ce(X))return X=Ha(X,K.mode,ne,null),X.return=K,X;if(typeof X.then=="function")return ye(K,su(X),ne);if(X.$$typeof===T)return ye(K,Wc(K,X),ne);au(K,X)}return null}function se(K,X,ne,ve){var qe=X!==null?X.key:null;if(typeof ne=="string"&&ne!==""||typeof ne=="number"||typeof ne=="bigint")return qe!==null?null:A(K,X,""+ne,ve);if(typeof ne=="object"&&ne!==null){switch(ne.$$typeof){case x:return ne.key===qe?H(K,X,ne,ve):null;case y:return ne.key===qe?ie(K,X,ne,ve):null;case V:return qe=ne._init,ne=qe(ne._payload),se(K,X,ne,ve)}if(me(ne)||ce(ne))return qe!==null?null:pe(K,X,ne,ve,null);if(typeof ne.then=="function")return se(K,X,su(ne),ve);if(ne.$$typeof===T)return se(K,X,Wc(K,ne),ve);au(K,ne)}return null}function ae(K,X,ne,ve,qe){if(typeof ve=="string"&&ve!==""||typeof ve=="number"||typeof ve=="bigint")return K=K.get(ne)||null,A(X,K,""+ve,qe);if(typeof ve=="object"&&ve!==null){switch(ve.$$typeof){case x:return K=K.get(ve.key===null?ne:ve.key)||null,H(X,K,ve,qe);case y:return K=K.get(ve.key===null?ne:ve.key)||null,ie(X,K,ve,qe);case V:var yt=ve._init;return ve=yt(ve._payload),ae(K,X,ne,ve,qe)}if(me(ve)||ce(ve))return K=K.get(ne)||null,pe(X,K,ve,qe,null);if(typeof ve.then=="function")return ae(K,X,ne,su(ve),qe);if(ve.$$typeof===T)return ae(K,X,ne,Wc(X,ve),qe);au(X,ve)}return null}function st(K,X,ne,ve){for(var qe=null,yt=null,Ze=X,nt=X=0,An=null;Ze!==null&&nt<ne.length;nt++){Ze.index>nt?(An=Ze,Ze=null):An=Ze.sibling;var Nt=se(K,Ze,ne[nt],ve);if(Nt===null){Ze===null&&(Ze=An);break}i&&Ze&&Nt.alternate===null&&s(K,Ze),X=_(Nt,X,nt),yt===null?qe=Nt:yt.sibling=Nt,yt=Nt,Ze=An}if(nt===ne.length)return r(K,Ze),Dt&&Ga(K,nt),qe;if(Ze===null){for(;nt<ne.length;nt++)Ze=ye(K,ne[nt],ve),Ze!==null&&(X=_(Ze,X,nt),yt===null?qe=Ze:yt.sibling=Ze,yt=Ze);return Dt&&Ga(K,nt),qe}for(Ze=c(Ze);nt<ne.length;nt++)An=ae(Ze,K,nt,ne[nt],ve),An!==null&&(i&&An.alternate!==null&&Ze.delete(An.key===null?nt:An.key),X=_(An,X,nt),yt===null?qe=An:yt.sibling=An,yt=An);return i&&Ze.forEach(function(xa){return s(K,xa)}),Dt&&Ga(K,nt),qe}function et(K,X,ne,ve){if(ne==null)throw Error(a(151));for(var qe=null,yt=null,Ze=X,nt=X=0,An=null,Nt=ne.next();Ze!==null&&!Nt.done;nt++,Nt=ne.next()){Ze.index>nt?(An=Ze,Ze=null):An=Ze.sibling;var xa=se(K,Ze,Nt.value,ve);if(xa===null){Ze===null&&(Ze=An);break}i&&Ze&&xa.alternate===null&&s(K,Ze),X=_(xa,X,nt),yt===null?qe=xa:yt.sibling=xa,yt=xa,Ze=An}if(Nt.done)return r(K,Ze),Dt&&Ga(K,nt),qe;if(Ze===null){for(;!Nt.done;nt++,Nt=ne.next())Nt=ye(K,Nt.value,ve),Nt!==null&&(X=_(Nt,X,nt),yt===null?qe=Nt:yt.sibling=Nt,yt=Nt);return Dt&&Ga(K,nt),qe}for(Ze=c(Ze);!Nt.done;nt++,Nt=ne.next())Nt=ae(Ze,K,nt,Nt.value,ve),Nt!==null&&(i&&Nt.alternate!==null&&Ze.delete(Nt.key===null?nt:Nt.key),X=_(Nt,X,nt),yt===null?qe=Nt:yt.sibling=Nt,yt=Nt);return i&&Ze.forEach(function(LS){return s(K,LS)}),Dt&&Ga(K,nt),qe}function Ht(K,X,ne,ve){if(typeof ne=="object"&&ne!==null&&ne.type===b&&ne.key===null&&(ne=ne.props.children),typeof ne=="object"&&ne!==null){switch(ne.$$typeof){case x:e:{for(var qe=ne.key;X!==null;){if(X.key===qe){if(qe=ne.type,qe===b){if(X.tag===7){r(K,X.sibling),ve=p(X,ne.props.children),ve.return=K,K=ve;break e}}else if(X.elementType===qe||typeof qe=="object"&&qe!==null&&qe.$$typeof===V&&I1(qe)===X.type){r(K,X.sibling),ve=p(X,ne.props),hl(ve,ne),ve.return=K,K=ve;break e}r(K,X);break}else s(K,X);X=X.sibling}ne.type===b?(ve=Ha(ne.props.children,K.mode,ve,ne.key),ve.return=K,K=ve):(ve=jc(ne.type,ne.key,ne.props,null,K.mode,ve),hl(ve,ne),ve.return=K,K=ve)}return E(K);case y:e:{for(qe=ne.key;X!==null;){if(X.key===qe)if(X.tag===4&&X.stateNode.containerInfo===ne.containerInfo&&X.stateNode.implementation===ne.implementation){r(K,X.sibling),ve=p(X,ne.children||[]),ve.return=K,K=ve;break e}else{r(K,X);break}else s(K,X);X=X.sibling}ve=ud(ne,K.mode,ve),ve.return=K,K=ve}return E(K);case V:return qe=ne._init,ne=qe(ne._payload),Ht(K,X,ne,ve)}if(me(ne))return st(K,X,ne,ve);if(ce(ne)){if(qe=ce(ne),typeof qe!="function")throw Error(a(150));return ne=qe.call(ne),et(K,X,ne,ve)}if(typeof ne.then=="function")return Ht(K,X,su(ne),ve);if(ne.$$typeof===T)return Ht(K,X,Wc(K,ne),ve);au(K,ne)}return typeof ne=="string"&&ne!==""||typeof ne=="number"||typeof ne=="bigint"?(ne=""+ne,X!==null&&X.tag===6?(r(K,X.sibling),ve=p(X,ne),ve.return=K,K=ve):(r(K,X),ve=cd(ne,K.mode,ve),ve.return=K,K=ve),E(K)):r(K,X)}return function(K,X,ne,ve){try{dl=0;var qe=Ht(K,X,ne,ve);return zr=null,qe}catch(Ze){if(Ze===il||Ze===qc)throw Ze;var yt=si(29,Ze,null,K.mode);return yt.lanes=ve,yt.return=K,yt}finally{}}}var Vr=B1(!0),F1=B1(!1),_i=ee(null),Vi=null;function ia(i){var s=i.alternate;be(yn,yn.current&1),be(_i,i),Vi===null&&(s===null||Or.current!==null||s.memoizedState!==null)&&(Vi=i)}function z1(i){if(i.tag===22){if(be(yn,yn.current),be(_i,i),Vi===null){var s=i.alternate;s!==null&&s.memoizedState!==null&&(Vi=i)}}else sa()}function sa(){be(yn,yn.current),be(_i,_i.current)}function ps(i){Me(_i),Vi===i&&(Vi=null),Me(yn)}var yn=ee(0);function ru(i){for(var s=i;s!==null;){if(s.tag===13){var r=s.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||Dh(r)))return s}else if(s.tag===19&&s.memoizedProps.revealOrder!==void 0){if((s.flags&128)!==0)return s}else if(s.child!==null){s.child.return=s,s=s.child;continue}if(s===i)break;for(;s.sibling===null;){if(s.return===null||s.return===i)return null;s=s.return}s.sibling.return=s.return,s=s.sibling}return null}function kd(i,s,r,c){s=i.memoizedState,r=r(c,s),r=r==null?s:g({},s,r),i.memoizedState=r,i.lanes===0&&(i.updateQueue.baseState=r)}var Gd={enqueueSetState:function(i,s,r){i=i._reactInternals;var c=li(),p=ea(c);p.payload=s,r!=null&&(p.callback=r),s=ta(i,p,c),s!==null&&(ci(s,i,c),al(s,i,c))},enqueueReplaceState:function(i,s,r){i=i._reactInternals;var c=li(),p=ea(c);p.tag=1,p.payload=s,r!=null&&(p.callback=r),s=ta(i,p,c),s!==null&&(ci(s,i,c),al(s,i,c))},enqueueForceUpdate:function(i,s){i=i._reactInternals;var r=li(),c=ea(r);c.tag=2,s!=null&&(c.callback=s),s=ta(i,c,r),s!==null&&(ci(s,i,r),al(s,i,r))}};function V1(i,s,r,c,p,_,E){return i=i.stateNode,typeof i.shouldComponentUpdate=="function"?i.shouldComponentUpdate(c,_,E):s.prototype&&s.prototype.isPureReactComponent?!Zo(r,c)||!Zo(p,_):!0}function j1(i,s,r,c){i=s.state,typeof s.componentWillReceiveProps=="function"&&s.componentWillReceiveProps(r,c),typeof s.UNSAFE_componentWillReceiveProps=="function"&&s.UNSAFE_componentWillReceiveProps(r,c),s.state!==i&&Gd.enqueueReplaceState(s,s.state,null)}function Qa(i,s){var r=s;if("ref"in s){r={};for(var c in s)c!=="ref"&&(r[c]=s[c])}if(i=i.defaultProps){r===s&&(r=g({},r));for(var p in i)r[p]===void 0&&(r[p]=i[p])}return r}var ou=typeof reportError=="function"?reportError:function(i){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var s=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof i=="object"&&i!==null&&typeof i.message=="string"?String(i.message):String(i),error:i});if(!window.dispatchEvent(s))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",i);return}console.error(i)};function H1(i){ou(i)}function k1(i){console.error(i)}function G1(i){ou(i)}function lu(i,s){try{var r=i.onUncaughtError;r(s.value,{componentStack:s.stack})}catch(c){setTimeout(function(){throw c})}}function W1(i,s,r){try{var c=i.onCaughtError;c(r.value,{componentStack:r.stack,errorBoundary:s.tag===1?s.stateNode:null})}catch(p){setTimeout(function(){throw p})}}function Wd(i,s,r){return r=ea(r),r.tag=3,r.payload={element:null},r.callback=function(){lu(i,s)},r}function X1(i){return i=ea(i),i.tag=3,i}function q1(i,s,r,c){var p=r.type.getDerivedStateFromError;if(typeof p=="function"){var _=c.value;i.payload=function(){return p(_)},i.callback=function(){W1(s,r,c)}}var E=r.stateNode;E!==null&&typeof E.componentDidCatch=="function"&&(i.callback=function(){W1(s,r,c),typeof p!="function"&&(ua===null?ua=new Set([this]):ua.add(this));var A=c.stack;this.componentDidCatch(c.value,{componentStack:A!==null?A:""})})}function L5(i,s,r,c,p){if(r.flags|=32768,c!==null&&typeof c=="object"&&typeof c.then=="function"){if(s=r.alternate,s!==null&&el(s,r,p,!0),r=_i.current,r!==null){switch(r.tag){case 13:return Vi===null?mh():r.alternate===null&&sn===0&&(sn=3),r.flags&=-257,r.flags|=65536,r.lanes=p,c===yd?r.flags|=16384:(s=r.updateQueue,s===null?r.updateQueue=new Set([c]):s.add(c),vh(i,c,p)),!1;case 22:return r.flags|=65536,c===yd?r.flags|=16384:(s=r.updateQueue,s===null?(s={transitions:null,markerInstances:null,retryQueue:new Set([c])},r.updateQueue=s):(r=s.retryQueue,r===null?s.retryQueue=new Set([c]):r.add(c)),vh(i,c,p)),!1}throw Error(a(435,r.tag))}return vh(i,c,p),mh(),!1}if(Dt)return s=_i.current,s!==null?((s.flags&65536)===0&&(s.flags|=256),s.flags|=65536,s.lanes=p,c!==hd&&(i=Error(a(422),{cause:c}),Jo(mi(i,r)))):(c!==hd&&(s=Error(a(423),{cause:c}),Jo(mi(s,r))),i=i.current.alternate,i.flags|=65536,p&=-p,i.lanes|=p,c=mi(c,r),p=Wd(i.stateNode,c,p),bd(i,p),sn!==4&&(sn=2)),!1;var _=Error(a(520),{cause:c});if(_=mi(_,r),yl===null?yl=[_]:yl.push(_),sn!==4&&(sn=2),s===null)return!0;c=mi(c,r),r=s;do{switch(r.tag){case 3:return r.flags|=65536,i=p&-p,r.lanes|=i,i=Wd(r.stateNode,c,i),bd(r,i),!1;case 1:if(s=r.type,_=r.stateNode,(r.flags&128)===0&&(typeof s.getDerivedStateFromError=="function"||_!==null&&typeof _.componentDidCatch=="function"&&(ua===null||!ua.has(_))))return r.flags|=65536,p&=-p,r.lanes|=p,p=X1(p),q1(p,i,r,c),bd(r,p),!1}r=r.return}while(r!==null);return!1}var Y1=Error(a(461)),Tn=!1;function Dn(i,s,r,c){s.child=i===null?F1(s,null,r,c):Vr(s,i.child,r,c)}function Z1(i,s,r,c,p){r=r.render;var _=s.ref;if("ref"in c){var E={};for(var A in c)A!=="ref"&&(E[A]=c[A])}else E=c;return Ya(s),c=Ad(i,s,r,E,_,p),A=Rd(),i!==null&&!Tn?(Nd(i,s,p),ms(i,s,p)):(Dt&&A&&fd(s),s.flags|=1,Dn(i,s,c,p),s.child)}function K1(i,s,r,c,p){if(i===null){var _=r.type;return typeof _=="function"&&!ld(_)&&_.defaultProps===void 0&&r.compare===null?(s.tag=15,s.type=_,Q1(i,s,_,c,p)):(i=jc(r.type,null,c,s,s.mode,p),i.ref=s.ref,i.return=s,s.child=i)}if(_=i.child,!Jd(i,p)){var E=_.memoizedProps;if(r=r.compare,r=r!==null?r:Zo,r(E,c)&&i.ref===s.ref)return ms(i,s,p)}return s.flags|=1,i=ls(_,c),i.ref=s.ref,i.return=s,s.child=i}function Q1(i,s,r,c,p){if(i!==null){var _=i.memoizedProps;if(Zo(_,c)&&i.ref===s.ref)if(Tn=!1,s.pendingProps=c=_,Jd(i,p))(i.flags&131072)!==0&&(Tn=!0);else return s.lanes=i.lanes,ms(i,s,p)}return Xd(i,s,r,c,p)}function $1(i,s,r){var c=s.pendingProps,p=c.children,_=i!==null?i.memoizedState:null;if(c.mode==="hidden"){if((s.flags&128)!==0){if(c=_!==null?_.baseLanes|r:r,i!==null){for(p=s.child=i.child,_=0;p!==null;)_=_|p.lanes|p.childLanes,p=p.sibling;s.childLanes=_&~c}else s.childLanes=0,s.child=null;return J1(i,s,c,r)}if((r&536870912)!==0)s.memoizedState={baseLanes:0,cachePool:null},i!==null&&Xc(s,_!==null?_.cachePool:null),_!==null?Q2(s,_):wd(),z1(s);else return s.lanes=s.childLanes=536870912,J1(i,s,_!==null?_.baseLanes|r:r,r)}else _!==null?(Xc(s,_.cachePool),Q2(s,_),sa(),s.memoizedState=null):(i!==null&&Xc(s,null),wd(),sa());return Dn(i,s,p,r),s.child}function J1(i,s,r,c){var p=_d();return p=p===null?null:{parent:_n._currentValue,pool:p},s.memoizedState={baseLanes:r,cachePool:p},i!==null&&Xc(s,null),wd(),z1(s),i!==null&&el(i,s,c,!0),null}function cu(i,s){var r=s.ref;if(r===null)i!==null&&i.ref!==null&&(s.flags|=4194816);else{if(typeof r!="function"&&typeof r!="object")throw Error(a(284));(i===null||i.ref!==r)&&(s.flags|=4194816)}}function Xd(i,s,r,c,p){return Ya(s),r=Ad(i,s,r,c,void 0,p),c=Rd(),i!==null&&!Tn?(Nd(i,s,p),ms(i,s,p)):(Dt&&c&&fd(s),s.flags|=1,Dn(i,s,r,p),s.child)}function eg(i,s,r,c,p,_){return Ya(s),s.updateQueue=null,r=J2(s,c,r,p),$2(i),c=Rd(),i!==null&&!Tn?(Nd(i,s,_),ms(i,s,_)):(Dt&&c&&fd(s),s.flags|=1,Dn(i,s,r,_),s.child)}function tg(i,s,r,c,p){if(Ya(s),s.stateNode===null){var _=Nr,E=r.contextType;typeof E=="object"&&E!==null&&(_=Bn(E)),_=new r(c,_),s.memoizedState=_.state!==null&&_.state!==void 0?_.state:null,_.updater=Gd,s.stateNode=_,_._reactInternals=s,_=s.stateNode,_.props=c,_.state=s.memoizedState,_.refs={},Sd(s),E=r.contextType,_.context=typeof E=="object"&&E!==null?Bn(E):Nr,_.state=s.memoizedState,E=r.getDerivedStateFromProps,typeof E=="function"&&(kd(s,r,E,c),_.state=s.memoizedState),typeof r.getDerivedStateFromProps=="function"||typeof _.getSnapshotBeforeUpdate=="function"||typeof _.UNSAFE_componentWillMount!="function"&&typeof _.componentWillMount!="function"||(E=_.state,typeof _.componentWillMount=="function"&&_.componentWillMount(),typeof _.UNSAFE_componentWillMount=="function"&&_.UNSAFE_componentWillMount(),E!==_.state&&Gd.enqueueReplaceState(_,_.state,null),ol(s,c,_,p),rl(),_.state=s.memoizedState),typeof _.componentDidMount=="function"&&(s.flags|=4194308),c=!0}else if(i===null){_=s.stateNode;var A=s.memoizedProps,H=Qa(r,A);_.props=H;var ie=_.context,pe=r.contextType;E=Nr,typeof pe=="object"&&pe!==null&&(E=Bn(pe));var ye=r.getDerivedStateFromProps;pe=typeof ye=="function"||typeof _.getSnapshotBeforeUpdate=="function",A=s.pendingProps!==A,pe||typeof _.UNSAFE_componentWillReceiveProps!="function"&&typeof _.componentWillReceiveProps!="function"||(A||ie!==E)&&j1(s,_,c,E),Js=!1;var se=s.memoizedState;_.state=se,ol(s,c,_,p),rl(),ie=s.memoizedState,A||se!==ie||Js?(typeof ye=="function"&&(kd(s,r,ye,c),ie=s.memoizedState),(H=Js||V1(s,r,H,c,se,ie,E))?(pe||typeof _.UNSAFE_componentWillMount!="function"&&typeof _.componentWillMount!="function"||(typeof _.componentWillMount=="function"&&_.componentWillMount(),typeof _.UNSAFE_componentWillMount=="function"&&_.UNSAFE_componentWillMount()),typeof _.componentDidMount=="function"&&(s.flags|=4194308)):(typeof _.componentDidMount=="function"&&(s.flags|=4194308),s.memoizedProps=c,s.memoizedState=ie),_.props=c,_.state=ie,_.context=E,c=H):(typeof _.componentDidMount=="function"&&(s.flags|=4194308),c=!1)}else{_=s.stateNode,Md(i,s),E=s.memoizedProps,pe=Qa(r,E),_.props=pe,ye=s.pendingProps,se=_.context,ie=r.contextType,H=Nr,typeof ie=="object"&&ie!==null&&(H=Bn(ie)),A=r.getDerivedStateFromProps,(ie=typeof A=="function"||typeof _.getSnapshotBeforeUpdate=="function")||typeof _.UNSAFE_componentWillReceiveProps!="function"&&typeof _.componentWillReceiveProps!="function"||(E!==ye||se!==H)&&j1(s,_,c,H),Js=!1,se=s.memoizedState,_.state=se,ol(s,c,_,p),rl();var ae=s.memoizedState;E!==ye||se!==ae||Js||i!==null&&i.dependencies!==null&&Gc(i.dependencies)?(typeof A=="function"&&(kd(s,r,A,c),ae=s.memoizedState),(pe=Js||V1(s,r,pe,c,se,ae,H)||i!==null&&i.dependencies!==null&&Gc(i.dependencies))?(ie||typeof _.UNSAFE_componentWillUpdate!="function"&&typeof _.componentWillUpdate!="function"||(typeof _.componentWillUpdate=="function"&&_.componentWillUpdate(c,ae,H),typeof _.UNSAFE_componentWillUpdate=="function"&&_.UNSAFE_componentWillUpdate(c,ae,H)),typeof _.componentDidUpdate=="function"&&(s.flags|=4),typeof _.getSnapshotBeforeUpdate=="function"&&(s.flags|=1024)):(typeof _.componentDidUpdate!="function"||E===i.memoizedProps&&se===i.memoizedState||(s.flags|=4),typeof _.getSnapshotBeforeUpdate!="function"||E===i.memoizedProps&&se===i.memoizedState||(s.flags|=1024),s.memoizedProps=c,s.memoizedState=ae),_.props=c,_.state=ae,_.context=H,c=pe):(typeof _.componentDidUpdate!="function"||E===i.memoizedProps&&se===i.memoizedState||(s.flags|=4),typeof _.getSnapshotBeforeUpdate!="function"||E===i.memoizedProps&&se===i.memoizedState||(s.flags|=1024),c=!1)}return _=c,cu(i,s),c=(s.flags&128)!==0,_||c?(_=s.stateNode,r=c&&typeof r.getDerivedStateFromError!="function"?null:_.render(),s.flags|=1,i!==null&&c?(s.child=Vr(s,i.child,null,p),s.child=Vr(s,null,r,p)):Dn(i,s,r,p),s.memoizedState=_.state,i=s.child):i=ms(i,s,p),i}function ng(i,s,r,c){return $o(),s.flags|=256,Dn(i,s,r,c),s.child}var qd={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Yd(i){return{baseLanes:i,cachePool:k2()}}function Zd(i,s,r){return i=i!==null?i.childLanes&~r:0,s&&(i|=yi),i}function ig(i,s,r){var c=s.pendingProps,p=!1,_=(s.flags&128)!==0,E;if((E=_)||(E=i!==null&&i.memoizedState===null?!1:(yn.current&2)!==0),E&&(p=!0,s.flags&=-129),E=(s.flags&32)!==0,s.flags&=-33,i===null){if(Dt){if(p?ia(s):sa(),Dt){var A=nn,H;if(H=A){e:{for(H=A,A=zi;H.nodeType!==8;){if(!A){A=null;break e}if(H=Ai(H.nextSibling),H===null){A=null;break e}}A=H}A!==null?(s.memoizedState={dehydrated:A,treeContext:ka!==null?{id:cs,overflow:us}:null,retryLane:536870912,hydrationErrors:null},H=si(18,null,null,0),H.stateNode=A,H.return=s,s.child=H,Hn=s,nn=null,H=!0):H=!1}H||Xa(s)}if(A=s.memoizedState,A!==null&&(A=A.dehydrated,A!==null))return Dh(A)?s.lanes=32:s.lanes=536870912,null;ps(s)}return A=c.children,c=c.fallback,p?(sa(),p=s.mode,A=uu({mode:"hidden",children:A},p),c=Ha(c,p,r,null),A.return=s,c.return=s,A.sibling=c,s.child=A,p=s.child,p.memoizedState=Yd(r),p.childLanes=Zd(i,E,r),s.memoizedState=qd,c):(ia(s),Kd(s,A))}if(H=i.memoizedState,H!==null&&(A=H.dehydrated,A!==null)){if(_)s.flags&256?(ia(s),s.flags&=-257,s=Qd(i,s,r)):s.memoizedState!==null?(sa(),s.child=i.child,s.flags|=128,s=null):(sa(),p=c.fallback,A=s.mode,c=uu({mode:"visible",children:c.children},A),p=Ha(p,A,r,null),p.flags|=2,c.return=s,p.return=s,c.sibling=p,s.child=c,Vr(s,i.child,null,r),c=s.child,c.memoizedState=Yd(r),c.childLanes=Zd(i,E,r),s.memoizedState=qd,s=p);else if(ia(s),Dh(A)){if(E=A.nextSibling&&A.nextSibling.dataset,E)var ie=E.dgst;E=ie,c=Error(a(419)),c.stack="",c.digest=E,Jo({value:c,source:null,stack:null}),s=Qd(i,s,r)}else if(Tn||el(i,s,r,!1),E=(r&i.childLanes)!==0,Tn||E){if(E=Yt,E!==null&&(c=r&-r,c=(c&42)!==0?1:lt(c),c=(c&(E.suspendedLanes|r))!==0?0:c,c!==0&&c!==H.retryLane))throw H.retryLane=c,Rr(i,c),ci(E,i,c),Y1;A.data==="$?"||mh(),s=Qd(i,s,r)}else A.data==="$?"?(s.flags|=192,s.child=i.child,s=null):(i=H.treeContext,nn=Ai(A.nextSibling),Hn=s,Dt=!0,Wa=null,zi=!1,i!==null&&(vi[xi++]=cs,vi[xi++]=us,vi[xi++]=ka,cs=i.id,us=i.overflow,ka=s),s=Kd(s,c.children),s.flags|=4096);return s}return p?(sa(),p=c.fallback,A=s.mode,H=i.child,ie=H.sibling,c=ls(H,{mode:"hidden",children:c.children}),c.subtreeFlags=H.subtreeFlags&65011712,ie!==null?p=ls(ie,p):(p=Ha(p,A,r,null),p.flags|=2),p.return=s,c.return=s,c.sibling=p,s.child=c,c=p,p=s.child,A=i.child.memoizedState,A===null?A=Yd(r):(H=A.cachePool,H!==null?(ie=_n._currentValue,H=H.parent!==ie?{parent:ie,pool:ie}:H):H=k2(),A={baseLanes:A.baseLanes|r,cachePool:H}),p.memoizedState=A,p.childLanes=Zd(i,E,r),s.memoizedState=qd,c):(ia(s),r=i.child,i=r.sibling,r=ls(r,{mode:"visible",children:c.children}),r.return=s,r.sibling=null,i!==null&&(E=s.deletions,E===null?(s.deletions=[i],s.flags|=16):E.push(i)),s.child=r,s.memoizedState=null,r)}function Kd(i,s){return s=uu({mode:"visible",children:s},i.mode),s.return=i,i.child=s}function uu(i,s){return i=si(22,i,null,s),i.lanes=0,i.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},i}function Qd(i,s,r){return Vr(s,i.child,null,r),i=Kd(s,s.pendingProps.children),i.flags|=2,s.memoizedState=null,i}function sg(i,s,r){i.lanes|=s;var c=i.alternate;c!==null&&(c.lanes|=s),md(i.return,s,r)}function $d(i,s,r,c,p){var _=i.memoizedState;_===null?i.memoizedState={isBackwards:s,rendering:null,renderingStartTime:0,last:c,tail:r,tailMode:p}:(_.isBackwards=s,_.rendering=null,_.renderingStartTime=0,_.last=c,_.tail=r,_.tailMode=p)}function ag(i,s,r){var c=s.pendingProps,p=c.revealOrder,_=c.tail;if(Dn(i,s,c.children,r),c=yn.current,(c&2)!==0)c=c&1|2,s.flags|=128;else{if(i!==null&&(i.flags&128)!==0)e:for(i=s.child;i!==null;){if(i.tag===13)i.memoizedState!==null&&sg(i,r,s);else if(i.tag===19)sg(i,r,s);else if(i.child!==null){i.child.return=i,i=i.child;continue}if(i===s)break e;for(;i.sibling===null;){if(i.return===null||i.return===s)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}c&=1}switch(be(yn,c),p){case"forwards":for(r=s.child,p=null;r!==null;)i=r.alternate,i!==null&&ru(i)===null&&(p=r),r=r.sibling;r=p,r===null?(p=s.child,s.child=null):(p=r.sibling,r.sibling=null),$d(s,!1,p,r,_);break;case"backwards":for(r=null,p=s.child,s.child=null;p!==null;){if(i=p.alternate,i!==null&&ru(i)===null){s.child=p;break}i=p.sibling,p.sibling=r,r=p,p=i}$d(s,!0,r,null,_);break;case"together":$d(s,!1,null,null,void 0);break;default:s.memoizedState=null}return s.child}function ms(i,s,r){if(i!==null&&(s.dependencies=i.dependencies),ca|=s.lanes,(r&s.childLanes)===0)if(i!==null){if(el(i,s,r,!1),(r&s.childLanes)===0)return null}else return null;if(i!==null&&s.child!==i.child)throw Error(a(153));if(s.child!==null){for(i=s.child,r=ls(i,i.pendingProps),s.child=r,r.return=s;i.sibling!==null;)i=i.sibling,r=r.sibling=ls(i,i.pendingProps),r.return=s;r.sibling=null}return s.child}function Jd(i,s){return(i.lanes&s)!==0?!0:(i=i.dependencies,!!(i!==null&&Gc(i)))}function D5(i,s,r){switch(s.tag){case 3:Ue(s,s.stateNode.containerInfo),$s(s,_n,i.memoizedState.cache),$o();break;case 27:case 5:Qe(s);break;case 4:Ue(s,s.stateNode.containerInfo);break;case 10:$s(s,s.type,s.memoizedProps.value);break;case 13:var c=s.memoizedState;if(c!==null)return c.dehydrated!==null?(ia(s),s.flags|=128,null):(r&s.child.childLanes)!==0?ig(i,s,r):(ia(s),i=ms(i,s,r),i!==null?i.sibling:null);ia(s);break;case 19:var p=(i.flags&128)!==0;if(c=(r&s.childLanes)!==0,c||(el(i,s,r,!1),c=(r&s.childLanes)!==0),p){if(c)return ag(i,s,r);s.flags|=128}if(p=s.memoizedState,p!==null&&(p.rendering=null,p.tail=null,p.lastEffect=null),be(yn,yn.current),c)break;return null;case 22:case 23:return s.lanes=0,$1(i,s,r);case 24:$s(s,_n,i.memoizedState.cache)}return ms(i,s,r)}function rg(i,s,r){if(i!==null)if(i.memoizedProps!==s.pendingProps)Tn=!0;else{if(!Jd(i,r)&&(s.flags&128)===0)return Tn=!1,D5(i,s,r);Tn=(i.flags&131072)!==0}else Tn=!1,Dt&&(s.flags&1048576)!==0&&I2(s,kc,s.index);switch(s.lanes=0,s.tag){case 16:e:{i=s.pendingProps;var c=s.elementType,p=c._init;if(c=p(c._payload),s.type=c,typeof c=="function")ld(c)?(i=Qa(c,i),s.tag=1,s=tg(null,s,c,i,r)):(s.tag=0,s=Xd(null,s,c,i,r));else{if(c!=null){if(p=c.$$typeof,p===R){s.tag=11,s=Z1(null,s,c,i,r);break e}else if(p===F){s.tag=14,s=K1(null,s,c,i,r);break e}}throw s=ge(c)||c,Error(a(306,s,""))}}return s;case 0:return Xd(i,s,s.type,s.pendingProps,r);case 1:return c=s.type,p=Qa(c,s.pendingProps),tg(i,s,c,p,r);case 3:e:{if(Ue(s,s.stateNode.containerInfo),i===null)throw Error(a(387));c=s.pendingProps;var _=s.memoizedState;p=_.element,Md(i,s),ol(s,c,null,r);var E=s.memoizedState;if(c=E.cache,$s(s,_n,c),c!==_.cache&&gd(s,[_n],r,!0),rl(),c=E.element,_.isDehydrated)if(_={element:c,isDehydrated:!1,cache:E.cache},s.updateQueue.baseState=_,s.memoizedState=_,s.flags&256){s=ng(i,s,c,r);break e}else if(c!==p){p=mi(Error(a(424)),s),Jo(p),s=ng(i,s,c,r);break e}else{switch(i=s.stateNode.containerInfo,i.nodeType){case 9:i=i.body;break;default:i=i.nodeName==="HTML"?i.ownerDocument.body:i}for(nn=Ai(i.firstChild),Hn=s,Dt=!0,Wa=null,zi=!0,r=F1(s,null,c,r),s.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling}else{if($o(),c===p){s=ms(i,s,r);break e}Dn(i,s,c,r)}s=s.child}return s;case 26:return cu(i,s),i===null?(r=uv(s.type,null,s.pendingProps,null))?s.memoizedState=r:Dt||(r=s.type,i=s.pendingProps,c=Eu(Ee.current).createElement(r),c[vn]=s,c[Nn]=i,Pn(c,r,i),un(c),s.stateNode=c):s.memoizedState=uv(s.type,i.memoizedProps,s.pendingProps,i.memoizedState),null;case 27:return Qe(s),i===null&&Dt&&(c=s.stateNode=ov(s.type,s.pendingProps,Ee.current),Hn=s,zi=!0,p=nn,ha(s.type)?(Uh=p,nn=Ai(c.firstChild)):nn=p),Dn(i,s,s.pendingProps.children,r),cu(i,s),i===null&&(s.flags|=4194304),s.child;case 5:return i===null&&Dt&&((p=c=nn)&&(c=rS(c,s.type,s.pendingProps,zi),c!==null?(s.stateNode=c,Hn=s,nn=Ai(c.firstChild),zi=!1,p=!0):p=!1),p||Xa(s)),Qe(s),p=s.t
vendor: 1,668 bytes, line 48
48ype,_=s.pendingProps,E=i!==null?i.memoizedProps:null,c=_.children,Rh(p,_)?c=null:E!==null&&Rh(p,E)&&(s.flags|=32),s.memoizedState!==null&&(p=Ad(i,s,E5,null,null,r),Rl._currentValue=p),cu(i,s),Dn(i,s,c,r),s.child;case 6:return i===null&&Dt&&((i=r=nn)&&(r=oS(r,s.pendingProps,zi),r!==null?(s.stateNode=r,Hn=s,nn=null,i=!0):i=!1),i||Xa(s)),null;case 13:return ig(i,s,r);case 4:return Ue(s,s.stateNode.containerInfo),c=s.pendingProps,i===null?s.child=Vr(s,null,c,r):Dn(i,s,c,r),s.child;case 11:return Z1(i,s,s.type,s.pendingProps,r);case 7:return Dn(i,s,s.pendingProps,r),s.child;case 8:return Dn(i,s,s.pendingProps.children,r),s.child;case 12:return Dn(i,s,s.pendingProps.children,r),s.child;case 10:return c=s.pendingProps,$s(s,s.type,c.value),Dn(i,s,c.children,r),s.child;case 9:return p=s.type._context,c=s.pendingProps.children,Ya(s),p=Bn(p),c=c(p),s.flags|=1,Dn(i,s,c,r),s.child;case 14:return K1(i,s,s.type,s.pendingProps,r);case 15:return Q1(i,s,s.type,s.pendingProps,r);case 19:return ag(i,s,r);case 31:return c=s.pendingProps,r=s.mode,c={mode:c.mode,children:c.children},i===null?(r=uu(c,r),r.ref=s.ref,s.child=r,r.return=s,s=r):(r=ls(i.child,c),r.ref=s.ref,s.child=r,r.return=s,s=r),s;case 22:return $1(i,s,r);case 24:return Ya(s),c=Bn(_n),i===null?(p=_d(),p===null&&(p=Yt,_=vd(),p.pooledCache=_,_.refCount++,_!==null&&(p.pooledCacheLanes|=r),p=_),s.memoizedState={parent:c,cache:p},Sd(s),$s(s,_n,p)):((i.lanes&r)!==0&&(Md(i,s),ol(s,null,null,r),rl()),p=i.memoizedState,_=s.memoizedState,p.parent!==c?(p={parent:c,cache:c},s.memoizedState=p,s.lanes===0&&(s.memoizedState=s.updateQueue.baseState=p),$s(s,_n,c)):(c=_.cache,$s(s,_n,c),c!==p.cache&&gd(s,[_n],r,!0))
vendor: 50,479 bytes, lines 48-49
48),Dn(i,s,s.pendingProps.children,r),s.child;case 29:throw s.pendingProps}throw Error(a(156,s.tag))}function gs(i){i.flags|=4}function og(i,s){if(s.type!=="stylesheet"||(s.state.loading&4)!==0)i.flags&=-16777217;else if(i.flags|=16777216,!mv(s)){if(s=_i.current,s!==null&&((Ct&4194048)===Ct?Vi!==null:(Ct&62914560)!==Ct&&(Ct&536870912)===0||s!==Vi))throw sl=yd,G2;i.flags|=8192}}function fu(i,s){s!==null&&(i.flags|=4),i.flags&16384&&(s=i.tag!==22?Pe():536870912,i.lanes|=s,Gr|=s)}function pl(i,s){if(!Dt)switch(i.tailMode){case"hidden":s=i.tail;for(var r=null;s!==null;)s.alternate!==null&&(r=s),s=s.sibling;r===null?i.tail=null:r.sibling=null;break;case"collapsed":r=i.tail;for(var c=null;r!==null;)r.alternate!==null&&(c=r),r=r.sibling;c===null?s||i.tail===null?i.tail=null:i.tail.sibling=null:c.sibling=null}}function Jt(i){var s=i.alternate!==null&&i.alternate.child===i.child,r=0,c=0;if(s)for(var p=i.child;p!==null;)r|=p.lanes|p.childLanes,c|=p.subtreeFlags&65011712,c|=p.flags&65011712,p.return=i,p=p.sibling;else for(p=i.child;p!==null;)r|=p.lanes|p.childLanes,c|=p.subtreeFlags,c|=p.flags,p.return=i,p=p.sibling;return i.subtreeFlags|=c,i.childLanes=r,s}function U5(i,s,r){var c=s.pendingProps;switch(dd(s),s.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Jt(s),null;case 1:return Jt(s),null;case 3:return r=s.stateNode,c=null,i!==null&&(c=i.memoizedState.cache),s.memoizedState.cache!==c&&(s.flags|=2048),ds(_n),ut(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(i===null||i.child===null)&&(Qo(s)?gs(s):i===null||i.memoizedState.isDehydrated&&(s.flags&256)===0||(s.flags|=1024,z2())),Jt(s),null;case 26:return r=s.memoizedState,i===null?(gs(s),r!==null?(Jt(s),og(s,r)):(Jt(s),s.flags&=-16777217)):r?r!==i.memoizedState?(gs(s),Jt(s),og(s,r)):(Jt(s),s.flags&=-16777217):(i.memoizedProps!==c&&gs(s),Jt(s),s.flags&=-16777217),null;case 27:Et(s),r=Ee.current;var p=s.type;if(i!==null&&s.stateNode!=null)i.memoizedProps!==c&&gs(s);else{if(!c){if(s.stateNode===null)throw Error(a(166));return Jt(s),null}i=te.current,Qo(s)?B2(s):(i=ov(p,c,r),s.stateNode=i,gs(s))}return Jt(s),null;case 5:if(Et(s),r=s.type,i!==null&&s.stateNode!=null)i.memoizedProps!==c&&gs(s);else{if(!c){if(s.stateNode===null)throw Error(a(166));return Jt(s),null}if(i=te.current,Qo(s))B2(s);else{switch(p=Eu(Ee.current),i){case 1:i=p.createElementNS("http://www.w3.org/2000/svg",r);break;case 2:i=p.createElementNS("http://www.w3.org/1998/Math/MathML",r);break;default:switch(r){case"svg":i=p.createElementNS("http://www.w3.org/2000/svg",r);break;case"math":i=p.createElementNS("http://www.w3.org/1998/Math/MathML",r);break;case"script":i=p.createElement("div"),i.innerHTML="<script><\/script>",i=i.removeChild(i.firstChild);break;case"select":i=typeof c.is=="string"?p.createElement("select",{is:c.is}):p.createElement("select"),c.multiple?i.multiple=!0:c.size&&(i.size=c.size);break;default:i=typeof c.is=="string"?p.createElement(r,{is:c.is}):p.createElement(r)}}i[vn]=s,i[Nn]=c;e:for(p=s.child;p!==null;){if(p.tag===5||p.tag===6)i.appendChild(p.stateNode);else if(p.tag!==4&&p.tag!==27&&p.child!==null){p.child.return=p,p=p.child;continue}if(p===s)break e;for(;p.sibling===null;){if(p.return===null||p.return===s)break e;p=p.return}p.sibling.return=p.return,p=p.sibling}s.stateNode=i;e:switch(Pn(i,r,c),r){case"button":case"input":case"select":case"textarea":i=!!c.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&gs(s)}}return Jt(s),s.flags&=-16777217,null;case 6:if(i&&s.stateNode!=null)i.memoizedProps!==c&&gs(s);else{if(typeof c!="string"&&s.stateNode===null)throw Error(a(166));if(i=Ee.current,Qo(s)){if(i=s.stateNode,r=s.memoizedProps,c=null,p=Hn,p!==null)switch(p.tag){case 27:case 5:c=p.memoizedProps}i[vn]=s,i=!!(i.nodeValue===r||c!==null&&c.suppressHydrationWarning===!0||ev(i.nodeValue,r)),i||Xa(s)}else i=Eu(i).createTextNode(c),i[vn]=s,s.stateNode=i}return Jt(s),null;case 13:if(c=s.memoizedState,i===null||i.memoizedState!==null&&i.memoizedState.dehydrated!==null){if(p=Qo(s),c!==null&&c.dehydrated!==null){if(i===null){if(!p)throw Error(a(318));if(p=s.memoizedState,p=p!==null?p.dehydrated:null,!p)throw Error(a(317));p[vn]=s}else $o(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Jt(s),p=!1}else p=z2(),i!==null&&i.memoizedState!==null&&(i.memoizedState.hydrationErrors=p),p=!0;if(!p)return s.flags&256?(ps(s),s):(ps(s),null)}if(ps(s),(s.flags&128)!==0)return s.lanes=r,s;if(r=c!==null,i=i!==null&&i.memoizedState!==null,r){c=s.child,p=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(p=c.alternate.memoizedState.cachePool.pool);var _=null;c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(_=c.memoizedState.cachePool.pool),_!==p&&(c.flags|=2048)}return r!==i&&r&&(s.child.flags|=8192),fu(s,s.updateQueue),Jt(s),null;case 4:return ut(),i===null&&Eh(s.stateNode.containerInfo),Jt(s),null;case 10:return ds(s.type),Jt(s),null;case 19:if(Me(yn),p=s.memoizedState,p===null)return Jt(s),null;if(c=(s.flags&128)!==0,_=p.rendering,_===null)if(c)pl(p,!1);else{if(sn!==0||i!==null&&(i.flags&128)!==0)for(i=s.child;i!==null;){if(_=ru(i),_!==null){for(s.flags|=128,pl(p,!1),i=_.updateQueue,s.updateQueue=i,fu(s,i),s.subtreeFlags=0,i=r,r=s.child;r!==null;)O2(r,i),r=r.sibling;return be(yn,yn.current&1|2),s.child}i=i.sibling}p.tail!==null&&rt()>pu&&(s.flags|=128,c=!0,pl(p,!1),s.lanes=4194304)}else{if(!c)if(i=ru(_),i!==null){if(s.flags|=128,c=!0,i=i.updateQueue,s.updateQueue=i,fu(s,i),pl(p,!0),p.tail===null&&p.tailMode==="hidden"&&!_.alternate&&!Dt)return Jt(s),null}else 2*rt()-p.renderingStartTime>pu&&r!==536870912&&(s.flags|=128,c=!0,pl(p,!1),s.lanes=4194304);p.isBackwards?(_.sibling=s.child,s.child=_):(i=p.last,i!==null?i.sibling=_:s.child=_,p.last=_)}return p.tail!==null?(s=p.tail,p.rendering=s,p.tail=s.sibling,p.renderingStartTime=rt(),s.sibling=null,i=yn.current,be(yn,c?i&1|2:i&1),s):(Jt(s),null);case 22:case 23:return ps(s),Td(),c=s.memoizedState!==null,i!==null?i.memoizedState!==null!==c&&(s.flags|=8192):c&&(s.flags|=8192),c?(r&536870912)!==0&&(s.flags&128)===0&&(Jt(s),s.subtreeFlags&6&&(s.flags|=8192)):Jt(s),r=s.updateQueue,r!==null&&fu(s,r.retryQueue),r=null,i!==null&&i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(r=i.memoizedState.cachePool.pool),c=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(c=s.memoizedState.cachePool.pool),c!==r&&(s.flags|=2048),i!==null&&Me(Za),null;case 24:return r=null,i!==null&&(r=i.memoizedState.cache),s.memoizedState.cache!==r&&(s.flags|=2048),ds(_n),Jt(s),null;case 25:return null;case 30:return null}throw Error(a(156,s.tag))}function P5(i,s){switch(dd(s),s.tag){case 1:return i=s.flags,i&65536?(s.flags=i&-65537|128,s):null;case 3:return ds(_n),ut(),i=s.flags,(i&65536)!==0&&(i&128)===0?(s.flags=i&-65537|128,s):null;case 26:case 27:case 5:return Et(s),null;case 13:if(ps(s),i=s.memoizedState,i!==null&&i.dehydrated!==null){if(s.alternate===null)throw Error(a(340));$o()}return i=s.flags,i&65536?(s.flags=i&-65537|128,s):null;case 19:return Me(yn),null;case 4:return ut(),null;case 10:return ds(s.type),null;case 22:case 23:return ps(s),Td(),i!==null&&Me(Za),i=s.flags,i&65536?(s.flags=i&-65537|128,s):null;case 24:return ds(_n),null;case 25:return null;default:return null}}function lg(i,s){switch(dd(s),s.tag){case 3:ds(_n),ut();break;case 26:case 27:case 5:Et(s);break;case 4:ut();break;case 13:ps(s);break;case 19:Me(yn);break;case 10:ds(s.type);break;case 22:case 23:ps(s),Td(),i!==null&&Me(Za);break;case 24:ds(_n)}}function ml(i,s){try{var r=s.updateQueue,c=r!==null?r.lastEffect:null;if(c!==null){var p=c.next;r=p;do{if((r.tag&i)===i){c=void 0;var _=r.create,E=r.inst;c=_(),E.destroy=c}r=r.next}while(r!==p)}}catch(A){Wt(s,s.return,A)}}function aa(i,s,r){try{var c=s.updateQueue,p=c!==null?c.lastEffect:null;if(p!==null){var _=p.next;c=_;do{if((c.tag&i)===i){var E=c.inst,A=E.destroy;if(A!==void 0){E.destroy=void 0,p=s;var H=r,ie=A;try{ie()}catch(pe){Wt(p,H,pe)}}}c=c.next}while(c!==_)}}catch(pe){Wt(s,s.return,pe)}}function cg(i){var s=i.updateQueue;if(s!==null){var r=i.stateNode;try{K2(s,r)}catch(c){Wt(i,i.return,c)}}}function ug(i,s,r){r.props=Qa(i.type,i.memoizedProps),r.state=i.memoizedState;try{r.componentWillUnmount()}catch(c){Wt(i,s,c)}}function gl(i,s){try{var r=i.ref;if(r!==null){switch(i.tag){case 26:case 27:case 5:var c=i.stateNode;break;case 30:c=i.stateNode;break;default:c=i.stateNode}typeof r=="function"?i.refCleanup=r(c):r.current=c}}catch(p){Wt(i,s,p)}}function ji(i,s){var r=i.ref,c=i.refCleanup;if(r!==null)if(typeof c=="function")try{c()}catch(p){Wt(i,s,p)}finally{i.refCleanup=null,i=i.alternate,i!=null&&(i.refCleanup=null)}else if(typeof r=="function")try{r(null)}catch(p){Wt(i,s,p)}else r.current=null}function fg(i){var s=i.type,r=i.memoizedProps,c=i.stateNode;try{e:switch(s){case"button":case"input":case"select":case"textarea":r.autoFocus&&c.focus();break e;case"img":r.src?c.src=r.src:r.srcSet&&(c.srcset=r.srcSet)}}catch(p){Wt(i,i.return,p)}}function eh(i,s,r){try{var c=i.stateNode;tS(c,i.type,r,s),c[Nn]=s}catch(p){Wt(i,i.return,p)}}function dg(i){return i.tag===5||i.tag===3||i.tag===26||i.tag===27&&ha(i.type)||i.tag===4}function th(i){e:for(;;){for(;i.sibling===null;){if(i.return===null||dg(i.return))return null;i=i.return}for(i.sibling.return=i.return,i=i.sibling;i.tag!==5&&i.tag!==6&&i.tag!==18;){if(i.tag===27&&ha(i.type)||i.flags&2||i.child===null||i.tag===4)continue e;i.child.return=i,i=i.child}if(!(i.flags&2))return i.stateNode}}function nh(i,s,r){var c=i.tag;if(c===5||c===6)i=i.stateNode,s?(r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r).insertBefore(i,s):(s=r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r,s.appendChild(i),r=r._reactRootContainer,r!=null||s.onclick!==null||(s.onclick=bu));else if(c!==4&&(c===27&&ha(i.type)&&(r=i.stateNode,s=null),i=i.child,i!==null))for(nh(i,s,r),i=i.sibling;i!==null;)nh(i,s,r),i=i.sibling}function du(i,s,r){var c=i.tag;if(c===5||c===6)i=i.stateNode,s?r.insertBefore(i,s):r.appendChild(i);else if(c!==4&&(c===27&&ha(i.type)&&(r=i.stateNode),i=i.child,i!==null))for(du(i,s,r),i=i.sibling;i!==null;)du(i,s,r),i=i.sibling}function hg(i){var s=i.stateNode,r=i.memoizedProps;try{for(var c=i.type,p=s.attributes;p.length;)s.removeAttributeNode(p[0]);Pn(s,c,r),s[vn]=i,s[Nn]=r}catch(_){Wt(i,i.return,_)}}var vs=!1,on=!1,ih=!1,pg=typeof WeakSet=="function"?WeakSet:Set,Cn=null;function O5(i,s){if(i=i.containerInfo,Ch=Nu,i=w2(i),td(i)){if("selectionStart"in i)var r={start:i.selectionStart,end:i.selectionEnd};else e:{r=(r=i.ownerDocument)&&r.defaultView||window;var c=r.getSelection&&r.getSelection();if(c&&c.rangeCount!==0){r=c.anchorNode;var p=c.anchorOffset,_=c.focusNode;c=c.focusOffset;try{r.nodeType,_.nodeType}catch{r=null;break e}var E=0,A=-1,H=-1,ie=0,pe=0,ye=i,se=null;t:for(;;){for(var ae;ye!==r||p!==0&&ye.nodeType!==3||(A=E+p),ye!==_||c!==0&&ye.nodeType!==3||(H=E+c),ye.nodeType===3&&(E+=ye.nodeValue.length),(ae=ye.firstChild)!==null;)se=ye,ye=ae;for(;;){if(ye===i)break t;if(se===r&&++ie===p&&(A=E),se===_&&++pe===c&&(H=E),(ae=ye.nextSibling)!==null)break;ye=se,se=ye.parentNode}ye=ae}r=A===-1||H===-1?null:{start:A,end:H}}else r=null}r=r||{start:0,end:0}}else r=null;for(Ah={focusedElem:i,selectionRange:r},Nu=!1,Cn=s;Cn!==null;)if(s=Cn,i=s.child,(s.subtreeFlags&1024)!==0&&i!==null)i.return=s,Cn=i;else for(;Cn!==null;){switch(s=Cn,_=s.alternate,i=s.flags,s.tag){case 0:break;case 11:case 15:break;case 1:if((i&1024)!==0&&_!==null){i=void 0,r=s,p=_.memoizedProps,_=_.memoizedState,c=r.stateNode;try{var st=Qa(r.type,p,r.elementType===r.type);i=c.getSnapshotBeforeUpdate(st,_),c.__reactInternalSnapshotBeforeUpdate=i}catch(et){Wt(r,r.return,et)}}break;case 3:if((i&1024)!==0){if(i=s.stateNode.containerInfo,r=i.nodeType,r===9)Lh(i);else if(r===1)switch(i.nodeName){case"HEAD":case"HTML":case"BODY":Lh(i);break;default:i.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((i&1024)!==0)throw Error(a(163))}if(i=s.sibling,i!==null){i.return=s.return,Cn=i;break}Cn=s.return}}function mg(i,s,r){var c=r.flags;switch(r.tag){case 0:case 11:case 15:ra(i,r),c&4&&ml(5,r);break;case 1:if(ra(i,r),c&4)if(i=r.stateNode,s===null)try{i.componentDidMount()}catch(E){Wt(r,r.return,E)}else{var p=Qa(r.type,s.memoizedProps);s=s.memoizedState;try{i.componentDidUpdate(p,s,i.__reactInternalSnapshotBeforeUpdate)}catch(E){Wt(r,r.return,E)}}c&64&&cg(r),c&512&&gl(r,r.return);break;case 3:if(ra(i,r),c&64&&(i=r.updateQueue,i!==null)){if(s=null,r.child!==null)switch(r.child.tag){case 27:case 5:s=r.child.stateNode;break;case 1:s=r.child.stateNode}try{K2(i,s)}catch(E){Wt(r,r.return,E)}}break;case 27:s===null&&c&4&&hg(r);case 26:case 5:ra(i,r),s===null&&c&4&&fg(r),c&512&&gl(r,r.return);break;case 12:ra(i,r);break;case 13:ra(i,r),c&4&&xg(i,r),c&64&&(i=r.memoizedState,i!==null&&(i=i.dehydrated,i!==null&&(r=G5.bind(null,r),lS(i,r))));break;case 22:if(c=r.memoizedState!==null||vs,!c){s=s!==null&&s.memoizedState!==null||on,p=vs;var _=on;vs=c,(on=s)&&!_?oa(i,r,(r.subtreeFlags&8772)!==0):ra(i,r),vs=p,on=_}break;case 30:break;default:ra(i,r)}}function gg(i){var s=i.alternate;s!==null&&(i.alternate=null,gg(s)),i.child=null,i.deletions=null,i.sibling=null,i.tag===5&&(s=i.stateNode,s!==null&&Ys(s)),i.stateNode=null,i.return=null,i.dependencies=null,i.memoizedProps=null,i.memoizedState=null,i.pendingProps=null,i.stateNode=null,i.updateQueue=null}var Kt=null,Zn=!1;function xs(i,s,r){for(r=r.child;r!==null;)vg(i,s,r),r=r.sibling}function vg(i,s,r){if(fe&&typeof fe.onCommitFiberUnmount=="function")try{fe.onCommitFiberUnmount(de,r)}catch{}switch(r.tag){case 26:on||ji(r,s),xs(i,s,r),r.memoizedState?r.memoizedState.count--:r.stateNode&&(r=r.stateNode,r.parentNode.removeChild(r));break;case 27:on||ji(r,s);var c=Kt,p=Zn;ha(r.type)&&(Kt=r.stateNode,Zn=!1),xs(i,s,r),wl(r.stateNode),Kt=c,Zn=p;break;case 5:on||ji(r,s);case 6:if(c=Kt,p=Zn,Kt=null,xs(i,s,r),Kt=c,Zn=p,Kt!==null)if(Zn)try{(Kt.nodeType===9?Kt.body:Kt.nodeName==="HTML"?Kt.ownerDocument.body:Kt).removeChild(r.stateNode)}catch(_){Wt(r,s,_)}else try{Kt.removeChild(r.stateNode)}catch(_){Wt(r,s,_)}break;case 18:Kt!==null&&(Zn?(i=Kt,av(i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i,r.stateNode),Ul(i)):av(Kt,r.stateNode));break;case 4:c=Kt,p=Zn,Kt=r.stateNode.containerInfo,Zn=!0,xs(i,s,r),Kt=c,Zn=p;break;case 0:case 11:case 14:case 15:on||aa(2,r,s),on||aa(4,r,s),xs(i,s,r);break;case 1:on||(ji(r,s),c=r.stateNode,typeof c.componentWillUnmount=="function"&&ug(r,s,c)),xs(i,s,r);break;case 21:xs(i,s,r);break;case 22:on=(c=on)||r.memoizedState!==null,xs(i,s,r),on=c;break;default:xs(i,s,r)}}function xg(i,s){if(s.memoizedState===null&&(i=s.alternate,i!==null&&(i=i.memoizedState,i!==null&&(i=i.dehydrated,i!==null))))try{Ul(i)}catch(r){Wt(s,s.return,r)}}function I5(i){switch(i.tag){case 13:case 19:var s=i.stateNode;return s===null&&(s=i.stateNode=new pg),s;case 22:return i=i.stateNode,s=i._retryCache,s===null&&(s=i._retryCache=new pg),s;default:throw Error(a(435,i.tag))}}function sh(i,s){var r=I5(i);s.forEach(function(c){var p=W5.bind(null,i,c);r.has(c)||(r.add(c),c.then(p,p))})}function ai(i,s){var r=s.deletions;if(r!==null)for(var c=0;c<r.length;c++){var p=r[c],_=i,E=s,A=E;e:for(;A!==null;){switch(A.tag){case 27:if(ha(A.type)){Kt=A.stateNode,Zn=!1;break e}break;case 5:Kt=A.stateNode,Zn=!1;break e;case 3:case 4:Kt=A.stateNode.containerInfo,Zn=!0;break e}A=A.return}if(Kt===null)throw Error(a(160));vg(_,E,p),Kt=null,Zn=!1,_=p.alternate,_!==null&&(_.return=null),p.return=null}if(s.subtreeFlags&13878)for(s=s.child;s!==null;)_g(s,i),s=s.sibling}var Ci=null;function _g(i,s){var r=i.alternate,c=i.flags;switch(i.tag){case 0:case 11:case 14:case 15:ai(s,i),ri(i),c&4&&(aa(3,i,i.return),ml(3,i),aa(5,i,i.return));break;case 1:ai(s,i),ri(i),c&512&&(on||r===null||ji(r,r.return)),c&64&&vs&&(i=i.updateQueue,i!==null&&(c=i.callbacks,c!==null&&(r=i.shared.hiddenCallbacks,i.shared.hiddenCallbacks=r===null?c:r.concat(c))));break;case 26:var p=Ci;if(ai(s,i),ri(i),c&512&&(on||r===null||ji(r,r.return)),c&4){var _=r!==null?r.memoizedState:null;if(c=i.memoizedState,r===null)if(c===null)if(i.stateNode===null){e:{c=i.type,r=i.memoizedProps,p=p.ownerDocument||p;t:switch(c){case"title":_=p.getElementsByTagName("title")[0],(!_||_[qs]||_[vn]||_.namespaceURI==="http://www.w3.org/2000/svg"||_.hasAttribute("itemprop"))&&(_=p.createElement(c),p.head.insertBefore(_,p.querySelector("head > title"))),Pn(_,c,r),_[vn]=i,un(_),c=_;break e;case"link":var E=hv("link","href",p).get(c+(r.href||""));if(E){for(var A=0;A<E.length;A++)if(_=E[A],_.getAttribute("href")===(r.href==null||r.href===""?null:r.href)&&_.getAttribute("rel")===(r.rel==null?null:r.rel)&&_.getAttribute("title")===(r.title==null?null:r.title)&&_.getAttribute("crossorigin")===(r.crossOrigin==null?null:r.crossOrigin)){E.splice(A,1);break t}}_=p.createElement(c),Pn(_,c,r),p.head.appendChild(_);break;case"meta":if(E=hv("meta","content",p).get(c+(r.content||""))){for(A=0;A<E.length;A++)if(_=E[A],_.getAttribute("content")===(r.content==null?null:""+r.content)&&_.getAttribute("name")===(r.name==null?null:r.name)&&_.getAttribute("property")===(r.property==null?null:r.property)&&_.getAttribute("http-equiv")===(r.httpEquiv==null?null:r.httpEquiv)&&_.getAttribute("charset")===(r.charSet==null?null:r.charSet)){E.splice(A,1);break t}}_=p.createElement(c),Pn(_,c,r),p.head.appendChild(_);break;default:throw Error(a(468,c))}_[vn]=i,un(_),c=_}i.stateNode=c}else pv(p,i.type,i.stateNode);else i.stateNode=dv(p,c,i.memoizedProps);else _!==c?(_===null?r.stateNode!==null&&(r=r.stateNode,r.parentNode.removeChild(r)):_.count--,c===null?pv(p,i.type,i.stateNode):dv(p,c,i.memoizedProps)):c===null&&i.stateNode!==null&&eh(i,i.memoizedProps,r.memoizedProps)}break;case 27:ai(s,i),ri(i),c&512&&(on||r===null||ji(r,r.return)),r!==null&&c&4&&eh(i,i.memoizedProps,r.memoizedProps);break;case 5:if(ai(s,i),ri(i),c&512&&(on||r===null||ji(r,r.return)),i.flags&32){p=i.stateNode;try{Fi(p,"")}catch(ae){Wt(i,i.return,ae)}}c&4&&i.stateNode!=null&&(p=i.memoizedProps,eh(i,p,r!==null?r.memoizedProps:p)),c&1024&&(ih=!0);break;case 6:if(ai(s,i),ri(i),c&4){if(i.stateNode===null)throw Error(a(162));c=i.memoizedProps,r=i.stateNode;try{r.nodeValue=c}catch(ae){Wt(i,i.return,ae)}}break;case 3:if(Cu=null,p=Ci,Ci=wu(s.containerInfo),ai(s,i),Ci=p,ri(i),c&4&&r!==null&&r.memoizedState.isDehydrated)try{Ul(s.containerInfo)}catch(ae){Wt(i,i.return,ae)}ih&&(ih=!1,yg(i));break;case 4:c=Ci,Ci=wu(i.stateNode.containerInfo),ai(s,i),ri(i),Ci=c;break;case 12:ai(s,i),ri(i);break;case 13:ai(s,i),ri(i),i.child.flags&8192&&i.memoizedState!==null!=(r!==null&&r.memoizedState!==null)&&(uh=rt()),c&4&&(c=i.updateQueue,c!==null&&(i.updateQueue=null,sh(i,c)));break;case 22:p=i.memoizedState!==null;var H=r!==null&&r.memoizedState!==null,ie=vs,pe=on;if(vs=ie||p,on=pe||H,ai(s,i),on=pe,vs=ie,ri(i),c&8192)e:for(s=i.stateNode,s._visibility=p?s._visibility&-2:s._visibility|1,p&&(r===null||H||vs||on||$a(i)),r=null,s=i;;){if(s.tag===5||s.tag===26){if(r===null){H=r=s;try{if(_=H.stateNode,p)E=_.style,typeof E.setProperty=="function"?E.setProperty("display","none","important"):E.display="none";else{A=H.stateNode;var ye=H.memoizedProps.style,se=ye!=null&&ye.hasOwnProperty("display")?ye.display:null;A.style.display=se==null||typeof se=="boolean"?"":(""+se).trim()}}catch(ae){Wt(H,H.return,ae)}}}else if(s.tag===6){if(r===null){H=s;try{H.stateNode.nodeValue=p?"":H.memoizedProps}catch(ae){Wt(H,H.return,ae)}}}else if((s.tag!==22&&s.tag!==23||s.memoizedState===null||s===i)&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===i)break e;for(;s.sibling===null;){if(s.return===null||s.return===i)break e;r===s&&(r=null),s=s.return}r===s&&(r=null),s.sibling.return=s.return,s=s.sibling}c&4&&(c=i.updateQueue,c!==null&&(r=c.retryQueue,r!==null&&(c.retryQueue=null,sh(i,r))));break;case 19:ai(s,i),ri(i),c&4&&(c=i.updateQueue,c!==null&&(i.updateQueue=null,sh(i,c)));break;case 30:break;case 21:break;default:ai(s,i),ri(i)}}function ri(i){var s=i.flags;if(s&2){try{for(var r,c=i.return;c!==null;){if(dg(c)){r=c;break}c=c.return}if(r==null)throw Error(a(160));switch(r.tag){case 27:var p=r.stateNode,_=th(i);du(i,_,p);break;case 5:var E=r.stateNode;r.flags&32&&(Fi(E,""),r.flags&=-33);var A=th(i);du(i,A,E);break;case 3:case 4:var H=r.stateNode.containerInfo,ie=th(i);nh(i,ie,H);break;default:throw Error(a(161))}}catch(pe){Wt(i,i.return,pe)}i.flags&=-3}s&4096&&(i.flags&=-4097)}function yg(i){if(i.subtreeFlags&1024)for(i=i.child;i!==null;){var s=i;yg(s),s.tag===5&&s.flags&1024&&s.stateNode.reset(),i=i.sibling}}function ra(i,s){if(s.subtreeFlags&8772)for(s=s.child;s!==null;)mg(i,s.alternate,s),s=s.sibling}function $a(i){for(i=i.child;i!==null;){var s=i;switch(s.tag){case 0:case 11:case 14:case 15:aa(4,s,s.return),$a(s);break;case 1:ji(s,s.return);var r=s.stateNode;typeof r.componentWillUnmount=="function"&&ug(s,s.return,r),$a(s);break;case 27:wl(s.stateNode);case 26:case 5:ji(s,s.return),$a(s);break;case 22:s.memoizedState===null&&$a(s);break;case 30:$a(s);break;default:$a(s)}i=i.sibling}}function oa(i,s,r){for(r=r&&(s.subtreeFlags&8772)!==0,s=s.child;s!==null;){var c=s.alternate,p=i,_=s,E=_.flags;switch(_.tag){case 0:case 11:case 15:oa(p,_,r),ml(4,_);break;case 1:if(oa(p,_,r),c=_,p=c.stateNode,typeof p.componentDidMount=="function")try{p.componentDidMount()}catch(ie){Wt(c,c.return,ie)}if(c=_,p=c.updateQueue,p!==null){var A=c.stateNode;try{var H=p.shared.hiddenCallbacks;if(H!==null)for(p.shared.hiddenCallbacks=null,p=0;p<H.length;p++)Z2(H[p],A)}catch(ie){Wt(c,c.return,ie)}}r&&E&64&&cg(_),gl(_,_.return);break;case 27:hg(_);case 26:case 5:oa(p,_,r),r&&c===null&&E&4&&fg(_),gl(_,_.return);break;case 12:oa(p,_,r);break;case 13:oa(p,_,r),r&&E&4&&xg(p,_);break;case 22:_.memoizedState===null&&oa(p,_,r),gl(_,_.return);break;case 30:break;default:oa(p,_,r)}s=s.sibling}}function ah(i,s){var r=null;i!==null&&i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(r=i.memoizedState.cachePool.pool),i=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(i=s.memoizedState.cachePool.pool),i!==r&&(i!=null&&i.refCount++,r!=null&&tl(r))}function rh(i,s){i=null,s.alternate!==null&&(i=s.alternate.memoizedState.cache),s=s.memoizedState.cache,s!==i&&(s.refCount++,i!=null&&tl(i))}function Hi(i,s,r,c){if(s.subtreeFlags&10256)for(s=s.child;s!==null;)Sg(i,s,r,c),s=s.sibling}function Sg(i,s,r,c){var p=s.flags;switch(s.tag){case 0:case 11:case 15:Hi(i,s,r,c),p&2048&&ml(9,s);break;case 1:Hi(i,s,r,c);break;case 3:Hi(i,s,r,c),p&2048&&(i=null,s.alternate!==null&&(i=s.alternate.memoizedState.cache),s=s.memoizedState.cache,s!==i&&(s.refCount++,i!=null&&tl(i)));break;case 12:if(p&2048){Hi(i,s,r,c),i=s.stateNode;try{var _=s.memoizedProps,E=_.id,A=_.onPostCommit;typeof A=="function"&&A(E,s.alternate===null?"mount":"update",i.passiveEffectDuration,-0)}catch(H){Wt(s,s.return,H)}}else Hi(i,s,r,c);break;case 13:Hi(i,s,r,c);break;case 23:break;case 22:_=s.stateNode,E=s.alternate,s.memoizedState!==null?_._visibility&2?Hi(i,s,r,c):vl(i,s):_._visibility&2?Hi(i,s,r,c):(_._visibility|=2,jr(i,s,r,c,(s.subtreeFlags&10256)!==0)),p&2048&&ah(E,s);break;case 24:Hi(i,s,r,c),p&2048&&rh(s.alternate,s);break;default:Hi(i,s,r,c)}}function jr(i,s,r,c,p){for(p=p&&(s.subtreeFlags&10256)!==0,s=s.child;s!==null;){var _=i,E=s,A=r,H=c,ie=E.flags;switch(E.tag){case 0:case 11:case 15:jr(_,E,A,H,p),ml(8,E);break;case 23:break;case 22:var pe=E.stateNode;E.memoizedState!==null?pe._visibility&2?jr(_,E,A,H,p):vl(_,E):(pe._visibility|=2,jr(_,E,A,H,p)),p&&ie&2048&&ah(E.alternate,E);break;case 24:jr(_,E,A,H,p),p&&ie&2048&&rh(E.alternate,E);break;default:jr(_,E,A,H,p)}s=s.sibling}}function vl(i,s){if(s.subtreeFlags&10256)for(s=s.child;s!==null;){var r=i,c=s,p=c.flags;switch(c.tag){case 22:vl(r,c),p&2048&&ah(c.alternate,c);break;case 24:vl(r,c),p&2048&&rh(c.alternate,c);break;default:vl(r,c)}s=s.sibling}}var xl=8192;function Hr(i){if(i.subtreeFlags&xl)for(i=i.child;i!==null;)Mg(i),i=i.sibling}function Mg(i){switch(i.tag){case 26:Hr(i),i.flags&xl&&i.memoizedState!==null&&SS(Ci,i.memoizedState,i.memoizedProps);break;case 5:Hr(i);break;case 3:case 4:var s=Ci;Ci=wu(i.stateNode.containerInfo),Hr(i),Ci=s;break;case 22:i.memoizedState===null&&(s=i.alternate,s!==null&&s.memoizedState!==null?(s=xl,xl=16777216,Hr(i),xl=s):Hr(i));break;default:Hr(i)}}function bg(i){var s=i.alternate;if(s!==null&&(i=s.child,i!==null)){s.child=null;do s=i.sibling,i.sibling=null,i=s;while(i!==null)}}function _l(i){var s=i.deletions;if((i.flags&16)!==0){if(s!==null)for(var r=0;r<s.length;r++){var c=s[r];Cn=c,wg(c,i)}bg(i)}if(i.subtreeFlags&10256)for(i=i.child;i!==null;)Eg(i),i=i.sibling}function Eg(i){switch(i.tag){case 0:case 11:case 15:_l(i),i.flags&2048&&aa(9,i,i.return);break;case 3:_l(i);break;case 12:_l(i);break;case 22:var s=i.stateNode;i.memoizedState!==null&&s._visibility&2&&(i.return===null||i.return.tag!==13)?(s._visibility&=-3,hu(i)):_l(i);break;default:_l(i)}}function hu(i){var s=i.deletions;if((i.flags&16)!==0){if(s!==null)for(var r=0;r<s.length;r++){var c=s[r];Cn=c,wg(c,i)}bg(i)}for(i=i.child;i!==null;){switch(s=i,s.tag){case 0:case 11:case 15:aa(8,s,s.return),hu(s);break;case 22:r=s.stateNode,r._visibility&2&&(r._visibility&=-3,hu(s));break;default:hu(s)}i=i.sibling}}function wg(i,s){for(;Cn!==null;){var r=Cn;switch(r.tag){case 0:case 11:case 15:aa(8,r,s);break;case 23:case 22:if(r.memoizedState!==null&&r.memoizedState.cachePool!==null){var c=r.memoizedState.cachePool.pool;c!=null&&c.refCount++}break;case 24:tl(r.memoizedState.cache)}if(c=r.child,c!==null)c.return=r,Cn=c;else e:for(r=i;Cn!==null;){c=Cn;var p=c.sibling,_=c.return;if(gg(c),c===r){Cn=null;break e}if(p!==null){p.return=_,Cn=p;break e}Cn=_}}}var B5={getCacheForType:function(i){var s=Bn(_n),r=s.data.get(i);return r===void 0&&(r=i(),s.data.set(i,r)),r}},F5=typeof WeakMap=="function"?WeakMap:Map,Bt=0,Yt=null,Mt=null,Ct=0,Ft=0,oi=null,la=!1,kr=!1,oh=!1,_s=0,sn=0,ca=0,Ja=0,lh=0,yi=0,Gr=0,yl=null,Kn=null,ch=!1,uh=0,pu=1/0,mu=null,ua=null,Un=0,fa=null,Wr=null,Xr=0,fh=0,dh=null,Tg=null,Sl=0,hh=null;function li(){if((Bt&2)!==0&&Ct!==0)return Ct&-Ct;if(j.T!==null){var i=Ur;return i!==0?i:yh()}return Rt()}function Cg(){yi===0&&(yi=(Ct&536870912)===0||Dt?W():536870912);var i=_i.current;return i!==null&&(i.flags|=32),yi}function ci(i,s,r){(i===Yt&&(Ft===2||Ft===9)||i.cancelPendingCommit!==null)&&(qr(i,0),da(i,Ct,yi,!1)),Ve(i,r),((Bt&2)===0||i!==Yt)&&(i===Yt&&((Bt&2)===0&&(Ja|=r),sn===4&&da(i,Ct,yi,!1)),ki(i))}function Ag(i,s,r){if((Bt&6)!==0)throw Error(a(327));var c=!r&&(s&124)===0&&(s&i.expiredLanes)===0||De(i,s),p=c?j5(i,s):gh(i,s,!0),_=c;do{if(p===0){kr&&!c&&da(i,s,0,!1);break}else{if(r=i.current.alternate,_&&!z5(r)){p=gh(i,s,!1),_=!1;continue}if(p===2){if(_=s,i.errorRecoveryDisabledLanes&_)var E=0;else E=i.pendingLanes&-536870913,E=E!==0?E:E&536870912?536870912:0;if(E!==0){s=E;e:{var A=i;p=yl;var H=A.current.memoizedState.isDehydrated;if(H&&(qr(A,E).flags|=256),E=gh(A,E,!1),E!==2){if(oh&&!H){A.errorRecoveryDisabledLanes|=_,Ja|=_,p=4;break e}_=Kn,Kn=p,_!==null&&(Kn===null?Kn=_:Kn.push.apply(Kn,_))}p=E}if(_=!1,p!==2)continue}}if(p===1){qr(i,0),da(i,s,0,!0);break}e:{switch(c=i,_=p,_){case 0:case 1:throw Error(a(345));case 4:if((s&4194048)!==s)break;case 6:da(c,s,yi,!la);break e;case 2:Kn=null;break;case 3:case 5:break;default:throw Error(a(329))}if((s&62914560)===s&&(p=uh+300-rt(),10<p)){if(da(c,s,yi,!la),We(c,0,!0)!==0)break e;c.timeoutHandle=iv(Rg.bind(null,c,r,Kn,mu,ch,s,yi,Ja,Gr,la,_,2,-0,0),p);break e}Rg(c,r,Kn,mu,ch,s,yi,Ja,Gr,la,_,0,-0,0)}}break}while(!0);ki(i)}function Rg(i,s,r,c,p,_,E,A,H,ie,pe,ye,se,ae){if(i.timeoutHandle=-1,ye=s.subtreeFlags,(ye&8192||(ye&16785408)===16785408)&&(Al={stylesheets:null,count:0,unsuspend:yS},Mg(s),ye=MS(),ye!==null)){i.cancelPendingCommit=ye(Ig.bind(null,i,s,_,r,c,p,E,A,H,pe,1,se,ae)),da(i,_,E,!ie);return}Ig(i,s,_,r,c,p,E,A,H)}function z5(i){for(var s=i;;){var r=s.tag;if((r===0||r===11||r===15)&&s.flags&16384&&(r=s.updateQueue,r!==null&&(r=r.stores,r!==null)))for(var c=0;c<r.length;c++){var p=r[c],_=p.getSnapshot;p=p.value;try{if(!ii(_(),p))return!1}catch{return!1}}if(r=s.child,s.subtreeFlags&16384&&r!==null)r.return=s,s=r;else{if(s===i)break;for(;s.sibling===null;){if(s.return===null||s.return===i)return!0;s=s.return}s.sibling.return=s.return,s=s.sibling}}return!0}function da(i,s,r,c){s&=~lh,s&=~Ja,i.suspendedLanes|=s,i.pingedLanes&=~s,c&&(i.warmLanes|=s),c=i.expirationTimes;for(var p=s;0<p;){var _=31-Ae(p),E=1<<_;c[_]=-1,p&=~E}r!==0&&Se(i,r,s)}function gu(){return(Bt&6)===0?(Ml(0),!1):!0}function ph(){if(Mt!==null){if(Ft===0)var i=Mt.return;else i=Mt,fs=qa=null,Ld(i),zr=null,dl=0,i=Mt;for(;i!==null;)lg(i.alternate,i),i=i.return;Mt=null}}function qr(i,s){var r=i.timeoutHandle;r!==-1&&(i.timeoutHandle=-1,iS(r)),r=i.cancelPendingCommit,r!==null&&(i.cancelPendingCommit=null,r()),ph(),Yt=i,Mt=r=ls(i.current,null),Ct=s,Ft=0,oi=null,la=!1,kr=De(i,s),oh=!1,Gr=yi=lh=Ja=ca=sn=0,Kn=yl=null,ch=!1,(s&8)!==0&&(s|=s&32);var c=i.entangledLanes;if(c!==0)for(i=i.entanglements,c&=s;0<c;){var p=31-Ae(c),_=1<<p;s|=i[p],c&=~_}return _s=s,Fc(),r}function Ng(i,s){xt=null,j.H=iu,s===il||s===qc?(s=q2(),Ft=3):s===G2?(s=q2(),Ft=4):Ft=s===Y1?8:s!==null&&typeof s=="object"&&typeof s.then=="function"?6:1,oi=s,Mt===null&&(sn=1,lu(i,mi(s,i.current)))}function Lg(){var i=j.H;return j.H=iu,i===null?iu:i}function Dg(){var i=j.A;return j.A=B5,i}function mh(){sn=4,la||(Ct&4194048)!==Ct&&_i.current!==null||(kr=!0),(ca&134217727)===0&&(Ja&134217727)===0||Yt===null||da(Yt,Ct,yi,!1)}function gh(i,s,r){var c=Bt;Bt|=2;var p=Lg(),_=Dg();(Yt!==i||Ct!==s)&&(mu=null,qr(i,s)),s=!1;var E=sn;e:do try{if(Ft!==0&&Mt!==null){var A=Mt,H=oi;switch(Ft){case 8:ph(),E=6;break e;case 3:case 2:case 9:case 6:_i.current===null&&(s=!0);var ie=Ft;if(Ft=0,oi=null,Yr(i,A,H,ie),r&&kr){E=0;break e}break;default:ie=Ft,Ft=0,oi=null,Yr(i,A,H,ie)}}V5(),E=sn;break}catch(pe){Ng(i,pe)}while(!0);return s&&i.shellSuspendCounter++,fs=qa=null,Bt=c,j.H=p,j.A=_,Mt===null&&(Yt=null,Ct=0,Fc()),E}function V5(){for(;Mt!==null;)Ug(Mt)}function j5(i,s){var r=Bt;Bt|=2;var c=Lg(),p=Dg();Yt!==i||Ct!==s?(mu=null,pu=rt()+500,qr(i,s)):kr=De(i,s);e:do try{if(Ft!==0&&Mt!==null){s=Mt;var _=oi;t:switch(Ft){case 1:Ft=0,oi=null,Yr(i,s,_,1);break;case 2:case 9:if(W2(_)){Ft=0,oi=null,Pg(s);break}s=function(){Ft!==2&&Ft!==9||Yt!==i||(Ft=7),ki(i)},_.then(s,s);break e;case 3:Ft=7;break e;case 4:Ft=5;break e;case 7:W2(_)?(Ft=0,oi=null,Pg(s)):(Ft=0,oi=null,Yr(i,s,_,7));break;case 5:var E=null;switch(Mt.tag){case 26:E=Mt.memoizedState;case 5:case 27:var A=Mt;if(!E||mv(E)){Ft=0,oi=null;var H=A.sibling;if(H!==null)Mt=H;else{var ie=A.return;ie!==null?(Mt=ie,vu(ie)):Mt=null}break t}}Ft=0,oi=null,Yr(i,s,_,5);break;case 6:Ft=0,oi=null,Yr(i,s,_,6);break;case 8:ph(),sn=6;break e;default:throw Error(a(462))}}H5();break}catch(pe){Ng(i,pe)}while(!0);return fs=qa=null,j.H=c,j.A=p,Bt=r,Mt!==null?0:(Yt=null,Ct=0,Fc(),sn)}function H5(){for(;Mt!==null&&!Xt();)Ug(Mt)}function Ug(i){var s=rg(i.alternate,i,_s);i.memoizedProps=i.pendingProps,s===null?vu(i):Mt=s}function Pg(i){var s=i,r=s.alternate;switch(s.tag){case 15:case 0:s=eg(r,s,s.pendingProps,s.type,void 0,Ct);break;case 11:s=eg(r,s,s.pendingProps,s.type.render,s.ref,Ct);break;case 5:Ld(s);default:lg(r,s),s=Mt=O2(s,_s),s=rg(r,s,_s)}i.memoizedProps=i.pendingProps,s===null?vu(i):Mt=s}function Yr(i,s,r,c){fs=qa=null,Ld(s),zr=null,dl=0;var p=s.return;try{if(L5(i,p,s,r,Ct)){sn=1,lu(i,mi(r,i.current)),Mt=null;return}}catch(_){if(p!==null)throw Mt=p,_;sn=1,lu(i,mi(r,i.current)),Mt=null;return}s.flags&32768?(Dt||c===1?i=!0:kr||(Ct&536870912)!==0?i=!1:(la=i=!0,(c===2||c===9||c===3||c===6)&&(c=_i.current,c!==null&&c.tag===13&&(c.flags|=16384))),Og(s,i)):vu(s)}function vu(i){var s=i;do{if((s.flags&32768)!==0){Og(s,la);return}i=s.return;var r=U5(s.alternate,s,_s);if(r!==null){Mt=r;return}if(s=s.sibling,s!==null){Mt=s;return}Mt=s=i}while(s!==null);sn===0&&(sn=5)}function Og(i,s){do{var r=P5(i.alternate,i);if(r!==null){r.flags&=32767,Mt=r;return}if(r=i.return,r!==null&&(r.flags|=32768,r.subtreeFlags=0,r.deletions=null),!s&&(i=i.sibling,i!==null)){Mt=i;return}Mt=i=r}while(i!==null);sn=6,Mt=null}function Ig(i,s,r,c,p,_,E,A,H){i.cancelPendingCommit=null;do xu();while(Un!==0);if((Bt&6)!==0)throw Error(a(327));if(s!==null){if(s===i.current)throw Error(a(177));if(_=s.lanes|s.childLanes,_|=rd,Ce(i,r,_,E,A,H),i===Yt&&(Mt=Yt=null,Ct=0),Wr=s,fa=i,Xr=r,fh=_,dh=p,Tg=c,(s.subtreeFlags&10256)!==0||(s.flags&10256)!==0?(i.callbackNode=null,i.callbackPriority=0,X5(ot,function(){return jg(),null})):(i.callbackNode=null,i.callbackPriority=0),c=(s.flags&13878)!==0,(s.subtreeFlags&13878)!==0||c){c=j.T,j.T=null,p=Z.p,Z.p=2,E=Bt,Bt|=4;try{O5(i,s,r)}finally{Bt=E,Z.p=p,j.T=c}}Un=1,Bg(),Fg(),zg()}}function Bg(){if(Un===1){Un=0;var i=fa,s=Wr,r=(s.flags&13878)!==0;if((s.subtreeFlags&13878)!==0||r){r=j.T,j.T=null;var c=Z.p;Z.p=2;var p=Bt;Bt|=4;try{_g(s,i);var _=Ah,E=w2(i.containerInfo),A=_.focusedElem,H=_.selectionRange;if(E!==A&&A&&A.ownerDocument&&E2(A.ownerDocument.documentElement,A)){if(H!==null&&td(A)){var ie=H.start,pe=H.end;if(pe===void 0&&(pe=ie),"selectionStart"in A)A.selectionStart=ie,A.selectionEnd=Math.min(pe,A.value.length);else{var ye=A.ownerDocument||document,se=ye&&ye.defaultView||window;if(se.getSelection){var ae=se.getSelection(),st=A.textContent.length,et=Math.min(H.start,st),Ht=H.end===void 0?et:Math.min(H.end,st);!ae.extend&&et>Ht&&(E=Ht,Ht=et,et=E);var K=b2(A,et),X=b2(A,Ht);if(K&&X&&(ae.rangeCount!==1||ae.anchorNode!==K.node||ae.anchorOffset!==K.offset||ae.focusNode!==X.node||ae.focusOffset!==X.offset)){var ne=ye.createRange();ne.setStart(K.node,K.offset),ae.removeAllRanges(),et>Ht?(ae.addRange(ne),ae.extend(X.node,X.offset)):(ne.setEnd(X.node,X.offset),ae.addRange(ne))}}}}for(ye=[],ae=A;ae=ae.parentNode;)ae.nodeType===1&&ye.push({element:ae,left:ae.scrollLeft,top:ae.scrollTop});for(typeof A.focus=="function"&&A.focus(),A=0;A<ye.length;A++){var ve=ye[A];ve.element.scrollLeft=ve.left,ve.element.scrollTop=ve.top}}Nu=!!Ch,Ah=Ch=null}finally{Bt=p,Z.p=c,j.T=r}}i.current=s,Un=2}}function Fg(){if(Un===2){Un=0;var i=fa,s=Wr,r=(s.flags&8772)!==0;if((s.subtreeFlags&8772)!==0||r){r=j.T,j.T=null;var c=Z.p;Z.p=2;var p=Bt;Bt|=4;try{mg(i,s.alternate,s)}finally{Bt=p,Z.p=c,j.T=r}}Un=3}}function zg(){if(Un===4||Un===3){Un=0,ft();var i=fa,s=Wr,r=Xr,c=Tg;(s.subtreeFlags&10256)!==0||(s.flags&10256)!==0?Un=5:(Un=0,Wr=fa=null,Vg(i,i.pendingLanes));var p=i.pendingLanes;if(p===0&&(ua=null),It(r),s=s.stateNode,fe&&typeof fe.onCommitFiberRoot=="function")try{fe.onCommitFiberRoot(de,s,void 0,(s.current.flags&128)===128)}catch{}if(c!==null){s=j.T,p=Z.p,Z.p=2,j.T=null;try{for(var _=i.onRecoverableError,E=0;E<c.length;E++){var A=c[E];_(A.value,{componentStack:A.stack})}}finally{j.T=s,Z.p=p}}(Xr&3)!==0&&xu(),ki(i),p=i.pendingLanes,(r&4194090)!==0&&(p&42)!==0?i===hh?Sl++:(Sl=0,hh=i):Sl=0,Ml(0)}}function Vg(i,s){(i.pooledCacheLanes&=s)===0&&(s=i.pooledCache,s!=null&&(i.pooledCache=null,tl(s)))}function xu(i){return Bg(),Fg(),zg(),jg()}function jg(){if(Un!==5)return!1;var i=fa,s=fh;fh=0;var r=It(Xr),c=j.T,p=Z.p;try{Z.p=32>r?32:r,j.T=null,r=dh,dh=null;var _=fa,E=Xr;if(Un=0,Wr=fa=null,Xr=0,(Bt&6)!==0)throw Error(a(331));var A=Bt;if(Bt|=4,Eg(_.current),Sg(_,_.current,E,r),Bt=A,Ml(0,!1),fe&&typeof fe.onPostCommitFiberRoot=="function")try{fe.onPostCommitFiberRoot(de,_)}catch{}return!0}finally{Z.p=p,j.T=c,Vg(i,s)}}function Hg(i,s,r){s=mi(r,s),s=Wd(i.stateNode,s,2),i=ta(i,s,2),i!==null&&(Ve(i,2),ki(i))}function Wt(i,s,r){if(i.tag===3)Hg(i,i,r);else for(;s!==null;){if(s.tag===3){Hg(s,i,r);break}else if(s.tag===1){var c=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(ua===null||!ua.has(c))){i=mi(r,i),r=X1(2),c=ta(s,r,2),c!==null&&(q1(r,c,s,i),Ve(c,2),ki(c));break}}s=s.return}}function vh(i,s,r){var c=i.pingCache;if(c===null){c=i.pingCache=new F5;var p=new Set;c.set(s,p)}else p=c.get(s),p===void 0&&(p=new Set,c.set(s,p));p.has(r)||(oh=!0,p.add(r),i=k5.bind(null,i,s,r),s.then(i,i))}function k5(i,s,r){var c=i.pingCache;c!==null&&c.delete(s),i.pingedLanes|=i.suspendedLanes&r,i.warmLanes&=~r,Yt===i&&(Ct&r)===r&&(sn===4||sn===3&&(Ct&62914560)===Ct&&300>rt()-uh?(Bt&2)===0&&qr(i,0):lh|=r,Gr===Ct&&(Gr=0)),ki(i)}function kg(i,s){s===0&&(s=Pe()),i=Rr(i,s),i!==null&&(Ve(i,s),ki(i))}function G5(i){var s=i.memoizedState,r=0;s!==null&&(r=s.retryLane),kg(i,r)}function W5(i,s){var r=0;switch(i.tag){case 13:var c=i.stateNode,p=i.memoizedState;p!==null&&(r=p.retryLane);break;case 19:c=i.stateNode;break;case 22:c=i.stateNode._retryCache;break;default:throw Error(a(314))}c!==null&&c.delete(s),kg(i,r)}function X5(i,s){return gt(i,s)}var _u=null,Zr=null,xh=!1,yu=!1,_h=!1,er=0;function ki(i){i!==Zr&&i.next===null&&(Zr===null?_u=Zr=i:Zr=Zr.next=i),yu=!0,xh||(xh=!0,Y5())}function Ml(i,s){if(!_h&&yu){_h=!0;do for(var r=!1,c=_u;c!==null;){if(i!==0){var p=c.pendingLanes;if(p===0)var _=0;else{var E=c.suspendedLanes,A=c.pingedLanes;_=(1<<31-Ae(42|i)+1)-1,_&=p&~(E&~A),_=_&201326741?_&201326741|1:_?_|2:0}_!==0&&(r=!0,qg(c,_))}else _=Ct,_=We(c,c===Yt?_:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(_&3)===0||De(c,_)||(r=!0,qg(c,_));c=c.next}while(r);_h=!1}}function q5(){Gg()}function Gg(){yu=xh=!1;var i=0;er!==0&&(nS()&&(i=er),er=0);for(var s=rt(),r=null,c=_u;c!==null;){var p=c.next,_=Wg(c,s);_===0?(c.next=null,r===null?_u=p:r.next=p,p===null&&(Zr=r)):(r=c,(i!==0||(_&3)!==0)&&(yu=!0)),c=p}Ml(i)}function Wg(i,s){for(var r=i.suspendedLanes,c=i.pingedLanes,p=i.expirationTimes,_=i.pendingLanes&-62914561;0<_;){var E=31-Ae(_),A=1<<E,H=p[E];H===-1?((A&r)===0||(A&c)!==0)&&(p[E]=tt(A,s)):H<=s&&(i.expiredLanes|=A),_&=~A}if(s=Yt,r=Ct,r=We(i,i===s?r:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),c=i.callbackNode,r===0||i===s&&(Ft===2||Ft===9)||i.cancelPendingCommit!==null)return c!==null&&c!==null&&k(c),i.callbackNode=null,i.callbackPriority=0;if((r&3)===0||De(i,r)){if(s=r&-r,s===i.callbackPriority)return s;switch(c!==null&&k(c),It(r)){case 2:case 8:r=Ke;break;case 32:r=ot;break;case 268435456:r=B;break;default:r=ot}return c=Xg.bind(null,i),r=gt(r,c),i.callbackPriority=s,i.callbackNode=r,s}return c!==null&&c!==null&&k(c),i.callbackPriority=2,i.callbackNode=null,2}function Xg(i,s){if(Un!==0&&Un!==5)return i.callbackNode=null,i.callbackPriority=0,null;var r=i.callbackNode;if(xu()&&i.callbackNode!==r)return null;var c=Ct;return c=We(i,i===Yt?c:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),c===0?null:(Ag(i,c,s),Wg(i,rt()),i.callbackNode!=null&&i.callbackNode===r?Xg.bind(null,i):null)}function qg(i,s){if(xu())return null;Ag(i,s,!0)}function Y5(){sS(function(){(Bt&6)!==0?gt(vt,q5):Gg()})}function yh(){return er===0&&(er=W()),er}function Yg(i){return i==null||typeof i=="symbol"||typeof i=="boolean"?null:typeof i=="function"?i:Lc(""+i)}function Zg(i,s){var r=s.ownerDocument.createElement("input");return r.name=s.name,r.value=s.value,i.id&&r.setAttribute("form",i.id),s.parentNode.insertBefore(r,s),i=new FormData(i),r.parentNode.removeChild(r),i}function Z5(i,s,r,c,p){if(s==="submit"&&r&&r.stateNode===p){var _=Yg((p[Nn]||null).action),E=c.submitter;E&&(s=(s=E[Nn]||null)?Yg(s.formAction):E.getAttribute("formAction"),s!==null&&(_=s,E=null));var A=new Oc("action","action",null,c,p);i.push({event:A,listeners:[{instance:null,listener:function(){if(c.defaultPrevented){if(er!==0){var H=E?Zg(p,E):new FormData(p);Vd(r,{pending:!0,data:H,method:p.method,action:_},null,H)}}else typeof _=="function"&&(A.preventDefault(),H=E?Zg(p,E):new FormData(p),Vd(r,{pending:!0,data:H,method:p.method,action:_},_,H))},currentTarget:p}]})}}for(var Sh=0;Sh<ad.length;Sh++){var Mh=ad[Sh],K5=Mh.toLowerCase(),Q5=Mh[0].toUpperCase()+Mh.slice(1);Ti(K5,"on"+Q5)}Ti(A2,"onAnimationEnd"),Ti(R2,"onAnimationIteration"),Ti(N2,"onAnimationStart"),Ti("dblclick","onDoubleClick"),Ti("focusin","onFocus"),Ti("focusout","onBlur"),Ti(p5,"onTransitionRun"),Ti(m5,"onTransitionStart"),Ti(g5,"onTransitionCancel"),Ti(L2,"onTransitionEnd"),D("onMouseEnter",["mouseout","mouseover"]),D("onMouseLeave",["mouseout","mouseover"]),D("onPointerEnter",["pointerout","pointerover"]),D("onPointerLeave",["pointerout","pointerover"]),ss("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),ss("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),ss("onBeforeInput",["compositionend","keypress","textInput","paste"]),ss("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),ss("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),ss("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var bl="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),$5=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(bl));function Kg(i,s){s=(s&4)!==0;for(var r=0;r<i.length;r++){var c=i[r],p=c.event;c=c.listeners;e:{var _=void 0;if(s)for(var E=c.length-1;0<=E;E--){var A=c[E],H=A.instance,ie=A.currentTarget;if(A=A.listener,H!==_&&p.isPropagationStopped())break e;_=A,p.currentTarget=ie;try{_(p)}catch(pe){ou(pe)}p.currentTarget=null,_=H}else for(E=0;E<c.length;E++){if(A=c[E],H=A.instance,ie=A.currentTarget,A=A.listener,H!==_&&p.isPropagationStopped())break e;_=A,p.currentTarget=ie;try{_(p)}catch(pe){ou(pe)}p.currentTarget=null,_=H}}}}function bt(i,s){var r=s[Ia];r===void 0&&(r=s[Ia]=new Set);var c=i+"__bubble";r.has(c)||(Qg(s,i,2,!1),r.add(c))}function bh(i,s,r){var c=0;s&&(c|=4),Qg(r,i,c,s)}var Su="_reactListening"+Math.random().toString(36).slice(2);function Eh(i){if(!i[Su]){i[Su]=!0,Rc.forEach(function(r){r!=="selectionchange"&&($5.has(r)||bh(r,!1,i),bh(r,!0,i))});var s=i.nodeType===9?i:i.ownerDocument;s===null||s[Su]||(s[Su]=!0,bh("selectionchange",!1,s))}}function Qg(i,s,r,c){switch(Sv(s)){case 2:var p=wS;break;case 8:p=TS;break;default:p=Fh}r=p.bind(null,s,r,i),p=void 0,!Xf||s!=="touchstart"&&s!=="touchmove"&&s!=="wheel"||(p=!0),c?p!==void 0?i.addEventListener(s,r,{capture:!0,passive:p}):i.addEventListener(s,r,!0):p!==void 0?i.addEventListener(s,r,{passive:p}):i.addEventListener(s,r,!1)}function wh(i,s,r,c,p){var _=c;if((s&1)===0&&(s&2)===0&&c!==null)e:for(;;){if(c===null)return;var E=c.tag;if(E===3||E===4){var A=c.stateNode.containerInfo;if(A===p)break;if(E===4)for(E=c.return;E!==null;){var H=E.tag;if((H===3||H===4)&&E.stateNode.containerInfo===p)return;E=E.return}for(;A!==null;){if(E=ns(A),E===null)return;if(H=E.tag,H===5||H===6||H===26||H===27){c=_=E;continue e}A=A.parentNode}}c=c.return}s2(function(){var ie=_,pe=Gf(r),ye=[];e:{var se=D2.get(i);if(se!==void 0){var ae=Oc,st=i;switch(i){case"keypress":if(Uc(r)===0)break e;case"keydown":case"keyup":ae=Xy;break;case"focusin":st="focus",ae=Kf;break;case"focusout":st="blur",ae=Kf;break;case"beforeblur":case"afterblur":ae=Kf;break;case"click":if(r.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":ae=o2;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":ae=Py;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":ae=Zy;break;case A2:case R2:case N2:ae=By;break;case L2:ae=Qy;break;case"scroll":case"scrollend":ae=Dy;break;case"wheel":ae=Jy;break;case"copy":case"cut":case"paste":ae=zy;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":ae=c2;break;case"toggle":case"beforetoggle":ae=t5}var et=(s&4)!==0,Ht=!et&&(i==="scroll"||i==="scrollend"),K=et?se!==null?se+"Capture":null:se;et=[];for(var X=ie,ne;X!==null;){var ve=X;if(ne=ve.stateNode,ve=ve.tag,ve!==5&&ve!==26&&ve!==27||ne===null||K===null||(ve=Ho(X,K),ve!=null&&et.push(El(X,ve,ne))),Ht)break;X=X.return}0<et.length&&(se=new ae(se,st,null,r,pe),ye.push({event:se,listeners:et}))}}if((s&7)===0){e:{if(se=i==="mouseover"||i==="pointerover",ae=i==="mouseout"||i==="pointerout",se&&r!==kf&&(st=r.relatedTarget||r.fromElement)&&(ns(st)||st[Xn]))break e;if((ae||se)&&(se=pe.window===pe?pe:(se=pe.ownerDocument)?se.defaultView||se.parentWindow:window,ae?(st=r.relatedTarget||r.toElement,ae=ie,st=st?ns(st):null,st!==null&&(Ht=l(st),et=st.tag,st!==Ht||et!==5&&et!==27&&et!==6)&&(st=null)):(ae=null,st=ie),ae!==st)){if(et=o2,ve="onMouseLeave",K="onMouseEnter",X="mouse",(i==="pointerout"||i==="pointerover")&&(et=c2,ve="onPointerLeave",K="onPointerEnter",X="pointer"),Ht=ae==null?se:Fa(ae),ne=st==null?se:Fa(st),se=new et(ve,X+"leave",ae,r,pe),se.target=Ht,se.relatedTarget=ne,ve=null,ns(pe)===ie&&(et=new et(K,X+"enter",st,r,pe),et.target=ne,et.relatedTarget=Ht,ve=et),Ht=ve,ae&&st)t:{for(et=ae,K=st,X=0,ne=et;ne;ne=Kr(ne))X++;for(ne=0,ve=K;ve;ve=Kr(ve))ne++;for(;0<X-ne;)et=Kr(et),X--;for(;0<ne-X;)K=Kr(K),ne--;for(;X--;){if(et===K||K!==null&&et===K.alternate)break t;et=Kr(et),K=Kr(K)}et=null}else et=null;ae!==null&&$g(ye,se,ae,et,!1),st!==null&&Ht!==null&&$g(ye,Ht,st,et,!0)}}e:{if(se=ie?Fa(ie):window,ae=se.nodeName&&se.nodeName.toLowerCase(),ae==="select"||ae==="input"&&se.type==="file")var qe=v2;else if(m2(se))if(x2)qe=f5;else{qe=c5;var yt=l5}else ae=se.nodeName,!ae||ae.toLowerCase()!=="input"||se.type!=="checkbox"&&se.type!=="radio"?ie&&Hf(ie.elementType)&&(qe=v2):qe=u5;if(qe&&(qe=qe(i,ie))){g2(ye,qe,r,pe);break e}yt&&yt(i,se,ie),i==="focusout"&&ie&&se.type==="number"&&ie.memoizedProps.value!=null&&In(se,"number",se.value)}switch(yt=ie?Fa(ie):window,i){case"focusin":(m2(yt)||yt.contentEditable==="true")&&(Tr=yt,nd=ie,Ko=null);break;case"focusout":Ko=nd=Tr=null;break;case"mousedown":id=!0;break;case"contextmenu":case"mouseup":case"dragend":id=!1,T2(ye,r,pe);break;case"selectionchange":if(h5)break;case"keydown":case"keyup":T2(ye,r,pe)}var Ze;if($f)e:{switch(i){case"compositionstart":var nt="onCompositionStart";break e;case"compositionend":nt="onCompositionEnd";break e;case"compositionupdate":nt="onCompositionUpdate";break e}nt=void 0}else wr?h2(i,r)&&(nt="onCompositionEnd"):i==="keydown"&&r.keyCode===229&&(nt="onCompositionStart");nt&&(u2&&r.locale!=="ko"&&(wr||nt!=="onCompositionStart"?nt==="onCompositionEnd"&&wr&&(Ze=a2()):(Qs=pe,qf="value"in Qs?Qs.value:Qs.textContent,wr=!0)),yt=Mu(ie,nt),0<yt.length&&(nt=new l2(nt,i,null,r,pe),ye.push({event:nt,listeners:yt}),Ze?nt.data=Ze:(Ze=p2(r),Ze!==null&&(nt.data=Ze)))),(Ze=i5?s5(i,r):a5(i,r))&&(nt=Mu(ie,"onBeforeInput"),0<nt.length&&(yt=new l2("onBeforeInput","beforeinput",null,r,pe),ye.push({event:yt,listeners:nt}),yt.data=Ze)),Z5(ye,i,ie,r,pe)}Kg(ye,s)})}function El(i,s,r){return{instance:i,listener:s,currentTarget:r}}function Mu(i,s){for(var r=s+"Capture",c=[];i!==null;){var p=i,_=p.stateNode;if(p=p.tag,p!==5&&p!==26&&p!==27||_===null||(p=Ho(i,r),p!=null&&c.unshift(El(i,p,_)),p=Ho(i,s),p!=null&&c.push(El(i,p,_))),i.tag===3)return c;i=i.return}return[]}function Kr(i){if(i===null)return null;do i=i.return;while(i&&i.tag!==5&&i.tag!==27);return i||null}function $g(i,s,r,c,p){for(var _=s._reactName,E=[];r!==null&&r!==c;){var A=r,H=A.alternate,ie=A.stateNode;if(A=A.tag,H!==null&&H===c)break;A!==5&&A!==26&&A!==27||ie===null||(H=ie,p?(ie=Ho(r,_),ie!=null&&E.unshift(El(r,ie,H))):p||(ie=Ho(r,_),ie!=null&&E.push(El(r,ie,H)))),r=r.return}E.length!==0&&i.push({event:s,listeners:E})}var J5=/\r\n?/g,eS=/\u0000|\uFFFD/g;function Jg(i){return(typeof i=="string"?i:""+i).replace(J5,` 49`).replace(eS,"")}function ev(i,s){return s=Jg(s),Jg(i)===s}function bu(){}function jt(i,s,r,c,p,_){switch(r){case"children":typeof c=="string"?s==="body"||s==="textarea"&&c===""||Fi(i,c):(typeof c=="number"||typeof c=="bigint")&&s!=="body"&&Fi(i,""+c);break;case"className":Oe(i,"class",c);break;case"tabIndex":Oe(i,"tabindex",c);break;case"dir":case"role":case"viewBox":case"width":case"height":Oe(i,r,c);break;case"style":n2(i,c,_);break;case"data":if(s!=="object"){Oe(i,"data",c);break}case"src":case"href":if(c===""&&(s!=="a"||r!=="href")){i.removeAttribute(r);break}if(c==null||typeof c=="function"||typeof c=="symbol"||typeof c=="boolean"){i.removeAttribute(r);break}c=Lc(""+c),i.setAttribute(r,c);break;case"action":case"formAction":if(typeof c=="function"){i.setAttribute(r,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof _=="function"&&(r==="formAction"?(s!=="input"&&jt(i,s,"name",p.name,p,null),jt(i,s,"formEncType",p.formEncType,p,null),jt(i,s,"formMethod",p.formMethod,p,null),jt(i,s,"formTarget",p.formTarget,p,null)):(jt(i,s,"encType",p.encType,p,null),jt(i,s,"method",p.method,p,null),jt(i,s,"target",p.target,p,null)));if(c==null||typeof c=="symbol"||typeof c=="boolean"){i.removeAttribute(r);break}c=Lc(""+c),i.setAttribute(r,c);break;case"onClick":c!=null&&(i.onclick=bu);break;case"onScroll":c!=null&&bt("scroll",i);break;case"onScrollEnd":c!=null&&bt("scrollend",i);break;case"dangerouslySetInnerHTML":if(c!=null){if(typeof c!="object"||!("__html"in c))throw Error(a(61));if(r=c.__html,r!=null){if(p.children!=null)throw Error(a(60));i.innerHTML=r}}break;case"multiple":i.multiple=c&&typeof c!="function"&&typeof c!="symbol";break;case"muted":i.muted=c&&typeof c!="function"&&typeof c!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(c==null||typeof c=="function"||typeof c=="boolean"||typeof c=="symbol"){i.removeAttribute("xlink:href");break}r=Lc(""+c),i.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":c!=null&&typeof c!="function"&&typeof c!="symbol"?i.setAttribute(r,""+c):i.removeAttribute(r);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInl
49ine":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":c&&typeof c!="function"&&typeof c!="symbol"?i.setAttribute(r,""):i.removeAttribute(r);break;case"capture":case"download":c===!0?i.setAttribute(r,""):c!==!1&&c!=null&&typeof c!="function"&&typeof c!="symbol"?i.setAttribute(r,c):i.removeAttribute(r);break;case"cols":case"rows":case"size":case"span":c!=null&&typeof c!="function"&&typeof c!="symbol"&&!isNaN(c)&&1<=c?i.setAttribute(r,c):i.removeAttribute(r);break;case"rowSpan":case"start":c==null||typeof c=="function"||typeof c=="symbol"||isNaN(c)?i.removeAttribute(r):i.setAttribute(r,c);break;case"popover":bt("beforetoggle",i),bt("toggle",i),Ne(i,"popover",c);break;case"xlinkActuate":je(i,"http://www.w3.org/1999/xlink","xlink:actuate",c);break;case"xlinkArcrole":je(i,"http://www.w3.org/1999/xlink","xlink:arcrole",c);break;case"xlinkRole":je(i,"http://www.w3.org/1999/xlink","xlink:role",c);break;case"xlinkShow":je(i,"http://www.w3.org/1999/xlink","xlink:show",c);break;case"xlinkTitle":je(i,"http://www.w3.org/1999/xlink","xlink:title",c);break;case"xlinkType":je(i,"http://www.w3.org/1999/xlink","xlink:type",c);break;case"xmlBase":je(i,"http://www.w3.org/XML/1998/namespace","xml:base",c);break;case"xmlLang":je(i,"http://www.w3.org/XML/1998/namespace","xml:lang",c);break;case"xmlSpace":je(i,"http://www.w3.org/XML/1998/namespace","xml:space",c);break;case"is":Ne(i,"is",c);break;case"innerText":case"textContent":break;default:(!(2<r.length)||r[0]!=="o"&&r[0]!=="O"||r[1]!=="n"&&r[1]!=="N")&&(r=Ny.get(r)||r,Ne(i,r,c))}}function Th(i,s,r,c,p,_){switch(r){case"style":n2(i,c,_);break;case"dangerouslySetInnerHTML":if(c!=null){if(typeof c!="object"||!("__html"in c))throw Error(a(61));if(r=c.__html,r!=null){if(p.children!=null)throw Error(a(60));i.innerHTML=r}}break;case"children":typeof c=="string"?Fi(i,c):(typeof c=="number"||typeof c=="bigint")&&Fi(i,""+c);break;case"onScroll":c!=null&&bt("scroll",i);break;case"onScrollEnd":c!=null&&bt("scrollend",i);break;case"onClick":c!=null&&(i.onclick=bu);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Nc.hasOwnProperty(r))e:{if(r[0]==="o"&&r[1]==="n"&&(p=r.endsWith("Capture"),s=r.slice(2,p?r.length-7:void 0),_=i[Nn]||null,_=_!=null?_[r]:null,typeof _=="function"&&i.removeEventListener(s,_,p),typeof c=="function")){typeof _!="function"&&_!==null&&(r in i?i[r]=null:i.hasAttribute(r)&&i.removeAttribute(r)),i.addEventListener(s,c,p);break e}r in i?i[r]=c:c===!0?i.setAttribute(r,""):Ne(i,r,c)}}}function Pn(i,s,r){switch(s){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":bt("error",i),bt("load",i);var c=!1,p=!1,_;for(_ in r)if(r.hasOwnProperty(_)){var E=r[_];if(E!=null)switch(_){case"src":c=!0;break;case"srcSet":p=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(a(137,s));default:jt(i,s,_,E,r,null)}}p&&jt(i,s,"srcSet",r.srcSet,r,null),c&&jt(i,s,"src",r.src,r,null);return;case"input":bt("invalid",i);var A=_=E=p=null,H=null,ie=null;for(c in r)if(r.hasOwnProperty(c)){var pe=r[c];if(pe!=null)switch(c){case"name":p=pe;break;case"type":E=pe;break;case"checked":H=pe;break;case"defaultChecked":ie=pe;break;case"value":_=pe;break;case"defaultValue":A=pe;break;case"children":case"dangerouslySetInnerHTML":if(pe!=null)throw Error(a(137,s));break;default:jt(i,s,c,pe,r,null)}}Gt(i,_,A,H,ie,E,p,!1),zt(i);return;case"select":bt("invalid",i),c=E=_=null;for(p in r)if(r.hasOwnProperty(p)&&(A=r[p],A!=null))switch(p){case"value":_=A;break;case"defaultValue":E=A;break;case"multiple":c=A;default:jt(i,s,p,A,r,null)}s=_,r=E,i.multiple=!!c,s!=null?xn(i,!!c,s,!1):r!=null&&xn(i,!!c,r,!0);return;case"textarea":bt("invalid",i),_=p=c=null;for(E in r)if(r.hasOwnProperty(E)&&(A=r[E],A!=null))switch(E){case"value":c=A;break;case"defaultValue":p=A;break;case"children":_=A;break;case"dangerouslySetInnerHTML":if(A!=null)throw Error(a(91));break;default:jt(i,s,E,A,r,null)}Ln(i,c,p,_),zt(i);return;case"option":for(H in r)if(r.hasOwnProperty(H)&&(c=r[H],c!=null))switch(H){case"selected":i.selected=c&&typeof c!="function"&&typeof c!="symbol";break;default:jt(i,s,H,c,r,null)}return;case"dialog":bt("beforetoggle",i),bt("toggle",i),bt("cancel",i),bt("close",i);break;case"iframe":case"object":bt("load",i);break;case"video":case"audio":for(c=0;c<bl.length;c++)bt(bl[c],i);break;case"image":bt("error",i),bt("load",i);break;case"details":bt("toggle",i);break;case"embed":case"source":case"link":bt("error",i),bt("load",i);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(ie in r)if(r.hasOwnProperty(ie)&&(c=r[ie],c!=null))switch(ie){case"children":case"dangerouslySetInnerHTML":throw Error(a(137,s));default:jt(i,s,ie,c,r,null)}return;default:if(Hf(s)){for(pe in r)r.hasOwnProperty(pe)&&(c=r[pe],c!==void 0&&Th(i,s,pe,c,r,void 0));return}}for(A in r)r.hasOwnProperty(A)&&(c=r[A],c!=null&&jt(i,s,A,c,r,null))}function tS(i,s,r,c){switch(s){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var p=null,_=null,E=null,A=null,H=null,ie=null,pe=null;for(ae in r){var ye=r[ae];if(r.hasOwnProperty(ae)&&ye!=null)switch(ae){case"checked":break;case"value":break;case"defaultValue":H=ye;default:c.hasOwnProperty(ae)||jt(i,s,ae,null,c,ye)}}for(var se in c){var ae=c[se];if(ye=r[se],c.hasOwnProperty(se)&&(ae!=null||ye!=null))switch(se){case"type":_=ae;break;case"name":p=ae;break;case"checked":ie=ae;break;case"defaultChecked":pe=ae;break;case"value":E=ae;break;case"defaultValue":A=ae;break;case"children":case"dangerouslySetInnerHTML":if(ae!=null)throw Error(a(137,s));break;default:ae!==ye&&jt(i,s,se,ae,c,ye)}}as(i,E,A,H,ie,pe,_,p);return;case"select":ae=E=A=se=null;for(_ in r)if(H=r[_],r.hasOwnProperty(_)&&H!=null)switch(_){case"value":break;case"multiple":ae=H;default:c.hasOwnProperty(_)||jt(i,s,_,null,c,H)}for(p in c)if(_=c[p],H=r[p],c.hasOwnProperty(p)&&(_!=null||H!=null))switch(p){case"value":se=_;break;case"defaultValue":A=_;break;case"multiple":E=_;default:_!==H&&jt(i,s,p,_,c,H)}s=A,r=E,c=ae,se!=null?xn(i,!!r,se,!1):!!c!=!!r&&(s!=null?xn(i,!!r,s,!0):xn(i,!!r,r?[]:"",!1));return;case"textarea":ae=se=null;for(A in r)if(p=r[A],r.hasOwnProperty(A)&&p!=null&&!c.hasOwnProperty(A))switch(A){case"value":break;case"children":break;default:jt(i,s,A,null,c,p)}for(E in c)if(p=c[E],_=r[E],c.hasOwnProperty(E)&&(p!=null||_!=null))switch(E){case"value":se=p;break;case"defaultValue":ae=p;break;case"children":break;case"dangerouslySetInnerHTML":if(p!=null)throw Error(a(91));break;default:p!==_&&jt(i,s,E,p,c,_)}wn(i,se,ae);return;case"option":for(var st in r)if(se=r[st],r.hasOwnProperty(st)&&se!=null&&!c.hasOwnProperty(st))switch(st){case"selected":i.selected=!1;break;default:jt(i,s,st,null,c,se)}for(H in c)if(se=c[H],ae=r[H],c.hasOwnProperty(H)&&se!==ae&&(se!=null||ae!=null))switch(H){case"selected":i.selected=se&&typeof se!="function"&&typeof se!="symbol";break;default:jt(i,s,H,se,c,ae)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var et in r)se=r[et],r.hasOwnProperty(et)&&se!=null&&!c.hasOwnProperty(et)&&jt(i,s,et,null,c,se);for(ie in c)if(se=c[ie],ae=r[ie],c.hasOwnProperty(ie)&&se!==ae&&(se!=null||ae!=null))switch(ie){case"children":case"dangerouslySetInnerHTML":if(se!=null)throw Error(a(137,s));break;default:jt(i,s,ie,se,c,ae)}return;default:if(Hf(s)){for(var Ht in r)se=r[Ht],r.hasOwnProperty(Ht)&&se!==void 0&&!c.hasOwnProperty(Ht)&&Th(i,s,Ht,void 0,c,se);for(pe in c)se=c[pe],ae=r[pe],!c.hasOwnProperty(pe)||se===ae||se===void 0&&ae===void 0||Th(i,s,pe,se,c,ae);return}}for(var K in r)se=r[K],r.hasOwnProperty(K)&&se!=null&&!c.hasOwnProperty(K)&&jt(i,s,K,null,c,se);for(ye in c)se=c[ye],ae=r[ye],!c.hasOwnProperty(ye)||se===ae||se==null&&ae==null||jt(i,s,ye,se,c,ae)}var Ch=null,Ah=null;function Eu(i){return i.nodeType===9?i:i.ownerDocument}function tv(i){switch(i){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}
vendor: 4,825 bytes, line 49
49function nv(i,s){if(i===0)switch(s){case"svg":return 1;case"math":return 2;default:return 0}return i===1&&s==="foreignObject"?0:i}function Rh(i,s){return i==="textarea"||i==="noscript"||typeof s.children=="string"||typeof s.children=="number"||typeof s.children=="bigint"||typeof s.dangerouslySetInnerHTML=="object"&&s.dangerouslySetInnerHTML!==null&&s.dangerouslySetInnerHTML.__html!=null}var Nh=null;function nS(){var i=window.event;return i&&i.type==="popstate"?i===Nh?!1:(Nh=i,!0):(Nh=null,!1)}var iv=typeof setTimeout=="function"?setTimeout:void 0,iS=typeof clearTimeout=="function"?clearTimeout:void 0,sv=typeof Promise=="function"?Promise:void 0,sS=typeof queueMicrotask=="function"?queueMicrotask:typeof sv<"u"?function(i){return sv.resolve(null).then(i).catch(aS)}:iv;function aS(i){setTimeout(function(){throw i})}function ha(i){return i==="head"}function av(i,s){var r=s,c=0,p=0;do{var _=r.nextSibling;if(i.removeChild(r),_&&_.nodeType===8)if(r=_.data,r==="/$"){if(0<c&&8>c){r=c;var E=i.ownerDocument;if(r&1&&wl(E.documentElement),r&2&&wl(E.body),r&4)for(r=E.head,wl(r),E=r.firstChild;E;){var A=E.nextSibling,H=E.nodeName;E[qs]||H==="SCRIPT"||H==="STYLE"||H==="LINK"&&E.rel.toLowerCase()==="stylesheet"||r.removeChild(E),E=A}}if(p===0){i.removeChild(_),Ul(s);return}p--}else r==="$"||r==="$?"||r==="$!"?p++:c=r.charCodeAt(0)-48;else c=0;r=_}while(r);Ul(s)}function Lh(i){var s=i.firstChild;for(s&&s.nodeType===10&&(s=s.nextSibling);s;){var r=s;switch(s=s.nextSibling,r.nodeName){case"HTML":case"HEAD":case"BODY":Lh(r),Ys(r);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(r.rel.toLowerCase()==="stylesheet")continue}i.removeChild(r)}}function rS(i,s,r,c){for(;i.nodeType===1;){var p=r;if(i.nodeName.toLowerCase()!==s.toLowerCase()){if(!c&&(i.nodeName!=="INPUT"||i.type!=="hidden"))break}else if(c){if(!i[qs])switch(s){case"meta":if(!i.hasAttribute("itemprop"))break;return i;case"link":if(_=i.getAttribute("rel"),_==="stylesheet"&&i.hasAttribute("data-precedence"))break;if(_!==p.rel||i.getAttribute("href")!==(p.href==null||p.href===""?null:p.href)||i.getAttribute("crossorigin")!==(p.crossOrigin==null?null:p.crossOrigin)||i.getAttribute("title")!==(p.title==null?null:p.title))break;return i;case"style":if(i.hasAttribute("data-precedence"))break;return i;case"script":if(_=i.getAttribute("src"),(_!==(p.src==null?null:p.src)||i.getAttribute("type")!==(p.type==null?null:p.type)||i.getAttribute("crossorigin")!==(p.crossOrigin==null?null:p.crossOrigin))&&_&&i.hasAttribute("async")&&!i.hasAttribute("itemprop"))break;return i;default:return i}}else if(s==="input"&&i.type==="hidden"){var _=p.name==null?null:""+p.name;if(p.type==="hidden"&&i.getAttribute("name")===_)return i}else return i;if(i=Ai(i.nextSibling),i===null)break}return null}function oS(i,s,r){if(s==="")return null;for(;i.nodeType!==3;)if((i.nodeType!==1||i.nodeName!=="INPUT"||i.type!=="hidden")&&!r||(i=Ai(i.nextSibling),i===null))return null;return i}function Dh(i){return i.data==="$!"||i.data==="$?"&&i.ownerDocument.readyState==="complete"}function lS(i,s){var r=i.ownerDocument;if(i.data!=="$?"||r.readyState==="complete")s();else{var c=function(){s(),r.removeEventListener("DOMContentLoaded",c)};r.addEventListener("DOMContentLoaded",c),i._reactRetry=c}}function Ai(i){for(;i!=null;i=i.nextSibling){var s=i.nodeType;if(s===1||s===3)break;if(s===8){if(s=i.data,s==="$"||s==="$!"||s==="$?"||s==="F!"||s==="F")break;if(s==="/$")return null}}return i}var Uh=null;function rv(i){i=i.previousSibling;for(var s=0;i;){if(i.nodeType===8){var r=i.data;if(r==="$"||r==="$!"||r==="$?"){if(s===0)return i;s--}else r==="/$"&&s++}i=i.previousSibling}return null}function ov(i,s,r){switch(s=Eu(r),i){case"html":if(i=s.documentElement,!i)throw Error(a(452));return i;case"head":if(i=s.head,!i)throw Error(a(453));return i;case"body":if(i=s.body,!i)throw Error(a(454));return i;default:throw Error(a(451))}}function wl(i){for(var s=i.attributes;s.length;)i.removeAttributeNode(s[0]);Ys(i)}var Si=new Map,lv=new Set;function wu(i){return typeof i.getRootNode=="function"?i.getRootNode():i.nodeType===9?i:i.ownerDocument}var ys=Z.d;Z.d={f:cS,r:uS,D:fS,C:dS,L:hS,m:pS,X:gS,S:mS,M:vS};function cS(){var i=ys.f(),s=gu();return i||s}function uS(i){var s=is(i);s!==null&&s.tag===5&&s.type==="form"?A1(s):ys.r(i)}var Qr=typeof document>"u"?null:document;function cv(i,s,r){var c=Qr;if(c&&typeof s=="string"&&s){var p=qt(s);p='link[rel="'+i+'"][href="'+p+'"]',typeof r=="string"&&(p+='[crossorigin="'+r+'"]'),lv.has(p)||(lv.add(p),i={rel:i,crossOrigin:r,href:s},c.querySelector(p)===null&&(s=c.createElement("link"),Pn(s,"link",i),un(s),c.head.appendChild(s)))}}function fS(i){ys.D(i),cv("dns-prefetch",i,null)}function dS(i,s){ys.C(i,s),cv("preconnect",i,s)}function hS(i,s,r){ys.L(i,s,r);var c=Qr;if(c&&i&&s){var p='link[rel="preload"][as="'+qt(s)+'"]';
vendor: 4,555 bytes, line 49
49s==="image"&&r&&r.imageSrcSet?(p+='[imagesrcset="'+qt(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(p+='[imagesizes="'+qt(r.imageSizes)+'"]')):p+='[href="'+qt(i)+'"]';var _=p;switch(s){case"style":_=$r(i);break;case"script":_=Jr(i)}Si.has(_)||(i=g({rel:"preload",href:s==="image"&&r&&r.imageSrcSet?void 0:i,as:s},r),Si.set(_,i),c.querySelector(p)!==null||s==="style"&&c.querySelector(Tl(_))||s==="script"&&c.querySelector(Cl(_))||(s=c.createElement("link"),Pn(s,"link",i),un(s),c.head.appendChild(s)))}}function pS(i,s){ys.m(i,s);var r=Qr;if(r&&i){var c=s&&typeof s.as=="string"?s.as:"script",p='link[rel="modulepreload"][as="'+qt(c)+'"][href="'+qt(i)+'"]',_=p;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":_=Jr(i)}if(!Si.has(_)&&(i=g({rel:"modulepreload",href:i},s),Si.set(_,i),r.querySelector(p)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(Cl(_)))return}c=r.createElement("link"),Pn(c,"link",i),un(c),r.head.appendChild(c)}}}function mS(i,s,r){ys.S(i,s,r);var c=Qr;if(c&&i){var p=Zs(c).hoistableStyles,_=$r(i);s=s||"default";var E=p.get(_);if(!E){var A={loading:0,preload:null};if(E=c.querySelector(Tl(_)))A.loading=5;else{i=g({rel:"stylesheet",href:i,"data-precedence":s},r),(r=Si.get(_))&&Ph(i,r);var H=E=c.createElement("link");un(H),Pn(H,"link",i),H._p=new Promise(function(ie,pe){H.onload=ie,H.onerror=pe}),H.addEventListener("load",function(){A.loading|=1}),H.addEventListener("error",function(){A.loading|=2}),A.loading|=4,Tu(E,s,c)}E={type:"stylesheet",instance:E,count:1,state:A},p.set(_,E)}}}function gS(i,s){ys.X(i,s);var r=Qr;if(r&&i){var c=Zs(r).hoistableScripts,p=Jr(i),_=c.get(p);_||(_=r.querySelector(Cl(p)),_||(i=g({src:i,async:!0},s),(s=Si.get(p))&&Oh(i,s),_=r.createElement("script"),un(_),Pn(_,"link",i),r.head.appendChild(_)),_={type:"script",instance:_,count:1,state:null},c.set(p,_))}}function vS(i,s){ys.M(i,s);var r=Qr;if(r&&i){var c=Zs(r).hoistableScripts,p=Jr(i),_=c.get(p);_||(_=r.querySelector(Cl(p)),_||(i=g({src:i,async:!0,type:"module"},s),(s=Si.get(p))&&Oh(i,s),_=r.createElement("script"),un(_),Pn(_,"link",i),r.head.appendChild(_)),_={type:"script",instance:_,count:1,state:null},c.set(p,_))}}function uv(i,s,r,c){var p=(p=Ee.current)?wu(p):null;if(!p)throw Error(a(446));switch(i){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(s=$r(r.href),r=Zs(p).hoistableStyles,c=r.get(s),c||(c={type:"style",instance:null,count:0,state:null},r.set(s,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(r.rel==="stylesheet"&&typeof r.href=="string"&&typeof r.precedence=="string"){i=$r(r.href);var _=Zs(p).hoistableStyles,E=_.get(i);if(E||(p=p.ownerDocument||p,E={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},_.set(i,E),(_=p.querySelector(Tl(i)))&&!_._p&&(E.instance=_,E.state.loading=5),Si.has(i)||(r={rel:"preload",as:"style",href:r.href,crossOrigin:r.crossOrigin,integrity:r.integrity,media:r.media,hrefLang:r.hrefLang,referrerPolicy:r.referrerPolicy},Si.set(i,r),_||xS(p,i,r,E.state))),s&&c===null)throw Error(a(528,""));return E}if(s&&c!==null)throw Error(a(529,""));return null;case"script":return s=r.async,r=r.src,typeof r=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?(s=Jr(r),r=Zs(p).hoistableScripts,c=r.get(s),c||(c={type:"script",instance:null,count:0,state:null},r.set(s,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(a(444,i))}}function $r(i){return'href="'+qt(i)+'"'}function Tl(i){return'link[rel="stylesheet"]['+i+"]"}function fv(i){return g({},i,{"data-precedence":i.precedence,precedence:null})}function xS(i,s,r,c){i.querySelector('link[rel="preload"][as="style"]['+s+"]")?c.loading=1:(s=i.createElement("link"),c.preload=s,s.addEventListener("load",function(){return c.loading|=1}),s.addEventListener("error",function(){return c.loading|=2}),Pn(s,"link",r),un(s),i.head.appendChild(s))}function Jr(i){return'[src="'+qt(i)+'"]'}function Cl(i){return"script[async]"+i}function dv(i,s,r){if(s.count++,s.instance===null)switch(s.type){case"style":var c=i.querySelector('style[data-href~="'+qt(r.href)+'"]');if(c)return s.instance=c,un(c),c;var p=g({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return c=(i.ownerDocument||i).createElement("style"),un(c),Pn(c,"style",p),Tu(c,r.precedence,i),s.instance=c;case"stylesheet":p=$r(r.href);var _=i.querySelector(Tl(p));
vendor: 12,739 bytes, line 49
49if(_)return s.state.loading|=4,s.instance=_,un(_),_;c=fv(r),(p=Si.get(p))&&Ph(c,p),_=(i.ownerDocument||i).createElement("link"),un(_);var E=_;return E._p=new Promise(function(A,H){E.onload=A,E.onerror=H}),Pn(_,"link",c),s.state.loading|=4,Tu(_,r.precedence,i),s.instance=_;case"script":return _=Jr(r.src),(p=i.querySelector(Cl(_)))?(s.instance=p,un(p),p):(c=r,(p=Si.get(_))&&(c=g({},r),Oh(c,p)),i=i.ownerDocument||i,p=i.createElement("script"),un(p),Pn(p,"link",c),i.head.appendChild(p),s.instance=p);case"void":return null;default:throw Error(a(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(c=s.instance,s.state.loading|=4,Tu(c,r.precedence,i));return s.instance}function Tu(i,s,r){for(var c=r.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),p=c.length?c[c.length-1]:null,_=p,E=0;E<c.length;E++){var A=c[E];if(A.dataset.precedence===s)_=A;else if(_!==p)break}_?_.parentNode.insertBefore(i,_.nextSibling):(s=r.nodeType===9?r.head:r,s.insertBefore(i,s.firstChild))}function Ph(i,s){i.crossOrigin==null&&(i.crossOrigin=s.crossOrigin),i.referrerPolicy==null&&(i.referrerPolicy=s.referrerPolicy),i.title==null&&(i.title=s.title)}function Oh(i,s){i.crossOrigin==null&&(i.crossOrigin=s.crossOrigin),i.referrerPolicy==null&&(i.referrerPolicy=s.referrerPolicy),i.integrity==null&&(i.integrity=s.integrity)}var Cu=null;function hv(i,s,r){if(Cu===null){var c=new Map,p=Cu=new Map;p.set(r,c)}else p=Cu,c=p.get(r),c||(c=new Map,p.set(r,c));if(c.has(i))return c;for(c.set(i,null),r=r.getElementsByTagName(i),p=0;p<r.length;p++){var _=r[p];if(!(_[qs]||_[vn]||i==="link"&&_.getAttribute("rel")==="stylesheet")&&_.namespaceURI!=="http://www.w3.org/2000/svg"){var E=_.getAttribute(s)||"";E=i+E;var A=c.get(E);A?A.push(_):c.set(E,[_])}}return c}function pv(i,s,r){i=i.ownerDocument||i,i.head.insertBefore(r,s==="title"?i.querySelector("head > title"):null)}function _S(i,s,r){if(r===1||s.itemProp!=null)return!1;switch(i){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;switch(s.rel){case"stylesheet":return i=s.disabled,typeof s.precedence=="string"&&i==null;default:return!0}case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function mv(i){return!(i.type==="stylesheet"&&(i.state.loading&3)===0)}var Al=null;function yS(){}function SS(i,s,r){if(Al===null)throw Error(a(475));var c=Al;if(s.type==="stylesheet"&&(typeof r.media!="string"||matchMedia(r.media).matches!==!1)&&(s.state.loading&4)===0){if(s.instance===null){var p=$r(r.href),_=i.querySelector(Tl(p));if(_){i=_._p,i!==null&&typeof i=="object"&&typeof i.then=="function"&&(c.count++,c=Au.bind(c),i.then(c,c)),s.state.loading|=4,s.instance=_,un(_);return}_=i.ownerDocument||i,r=fv(r),(p=Si.get(p))&&Ph(r,p),_=_.createElement("link"),un(_);var E=_;E._p=new Promise(function(A,H){E.onload=A,E.onerror=H}),Pn(_,"link",r),s.instance=_}c.stylesheets===null&&(c.stylesheets=new Map),c.stylesheets.set(s,i),(i=s.state.preload)&&(s.state.loading&3)===0&&(c.count++,s=Au.bind(c),i.addEventListener("load",s),i.addEventListener("error",s))}}function MS(){if(Al===null)throw Error(a(475));var i=Al;return i.stylesheets&&i.count===0&&Ih(i,i.stylesheets),0<i.count?function(s){var r=setTimeout(function(){if(i.stylesheets&&Ih(i,i.stylesheets),i.unsuspend){var c=i.unsuspend;i.unsuspend=null,c()}},6e4);return i.unsuspend=s,function(){i.unsuspend=null,clearTimeout(r)}}:null}function Au(){if(this.count--,this.count===0){if(this.stylesheets)Ih(this,this.stylesheets);else if(this.unsuspend){var i=this.unsuspend;this.unsuspend=null,i()}}}var Ru=null;function Ih(i,s){i.stylesheets=null,i.unsuspend!==null&&(i.count++,Ru=new Map,s.forEach(bS,i),Ru=null,Au.call(i))}function bS(i,s){if(!(s.state.loading&4)){var r=Ru.get(i);if(r)var c=r.get(null);else{r=new Map,Ru.set(i,r);for(var p=i.querySelectorAll("link[data-precedence],style[data-precedence]"),_=0;_<p.length;_++){var E=p[_];(E.nodeName==="LINK"||E.getAttribute("media")!=="not all")&&(r.set(E.dataset.precedence,E),c=E)}c&&r.set(null,c)}p=s.instance,E=p.getAttribute("data-precedence"),_=r.get(E)||c,_===c&&r.set(null,p),r.set(E,p),this.count++,c=Au.bind(this),p.addEventListener("load",c),p.addEventListener("error",c),_?_.parentNode.insertBefore(p,_.nextSibling):(i=i.nodeType===9?i.head:i,i.insertBefore(p,i.firstChild)),s.state.loading|=4}}var Rl={$$typeof:T,Provider:null,Consumer:null,_currentValue:Y,_currentValue2:Y,_threadCount:0};function ES(i,s,r,c,p,_,E,A){this.tag=1,this.containerInfo=i,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=we(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=we(0),this.hiddenUpdates=we(null),this.identifierPrefix=c,this.onUncaughtError=p,this.onCaughtError=_,this.onRecoverableError=E,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=A,this.incompleteTransitions=new Map}function gv(i,s,r,c,p,_,E,A,H,ie,pe,ye){return i=new ES(i,s,r,E,A,H,ie,ye),s=1,_===!0&&(s|=24),_=si(3,null,null,s),i.current=_,_.stateNode=i,s=vd(),s.refCount++,i.pooledCache=s,s.refCount++,_.memoizedState={element:c,isDehydrated:r,cache:s},Sd(_),i}function vv(i){return i?(i=Nr,i):Nr}function xv(i,s,r,c,p,_){p=vv(p),c.context===null?c.context=p:c.pendingContext=p,c=ea(s),c.payload={element:r},_=_===void 0?null:_,_!==null&&(c.callback=_),r=ta(i,c,s),r!==null&&(ci(r,i,s),al(r,i,s))}function _v(i,s){if(i=i.memoizedState,i!==null&&i.dehydrated!==null){var r=i.retryLane;i.retryLane=r!==0&&r<s?r:s}}function Bh(i,s){_v(i,s),(i=i.alternate)&&_v(i,s)}function yv(i){if(i.tag===13){var s=Rr(i,67108864);s!==null&&ci(s,i,67108864),Bh(i,67108864)}}var Nu=!0;function wS(i,s,r,c){var p=j.T;j.T=null;var _=Z.p;try{Z.p=2,Fh(i,s,r,c)}finally{Z.p=_,j.T=p}}function TS(i,s,r,c){var p=j.T;j.T=null;var _=Z.p;try{Z.p=8,Fh(i,s,r,c)}finally{Z.p=_,j.T=p}}function Fh(i,s,r,c){if(Nu){var p=zh(c);if(p===null)wh(i,s,c,Lu,r),Mv(i,c);else if(AS(p,i,s,r,c))c.stopPropagation();else if(Mv(i,c),s&4&&-1<CS.indexOf(i)){for(;p!==null;){var _=is(p);if(_!==null)switch(_.tag){case 3:if(_=_.stateNode,_.current.memoizedState.isDehydrated){var E=Be(_.pendingLanes);if(E!==0){var A=_;for(A.pendingLanes|=2,A.entangledLanes|=2;E;){var H=1<<31-Ae(E);A.entanglements[1]|=H,E&=~H}ki(_),(Bt&6)===0&&(pu=rt()+500,Ml(0))}}break;case 13:A=Rr(_,2),A!==null&&ci(A,_,2),gu(),Bh(_,2)}if(_=zh(c),_===null&&wh(i,s,c,Lu,r),_===p)break;p=_}p!==null&&c.stopPropagation()}else wh(i,s,c,null,r)}}function zh(i){return i=Gf(i),Vh(i)}var Lu=null;function Vh(i){if(Lu=null,i=ns(i),i!==null){var s=l(i);if(s===null)i=null;else{var r=s.tag;if(r===13){if(i=u(s),i!==null)return i;i=null}else if(r===3){if(s.stateNode.current.memoizedState.isDehydrated)return s.tag===3?s.stateNode.containerInfo:null;i=null}else s!==i&&(i=null)}}return Lu=i,null}function Sv(i){switch(i){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(He()){case vt:return 2;case Ke:return 8;case ot:case $t:return 32;case B:return 268435456;default:return 32}default:return 32}}var jh=!1,pa=null,ma=null,ga=null,Nl=new Map,Ll=new Map,va=[],CS="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Mv(i,s){switch(i){case"focusin":case"focusout":pa=null;break;case"dragenter":case"dragleave":ma=null;break;case"mouseover":case"mouseout":ga=null;break;case"pointerover":case"pointerout":Nl.delete(s.pointerId);break;case"gotpointercapture":case"lostpointercapture":Ll.delete(s.pointerId)}}function Dl(i,s,r,c,p,_){return i===null||i.nativeEvent!==_?(i={blockedOn:s,domEventName:r,eventSystemFlags:c,nativeEvent:_,targetContainers:[p]},s!==null&&(s=is(s),s!==null&&yv(s)),i):(i.eventSystemFlags|=c,s=i.targetContainers,p!==null&&s.indexOf(p)===-1&&s.push(p),i)}function AS(i,s,r,c,p){switch(s){case"focusin":return pa=Dl(pa,i,s,r,c,p),!0;case"dragenter":return ma=Dl(ma,i,s,r,c,p),!0;case"mouseover":return ga=Dl(ga,i,s,r,c,p),!0;case"pointerover":var _=p.pointerId;return Nl.set(_,Dl(Nl.get(_)||null,i,s,r,c,p)),!0;case"gotpointercapture":return _=p.pointerId,Ll.set(_,Dl(Ll.get(_)||null,i,s,r,c,p)),!0}return!1}function bv(i){var s=ns(i.target);if(s!==null){var r=l(s);if(r!==null){if(s=r.tag,s===13){if(s=u(r),s!==null){i.blockedOn=s,ni(i.priority,function(){if(r.tag===13){var c=li();c=lt(c);var p=Rr(r,c);p!==null&&ci(p,r,c),Bh(r,c)}});return}}else if(s===3&&r.stateNode.current.memoizedState.isDehydrated){i.blockedOn=r.tag===3?r.stateNode.containerInfo:null;return}}}i.blockedOn=null}function Du(i){if(i.blockedOn!==null)return!1;for(var s=i.targetContainers;0<s.length;){var r=zh(i.nativeEvent);if(r===null){r=i.nativeEvent;var c=new r.constructor(r.type,r);kf=c,r.target.dispatchEvent(c),kf=null}else return s=is(r),s!==null&&yv(s),i.blockedOn=r,!1;s.shift()}return!0}function Ev(i,s,r){Du(i)&&r.delete(s)}function RS(){jh=!1,pa!==null&&Du(pa)&&(pa=null),ma!==null&&Du(ma)&&(ma=null),ga!==null&&Du(ga)&&(ga=null),Nl.forEach(Ev),Ll.forEach(Ev)}function Uu(i,s){i.blockedOn===s&&(i.blockedOn=null,jh||(jh=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,RS)))}var Pu=null;function wv(i){Pu!==i&&(Pu=i,n.unstable_scheduleCallback(n.unstable_NormalPriority,function(){Pu===i&&(Pu=null);for(var s=0;s<i.length;s+=3){var r=i[s],c=i[s+1],p=i[s+2];if(typeof c!="function"){if(Vh(c||r)===null)continue;break}var _=is(r);_!==null&&(i.splice(s,3),s-=3,Vd(_,{pending:!0,data:p,method:r.method,action:c},c,p))}}))}function Ul(i){function s(H){return Uu(H,i)}pa!==null&&Uu(pa,i),ma!==null&&Uu(ma,i),ga!==null&&Uu(ga,i),Nl.forEach(s),Ll.forEach(s);for(var r=0;r<va.length;r++){var c=va[r];c.blockedOn===i&&(c.blockedOn=null)}for(;0<va.length&&(r=va[0],r.blockedOn===null);)bv(r),r.blockedOn===null&&va.shift();if(r=(i.ownerDocument||i).$$reactFormReplay,r!=null)for(c=0;c<r.length;c+=3){var p=r[c],_=r[c+1],E=p[Nn]||null;if(typeof _=="function")E||wv(r);else if(E){var A=null;if(_&&_.hasAttribute("formAction")){if(p=_,E=_[Nn]||null)A=E.formAction;else if(Vh(p)!==null)continue}else A=E.action;typeof A=="function"?r[c+1]=A:(r.splice(c,3),c-=3),wv(r)}}}function Hh(i){this._internalRoot=i}Ou.prototype.render=Hh.prototype.render=function(i){var s=this._internalRoot;if(s===null)throw Error(a(409));var r=s.current,c=li();xv(r,c,i,s,null,null)},Ou.prototype.unmount=Hh.prototype.unmount=function(){var i=this._internalRoot;if(i!==null){this._internalRoot=null;var s=i.containerInfo;xv(i.current,2,null,i,null,null),gu(),s[Xn]=null}};function Ou(i){this._internalRoot=i}Ou.prototype.unstable_scheduleHydration=function(i){if(i){var s=Rt();i={blockedOn:null,target:i,priority:s};for(var r=0;r<va.length&&s!==0&&s<va[r].priority;r++);va.splice(r,0,i),r===0&&bv(i)}};var Tv=e.version;if(Tv!=="19.1.1")throw Error(a(527,Tv,"19.1.1"));Z.findDOMNode=function(i){var s=i._reactInternals;if(s===void 0)throw typeof i.render=="function"?Error(a(188)):(i=Object.keys(i).join(","),Error(a(268,i)));return i=d(s),i=i!==null?h(i):null,i=i===null?null:i.stateNode,i};var NS={bundleType:0,version:"19.1.1",rendererPackageName:"react-dom",currentDispatcherRef:j,reconcilerVersion:"19.1.1"};
49if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Iu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Iu.isDisabled&&Iu.supportsFiber)try{de=Iu.inject(NS),fe=Iu}catch{}}return Ol.createRoot=function(i,s){if(!o(i))throw Error(a(299));var r=!1,c="",p=H1,_=k1,E=G1,A=null;return s!=null&&(s.unstable_strictMode===!0&&(r=!0),s.identifierPrefix!==void 0&&(c=s.identifierPrefix),s.onUncaughtError!==void 0&&(p=s.onUncaughtError),s.onCaughtError!==void 0&&(_=s.onCaughtError),s.onRecoverableError!==void 0&&(E=s.onRecoverableError),s.unstable_transitionCallbacks!==void 0&&(A=s.unstable_transitionCallbacks)),s=gv(i,1,!1,null,null,r,c,p,_,E,A,null),i[Xn]=s.current,Eh(i),new Hh(s)},Ol.hydrateRoot=function(i,s,r){if(!o(i))throw Error(a(299));var c=!1,p="",_=H1,E=k1,A=G1,H=null,ie=null;return r!=null&&(r.unstable_strictMode===!0&&(c=!0),r.identifierPrefix!==void 0&&(p=r.identifierPrefix),r.onUncaughtError!==void 0&&(_=r.onUncaughtError),r.onCaughtError!==void 0&&(E=r.onCaughtError),r.onRecoverableError!==void 0&&(A=r.onRecoverableError),r.unstable_transitionCallbacks!==void 0&&(H=r.unstable_transitionCallbacks),r.formState!==void 0&&(ie=r.formState)),s=gv(i,1,!0,s,r??null,c,p,_,E,A,H,ie),s.context=vv(null),r=s.current,c=li(),c=lt(c),p=ea(c),p.callback=null,ta(r,p,c),r=c,s.current.lanes=r,Ve(s,r),ki(s),i[Xn]=s.current,Eh(i),new Ou(s)},Ol.version="19.1.1",Ol}var Iv;function jS(){if(Iv)return Gh.exports;Iv=1;function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),Gh.exports=VS(),Gh.exports}var HS=jS(),G=Bs();/** 50 * react-router v7.8.2 51 * 52 * Copyright (c) Remix Software Inc. 53 * 54 * This source code is licensed under the MIT license found in the 55 * LICENSE.md file in the root directory of this source tree. 56 * 57 * @license MIT 58 */var Bv="popstate";function kS(n={}){function e(a,o){let{pathname:l,search:u,hash:f}=a.location;return G0("",{pathname:l,search:u,hash:f},o.state&&o.state.usr||null,o.state&&o.state.key||"default")}function t(a,o){return typeof o=="string"?o:ic(o)}return WS(e,t,null,n)}function tn(n,e){if(n===!1||n===null||typeof n>"u")throw new Error(e)}function $i(n,e){if(!n){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function GS(){return Math.random().toString(36).substring(2,10)}function Fv(n,e){return{usr:n.state,key:n.key,idx:e}}function G0(n,e,t=null,a){return{pathname:typeof n=="string"?n:n.pathname,search:"",hash:"",...typeof e=="string"?Po(e):e,state:t,key:e&&e.key||a||GS()}}function ic({pathname:n="/",search:e="",hash:t=""}){return e&&e!=="?"&&(n+=e.charAt(0)==="?"?e:"?"+e),t&&t!=="#"&&(n+=t.charAt(0)==="#"?t:"#"+t),n}function Po(n){let e={};if(n){let t=n.indexOf("#");t>=0&&(e.hash=n.substring(t),n=n.substring(0,t));let a=n.indexOf("?");a>=0&&(e.search=n.substring(a),n=n.substring(0,a)),n&&(e.pathname=n)}return e}function WS(n,e,t,a={}){let{window:o=document.defaultView,v5Compat:l=!1}=a,u=o.history,f="POP",d=null,h=g();h==null&&(h=0,u.replaceState({...u.state,idx:h},""));function g(){return(u.state||{idx:null}).idx}function v(){f="POP";let M=g(),S=M==null?null:M-h;h=M,d&&d({action:f,location:w.location,delta:S})}function x(M,S){f="PUSH";let N=G0(w.location,M,S);h=g()+1;let T=Fv(N,h),R=w.createHref(N);try{u.pushState(T,"",R)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;o.location.assign(R)}l&&d&&d({action:f,location:w.location,delta:1})}function y(M,S){f="REPLACE";let N=G0(w.location,M,S);h=g();let T=Fv(N,h),R=w.createHref(N);u.replaceState(T,"",R),l&&d&&d({action:f,location:w.location,delta:0})}function b(M){return XS(M)}let w={get action(){return f},get location(){return n(o,u)},listen(M){if(d)throw new Error("A history only accepts one active listener");return o.addEventListener(Bv,v),d=M,()=>{o.removeEventListener(Bv,v),d=null}},createHref(M){return e(o,M)},createURL:b,encodeLocation(M){let S=b(M);return{pathname:S.pathname,search:S.search,hash:S.hash}},push:x,replace:y,go(M){return u.go(M)}};return w}function XS(n,e=!1){let t="http://localhost";
58typeof window<"u"&&(t=window.location.origin!=="null"?window.location.origin:window.location.href),tn(t,"No window.location.(origin|href) available to create URL");let a=typeof n=="string"?n:ic(n);return a=a.replace(/ $/,"%20"),!e&&a.startsWith("//")&&(a=t+a),new URL(a,t)}function s_(n,e,t="/"){return qS(n,e,t,!1)}function qS(n,e,t,a){let o=typeof e=="string"?Po(e):e,l=Ds(o.pathname||"/",t);if(l==null)return null;let u=a_(n);YS(u);let f=null;for(let d=0;f==null&&d<u.length;++d){let h=aM(l);f=iM(u[d],h,a)}return f}function a_(n,e=[],t=[],a="",o=!1){let l=(u,f,d=o,h)=>{let g={relativePath:h===void 0?u.path||"":h,caseSensitive:u.caseSensitive===!0,childrenIndex:f,route:u};if(g.relativePath.startsWith("/")){if(!g.relativePath.startsWith(a)&&d)return;tn(g.relativePath.startsWith(a),`Absolute route path "${g.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),g.relativePath=g.relativePath.slice(a.length)}let v=Ns([a,g.relativePath]),x=t.concat(g);u.children&&u.children.length>0&&(tn(u.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${v}".`),a_(u.children,e,x,v,d)),!(u.path==null&&!u.index)&&e.push({path:v,score:tM(v,u.index),routesMeta:x})};return n.forEach((u,f)=>{if(u.path===""||!u.path?.includes("?"))l(u,f);else for(let d of r_(u.path))l(u,f,!0,d)}),e}function r_(n){let e=n.split("/");if(e.length===0)return[];let[t,...a]=e,o=t.endsWith("?"),l=t.replace(/\?$/,"");if(a.length===0)return o?[l,""]:[l];let u=r_(a.join("/")),f=[];return f.push(...u.map(d=>d===""?l:[l,d].join("/"))),o&&f.push(...u),f.map(d=>n.startsWith("/")&&d===""?"/":d)}function YS(n){n.sort((e,t)=>e.score!==t.score?t.score-e.score:nM(e.routesMeta.map(a=>a.childrenIndex),t.routesMeta.map(a=>a.childrenIndex)))}var ZS=/^:[\w-]+$/,KS=3,QS=2,$S=1,JS=10,eM=-2,zv=n=>n==="*";function tM(n,e){let t=n.split("/"),a=t.length;return t.some(zv)&&(a+=eM),e&&(a+=QS),t.filter(o=>!zv(o)).reduce((o,l)=>o+(ZS.test(l)?KS:l===""?$S:JS),a)}function nM(n,e){return n.length===e.length&&n.slice(0,-1).every((a,o)=>a===e[o])?n[n.length-1]-e[e.length-1]:0}function iM(n,e,t=!1){let{routesMeta:a}=n,o={},l="/",u=[];for(let f=0;f<a.length;++f){let d=a[f],h=f===a.length-1,g=l==="/"?e:e.slice(l.length)||"/",v=Mf({path:d.relativePath,caseSensitive:d.caseSensitive,end:h},g),x=d.route;if(!v&&h&&t&&!a[a.length-1].route.index&&(v=Mf({path:d.relativePath,caseSensitive:d.caseSensitive,end:!1},g)),!v)return null;
58Object.assign(o,v.params),u.push({params:o,pathname:Ns([l,v.pathname]),pathnameBase:cM(Ns([l,v.pathnameBase])),route:x}),v.pathnameBase!=="/"&&(l=Ns([l,v.pathnameBase]))}return u}function Mf(n,e){typeof n=="string"&&(n={path:n,caseSensitive:!1,end:!0});let[t,a]=sM(n.path,n.caseSensitive,n.end),o=e.match(t);if(!o)return null;let l=o[0],u=l.replace(/(.)\/+$/,"$1"),f=o.slice(1);return{params:a.reduce((h,{paramName:g,isOptional:v},x)=>{if(g==="*"){let b=f[x]||"";u=l.slice(0,l.length-b.length).replace(/(.)\/+$/,"$1")}const y=f[x];return v&&!y?h[g]=void 0:h[g]=(y||"").replace(/%2F/g,"/"),h},{}),pathname:l,pathnameBase:u,pattern:n}}function sM(n,e=!1,t=!0){$i(n==="*"||!n.endsWith("*")||n.endsWith("/*"),`Route path "${n}" will be treated as if it were "${n.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${n.replace(/\*$/,"/*")}".`);let a=[],o="^"+n.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(u,f,d)=>(a.push({paramName:f,isOptional:d!=null}),d?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return n.endsWith("*")?(a.push({paramName:"*"}),o+=n==="*"||n==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):t?o+="\\/*$":n!==""&&n!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,e?void 0:"i"),a]}function aM(n){try{return n.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return $i(!1,`The URL path "${n}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),n}}function Ds(n,e){if(e==="/")return n;if(!n.toLowerCase().startsWith(e.toLowerCase()))return null;let t=e.endsWith("/")?e.length-1:e.length,a=n.charAt(t);return a&&a!=="/"?null:n.slice(t)||"/"}function rM(n,e="/"){let{pathname:t,search:a="",hash:o=""}=typeof n=="string"?Po(n):n;return{pathname:t?t.startsWith("/")?t:oM(t,e):e,search:uM(a),hash:fM(o)}}function oM(n,e){let t=e.replace(/\/+$/,"").split("/");return n.split("/").forEach(o=>{o===".."?t.length>1&&t.pop():o!=="."&&t.push(o)}),t.length>1?t.join("/"):"/"}function Zh(n,e,t,a){return`Cannot include a '${n}' character in a manually specified \`to.${e}\` field [${JSON.stringify(a)}]. Please separate it out to the \`to.${t}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function lM(n){return n.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function o_(n){let e=lM(n);return e.map((t,a)=>a===e.length-1?t.pathname:t.pathnameBase)}function l_(n,e,t,a=!1){let o;typeof n=="string"?o=Po(n):(o={...n},tn(!o.pathname||!o.pathname.includes("?"),Zh("?","pathname","search",o)),tn(!o.pathname||!o.pathname.includes("#"),Zh("#","pathname","hash",o)),tn(!o.search||!o.search.includes("#"),Zh("#","search","hash",o)));let l=n===""||o.pathname==="",u=l?"/":o.pathname,f;if(u==null)f=t;else{let v=e.length-1;if(!a&&u.startsWith("..")){let x=u.split("/");for(;x[0]==="..";)x.shift(),v-=1;o.pathname=x.join("/")}f=v>=0?e[v]:"/"}let d=rM(o,f),h=u&&u!=="/"&&u.endsWith("/"),g=(l||u===".")&&t.endsWith("/");return!d.pathname.endsWith("/")&&(h||g)&&(d.pathname+="/"),d}var Ns=n=>n.join("/").replace(/\/\/+/g,"/"),cM=n=>n.replace(/\/+$/,"").replace(/^\/*/,"/"),uM=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,fM=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n;function dM(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}var c_=["POST","PUT","PATCH","DELETE"];new Set(c_);var hM=["GET",...c_];new Set(hM);var Oo=G.createContext(null);Oo.displayName="DataRouter";var Uf=G.createContext(null);Uf.displayName="DataRouterState";G.createContext(!1);var u_=G.createContext({isTransitioning:!1});u_.displayName="ViewTransition";var pM=G.createContext(new Map);pM.displayName="Fetchers";var mM=G.createContext(null);mM.displayName="Await";var Ji=G.createContext(null);Ji.displayName="Navigation";var mc=G.createContext(null);mc.displayName="Location";var Fs=G.createContext({outlet:null,matches:[],isDataRoute:!1});Fs.displayName="Route";var rm=G.createContext(null);rm.displayName="RouteError";function gM(n,{relative:e}={}){tn(gc(),"useHref() may be used only in the context of a <Router> component.");let{basename:t,navigator:a}=G.useContext(Ji),{hash:o,pathname:l,search:u}=vc(n,{relative:e}),f=l;return t!=="/"&&(f=l==="/"?t:Ns([t,l])),a.createHref({pathname:f,search:u,hash:o})}function gc(){return G.useContext(mc)!=null}function es(){return tn(gc(),"useLocation() may be used only in the context of a <Router> component."),G.useContext(mc).location}var f_="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function d_(n){G.useContext(Ji).static||G.useLayoutEffect(n)}function ts(){let{isDataRoute:n}=G.useContext(Fs);return n?RM():vM()}function vM(){tn(gc(),"useNavigate() may be used only in the context of a <Router> component.");let n=G.useContext(Oo),{basename:e,navigator:t}=G.useContext(Ji),{matches:a}=G.useContext(Fs),{pathname:o}=es(),l=JSON.stringify(o_(a)),u=G.useRef(!1);return d_(()=>{u.current=!0}),G.useCallback((d,h={})=>
58{if($i(u.current,f_),!u.current)return;if(typeof d=="number"){t.go(d);return}let g=l_(d,JSON.parse(l),o,h.relative==="path");n==null&&e!=="/"&&(g.pathname=g.pathname==="/"?e:Ns([e,g.pathname])),(h.replace?t.replace:t.push)(g,h.state,h)},[e,t,l,o,n])}G.createContext(null);function vc(n,{relative:e}={}){let{matches:t}=G.useContext(Fs),{pathname:a}=es(),o=JSON.stringify(o_(t));return G.useMemo(()=>l_(n,JSON.parse(o),a,e==="path"),[n,o,a,e])}function xM(n,e){return h_(n,e)}function h_(n,e,t,a,o){tn(gc(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:l}=G.useContext(Ji),{matches:u}=G.useContext(Fs),f=u[u.length-1],d=f?f.params:{},h=f?f.pathname:"/",g=f?f.pathnameBase:"/",v=f&&f.route;{let N=v&&v.path||"";p_(h,!v||N.endsWith("*")||N.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${h}" (under <Route path="${N}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. 59 60Please change the parent <Route path="${N}"> to <Route path="${N==="/"?"*":`${N}/*`}">.`)}let x=es(),y;if(e){let N=typeof e=="string"?Po(e):e;tn(g==="/"||N.pathname?.startsWith(g),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${g}" but pathname "${N.pathname}" was given in the \`location\` prop.`),y=N}else y=x;let b=y.pathname||"/",w=b;if(g!=="/"){let N=g.replace(/^\//,"").split("/");w="/"+b.replace(/^\//,"").split("/").slice(N.length).join("/")}let M=s_(n,{pathname:w});$i(v||M!=null,`No routes matched location "${y.pathname}${y.search}${y.hash}" `),$i(M==null||M[M.length-1].route.element!==void 0||M[M.length-1].route.Component!==void 0||M[M.length-1].route.lazy!==void 0,`Matched leaf route at location "${y.pathname}${y.search}${y.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let S=bM(M&&M.map(N=>Object.assign({},N,{params:Object.assign({},d,N.params),pathname:Ns([g,l.encodeLocation?l.encodeLocation(N.pathname).pathname:N.pathname]),pathnameBase:N.pathnameBase==="/"?g:Ns([g,l.encodeLocation?l.encodeLocation(N.pathnameBase).pathname:N.pathnameBase])})),u,t,a,o);return e&&S?G.createElement(mc.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...y},navigationType:"POP"}},S):S}function _M(){let n=AM(),e=dM(n)?`${n.status} ${n.statusText}`:n instanceof Error?n.message:JSON.stringify(n),t=n instanceof Error?n.stack:null,a="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:a},l={padding:"2px 4px",backgroundColor:a},u=null;return console.error("Error handled by React Router default ErrorBoundary:",n),u=G.createElement(G.Fragment,null,G.createElement("p",null,"ð¿ Hey developer ð"),G.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",G.createElement("code",{style:l},"ErrorBoundary")," or"," ",G.createElement("code",{style:l},"errorElement")," prop on your route.")),G.createElement(G.Fragment,null,G.createElement("h2",null,"Unexpected Application Error!"),G.createElement("h3",{style:{fontStyle:"italic"}},e),t?G.createElement("pre",{style:o},t):null,u)}var yM=G.createElement(_M,null),SM=class extends G.Component{constructor(n){super(n),this.state={location:n.location,revalidation:n.revalidation,error:n.error}}static getDerivedStateFromError(n){return{error:n}}static getDerivedStateFromProps(n,e){return e.location!==n.location||e.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:e.error,location:e.location,revalidation:n.revalidation||e.revalidation}}componentDidCatch(n,e){this.props.unstable_onError?this.props.unstable_onError(n,e):console.error("React Router caught the following error during render",n)}render(){return this.state.error!==void 0?G.createElement(Fs.Provider,{value:this.props.routeContext},G.createElement(rm.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function MM({routeContext:n,match:e,children:t}){let a=G.useContext(Oo);return a&&a.static&&a.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=e.route.id),G.createElement(Fs.Provider,{value:n},t)}function bM(n,e=[],t=null,a=null,o=null){if(n==null){if(!t)return null;if(t.errors)n=t.matches;else if(e.length===0&&!t.initialized&&t.matches.length>0)n=t.matches;else return null}let l=n,u=t?.errors;if(u!=null){let h=l.findIndex(g=>g.route.id&&u?.[g.route.id]!==void 0);tn(h>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),l=l.slice(0,Math.min(l.length,h+1))}let f=!1,d=-1;if(t)for(let h=0;h<l.length;h++){let g=l[h];if((g.route.HydrateFallback||g.route.hydrateFallbackElement)&&(d=h),g.route.id){let{loaderData:v,errors:x}
60=t,y=g.route.loader&&!v.hasOwnProperty(g.route.id)&&(!x||x[g.route.id]===void 0);if(g.route.lazy||y){f=!0,d>=0?l=l.slice(0,d+1):l=[l[0]];break}}}return l.reduceRight((h,g,v)=>{let x,y=!1,b=null,w=null;t&&(x=u&&g.route.id?u[g.route.id]:void 0,b=g.route.errorElement||yM,f&&(d<0&&v===0?(p_("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),y=!0,w=null):d===v&&(y=!0,w=g.route.hydrateFallbackElement||null)));let M=e.concat(l.slice(0,v+1)),S=()=>{let N;return x?N=b:y?N=w:g.route.Component?N=G.createElement(g.route.Component,null):g.route.element?N=g.route.element:N=h,G.createElement(MM,{match:g,routeContext:{outlet:h,matches:M,isDataRoute:t!=null},children:N})};return t&&(g.route.ErrorBoundary||g.route.errorElement||v===0)?G.createElement(SM,{location:t.location,revalidation:t.revalidation,component:b,error:x,children:S(),routeContext:{outlet:null,matches:M,isDataRoute:!0},unstable_onError:a}):S()},null)}function om(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function EM(n){let e=G.useContext(Oo);return tn(e,om(n)),e}function wM(n){let e=G.useContext(Uf);return tn(e,om(n)),e}function TM(n){let e=G.useContext(Fs);return tn(e,om(n)),e}function lm(n){let e=TM(n),t=e.matches[e.matches.length-1];return tn(t.route.id,`${n} can only be used on routes that contain a unique "id"`),t.route.id}function CM(){return lm("useRouteId")}function AM(){let n=G.useContext(rm),e=wM("useRouteError"),t=lm("useRouteError");return n!==void 0?n:e.errors?.[t]}function RM(){let{router:n}=EM("useNavigate"),e=lm("useNavigate"),t=G.useRef(!1);return d_(()=>{t.current=!0}),G.useCallback(async(o,l={})=>{$i(t.current,f_),t.current&&(typeof o=="number"?n.navigate(o):await n.navigate(o,{fromRouteId:e,...l}))},[n,e])}var Vv={};function p_(n,e,t){!e&&!Vv[n]&&(Vv[n]=!0,$i(!1,t))}G.memo(NM);function NM({routes:n,future:e,state:t,unstable_onError:a}){return h_(n,void 0,t,a,e)}function Gi(n){tn(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function LM({basename:n="/",children:e=null,location:t,navigationType:a="POP",navigator:o,static:l=!1}){tn(!gc(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let u=n.replace(/^\/*/,"/"),f=G.useMemo(()=>({basename:u,navigator:o,static:l,future:{}}),[u,o,l]);typeof t=="string"&&(t=Po(t));let{pathname:d="/",search:h="",hash:g="",state:v=null,key:x="default"}=t,y=G.useMemo(()=>{let b=Ds(d,u);return b==null?null:{location:{pathname:b,search:h,hash:g,state:v,key:x},navigationType:a}},[u,d,h,g,v,x,a]);return $i(y!=null,`<Router basename="${u}"> is not able to match the URL "${d}${h}${g}" because it does not start with the basename, so the <Router> won't render anything.`),y==null?null:G.createElement(Ji.Provider,{value:f},G.createElement(mc.Provider,{children:e,value:y}))}function DM({children:n,location:e}){return xM(W0(n),e)}function W0(n,e=[]){let t=[];return G.Children.forEach(n,(a,o)=>{if(!G.isValidElement(a))return;let l=[...e,o];if(a.type===G.Fragment){t.push.apply(t,W0(a.props.children,l));return}tn(a.type===Gi,`[${typeof a.type=="string"?a.type:a.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),tn(!a.props.index||!a.props.children,"An index route cannot have child routes.");let u={id:a.props.id||l.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(u.children=W0(a.props.children,l)),t.push(u)}),t}var uf="get",ff="application/x-www-form-urlencoded";function Pf(n){return n!=null&&typeof n.tagName=="string"}function UM(n){return Pf(n)&&n.tagName.toLowerCase()==="button"}function PM(n){return Pf(n)&&n.tagName.toLowerCase()==="form"}function OM(n){return Pf(n)&&n.tagName.toLowerCase()==="input"}function IM(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function BM(n,e){return n.button===0&&(!e||e==="_self")&&!IM(n)}var Bu=null;function FM(){if(Bu===null)try{new FormData(document.createElement("form"),0),Bu=!1}catch{Bu=!0}return Bu}var zM=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Kh(n){return n!=null&&!zM.has(n)?($i(!1,`"${n}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ff}"`),null):n}
60function VM(n,e){let t,a,o,l,u;if(PM(n)){let f=n.getAttribute("action");a=f?Ds(f,e):null,t=n.getAttribute("method")||uf,o=Kh(n.getAttribute("enctype"))||ff,l=new FormData(n)}else if(UM(n)||OM(n)&&(n.type==="submit"||n.type==="image")){let f=n.form;if(f==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let d=n.getAttribute("formaction")||f.getAttribute("action");if(a=d?Ds(d,e):null,t=n.getAttribute("formmethod")||f.getAttribute("method")||uf,o=Kh(n.getAttribute("formenctype"))||Kh(f.getAttribute("enctype"))||ff,l=new FormData(f,n),!FM()){let{name:h,type:g,value:v}=n;if(g==="image"){let x=h?`${h}.`:"";l.append(`${x}x`,"0"),l.append(`${x}y`,"0")}else h&&l.append(h,v)}}else{if(Pf(n))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');t=uf,a=null,o=ff,u=n}return l&&o==="text/plain"&&(u=l,l=void 0),{action:a,method:t.toLowerCase(),encType:o,formData:l,body:u}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function cm(n,e){if(n===!1||n===null||typeof n>"u")throw new Error(e)}function jM(n,e,t){let a=typeof n=="string"?new URL(n,typeof window>"u"?"server://singlefetch/":window.location.origin):n;return a.pathname==="/"?a.pathname=`_root.${t}`:e&&Ds(a.pathname,e)==="/"?a.pathname=`${e.replace(/\/$/,"")}/_root.${t}`:a.pathname=`${a.pathname.replace(/\/$/,"")}.${t}`,a}async function HM(n,e){if(n.id in e)return e[n.id];try{let t=await import(n.module);return e[n.id]=t,t}catch(t){return console.error(`Error loading route module \`${n.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function kM(n){return n==null?!1:n.href==null?n.rel==="preload"&&typeof n.imageSrcSet=="string"&&typeof n.imageSizes=="string":typeof n.rel=="string"&&typeof n.href=="string"}async function GM(n,e,t){let a=await Promise.all(n.map(async o=>{let l=e.routes[o.route.id];if(l){let u=await HM(l,t);return u.links?u.links():[]}return[]}));return YM(a.flat(1).filter(kM).filter(o=>o.rel==="stylesheet"||o.rel==="preload").map(o=>o.rel==="stylesheet"?{...o,rel:"prefetch",as:"style"}:{...o,rel:"prefetch"}))}function jv(n,e,t,a,o,l){let u=(d,h)=>t[h]?d.route.id!==t[h].route.id:!0,f=(d,h)=>t[h].pathname!==d.pathname||t[h].route.path?.endsWith("*")&&t[h].params["*"]!==d.params["*"];return l==="assets"?e.filter((d,h)=>u(d,h)||f(d,h)):l==="data"?e.filter((d,h)=>{let g=a.routes[d.route.id];if(!g||!g.hasLoader)return!1;if(u(d,h)||f(d,h))return!0;if(d.route.shouldRevalidate){let v=d.route.shouldRevalidate({currentUrl:new URL(o.pathname+o.search+o.hash,window.origin),currentParams:t[0]?.params||{},nextUrl:new URL(n,window.origin),nextParams:d.params,defaultShouldRevalidate:!0});if(typeof v=="boolean")return v}return!0}):[]}function WM(n,e,{includeHydrateFallback:t}={}){return XM(n.map(a=>{let o=e.routes[a.route.id];if(!o)return[];let l=[o.module];return o.clientActionModule&&(l=l.concat(o.clientActionModule)),o.clientLoaderModule&&(l=l.concat(o.clientLoaderModule)),t&&o.hydrateFallbackModule&&(l=l.concat(o.hydrateFallbackModule)),o.imports&&(l=l.concat(o.imports)),l}).flat(1))}function XM(n){return[...new Set(n)]}function qM(n){let e={},t=Object.keys(n).sort();for(let a of t)e[a]=n[a];return e}function YM(n,e){let t=new Set;return new Set(e),n.reduce((a,o)=>{let l=JSON.stringify(qM(o));return t.has(l)||(t.add(l),a.push({key:l,link:o})),a},[])}function m_(){let n=G.useContext(Oo);return cm(n,"You must render this element inside a <DataRouterContext.Provider> element"),n}function ZM(){let n=G.useContext(Uf);return cm(n,"You must render this element inside a <DataRouterStateContext.Provider> element"),n}var um=G.createContext(void 0);um.displayName="FrameworkContext";function g_(){let n=G.useContext(um);return cm(n,"You must render this element inside a <HydratedRouter> element"),n}function KM(n,e){let t=G.useContext(um),[a,o]=G.useState(!1),[l,u]=G.useState(!1),{onFocus:f,onBlur:d,onMouseEnter:h,onMouseLeave:g,onTouchStart:v}=e,x=G.useRef(null);G.useEffect(()=>{if(n==="render"&&u(!0),n==="viewport"){let w=S=>
60{S.forEach(N=>{u(N.isIntersecting)})},M=new IntersectionObserver(w,{threshold:.5});return x.current&&M.observe(x.current),()=>{M.disconnect()}}},[n]),G.useEffect(()=>{if(a){let w=setTimeout(()=>{u(!0)},100);return()=>{clearTimeout(w)}}},[a]);let y=()=>{o(!0)},b=()=>{o(!1),u(!1)};return t?n!=="intent"?[l,x,{}]:[l,x,{onFocus:Il(f,y),onBlur:Il(d,b),onMouseEnter:Il(h,y),onMouseLeave:Il(g,b),onTouchStart:Il(v,y)}]:[!1,x,{}]}function Il(n,e){return t=>{n&&n(t),t.defaultPrevented||e(t)}}function QM({page:n,...e}){let{router:t}=m_(),a=G.useMemo(()=>s_(t.routes,n,t.basename),[t.routes,n,t.basename]);return a?G.createElement(JM,{page:n,matches:a,...e}):null}function $M(n){let{manifest:e,routeModules:t}=g_(),[a,o]=G.useState([]);return G.useEffect(()=>{let l=!1;return GM(n,e,t).then(u=>{l||o(u)}),()=>{l=!0}},[n,e,t]),a}function JM({page:n,matches:e,...t}){let a=es(),{manifest:o,routeModules:l}=g_(),{basename:u}=m_(),{loaderData:f,matches:d}=ZM(),h=G.useMemo(()=>jv(n,e,d,o,a,"data"),[n,e,d,o,a]),g=G.useMemo(()=>jv(n,e,d,o,a,"assets"),[n,e,d,o,a]),v=G.useMemo(()=>{if(n===a.pathname+a.search+a.hash)return[];let b=new Set,w=!1;if(e.forEach(S=>{let N=o.routes[S.route.id];!N||!N.hasLoader||(!h.some(T=>T.route.id===S.route.id)&&S.route.id in f&&l[S.route.id]?.shouldRevalidate||N.hasClientLoader?w=!0:b.add(S.route.id))}),b.size===0)return[];let M=jM(n,u,"data");return w&&b.size>0&&M.searchParams.set("_routes",e.filter(S=>b.has(S.route.id)).map(S=>S.route.id).join(",")),[M.pathname+M.search]},[u,f,a,o,h,e,n,l]),x=G.useMemo(()=>WM(g,o),[g,o]),y=$M(g);return G.createElement(G.Fragment,null,v.map(b=>G.createElement("link",{key:b,rel:"prefetch",as:"fetch",href:b,...t})),x.map(b=>G.createElement("link",{key:b,rel:"modulepreload",href:b,...t})),y.map(({key:b,link:w})=>G.createElement("link",{key:b,nonce:t.nonce,...w})))}function e6(...n){return e=>{n.forEach(t=>{typeof t=="function"?t(e):t!=null&&(t.current=e)})}}var v_=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{v_&&(window.__reactRouterVersion="7.8.2")}catch{}function t6({basename:n,children:e,window:t}){let a=G.useRef();a.current==null&&(a.current=kS({window:t,v5Compat:!0}));let o=a.current,[l,u]=G.useState({action:o.action,location:o.location}),f=G.useCallback(d=>{G.startTransition(()=>u(d))},[u]);return G.useLayoutEffect(()=>o.listen(f),[o,f]),G.createElement(LM,{basename:n,children:e,location:l.location,navigationType:l.action,navigator:o})}var x_=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,$n=G.forwardRef(function({onClick:e,discover:t="render",prefetch:a="none",relative:o,reloadDocument:l,replace:u,state:f,target:d,to:h,preventScrollReset:g,viewTransition:v,...x},y){let{basename:b}=G.useContext(Ji),w=typeof h=="string"&&x_.test(h),M,S=!1;if(typeof h=="string"&&w&&(M=h,v_))try{let U=new URL(window.location.href),L=h.startsWith("//")?new URL(U.protocol+h):new URL(h),z=Ds(L.pathname,b);L.origin===U.origin&&z!=null?h=z+L.search+L.hash:S=!0}catch{$i(!1,`<Link to="${h}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}let N=gM(h,{relative:o}),[T,R,P]=KM(a,x),I=a6(h,{replace:u,state:f,target:d,preventScrollReset:g,relative:o,viewTransition:v});function F(U){e&&e(U),U.defaultPrevented||I(U)}let V=G.createElement("a",{...x,...P,href:M||N,onClick:S||l?e:F,ref:e6(y,R),target:d,"data-discover":!w&&t==="render"?"true":void 0});return T&&!w?G.createElement(G.Fragment,null,V,G.createElement(QM,{page:N})):V});$n.displayName="Link";var n6=G.forwardRef(function({"aria-current":e="page",caseSensitive:t=!1,className:a="",end:o=!1,style:l,to:u,viewTransition:f,children:d,...h},g){let v=vc(u,{relative:h.relative}),x=es(),y=G.useContext(Uf),{navigator:b,basename:w}=G.useContext(Ji),M=y!=null&&u6(v)&&f===!0,S=b.encodeLocation?b.encodeLocation(v).pathname:v.pathname,N=x.pathname,T=y&&y.navigation&&y.navigation.location?y.navigation.location.pathname:null;t||(N=N.toLowerCase(),T=T?T.toLowerCase():null,S=S.toLowerCase()),T&&w&&(T=Ds(T,w)||T);const R=S!=="/"&&S.endsWith("/")?S.length-1:S.length;let P=N===S||!o&&N.startsWith(S)&&N.charAt(R)==="/",I=T!=null&&(T===S||!o&&T.startsWith(S)&&T.charAt(S.length)==="/"),F={isActive:P,isPending:I,isTransitioning:M},V=P?e:void 0,U;typeof a=="function"?U=a(F):U=[a,P?"active":null,I?"pending":null,M?"transitioning":null].filter(
60Boolean).join(" ");let L=typeof l=="function"?l(F):l;return G.createElement($n,{...h,"aria-current":V,className:U,ref:g,style:L,to:u,viewTransition:f},typeof d=="function"?d(F):d)});n6.displayName="NavLink";var i6=G.forwardRef(({discover:n="render",fetcherKey:e,navigate:t,reloadDocument:a,replace:o,state:l,method:u=uf,action:f,onSubmit:d,relative:h,preventScrollReset:g,viewTransition:v,...x},y)=>{let b=l6(),w=c6(f,{relative:h}),M=u.toLowerCase()==="get"?"get":"post",S=typeof f=="string"&&x_.test(f),N=T=>{if(d&&d(T),T.defaultPrevented)return;T.preventDefault();let R=T.nativeEvent.submitter,P=R?.getAttribute("formmethod")||u;b(R||T.currentTarget,{fetcherKey:e,method:P,navigate:t,replace:o,state:l,relative:h,preventScrollReset:g,viewTransition:v})};return G.createElement("form",{ref:y,method:M,action:w,onSubmit:a?d:N,...x,"data-discover":!S&&n==="render"?"true":void 0})});i6.displayName="Form";function s6(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function __(n){let e=G.useContext(Oo);return tn(e,s6(n)),e}function a6(n,{target:e,replace:t,state:a,preventScrollReset:o,relative:l,viewTransition:u}={}){let f=ts(),d=es(),h=vc(n,{relative:l});return G.useCallback(g=>{if(BM(g,e)){g.preventDefault();let v=t!==void 0?t:ic(d)===ic(h);f(n,{replace:v,state:a,preventScrollReset:o,relative:l,viewTransition:u})}},[d,f,h,t,a,e,n,o,l,u])}var r6=0,o6=()=>`__${String(++r6)}__`;function l6(){let{router:n}=__("useSubmit"),{basename:e}=G.useContext(Ji),t=CM();return G.useCallback(async(a,o={})=>{let{action:l,method:u,encType:f,formData:d,body:h}=VM(a,e);if(o.navigate===!1){let g=o.fetcherKey||o6();await n.fetch(g,t,o.action||l,{preventScrollReset:o.preventScrollReset,formData:d,body:h,formMethod:o.method||u,formEncType:o.encType||f,flushSync:o.flushSync})}else await n.navigate(o.action||l,{preventScrollReset:o.preventScrollReset,formData:d,body:h,formMethod:o.method||u,formEncType:o.encType||f,replace:o.replace,state:o.state,fromRouteId:t,flushSync:o.flushSync,viewTransition:o.viewTransition})},[n,e,t])}function c6(n,{relative:e}={}){let{basename:t}=G.useContext(Ji),a=G.useContext(Fs);tn(a,"useFormAction must be used inside a RouteContext");let[o]=a.matches.slice(-1),l={...vc(n||".",{relative:e})},u=es();if(n==null){l.search=u.search;let f=new URLSearchParams(l.search),d=f.getAll("index");if(d.some(g=>g==="")){f.delete("index"),d.filter(v=>v).forEach(v=>f.append("index",v));let g=f.toString();l.search=g?`?${g}`:""}}return(!n||n===".")&&o.route.index&&(l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index"),t!=="/"&&(l.pathname=l.pathname==="/"?t:Ns([t,l.pathname])),ic(l)}function u6(n,{relative:e}={}){let t=G.useContext(u_);tn(t!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:a}=__("useViewTransitionState"),o=vc(n,{relative:e});if(!t.isTransitioning)return!1;let l=Ds(t.currentLocation.pathname,a)||t.currentLocation.pathname,u=Ds(t.nextLocation.pathname,a)||t.nextLocation.pathname;return Mf(o.pathname,u)!=null||Mf(o.pathname,l)!=null}const f6="data:image/svg+xml,%3csvg%20height='2002'%20viewBox='.1%2016.7%202472.8%201996.5'%20width='2500'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='m2006.5%201485.6c-98.8%20100.8-237%20157.8-386.7%20158-149.8.3-288.1-56.3-386.9-156.8-48.3-49-83.7-105.2-105.7-165.3-21.5-59-29.7-122.1-24.2-184.6%205.3-61%2023.3-120.3%2053-173.9%2028.9-52.4%2068.6-99.7%20117.6-139.7%2096-78.3%20218.2-120.6%20346.2-120.8s250.1%2041.9%20346.2%20119.8c48.9%2039.9%2088.6%2087%20117.4%20139.3%2029.7%2053.6%2047.8%20112.8%2053.1%20173.8%205.5%2062.6-2.8%20125.6-24.3%20184.7-22%2060-57.5%20116.3-105.7%20165.5z'%20fill='%23fff'/%3e%3cpath%20d='m1300.4%201143.3c4.5-81.5%2044.5-153.4%20104.7-204.3%2059.1-50.1%20138.7-80.6%20225.4-80.6%2086.8.1%20166.3%2030.6%20225.4%2080.6%2060.2%2051%20100.2%20122.8%20104.8%20204.3%204.6%2083.8-29.1%20161.7-88.2%20219.4-60.2%2058.7-146%2095.6-242%2095.6s-181.9-36.9-242.1-95.6c-59-57.7-92.6-135.6-88-219.4z'%20fill='%23005385'/%3e%3cpath%20d='m774.5%201308.3c.6%2031.8%2010.8%2093.8%2026%20142.3%2032.1%20102.5%2086.5%20197.4%20162.3%20281%2077.8%2085.9%20173.4%20154.9%20284%20203.8%20116.3%2051.5%20242.2%2077.8%20372.9%2077.5%20130.7-.2%20256.6-26.9%20372.8-78.8%20110.5-49.5%20206.1-118.7%20283.8-204.8%2075.7-84%20130-179%20162.1-281.5%2016-51.1%2026.3-103.8%2030.5-157.1%204-52%202.3-104.4-5-156.1-14.4-101.4-49.5-196.5-103.5-283.2-49.5-79.6-113.1-149.4-188.8-208.2l.1-.1-763.8-586.4c-.6-.5-1.3-1.1-1.9-1.6-50.3-38.4-134.5-38.3-189.6.3-55.8%2039-62.1%20103.5-12.6%20144.2l-.2.1%20318.6%20259.2-971.3%201h-1.3c-80.2.1-157.4%2052.8-172.7%20119.3-15.6%2067.8%2038.9%20124%20122.4%20124.4l-.1.3%20492.3-1-878.5%20674.3c-1.1.9-2.3%201.7-3.3%202.5-82.8%2063.4-109.6%20169-57.5%20235.8%2053%2067.9%20165.6%2068%20249.4.3l479.4-392.3s-7%2053-6.5%2084.8zm1232%20177.3c-98.8%20100.8-237%20157.8-386.7%20158-149.8.3-288.1-56.3-386.9-156.8-48.3-49-83.7-105.2-105.7-165.3-21.5-59-29.7-122.1-24.2-184.6%205.3-61%2023.3-120.3%2053-173.9%2028.9-52.4%2068.6-99.7%20117.6-139.7%2096-78.3%20218.2-120.6%20346.2-120.8s250.1%2041.9%20346.2%20119.8c48.9%2039.9%2088.6%2087%20117.4%20139.3%2029.7%2053.6%2047.8%20112.8%2053.1%20173.8%205.5%2062.6-2.8%20125.6-24.3%20184.7-22%2060-57.5%20116.3-105.7%20165.5z'%20fill='%23ff7021'/%3e%3c/svg%3e",d6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='c++'%3e%3cg%20id='c++_2'%3e%3cpath%20id='Vector'%20d='M94.7304%2029.3208C94.7297%2027.6439%2094.371%2026.1621%2093.6458%2024.8903C92.9333%2023.6398%2091.8664%2022.5916%2090.4353%2021.7629C78.6222%2014.9514%2066.7977%208.16076%2054.9885%201.34236C51.8048%20-0.495653%2048.7179%20-0.428645%2045.5578%201.43575C40.8559%204.20873%2017.3148%2017.6959%2010.2999%2021.759C7.41097%2023.4314%206.00521%2025.9909%206.00451%2029.3176C6%2043.0159%206.00451%2056.7138%206%2070.4125C6.00069%2072.0526%206.34406%2073.5055%207.0374%2074.7582C7.75017%2076.0466%208.83201%2077.1236%2010.2961%2077.9711C17.3114%2082.0342%2040.8555%2095.5203%2045.5565%2098.294C48.7179%20100.159%2051.8048%20100.226%2054.9895%2098.3874C66.7991%2091.5687%2078.6243%2084.7784%2090.4391%2077.9669C91.9032%2077.1198%2092.985%2076.0421%2093.6978%2074.7547C94.39
6001%2073.5021%2094.7342%2072.0491%2094.7349%2070.4086C94.7349%2070.4086%2094.7349%2043.0194%2094.7304%2029.3208Z'%20fill='%235C8DBC'/%3e%3cpath%20id='Vector_2'%20d='M50.5032%2049.7317L7.03735%2074.7584C7.75013%2076.0468%208.83197%2077.1237%2010.2961%2077.9712C17.3113%2082.0344%2040.8555%2095.5205%2045.5565%2098.2942C48.7179%20100.16%2051.8048%20100.226%2054.9895%2098.3876C66.7991%2091.5688%2078.6244%2084.7785%2090.4392%2077.9671C91.9033%2077.1199%2092.9851%2076.0422%2093.6979%2074.7549L50.5032%2049.7317Z'%20fill='%231A4674'/%3e%3cpath%20id='Vector_3'%20d='M37.629%2057.1448C40.1583%2061.5603%2044.913%2064.5384%2050.3673%2064.5384C55.8553%2064.5384%2060.6371%2061.5224%2063.1536%2057.0597L50.5031%2049.7317L37.629%2057.1448Z'%20fill='%231A4674'/%3e%3cpath%20id='Vector_4'%20d='M94.7303%2029.3211C94.7296%2027.6442%2094.371%2026.1624%2093.6457%2024.8906L50.5032%2049.7319L93.6978%2074.7551C94.3901%2073.5025%2094.7342%2072.0495%2094.7349%2070.409C94.7349%2070.409%2094.7349%2043.0197%2094.7303%2029.3211Z'%20fill='%231B598E'/%3e%3cpath%20id='Vector_5'%20d='M92.3551%2051.5204H88.9798V54.8964H85.6037V51.5204H82.2287V48.1454H85.6037V44.77H88.9798V48.1454H92.3551V51.5204ZM80.0387%2051.5204H76.6637V54.8964H73.2883V51.5204H69.913V48.1454H73.2883V44.77H76.6637V48.1454H80.0387V51.5204Z'%20fill='white'/%3e%3cpath%20id='Vector_6'%20d='M63.1537%2057.0599C60.6373%2061.5227%2055.8554%2064.5387%2050.3675%2064.5387C44.9131%2064.5387%2040.1584%2061.5605%2037.6291%2057.145C36.3586%2054.9293%2035.6913%2052.4192%2035.6939%2049.8651C35.6939%2041.7614%2042.2637%2035.192%2050.3675%2035.192C55.7867%2035.192%2060.5164%2038.133%2063.0582%2042.5034L75.8837%2035.118C70.7859%2026.3182%2061.2685%2020.3979%2050.3675%2020.3979C34.0927%2020.3979%2020.8999%2033.5911%2020.8999%2049.8651C20.8999%2055.2042%2022.3202%2060.211%2024.8026%2064.5296C29.8875%2073.376%2039.4321%2079.3327%2050.3675%2079.3327C61.323%2079.3327%2070.8824%2073.352%2075.96%2064.4797L63.1537%2057.0599Z'%20fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",h6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='css3'%3e%3cg%20id='css3_2'%3e%3cpath%20id='polygon2989'%20d='M94.1749%200L86.142%2089.9895L50.0335%20100L14.0245%2090.0036L6%200H94.1749Z'%20fill='%23264DE4'/%3e%3cpath%20id='polygon2991'%20d='M79.2648%2084.2593L86.1295%207.35913H50.0874V92.3484L79.2648%2084.2593Z'%20fill='%232965F1'/%3e%3cpath%20id='polygon2993'%20d='M24.396%2040.7402L25.3854%2051.7787H50.0876V40.7402H24.396Z'%20fill='%23EBEBEB'/%3e%3cpath%20id='polygon2995'%20d='M50.0875%2018.3977H50.0493H22.408L23.4114%2029.4364H50.0875V18.3977Z'%20fill='%23EBEBEB'/%3e%3cpath%20id='polygon2997'%20d='M50.0874%2080.8931V69.4083L50.039%2069.4212L37.7453%2066.1016L36.9594%2057.2979H30.9856H25.8784L27.4249%2074.63L50.0366%2080.9072L50.0874%2080.8931Z'%20fill='%23EBEBEB'/%3e%3cpath%20id='polygon3005'%20d='M63.6421%2051.7785L62.3608%2066.0947L50.0493%2069.4177V80.9019L72.679%2074.6301L72.845%2072.7652L75.439%2043.7042L75.7083%2040.7401L77.7011%2018.3977H50.0493V29.4364H65.6038L64.5994%2040.7401H50.0493V51.7785H63.6421Z'%20fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",p6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='docker'%3e%3cg%20id='docker_2'%3e%3cpath%20id='Vector'%20d='M99.014%2041.0882C98.7428%2040.8728%2096.211%2038.9611%2090.8716%2038.9611C89.4617%2038.9673%2088.0548%2039.0882%2086.6646%2039.3227C85.6312%2032.2396%2079.7751%2028.7862%2079.5125%2028.6313L78.0788%2027.8044L77.1358%2029.1652C75.9549%2030.9931%2075.0928%2033.0081%2074.5867%2035.1245C73.6307%2039.1678%2074.2121%2042.9655%2076.266%2046.2122C73.7858%2047.5944%2069.8072%2047.9346%2069.002%2047.9647H3.13051C1.40996%2047.967%200.0138216%2049.3574%200.00444499%2051.0778C-0.0723876%2056.8485%200.905303%2062.5848%202.88937%2068.0042C5.15852%2073.955%208.5344%2078.3384%2012.9264%2081.021C17.8481%2084.0351%2025.8441%2085.7574%2034.908%2085.7574C39.0026%2085.7703%2043.0896%2085.3997%2047.1152%2084.6509C52.7113%2083.6233%2058.0961%2081.6674%2063.047%2078.8637C67.1264%2076.5013%2070.7979%2073.496%2073.9194%2069.9634C79.1382%2064.0557%2082.2472%2057.4762%2084.5593%2051.629H85.4807C91.1946%2051.629%2094.7083%2049.3425%2096.6459%2047.4264C97.9336%2046.2044%2098.9389%2044.7157%2099.5912%2043.0646L100%2041.8676L99.014%2041.0882Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_2'%20d='M9.23628%2046.0357H18.0633C18.4891%2046.0357%2018.8341%2045.6906%2018.8341%2045.265V37.4024C18.8364%2036.9766%2018.4933
60%2036.6297%2018.0677%2036.6273C18.0663%2036.6273%2018.0647%2036.6273%2018.0633%2036.6273H9.23628C8.81055%2036.6273%208.46558%2036.9724%208.46558%2037.398V37.4024V45.2649C8.46558%2045.6906%208.81055%2046.0357%209.23628%2046.0357Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_3'%20d='M21.4004%2046.0357H30.2275C30.6532%2046.0357%2030.9982%2045.6906%2030.9982%2045.265V37.4024C31.0006%2036.9766%2030.6574%2036.6297%2030.2317%2036.6273C30.2303%2036.6273%2030.2288%2036.6273%2030.2274%2036.6273H21.4003C20.9722%2036.6273%2020.6252%2036.9743%2020.6252%2037.4024V45.2649C20.6278%2045.6913%2020.974%2046.0357%2021.4004%2046.0357Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_4'%20d='M33.7496%2046.0357H42.5767C43.0024%2046.0357%2043.3474%2045.6906%2043.3474%2045.265V37.4024C43.3498%2036.9766%2043.0066%2036.6297%2042.5809%2036.6273C42.5795%2036.6273%2042.5779%2036.6273%2042.5765%2036.6273H33.7495C33.3237%2036.6273%2032.9788%2036.9724%2032.9788%2037.398V37.4024V45.2649C32.9789%2045.6906%2033.324%2046.0357%2033.7496%2046.0357Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_5'%20d='M45.9526%2046.0357H54.7797C55.2061%2046.0357%2055.5523%2045.6915%2055.5547%2045.265V37.4024C55.5547%2036.9743%2055.2078%2036.6273%2054.7797%2036.6273H45.9526C45.5269%2036.6273%2045.1819%2036.9724%2045.1819%2037.398V37.4024V45.2649C45.1819%2045.6906%2045.527%2046.0357%2045.9526%2046.0357Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_6'%20d='M21.4004%2034.7242H30.2275C30.6538%2034.7218%2030.9982%2034.3754%2030.9982%2033.9492V26.0866C30.9982%2025.6609%2030.6531%2025.3159%2030.2275%2025.3159H21.4004C20.9741%2025.3159%2020.6277%2025.6602%2020.6254%2026.0866V33.9492C20.6277%2034.3763%2020.9733%2034.7218%2021.4004%2034.7242Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_7'%20d='M33.7496%2034.7242H42.5767C43.0029%2034.7218%2043.3474%2034.3754%2043.3474%2033.9492V26.0866C43.3474%2025.6609%2043.0022%2025.3159%2042.5767%2025.3159H33.7496C33.3239%2025.3159%2032.9789%2025.661%2032.9789%2026.0866V33.9492C32.9789%2034.3754%2033.3233%2034.7218%2033.7496%2034.7242Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_8'%20d='M45.9526%2034.7242H54.7797C55.2068%2034.7218%2055.5523%2034.3763%2055.5547%2033.9492V26.0866C55.5523%2025.6602%2055.2061%2025.3159%2054.7797%2025.3159H45.9526C45.5269%2025.3159%2045.1819%2025.661%2045.1819%2026.0866V33.9492C45.1819%2034.3754%2045.5263%2034.7218%2045.9526%2034.7242Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_9'%20d='M45.9526%2023.4084H54.7797C55.2061%2023.4084%2055.5523%2023.064%2055.5547%2022.6377V14.7707C55.5523%2014.3443%2055.2061%2014%2054.7797%2014H45.9526C45.5269%2014%2045.1819%2014.345%2045.1819%2014.7707V22.6376C45.1819%2023.0633%2045.527%2023.4084%2045.9526%2023.4084Z'%20fill='%232496ED'/%3e%3cpath%20id='Vector_10'%20d='M58.2631%2046.0357H67.0902C67.5166%2046.0357%2067.8629%2045.6915%2067.8652%2045.265V37.4024C67.8652%2036.9743%2067.5183%2036.6273%2067.0902%2036.6273H58.2631C57.8376%2036.6273%2057.4924%2036.9724%2057.4924%2037.398V37.4024V45.2649C57.4924%2045.6906%2057.8376%2046.0357%2058.2631%2046.0357Z'%20fill='%232496ED'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",m6="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Generator:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20fill='%23000000'%20width='800px'%20height='800px'%20viewBox='0%200%2024%2024'%20role='img'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eExpo%20icon%3c/title%3e%3cpath%20d='M0%2020.084c.043.53.23%201.063.718%201.778.58.849%201.576%201.315%202.303.567.49-.505%205.794-9.776%208.35-13.29a.761.761%200%20011.248%200c2.556%203.514%207.86%2012.785%208.35%2013.29.727.748%201.723.282%202.303-.567.57-.835.728-1.42.728-2.046%200-.426-8.26-15.798-9.092-17.078-.8-1.23-1.044-1.498-2.397-1.542h-1.032c-1.353.044-1.597.311-2.398%201.542C8.267%203.991.33%2018.758%200%2019.77Z'/%3e%3c/svg%3e",g6="/assets/flask-DFvFqRYQ.svg",v6="data:image/svg+xml,%3csvg%20height='2500'%20viewBox='3.7%203.7%2043.6%2043.6'%20width='2500'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='m47.3%203.7v21.8l-10.9%2010.9-10.9%2010.9-10.9-10.9%2010.9-10.9v.1-.1z'%20fill='%2359529d'/%3e%3cpath%20d='m47.3%2025.5v21.8l-10.9-10.9z'%20fill='%235271b4'/%3e%3cpath%20d='m25.5%2025.5-10.9%2010.9-10.9%2010.9v-43.6l10.9%2010.9z'%20fill='%23bb4b96'/%3e%3c/svg%3e",x6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='framer'%3e%3cg%20id='framer_2'%3e%3cpath%20id='Vector'%20d='M80.8222%2064.8214C81.8722%2065.8714%2081.1278%2067.6659%2079.6444%2067.6659H52C51.0778%206
607.6659%2050.3333%2068.4103%2050.3333%2069.3325V96.977C50.3333%2098.4603%2048.5389%2099.2047%2047.4889%2098.1547L17.65%2068.3158C17.2333%2067.8992%2017%2067.3325%2017%2066.7436V35.9992C17%2035.077%2017.7444%2034.3325%2018.6667%2034.3325H50.3333L80.8222%2064.8214Z'%20fill='black'/%3e%3cpath%20id='Vector_2'%20d='M50.3333%2034.3325L19.8444%203.84359C18.7944%202.79359%2019.5389%200.999146%2021.0222%200.999146H82C82.9222%200.999146%2083.6666%201.74359%2083.6666%202.66581V32.6658C83.6666%2033.588%2082.9222%2034.3325%2082%2034.3325H50.3333Z'%20fill='black'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",_6="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Generator:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%20256%20256'%20xmlns='http://www.w3.org/2000/svg'%20preserveAspectRatio='xMinYMin%20meet'%3e%3cpath%20d='M251.172%20116.594L139.4%204.828c-6.433-6.437-16.873-6.437-23.314%200l-23.21%2023.21%2029.443%2029.443c6.842-2.312%2014.688-.761%2020.142%204.693%205.48%205.489%207.02%2013.402%204.652%2020.266l28.375%2028.376c6.865-2.365%2014.786-.835%2020.269%204.657%207.663%207.66%207.663%2020.075%200%2027.74-7.665%207.666-20.08%207.666-27.749%200-5.764-5.77-7.188-14.235-4.27-21.336l-26.462-26.462-.003%2069.637a19.82%2019.82%200%200%201%205.188%203.71c7.663%207.66%207.663%2020.076%200%2027.747-7.665%207.662-20.086%207.662-27.74%200-7.663-7.671-7.663-20.086%200-27.746a19.654%2019.654%200%200%201%206.421-4.281V94.196a19.378%2019.378%200%200%201-6.421-4.281c-5.806-5.798-7.202-14.317-4.227-21.446L81.47%2039.442l-76.64%2076.635c-6.44%206.443-6.44%2016.884%200%2023.322l111.774%20111.768c6.435%206.438%2016.873%206.438%2023.316%200l111.251-111.249c6.438-6.44%206.438-16.887%200-23.324'%20fill='%23DE4C36'/%3e%3c/svg%3e",y6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='github'%3e%3cg%20id='github_2'%3e%3cpath%20id='Vector'%20d='M50.0002%201C22.3894%201%200%2023.3855%200%2051.0002C0%2073.092%2014.3266%2091.834%2034.1933%2098.4456C36.692%2098.9083%2037.6096%2097.3609%2037.6096%2096.0402C37.6096%2094.848%2037.563%2090.909%2037.5418%2086.7311C23.6313%2089.7557%2020.6961%2080.8317%2020.6961%2080.8317C18.4217%2075.0523%2015.1446%2073.5159%2015.1446%2073.5159C10.6083%2070.4124%2015.4865%2070.476%2015.4865%2070.476C20.5075%2070.8289%2023.1513%2075.6287%2023.1513%2075.6287C27.6108%2083.2728%2034.8482%2081.0627%2037.7014%2079.7854C38.15%2076.5534%2039.4461%2074.348%2040.8758%2073.0994C29.7703%2071.8347%2018.0954%2067.5474%2018.0954%2048.3889C18.0954%2042.9303%2020.0487%2038.4697%2023.2474%2034.9682C22.7282%2033.7086%2021.0169%2028.6233%2023.7317%2021.7361C23.7317%2021.7361%2027.9304%2020.3923%2037.4853%2026.8614C41.4734%2025.7532%2045.7509%2025.198%2050.0002%2025.1791C54.2495%2025.198%2058.5301%2025.7532%2062.526%2026.8614C72.0696%2020.3923%2076.2624%2021.7361%2076.2624%2021.7361C78.9839%2028.6233%2077.2718%2033.7086%2076.7526%2034.9682C79.9584%2038.4697%2081.8983%2042.9299%2081.8983%2
60048.3889C81.8983%2067.5929%2070.2014%2071.8218%2059.0677%2073.0594C60.861%2074.6111%2062.459%2077.6541%2062.459%2082.3187C62.459%2089.0086%2062.4009%2094.3932%2062.4009%2096.0402C62.4009%2097.3707%2063.3009%2098.9299%2065.8357%2098.4389C85.6915%2091.8199%20100%2073.0845%20100%2051.0002C100%2023.3855%2077.6137%201%2050.0002%201Z'%20fill='%23161614'/%3e%3cpath%20id='Vector_2'%20d='M18.7266%2072.2265C18.6168%2072.4748%2018.2255%2072.5493%2017.8698%2072.3791C17.5071%2072.2159%2017.3032%2071.8771%2017.4208%2071.6277C17.5286%2071.3721%2017.92%2071.3007%2018.282%2071.4724C18.6455%2071.6352%2018.8525%2071.9771%2018.7266%2072.2265ZM21.1862%2074.421C20.9477%2074.6421%2020.4815%2074.5394%2020.165%2074.19C19.838%2073.8414%2019.7768%2073.3755%2020.0188%2073.1508C20.2646%2072.93%2020.7168%2073.0332%2021.0446%2073.3822C21.3717%2073.7347%2021.4352%2074.1978%2021.1858%2074.4214L21.1862%2074.421ZM22.8736%2077.2287C22.5669%2077.4416%2022.0657%2077.242%2021.7563%2076.7974C21.4501%2076.3531%2021.4501%2075.8197%2021.763%2075.606C22.0736%2075.3923%2022.5669%2075.5845%2022.8806%2076.0256C23.1865%2076.4778%2023.1865%2077.0111%2022.8732%2077.2291L22.8736%2077.2287ZM25.7268%2080.4808C25.4527%2080.7827%2024.8692%2080.7019%2024.4417%2080.2894C24.0049%2079.8863%2023.8829%2079.3141%2024.1578%2079.0118C24.4351%2078.709%2025.0221%2078.7941%2025.4527%2079.2032C25.8868%2079.6055%2026.0193%2080.1819%2025.7272%2080.4808H25.7268ZM29.4145%2081.5788C29.2941%2081.9701%2028.7318%2082.1481%2028.1655%2081.9819C27.6001%2081.8105%2027.2299%2081.3517%2027.344%2080.956C27.4616%2080.5619%2028.0263%2080.3764%2028.5969%2080.5545C29.1616%2080.7251%2029.5326%2081.1803%2029.4149%2081.5788H29.4145ZM33.612%2082.0442C33.6261%2082.4568%2033.1458%2082.7987%2032.5513%2082.8062C31.9533%2082.8191%2031.4697%2082.4854%2031.4635%2082.0799C31.4635%2081.6635%2031.9329%2081.3246%2032.5305%2081.3148C33.125%2081.3031%2033.612%2081.6344%2033.612%2082.0442ZM37.735%2081.8862C37.8064%2082.2885%2037.3931%2082.7019%2036.8029%2082.8117C36.2225%2082.9175%2035.6853%2082.6693%2035.6112%2082.2705C35.539%2081.858%2035.9602%2081.445%2036.5394%2081.338C37.1307%2081.2352%2037.6597%2081.4772%2037.735%2081.8862Z'%20fill='%23161614'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",S6="/assets/gsap-CPWT-giO.svg",M6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='html5'%3e%3cg%20id='html5_2'%3e%3cpath%20id='Vector'%20d='M14.0214%2090.034L6%200H94.1867L86.1653%2089.9854L50.0204%20100'%20fill='%23E44D26'/%3e%3cpath%20id='Vector_2'%20d='M50.093%2092.344V7.39014H86.1407L79.2617%2084.201'%20fill='%23F16529'/%3e%3cpath%20id='Vector_3'%20d='M22.3831%2018.4009H50.0933V29.4364H34.4881L35.509%2040.7392H50.0933V51.7504H25.3972L22.3831%2018.4009ZM25.8833%2057.2925H36.9674L37.7452%2066.116L50.0933%2069.4218V80.9434L27.439%2074.6235'%20fill='%23EBEBEB'/%3e%3cpath%20id='Vector_4'%20d='M77.7058%2018.4009H50.0442V29.4364H76.6849L77.7058%2018.4009ZM75.6883%2040.7392H50.0442V51.7747H63.6562L62.368%2066.116L50.0442%2069.4218V80.8948L72.6499%2074.6235'%20fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",b6="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Generator:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%20256%20256'%20xmlns='http://www.w3.org/2000/svg'%20preserveAspectRatio='xMinYMin%20meet'%3e%3cpath%20d='M0%200h256v256H0V0z'%20fill='%23F7DF1E'/%3e%3cpath%20d='M67.312%20213.932l19.59-11.856c3.78%206.701%207.218%2012.371%2015.465%2012.371%207.905%200%2012.89-3.092%2012.89-15.12v-81.798h24.057v82.138c0%2024.917-14.606%2036.259-35.916%2036.259-19.245%200-30.416-9.967-36.087-21.996M152.381%20211.354l19.588-11.341c5.157%208.421%2011.859%2014.607%2023.715%2014.607%209.969%200%2016.325-4.984%2016.325-11.858%200-8.248-6.53-11.17-17.528-15.98l-6.013-2.58c-17.357-7.387-28.87-16.667-28.87-36.257%200-18.044%2013.747-31.792%2035.228-31.792%2015.294%200%2026.292%205.328%2034.196%2019.247L210.29%20147.43c-4.125-7.389-8.591-10.31-15.465-10.31-7.046%200-11.514%204.468-11.514%2010.31%200%207.217%204.468%2010.14%2014.778%2014.608l6.014%202.577c20.45%208.765%2031.963%2017.7%2031.9
6063%2037.804%200%2021.654-17.012%2033.51-39.867%2033.51-22.339%200-36.774-10.654-43.819-24.574'/%3e%3c/svg%3e",E6="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20128%20128'%3e%3cdefs%3e%3clinearGradient%20id='matlab-original-a'%20gradientUnits='userSpaceOnUse'%20x1='16.803'%20y1='16.631'%20x2='15.013'%20y2='22.411'%20gradientTransform='matrix(4%200%200%20-4%200%20128)'%3e%3cstop%20offset='0'%20stop-color='%23512'/%3e%3cstop%20offset='.23'%20stop-color='%23523'/%3e%3cstop%20offset='.36'%20stop-color='%23534'/%3e%3cstop%20offset='.51'%20stop-color='%23645'/%3e%3cstop%20offset='.66'%20stop-color='%23568'/%3e%3cstop%20offset='.84'%20stop-color='%2329d'/%3e%3c/linearGradient%3e%3clinearGradient%20id='matlab-original-b'%20gradientUnits='userSpaceOnUse'%20x1='29.71'%20y1='18.983'%20x2='11.71'%20y2='14.563'%20gradientTransform='scale(4)'%3e%3cstop%20offset='.081'%20stop-color='%23c33'/%3e%3cstop%20offset='.189'%20stop-color='%23de5239'/%3e%3cstop%20offset='.313'%20stop-color='%23f06e3e'/%3e%3cstop%20offset='.421'%20stop-color='%23fa8042'/%3e%3cstop%20offset='.5'%20stop-color='%23fe8643'/%3e%3cstop%20offset='.58'%20stop-color='%23fa7f42'/%3e%3cstop%20offset='.696'%20stop-color='%23ef6c3e'/%3e%3cstop%20offset='.833'%20stop-color='%23dc4c37'/%3e%3cstop%20offset='.916'%20stop-color='%23cf3633'/%3e%3c/linearGradient%3e%3c/defs%3e%3cpath%20d='M8%2070.2l31.879-12.88a82.62%2082.62%200%200110.883-11.8c2.636-1.399%207.597-.641%2016.68-11.918%208.796-11%2011.597-20.403%2015.718-20.403%206.52%200%2011.32%2014.082%2018.602%2035.403A461.75%20461.75%200%2000120%2096.48c-7.602-7.082-14.078-14.718-21.48-14.52-6.88.161-14.52%208.321-22.88%2018.802C69%20109.16%2060.2%20114.922%2056.763%20114.8c0%200-8.883-25.121-16.32-29.2a10.563%2010.563%200%2000-9.563.797L8%2070.16zm0%200'%20fill='%2349d'/%3e%3cpath%20d='M79.2%2016.078c-2.68%203.602-5.92%2010.203-11.76%2017.524-9.082%2011.277-14%2010.52-16.68%2011.918a78.673%2078.673%200%2000-10.882%2011.8l13.2%209.64C64.28%2051.68%2070.28%2035.122%2074.96%2024.399a54.649%2054.649%200%20014.238-8.32zm0%200'%20fill='url(%23matlab-original-a)'/%3e%3cpath%20d='M83.2%2013.2c-8.72%200-14.68%2045.921-46.88%2071.562%209.04-1.48%2016.88%2020.957%2020.48%2030.039%2016-2.723%2028.802-33.32%2041.72-32.84%207.402.277%2013.878%207.437%2021.48%2014.52C102.64%2060%2094.52%2013.198%2083.2%2013.198zm0%200'%20fill='url(%23matlab-original-b)'/%3e%3c/svg%3e",w6="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Generator:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%20256%20256'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20preserveAspectRatio='xMidYMid'%3e%3cg%3e%3cpath%20d='M119.616813,0.0688905149%20C119.066276,0.118932037%20117.314565,0.294077364%20115.738025,0.419181169%20C79.3775171,3.69690087%2045.3192571,23.3131775%2023.7481916,53.4631946%20C11.7364614,70.2271045%204.05395894,89.2428829%201.15112414,109.384595%20C0.12512219,116.415429%200,118.492153%200,128.025062%20C0,137.557972%200.12512219,139.634696%201.15112414,146.665529%20C8.10791789,194.730411%2042.3163245,235.11392%2088.7116325,250.076335%20C97.0197458,252.753556%20105.778299,254.580072%20115.738025,255.680985%20C119.616813,256.106338%20136.383187,256.106338%20140.261975,255.680985%20C157.453763,253.779407%20172.017986,249.525878%20186.382014,242.194795%20C188.584164,241.068861%20189.00958,240.768612%20188.709286,240.518404%20C188.509091,240.36828%20179.124927,227.782837%20167.86393,212.570214%20L147.393939,184.922273%20L121.743891,146.965779%20C107.630108,126.098464%2096.0187683,109.034305%2095.9186706,109.034305%20C95.8185728,109.009284%2095.7184751,125.873277%2095.6684262,146.465363%20C95.5933529,182.52028%2095.5683284,183.971484%2095.1178886,184.82219%20C94.4672532,186.048207%2093.9667644,186.548623%2092.915738,187.099079%20C92.114956,187.499411%2091.4142717,187.574474%2087.6355816,187.574474%20L83.3063539,187.574474%20L82.1552297,186.848872%20C81.4044966,186.373477%2080.8539589,185.747958%2080.4785924,185.022356%20L79.9530792,183.896422%20L80.0031281,133.729796%20L80.0782014,83.5381493%20L80.8539589,82.5623397%20C81.25435,82.0369037%2082.1051808,81.3613431%2082.7057674,81.0360732%20C83.7317693,80.535658%2084.1321603,80.4856165%2088.4613881,80.4856165%20C93.5663734,80.4856165%2094.4172043,80.6857826%2095.7434995,82.1369867%20C96.1188661,82.5373189%20110.007429,103.454675%20126.623656,128.650581%20C143.239883,153.846488%20165.962072,188.250034%20177.122972,205.139048%20L197.392766,235.839522%20L198.418768,235.163961%20C207.502639,229.259062%20217.112023,220.852086%20224.719453,212.09482%20C240.910264,193.504394%20251.345455,170.835585%20254.848876,146.665529%20C255.874878,139.634696%20256,137.557972%20256,128.025062%2
600C256,118.492153%20255.874878,116.415429%20254.848876,109.384595%20C247.892082,61.3197135%20213.683675,20.9362052%20167.288368,5.97379012%20C159.105376,3.32158945%20150.396872,1.49507389%20140.637341,0.394160408%20C138.234995,0.143952798%20121.693842,-0.131275573%20119.616813,0.0688905149%20L119.616813,0.0688905149%20Z%20M172.017986,77.4831252%20C173.219159,78.0836234%20174.195112,79.2345784%20174.545455,80.435575%20C174.74565,81.0861148%20174.795699,94.9976579%20174.74565,126.348671%20L174.670577,171.336%20L166.73783,159.17591%20L158.780059,147.01582%20L158.780059,114.313685%20C158.780059,93.1711423%20158.880156,81.2862808%20159.030303,80.7108033%20C159.430694,79.3096407%20160.306549,78.2087272%20161.507722,77.5581875%20C162.533724,77.0327515%20162.909091,76.98271%20166.837928,76.98271%20C170.541544,76.98271%20171.19218,77.0327515%20172.017986,77.4831252%20Z'%20fill='%23000000'%3e%3c/path%3e%3c/g%3e%3c/svg%3e",T6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='nodejs'%3e%3cg%20id='nodejs_2'%3e%3cpath%20id='Vector'%20d='M46.2785%201.06686C48.758%20-0.352413%2051.9876%20-0.358823%2054.465%201.06686C66.9286%208.10944%2079.3961%2015.141%2091.8576%2022.1878C94.2014%2023.5081%2095.7692%2026.1166%2095.7454%2028.8173V71.1881C95.7628%2074.0007%2094.0401%2076.6715%2091.5673%2077.9618C79.1447%2084.9656%2066.7285%2091.9779%2054.308%2098.9816C51.7772%20100.429%2048.4827%20100.317%2046.031%2098.7516C42.3067%2096.5926%2038.576%2094.4443%2034.8513%2092.2874C34.0902%2091.8336%2033.2322%2091.4725%2032.6948%2090.7346C33.1699%2090.0942%2034.0193%2090.0144%2034.7096%2089.7348C36.2642%2089.2405%2037.692%2088.447%2039.1202%2087.677C39.4813%2087.4298%2039.9222%2087.5246%2040.2684%2087.7457C43.4531%2089.5717%2046.6097%2091.4508%2049.8051%2093.2593C50.4868%2093.6529%2051.177%2093.1304%2051.7597%2092.8056C63.9501%2085.9158%2076.1555%2079.052%2088.3438%2
60072.1601C88.7954%2071.9428%2089.0451%2071.4634%2089.0084%2070.9688C89.0169%2056.9915%2089.0105%2043.0118%2089.0126%2029.0345C89.0643%2028.4732%2088.7395%2027.9572%2088.232%2027.7274C75.8524%2020.7557%2063.4793%2013.7733%2051.1019%206.79986C50.8874%206.65243%2050.6334%206.57333%2050.3732%206.57295C50.1129%206.57257%2049.8587%206.65093%2049.6438%206.79773C37.2664%2013.7733%2024.8954%2020.7621%2012.518%2027.7335C12.0123%2027.9636%2011.6728%2028.4711%2011.733%2029.0345C11.7352%2043.0118%2011.733%2056.9915%2011.733%2070.9709C11.7116%2071.2123%2011.7646%2071.4544%2011.8849%2071.6647C12.0053%2071.8751%2012.1872%2072.0435%2012.4062%2072.1473C15.7091%2074.0203%2019.0164%2075.8801%2022.3215%2077.7467C24.1834%2078.7489%2026.4696%2079.3444%2028.521%2078.5765C30.3314%2077.9273%2031.6003%2076.0799%2031.5658%2074.1577C31.5829%2060.2621%2031.5573%2046.3642%2031.5786%2032.4707C31.5334%2031.8538%2032.1185%2031.3442%2032.7183%2031.4022C34.3053%2031.3916%2035.8945%2031.3809%2037.4815%2031.4065C38.144%2031.3916%2038.5998%2032.0558%2038.5179%2032.6773C38.5115%2046.6609%2038.535%2060.6449%2038.5072%2074.6286C38.5115%2078.3554%2036.9804%2082.4105%2033.5332%2084.234C29.2864%2086.434%2024.0374%2085.9674%2019.8419%2083.8579C16.2099%2082.0451%2012.7438%2079.9057%209.17621%2077.9636C6.69702%2076.6804%204.98286%2073.9989%205.00031%2071.1885V28.8173C4.97431%2026.0606%206.60442%2023.4048%209.02128%2022.1038C21.4418%2015.0943%2033.8601%208.07952%2046.2785%201.06686Z'%20fill='%238CC84B'/%3e%3cpath%20id='Vector_2'%20d='M57.1141%2030.4174C62.5312%2030.0687%2068.3304%2030.2108%2073.2051%2032.8795C76.9793%2034.9245%2079.0717%2039.2165%2079.1383%2043.4095C79.0329%2043.9751%2078.4416%2044.2871%2077.9017%2044.2483C76.33%2044.2461%2074.7579%2044.2696%2073.1862%2044.2376C72.5195%2044.2632%2072.132%2043.6485%2072.0483%2043.0591C71.5967%2041.0529%2070.5026%2039.0659%2068.6143%2038.0982C65.7156%2036.6469%2062.3545%2036.7199%2059.1937%2036.7502C56.8862%2036.8727%2054.4048%2037.0725%2052.4499%2038.4294C50.9491%2039.4573%2050.4932%2041.5322%2051.0289%2043.2033C51.5339%2044.4032%2052.919%2044.7903%2054.0522%2045.1472C60.5805%2046.8546%2067.4985%2046.6847%2073.9021%2048.9317C76.5533%2049.8477%2079.1468%2051.6285%2080.0543%2054.4043C81.2414%2058.1247%2080.721%2062.5717%2078.0741%2065.5584C75.9276%2068.0162%2072.8012%2069.3539%2069.6831%2070.0804C65.535%2071.0054%2061.2302%2071.0289%2057.0176%2070.6182C53.0564%2070.1666%2048.9343%2069.1259%2045.8764%2066.427C43.2615%2064.1565%2041.9843%2060.6189%2042.1111%2057.2044C42.1414%2056.6278%2042.7155%2056.2257%2043.2679%2056.2731C44.8507%2056.2603%2046.4334%2056.256%2048.0162%2056.2752C48.6483%2056.23%2049.117%2056.7763%2049.1494%2057.3722C49.4415%2059.2837%2050.1598%2061.2899%2051.8266%2062.4231C55.0434%2064.4984%2059.0797%2064.3563%2062.7631%2064.4144C65.8146%2064.2791%2069.2401%2064.2381%2071.7303%2062.2212C73.0441%2061.0708%2073.4334%2059.1462%2073.0783%2057.4904C72.6937%2056.0925%2071.2313%2055.4411%2069.9755%2055.0151C63.5309%2052.9765%2056.5357%2053.7163%2050.1534%2051.4109C47.5624%2050.4952%2045.0569%2048.7639%2044.0614%2046.1021C42.6724%2042.3347%2043.3089%2037.6747%2046.2333%2034.7888C49.0846%2031.9182%2053.2007%2030.8127%2057.1141%2030.4171V30.4174Z'%20fill='%238CC84B'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",C6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='npm'%3e%3cg%20id='npm_2'%3e%3cpath%20id='Vector'%20d='M0%200H100V100H0V0Z'%20fill='%23CC0000'/%3e%3cpath%20id='Vector_2'%20d='M49.66%2010.74H10.74V89.256H49.656V30.54H69.456V89.256H89.256V10.74H49.66Z'%20fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",A6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='python'%3e%3cg%20id='python_2'%3e%3cpath%20id='Vector'%20d='M49.6397%200C24.2535%200%2025.8385%2011.009%2025.8385%2011.009L25.8667%2022.4146H50.0924V25.8389H16.2447C16.2447%2025.8389%200%2023.9966%200%2049.6111C0%2075.2264%2014.1788%2074.318%2014.1788%2074.318H22.6406V62.4315C22.6406%2062.4315%2022.1844%2048.2528%2036.593%2048.2528H60.6205C60.6205%2048.2528%2074.1199%2048.4709%2074.1199%2035.206V13.2734C74.1199%2013.2734%2076.1702%200%2049.6397%200
60ZM36.2817%207.67007C36.8542%207.66955%2037.4211%207.78193%2037.9501%208.00076C38.4791%208.2196%2038.9598%208.5406%2039.3646%208.9454C39.7693%209.35019%2040.0903%209.83084%2040.3092%2010.3598C40.528%2010.8888%2040.6404%2011.4558%2040.6399%2012.0282C40.6404%2012.6007%2040.528%2013.1677%2040.3092%2013.6967C40.0903%2014.2256%2039.7693%2014.7063%2039.3646%2015.1111C38.9598%2015.5159%2038.4791%2015.8369%2037.9501%2016.0557C37.4211%2016.2746%2036.8542%2016.3869%2036.2817%2016.3864C35.7092%2016.3869%2035.1423%2016.2746%2034.6133%2016.0557C34.0843%2015.8369%2033.6037%2015.5159%2033.1989%2015.1111C32.7941%2014.7063%2032.4731%2014.2256%2032.2542%2013.6967C32.0354%2013.1677%2031.923%2012.6007%2031.9235%2012.0282C31.923%2011.4558%2032.0354%2010.8888%2032.2542%2010.3598C32.4731%209.83084%2032.7941%209.35019%2033.1989%208.9454C33.6037%208.5406%2034.0843%208.2196%2034.6133%208.00076C35.1423%207.78193%2035.7092%207.66955%2036.2817%207.67007Z'%20fill='url(%23paint0_linear_790_3246)'/%3e%3cpath%20id='Vector_2'%20d='M50.3607%2099.4801C75.747%2099.4801%2074.1619%2088.4711%2074.1619%2088.4711L74.1337%2077.0658H49.9076V73.6415H83.7553C83.7553%2073.6415%20100%2075.4838%20100%2049.8685C100%2024.2535%2085.8213%2025.1619%2085.8213%2025.1619H77.3594V37.0481C77.3594%2037.0481%2077.8156%2051.2268%2063.407%2051.2268H39.3795C39.3795%2051.2268%2025.8801%2051.0087%2025.8801%2064.274V86.207C25.8801%2086.207%2023.8302%2099.4801%2050.3603%2099.4801H50.3607ZM63.7187%2091.8108C63.1462%2091.8113%2062.5793%2091.6989%2062.0503%2091.4801C61.5213%2091.2612%2061.0407%2090.9402%2060.6359%2090.5354C60.2311%2090.1306%2059.9101%2089.65%2059.6912%2089.121C59.4724%2088.592%2059.36%2088.0251%2059.3605%2087.4526C59.36%2086.8801%2059.4723%2086.3131%2059.6911%2085.784C59.9099%2085.255%2060.2309%2084.7743%2060.6357%2084.3695C61.0405%2083.9646%2061.5212%2083.6436%2062.0502%2083.4247C62.5792%2083.2059%2063.1462%2083.0935%2063.7187%2083.094C64.2912%2083.0935%2064.8581%2083.2059%2065.3871%2083.4247C65.9161%2083.6435%2066.3968%2083.9645%2066.8015%2084.3693C67.2063%2084.7741%2067.5273%2085.2548%2067.7462%2085.7838C67.965%2086.3128%2068.0774%2086.8797%2068.0769%2087.4522C68.0774%2088.0247%2067.965%2088.5916%2067.7462%2089.1206C67.5273%2089.6496%2067.2063%2090.1302%2066.8015%2090.535C66.3968%2090.9398%2065.9161%2091.2608%2065.3871%2091.4797C64.8581%2091.6985%2064.2912%2091.8109%2063.7187%2091.8104V91.8108Z'%20fill='url(%23paint1_linear_790_3246)'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_790_3246'%20x1='9.60996'%20y1='8.94762'%20x2='59.1669'%20y2='58.0102'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23387EB8'/%3e%3cstop%20offset='1'%20stop-color='%23366994'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_790_3246'%20x1='40.0281'%20y1='40.4527'%20x2='93.2466'%20y2='90.7618'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23FFE052'/%3e%3cstop%20offset='1'%20stop-color='%23FFC331'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e",R6="data:image/svg+xml,%3csvg%20width='101'%20height='100'%20viewBox='0%200%20101%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='react'%3e%3cg%20id='react_2'%3e%3cpath%20id='Vector'%20d='M50.3067%2058.8163C55.1758%2058.8163%2059.1229%2054.8691%2059.1229%2050.0001C59.1229%2045.131%2055.1758%2041.1838%2050.3067%2041.1838C45.4376%2041.1838%2041.4905%2045.131%2041.4905%2050.0001C41.4905%2054.8691%2045.4376%2058.8163%2050.3067%2058.8163Z'%20fill='%2361DAFB'/%3e%3cpath%20id='Vector_2'%20d='M50.3066%2068.0626C76.4333%2068.0626%2097.6132%2059.9757%2097.6132%2050C97.6132%2040.0244%2076.4333%2031.9375%2050.3066%2031.9375C24.1799%2031.9375%203%2040.0244%203%2050C3%2059.9757%2024.1799%2068.0626%2050.3066%2068.0626Z'%20stroke='%2361DAFB'%20stroke-width='5'/%3e%3cpath%20id='Vector_3'%20d='M34.664%2059.0313C47.7274%2081.6577%2065.3207%2095.9566%2073.9599%2090.9687C82.5991%2085.9809%2079.0126%2063.5951%2065.9492%2040.9687C52.8858%2018.3423%2035.2925%204.04343%2026.6533%209.03126C18.0141%2014.0191%2021.6006%2036.4049%2034.664%2059.0313Z'%20stroke='%2361DAFB'%20stroke-width='5'/%3e%3cpath%20id='Vector_4'%20d='M34.664%2040.9687C21.6007%2063.5951%2018.0141%2085.9809%2026.6533%2090.9687C35.2925%2095.9565%2052.8859%2081.6576%2065.9492%2059.0312C79.0126%2036.4048%2082.5991%2014.0191%2073.9599%209.03124C65.3208%204.04341%2047.7274%2018.3423%2034.664%2040.9687Z'%20stroke='%2361DAFB'%20stroke-width='5'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",N6="/assets/reactquery-BqNxIJub.svg",L6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='reactrouter'%3e%3cg%20id='reactrouter_2'%3e%3cpath%20id='Vector'%20d='M30.6361%2059.339C25.6683%2059.339%2021.619%2055.2576%2021.619%2050.254C21.619%2045.2504%2025.6683%2041.1689%2030.6361%2041.1689C35.604%2041.1689%2039.6533%2045.2504%2039.6533%2050.254C39.6533%2055.254%2035.6004%2059.339%2030.6361%2059.339ZM8.98501%2077.3769C4.02433%2077.3662%20-0.0142581%2073.2668%203.7837e-05%2068.2632C0.00287096%2065.8634%200.956959%2063.5626%202.65321%2061.865C4.34947%2060.1674%206.64953%2059.2115%209.04934%2059.2068C14.0136%2059.2175%2018.0522%2063.3169%2018.0343%2068.324C18.0296%2070.7229%2017.0748%2073.0223%2015.3788%2074.7189C13.6829%2076.4155%2011.3839%2077.3712%208.98501%2077.3769ZM91.0506%2077.3769C88.6511%2077.3816%2086.3474%2076.4354%2084.644%2074.7454C82.9405%2073.0554%2081.9762%2070.7593%2081.962%2068.3597C81.937%2063.349%2085.9577%2059.2354%2090.9148%2059.2104C93.3131%2059.2065%2095.6153%2060.1527%2097.3179%2061.8418C99.0204%2063.531%2099.9847%2065.8257%2099.9998%2068.2239C100.028%2073.2311%2096.0041%2077.3483%2091.0506%2077.3769Z'%20fill='black'/%3e%3cpath%20id='Vector_2'%20d='M74.1492%2041.6978C71.6975%2040.933%2069.0777%2040.6149%2066.508%2040.3362C62.5338%2039.9073%2060.9505%2038.3562%2060.2786%2034.3748C59.8998%2032.1518%2059.3708%2029.8716%2058.4094%2027.8523C56.576%2024.0102%2052.2801%2022.2876%2047.9663%2023.2704C44.3208%2024.1032%2041.2937%2027.7307%2041.1257%2031.4548C40.9327%2035.7007%2043.363%2039.3283%2047.5374%2040.5792C49.521%2041.176%2051.6296%2041.4727%2053.6989%2041.6264C57.4981%2041.9016%2058.7668%2043.0345%2059.7926%2044.7643C60.443%2045.8579%2061.0685%2046.9337%2061.0685%2050.186C61.0685%2053.4419%2060.4359%2054.5177%2059.7926%2055.6077C58.7668%2057.3375%2057.4981%2058.4669%2053.6989%2058.7493C51.626%2058.8994%2049.5174
60%2059.1996%2047.5374%2059.7964C43.363%2061.0509%2040.9327%2064.6713%2041.1257%2068.9244C41.2937%2072.6449%2044.3244%2076.2725%2047.9663%2077.1052C52.2801%2078.0916%2056.576%2076.3654%2058.4094%2072.5234C59.3744%2070.5076%2059.8998%2068.2239%2060.2786%2066.0009C60.9541%2062.0195%2062.5374%2060.4719%2066.508%2060.0395C69.0813%2059.7607%2071.6975%2059.439%2074.1492%2058.6742C77.8697%2057.5127%2080.107%2054.0423%2080.107%2050.186C80.107%2046.3333%2077.8697%2042.8665%2074.1492%2041.6978Z'%20fill='%23F44250'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",D6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='tailwindcss'%3e%3cg%20id='tailwindcss_2'%3e%3cpath%20id='Vector'%20d='M50.0002%2020C36.6665%2020%2028.3334%2026.665%2024.9996%2039.9937C30.0002%2033.3287%2035.8337%2030.8303%2042.4999%2032.4959C46.3039%2033.4463%2049.0224%2036.206%2052.0323%2039.2597C56.9341%2044.234%2062.6075%2049.9912%2075.0009%2049.9912C88.3334%2049.9912%2096.6677%2043.3262%20100%2029.9962C95.0009%2036.6612%2089.1674%2039.1609%2082.4999%2037.4953C78.6973%2036.5449%2075.9787%2033.7851%2072.9689%2030.7315C68.067%2025.7571%2062.3924%2020%2050.0002%2020ZM24.9996%2049.9912C11.6671%2049.9912%203.33274%2056.6562%200.000244141%2069.9862C4.99962%2063.3212%2010.8331%2060.8215%2017.5006%2062.4884C21.3032%2063.44%2024.0218%2066.1985%2027.0316%2069.2509C31.9335%2074.2252%2037.6081%2079.9836%2050.0002%2079.9836C63.334%2079.9836%2071.6671%2073.3187%2075.0009%2059.9887C70.0002%2066.6537%2064.1668%2069.1534%2057.5006%2067.4865C53.6966%2066.5374%2050.9781%2063.7763%2047.9682%2060.724C43.0664%2055.7496%2037.393%2049.9912%2024.9996%2049.9912Z'%20fill='%2306B6D4'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",U6="data:image/svg+xml,%3csvg%20width='103'%20height='104'%20viewBox='0%200%20103%20104'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='threejs'%3e%3cg%20id='threejs_2'%3e%3cpath%20id='Vector'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M26.7016%20102L2%202L101.023%2030.5092L26.7016%20102Z'%20stroke='black'%20stroke-width='2.2865'%20stroke-miterlimit='10'%20stroke-linejoin='round'/%3e%3cpath%20id='Vector_2'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M51.4929%2016.2573L63.8349%2066.2722L14.3511%2052.013L51.4929%2016.2573Z'%20stroke='black'%20stroke-width='2.2865'%20stroke-miterlimit='10'%20stroke-linejoin='round'/%3e%3cpath%20id='Vector_3'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M39.2145%2058.7966L33.0844%2033.9509L57.6688%2041.0082L39.2145%2058.7966Z'%20stroke='black'%20stroke-width='2.2865'%20stroke-miterlimit='10'%20stroke-linejoin='round'/%3e%3cpath%20id='Vector_4'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M26.952%209.13574L33.0821%2033.9814L8.49768%2026.9241L26.952%209.13574Z'%20stroke='black'%20stroke-width='2.2865'%20stroke-miterlimit='10'%20stroke-linejoin='round'/%3e%3cpath%20id='Vector_5'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M76.1186%2023.2988L82.2487%2048.1445L57.6643%2041.0872L76.1186%2023.2988Z'%20stroke='black'%20stroke-width='2.2865'%20stroke-miterlimit='10'%20stroke-linejoin='round'/%3e%3cpath%20id='Vector_6'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M39.2173%2058.8137L45.3474%2083.6594L20.7629%2076.6021L39.2173%2058.8137Z'%20stroke='black'%20stroke-width='2.2865'%20stroke-miterlimit='10'%20stroke-linejoin='round'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",P6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='typescript'%3e%3cg%20id='typescript_2'%3e%3cpath%20id='Vector'%20d='M0%200H100V100H0V0Z'%20fill='%23017ACB'/%3e%3cpath%20id='Vector_2'%20d='M48.0157%2037.0312H52.8126V45.3125H39.8438V82.1562L39.5%2082.25C39.0313%2082.375%2032.8594%2082.375%2031.5313%2082.2344L30.4688%2082.1406V45.3125H17.5V37.0312L21.6094%2036.9844C23.8594%2036.9531%2029.6406%2036.9531%2034.4532%2036.9844C39.2657%2037.0156%2045.3594%2037.0312%2048.0157%2037.0312ZM84.6251%2078.25C82.7189%2080.2656%2080.672%2081.3906%2077.2657%2082.3125C75.7813%2082.7187%2075.5313%2082.7344%2072.1876%2082.7188C68.8438%2
60082.7031%2068.5782%2082.7031%2066.9532%2082.2812C62.7501%2081.2031%2059.3594%2079.0937%2057.0469%2076.1094C56.3907%2075.2656%2055.3126%2073.5156%2055.3126%2073.2969C55.3126%2073.2344%2055.4688%2073.0937%2055.6719%2073C55.8751%2072.9062%2056.2969%2072.6406%2056.6407%2072.4375C56.9844%2072.2344%2057.6094%2071.8594%2058.0313%2071.6406C58.4532%2071.4219%2059.6719%2070.7031%2060.7345%2070.0625C61.797%2069.4219%2062.7657%2068.9062%2062.8751%2068.9062C62.9845%2068.9062%2063.1876%2069.125%2063.3438%2069.3906C64.2813%2070.9687%2066.4688%2072.9844%2068.0157%2073.6719C68.9688%2074.0781%2071.0782%2074.5312%2072.0938%2074.5312C73.0313%2074.5312%2074.7501%2074.125%2075.672%2073.7031C76.6563%2073.25%2077.1564%2072.7969%2077.7501%2071.8906C78.1564%2071.25%2078.2032%2071.0781%2078.1876%2069.8594C78.1876%2068.7344%2078.1251%2068.4219%2077.8126%2067.9062C76.9376%2066.4687%2075.7501%2065.7187%2070.9376%2063.5937C65.9688%2061.3906%2063.7345%2060.0781%2061.9219%2058.3125C60.5782%2057%2060.3126%2056.6406%2059.4688%2055C58.3751%2052.8906%2058.2344%2052.2031%2058.2188%2049.0625C58.2032%2046.8594%2058.2501%2046.1406%2058.4844%2045.3906C58.8126%2044.2656%2059.8751%2042.0937%2060.3594%2041.5469C61.3594%2040.375%2061.7188%2040.0156%2062.422%2039.4375C64.547%2037.6875%2067.8595%2036.5312%2071.0313%2036.4219C71.3907%2036.4219%2072.5782%2036.4844%2073.6876%2036.5625C76.8751%2036.8281%2079.047%2037.6094%2081.1407%2039.2812C82.7189%2040.5312%2085.1095%2043.4688%2084.8751%2043.8594C84.7189%2044.0938%2078.4845%2048.25%2078.0782%2048.375C77.8282%2048.4531%2077.6564%2048.3594%2077.3126%2047.9531C75.1876%2045.4062%2074.3282%2044.8594%2072.2657%2044.7344C70.797%2044.6406%2070.0157%2044.8125%2069.0313%2045.4687C68.0001%2046.1562%2067.5001%2047.2031%2067.5001%2048.6562C67.5157%2050.7812%2068.3282%2051.7812%2071.3282%2053.2656C73.2657%2054.2187%2074.922%2055%2075.047%2055C75.2345%2055%2079.2501%2057%2080.297%2057.625C85.172%2060.4844%2087.1564%2063.4219%2087.672%2068.4844C88.047%2072.2969%2086.9689%2075.7812%2084.6251%2078.25Z'%20fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",O6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='vitejs'%3e%3cg%20id='vitejs_2'%3e%3cpath%20id='Vector'%20d='M98.848%2014.8011L52.7313%2098.6948C51.779%20100.427%2049.3328%20100.437%2048.3664%2098.7135L1.33543%2014.8089C0.28237%2012.9308%201.86119%2010.6555%203.9535%2011.0363L50.1197%2019.4308C50.4142%2019.4843%2050.7158%2019.4838%2051.0102%2019.4292L96.2107%2011.048C98.2961%2010.6614%2099.8822%2012.9191%2098.848%2014.8011Z'%20fill='url(%23paint0_linear_790_3556)'/%3e%3cpath%20id='Vector_2'%20d='M72.111%200.0246207L37.9836%206.8278C37.7109%206.88215%2037.4637%207.02714%2037.2809%207.23999C37.098%207.45285%2036.9899%207.72148%2036.9735%208.00367L34.8743%2044.074C34.8627%2044.2718%2034.8967%2044.4697%2034.9734%2044.6518C35.0502%2044.834%2035.1676%2044.9954%2035.3164%2045.1233C35.4651%2045.2513%2035.6412%2045.3421%2035.8305%2045.3888C36.0199%2045.4354%2036.2173%2045.4364%2036.4071%2045.3919L45.9088%2043.1611C46.7977%2042.9524%2047.6011%2043.749%2047.4182%2044.6584L44.5953%2058.7216C44.4055%2059.6681%2045.2787%2060.4772%2046.1872%2060.1964L52.0561%2058.3826C52.9657%2058.1017%2053.8401%2058.9132%2053.6476%2059.8604L49.1615%2081.9503C48.8808%2083.3321%2050.6874%2084.0855%2051.4406%2082.901L51.9441%2082.1098L79.7532%2025.6495C80.2191%2024.7042%2079.4157%2023.6262%2078.3956%2023.8268L68.6147%2025.747C67.6959%2025.9273%2066.914%2025.0565%2067.1732%2024.142L73.5568%201.62925C73.8164%200.712429%2073.0314%20-0.158743%2072.1114%200.0246207H72.111Z'%20fill='url(%23paint1_linear_790_3556)'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_790_3556'%20x1='0.187129'%20y1='17.8049'%20x2='51.0375'%20y2='85.6877'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%2341D1FF'/%3e%3cstop%20offset='1'%20stop-color='%23BD34FE'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_790_3556'%20x1='54.3985'%20y1='1.87182'%20x2='64.9804'%20y2='73.2241'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23FFEA83'/%3e%3cstop%20offset='0.083'%20stop-color='%23FFDD35'/%3e%3cstop%20offset='1'%20stop-color='%23FFA800'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e",I6="data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='vscode'%3e%3cg%20id='vscode_2'%3e%3cpath%20id='Vector'%20d='M0.951416%2035.4984C0.951416%2035.4984%20-1.48421%2033.7427%201.43854%2031.3984L8.24814%2025.3093C8.24814%2025.3093%2010.1966%2023.2593%2012.2568%2025.0455L75.0959%2072.6214V95.4351C75.0959%2095.4351%2075.0655%2099.0175%2070.4682%2098.6217L0.951416%2035.4984Z'%2
vendor: 6,270 bytes, lines 60-64
600fill='%232489CA'/%3e%3cpath%20id='Vector_2'%20d='M17.1484%2050.2036L0.95144%2064.929C0.95144%2064.929%20-0.712906%2066.1671%200.95144%2068.3795L8.47144%2075.2195C8.47144%2075.2195%2010.2576%2077.1376%2012.8962%2074.9556L30.0673%2061.9352L17.1484%2050.2036Z'%20fill='%231070B3'/%3e%3cpath%20id='Vector_3'%20d='M45.5843%2050.3253L75.2888%2027.6435L75.096%204.95149C75.096%204.95149%2073.8275%20-0.000959277%2069.5956%202.57675L30.0673%2038.5531L45.5843%2050.3253Z'%20fill='%230877B9'/%3e%3cpath%20id='Vector_4'%20d='M70.4683%2098.6524C72.1936%20100.418%2074.2842%2099.8397%2074.2842%2099.8397L97.4327%2088.4329C100.396%2086.4133%2099.98%2083.9067%2099.98%2083.9067V15.7902C99.98%2012.7964%2096.9152%2011.7613%2096.9152%2011.7613L76.8517%202.08978C72.4676%20-0.619855%2069.5956%202.57691%2069.5956%202.57691C69.5956%202.57691%2073.2896%20-0.081986%2075.096%204.95165V95.0192C75.096%2095.6383%2074.9641%2096.2472%2074.7002%2096.7952C74.1725%2097.8608%2073.0258%2098.8553%2070.2755%2098.4392L70.4683%2098.6524Z'%20fill='%233C99D4'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";/** 61 * @license 62 * Copyright 2010-2025 Three.js Authors 63 * SPDX-License-Identifier: MIT 64 */const fm="178",B6=0,Hv=1,F6=2,y_=1,z6=2,Cs=3,Na=0,ei=1,Ui=2,Aa=0,Mo=1,X0=2,kv=3,Gv=4,V6=5,dr=100,j6=101,H6=102,k6=103,G6=104,W6=200,X6=201,q6=202,Y6=203,q0=204,Y0=205,Z6=206,K6=207,Q6=208,$6=209,J6=210,eb=211,tb=212,nb=213,ib=214,Z0=0,K0=1,Q0=2,To=3,$0=4,J0=5,ep=6,tp=7,S_=0,sb=1,ab=2,Ra=0,rb=1,ob=2,lb=3,cb=4,ub=5,fb=6,db=7,M_=300,Co=301,Ao=302,np=303,ip=304,Of=306,sp=1e3,mr=1001,ap=1002,Ii=1003,hb=1004,Fu=1005,Xi=1006,Qh=1007,gr=1008,Us=1009,b_=1010,E_=1011,sc=1012,dm=1013,Sr=1014,As=1015,xc=1016,hm=1017,pm=1018,ac=1020,w_=35902,T_=1021,C_=1022,Oi=1023,rc=1026,oc=1027,A_=1028,mm=1029,R_=1030,gm=1031,vm=1033,df=33776,hf=33777,pf=33778,mf=33779,rp=35840,op=35841,lp=35842,cp=35843,up=36196,fp=37492,dp=37496,hp=37808,pp=37809,mp=37810,gp=37811,vp=37812,xp=37813,_p=37814,yp=37815,Sp=37816,Mp=37817,bp=37818,Ep=37819,wp=37820,Tp=37821,gf=36492,Cp=36494,Ap=36495,N_=36283,Rp=36284,Np=36285,Lp=36286,pb=3200,mb=3201,gb=0,vb=1,Ca="",hi="srgb",Ro="srgb-linear",bf="linear",kt="srgb",eo=7680,Wv=519,xb=512,_b=513,yb=514,L_=515,Sb=516,Mb=517,bb=518,Eb=519,Xv=35044,qv="300 es",Rs=2e3,Ef=2001;class Io{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const a=this._listeners;a[e]===void 0&&(a[e]=[]),a[e].indexOf(t)===-1&&a[e].push(t)}hasEventListener(e,t){const a=this._listeners;return a===void 0?!1:a[e]!==void 0&&a[e].indexOf(t)!==-1}removeEventListener(e,t){const a=this._listeners;if(a===void 0)return;const o=a[e];if(o!==void 0){const l=o.indexOf(t);l!==-1&&o.splice(l,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const a=t[e.type];if(a!==void 0){e.target=this;const o=a.slice(0);for(let l=0,u=o.length;l<u;l++)o[l].call(this,e);e.target=null}}}const zn=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],$h=Math.PI/180,Dp=180/Math.PI;function _c(){const n=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,a=Math.random()*4294967295|0;return(zn[n&255]+zn[n>>8&255]+zn[n>>16&255]+zn[n>>24&255]+"-"+zn[e&255]+zn[e>>8&255]+"-"+zn[e>>16&15|64]+zn[e>>24&255]+"-"+zn[t&63|128]+zn[t>>8&255]+"-"+zn[t>>16&255]+zn[t>>24&255]+zn[a&255]+zn[a>>8&255]+zn[a>>16&255]+zn[a>>24&255]).toLowerCase()}function Tt(n,e,t){return Math.max(e,Math.min(t,n))}function wb(n,e){return(n%e+e)%e}function Jh(n,e,t){return(1-t)*n+t*e}function Bl(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function Qn(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}class St{constructor(e=0,t=0){St.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}
vendor: 11,626 bytes, line 64
64sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,a=this.y,o=e.elements;return this.x=o[0]*t+o[3]*a+o[6],this.y=o[1]*t+o[4]*a+o[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Tt(this.x,e.x,t.x),this.y=Tt(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Tt(this.x,e,t),this.y=Tt(this.y,e,t),this}clampLength(e,t){const a=this.length();return this.divideScalar(a||1).multiplyScalar(Tt(a,e,t))}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(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.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(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const a=this.dot(e)/t;return Math.acos(Tt(a,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,a=this.y-e.y;return t*t+a*a}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,a){return this.x=e.x+(t.x-e.x)*a,this.y=e.y+(t.y-e.y)*a,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const a=Math.cos(t),o=Math.sin(t),l=this.x-e.x,u=this.y-e.y;return this.x=l*a-u*o+e.x,this.y=l*o+u*a+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class yc{constructor(e=0,t=0,a=0,o=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=a,this._w=o}static slerpFlat(e,t,a,o,l,u,f){let d=a[o+0],h=a[o+1],g=a[o+2],v=a[o+3];const x=l[u+0],y=l[u+1],b=l[u+2],w=l[u+3];if(f===0){e[t+0]=d,e[t+1]=h,e[t+2]=g,e[t+3]=v;return}if(f===1){e[t+0]=x,e[t+1]=y,e[t+2]=b,e[t+3]=w;return}if(v!==w||d!==x||h!==y||g!==b){let M=1-f;const S=d*x+h*y+g*b+v*w,N=S>=0?1:-1,T=1-S*S;if(T>Number.EPSILON){const P=Math.sqrt(T),I=Math.atan2(P,S*N);M=Math.sin(M*I)/P,f=Math.sin(f*I)/P}const R=f*N;if(d=d*M+x*R,h=h*M+y*R,g=g*M+b*R,v=v*M+w*R,M===1-f){const P=1/Math.sqrt(d*d+h*h+g*g+v*v);d*=P,h*=P,g*=P,v*=P}}e[t]=d,e[t+1]=h,e[t+2]=g,e[t+3]=v}static multiplyQuaternionsFlat(e,t,a,o,l,u){const f=a[o],d=a[o+1],h=a[o+2],g=a[o+3],v=l[u],x=l[u+1],y=l[u+2],b=l[u+3];return e[t]=f*b+g*v+d*y-h*x,e[t+1]=d*b+g*x+h*v-f*y,e[t+2]=h*b+g*y+f*x-d*v,e[t+3]=g*b-f*v-d*x-h*y,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,a,o){return this._x=e,this._y=t,this._z=a,this._w=o,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const a=e._x,o=e._y,l=e._z,u=e._order,f=Math.cos,d=Math.sin,h=f(a/2),g=f(o/2),v=f(l/2),x=d(a/2),y=d(o/2),b=d(l/2);switch(u){case"XYZ":this._x=x*g*v+h*y*b,this._y=h*y*v-x*g*b,this._z=h*g*b+x*y*v,this._w=h*g*v-x*y*b;break;case"YXZ":this._x=x*g*v+h*y*b,this._y=h*y*v-x*g*b,this._z=h*g*b-x*y*v,this._w=h*g*v+x*y*b;break;case"ZXY":this._x=x*g*v-h*y*b,this._y=h*y*v+x*g*b,this._z=h*g*b+x*y*v,this._w=h*g*v-x*y*b;break;case"ZYX":this._x=x*g*v-h*y*b,this._y=h*y*v+x*g*b,this._z=h*g*b-x*y*v,this._w=h*g*v+x*y*b;break;case"YZX":this._x=x*g*v+h*y*b,this._y=h*y*v+x*g*b,this._z=h*g*b-x*y*v,this._w=h*g*v-x*y*b;break;case"XZY":this._x=x*g*v-h*y*b,this._y=h*y*v-x*g*b,this._z=h*g*b+x*y*v,this._w=h*g*v+x*y*b;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+u)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const a=t/2,o=Math.sin(a);return this._x=e.x*o,this._y=e.y*o,this._z=e.z*o,this._w=Math.cos(a),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,a=t[0],o=t[4],l=t[8],u=t[1],f=t[5],d=t[9],h=t[2],g=t[6],v=t[10],x=a+f+v;if(x>0){const y=.5/Math.sqrt(x+1);this._w=.25/y,this._x=(g-d)*y,this._y=(l-h)*y,this._z=(u-o)*y}else if(a>f&&a>v){const y=2*Math.sqrt(1+a-f-v);this._w=(g-d)/y,this._x=.25*y,this._y=(o+u)/y,this._z=(l+h)/y}else if(f>v){const y=2*Math.sqrt(1+f-a-v);this._w=(l-h)/y,this._x=(o+u)/y,this._y=.25*y,this._z=(d+g)/y}else{const y=2*Math.sqrt(1+v-a-f);this._w=(u-o)/y,this._x=(l+h)/y,this._y=(d+g)/y,this._z=.25*y}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let a=e.dot(t)+1;return a<1e-8?(a=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=a):(this._x=0,this._y=-e.z,this._z=e.y,this._w=a)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=a),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Tt(this.dot(e),-1,1)))}rotateTowards(e,t){const a=this.angleTo(e);if(a===0)return this;const o=Math.min(1,t/a);return this.slerp(e,o),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(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._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 e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const a=e._x,o=e._y,l=e._z,u=e._w,f=t._x,d=t._y,h=t._z,g=t._w;return this._x=a*g+u*f+o*h-l*d,this._y=o*g+u*d+l*f-a*h,this._z=l*g+u*h+a*d-o*f,this._w=u*g-a*f-o*d-l*h,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const a=this._x,o=this._y,l=this._z,u=this._w;let f=u*e._w+a*e._x+o*e._y+l*e._z;if(f<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,f=-f):this.copy(e),f>=1)return this._w=u,this._x=a,this._y=o,this._z=l,this;const d=1-f*f;if(d<=Number.EPSILON){const y=1-t;return this._w=y*u+t*this._w,this._x=y*a+t*this._x,this._y=y*o+t*this._y,this._z=y*l+t*this._z,this.normalize(),this}const h=Math.sqrt(d),g=Math.atan2(h,f),v=Math.sin((1-t)*g)/h,x=Math.sin(t*g)/h;return this._w=u*v+this._w*x,this._x=a*v+this._x*x,this._y=o*v+this._y*x,this._z=l*v+this._z*x,this._onChangeCallback(),this}slerpQuaternions(e,t,a){return this.copy(e).slerp(t,a)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),a=Math.random(),o=Math.sqrt(1-a),l=Math.sqrt(a);return this.set(o*Math.sin(e),o*Math.cos(e),l*Math.sin(t),l*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class le{constructor(e=0,t=0,a=0){le.prototype.isVector3=!0,this.x=e,this.y=t,this.z=a}set(e,t,a){return a===void 0&&(a=this.z),this.x=e,this.y=t,this.z=a,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(Yv.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Yv.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,a=this.y,o=this.z,l=e.elements;return this.x=l[0]*t+l[3]*a+l[6]*o,this.y=l[1]*t+l[4]*a+l[7]*o,this.z=l[2]*t+l[5]*a+l[8]*o,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,a=this.y,o=this.z,l=e.elements,u=1/(l[3]*t+l[7]*a+l[11]*o+l[15]);return this.x=(l[0]*t+l[4]*a+l[8]*o+l[12])*u,this.y=(l[1]*t+l[5]*a+l[9]*o+l[13])*u,this.z=(l[2]*t+l[6]*a+l[10]*o+l[14])*u,this}applyQuaternion(e){const t=this.x,a=this.y,o=this.z,l=e.x,u=e.y,f=e.z,d=e.w,h=2*(u*o-f*a),g=2*(f*t-l*o),v=2*(l*a-u*t);return this.x=t+d*h+u*v-f*g,this.y=a+d*g+f*h-l*v,this.z=o+d*v+l*g-u*h,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,a=this.y,o=this.z,l=e.elements;return this.x=l[0]*t+l[4]*a+l[8]*o,this.y=l[1]*t+l[5]*a+l[9]*o,this.z=l[2]*t+l[6]*a+l[10]*o,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Tt(this.x,e.x,t.x),this.y=Tt(this.y,e.y,t.y),this.z=Tt(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Tt(this.x,e,t),this.y=Tt(this.y,e,t),this.z=Tt(this.z,e,t),this}clampLength(e,t){const a=this.length();return this.divideScalar(a||1).multiplyScalar(Tt(a,e,t))}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}
vendor: 4,865 bytes, line 64
64round(){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(e){return this.x*e.x+this.y*e.y+this.z*e.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(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,a){return this.x=e.x+(t.x-e.x)*a,this.y=e.y+(t.y-e.y)*a,this.z=e.z+(t.z-e.z)*a,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const a=e.x,o=e.y,l=e.z,u=t.x,f=t.y,d=t.z;return this.x=o*d-l*f,this.y=l*u-a*d,this.z=a*f-o*u,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const a=e.dot(this)/t;return this.copy(e).multiplyScalar(a)}projectOnPlane(e){return e0.copy(this).projectOnVector(e),this.sub(e0)}reflect(e){return this.sub(e0.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const a=this.dot(e)/t;return Math.acos(Tt(a,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,a=this.y-e.y,o=this.z-e.z;return t*t+a*a+o*o}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,a){const o=Math.sin(t)*e;return this.x=o*Math.sin(a),this.y=Math.cos(t)*e,this.z=o*Math.cos(a),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,a){return this.x=e*Math.sin(t),this.y=a,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),a=this.setFromMatrixColumn(e,1).length(),o=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=a,this.z=o,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,a=Math.sqrt(1-t*t);return this.x=a*Math.cos(e),this.y=t,this.z=a*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const e0=new le,Yv=new yc;class ht{constructor(e,t,a,o,l,u,f,d,h){ht.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,a,o,l,u,f,d,h)}set(e,t,a,o,l,u,f,d,h){const g=this.elements;return g[0]=e,g[1]=o,g[2]=f,g[3]=t,g[4]=l,g[5]=d,g[6]=a,g[7]=u,g[8]=h,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,a=e.elements;return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],this}extractBasis(e,t,a){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),a.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const a=e.elements,o=t.elements,l=this.elements,u=a[0],f=a[3],d=a[6],h=a[1],g=a[4],v=a[7],x=a[2],y=a[5],b=a[8],w=o[0],M=o[3],S=o[6],N=o[1],T=o[4],R=o[7],P=o[2],I=o[5],F=o[8];return l[0]=u*w+f*N+d*P,l[3]=u*M+f*T+d*I,l[6]=u*S+f*R+d*F,l[1]=h*w+g*N+v*P,l[4]=h*M+g*T+v*I,l[7]=h*S+g*R+v*F,l[2]=x*w+y*N+b*P,l[5]=x*M+y*T+b*I,l[8]=x*S+y*R+b*F,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],a=e[1],o=e[2],l=e[3],u=e[4],f=e[5],d=e[6],h=e[7],g=e[8];return t*u*g-t*f*h-a*l*g+a*f*d+o*l*h-o*u*d}invert(){const e=this.elements,t=e[0],a=e[1],o=e[2],l=e[3],u=e[4],f=e[5],d=e[6],h=e[7],g=e[8],v=g*u-f*h,x=f*d-g*l,y=h*l-u*d,b=t*v+a*x+o*y;if(b===0)return this.set(0,0,0,0,0,0,0,0,0);const w=1/b;return e[0]=v*w,e[1]=(o*h-g*a)*w,e[2]=(f*a-o*u)*w,e[3]=x*w,e[4]=(g*t-o*d)*w,e[5]=(o*l-f*t)*w,e[6]=y*w,e[7]=(a
vendor: 4,346 bytes, line 64
64*d-h*t)*w,e[8]=(u*t-a*l)*w,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,a,o,l,u,f){const d=Math.cos(l),h=Math.sin(l);return this.set(a*d,a*h,-a*(d*u+h*f)+u+e,-o*h,o*d,-o*(-h*u+d*f)+f+t,0,0,1),this}scale(e,t){return this.premultiply(t0.makeScale(e,t)),this}rotate(e){return this.premultiply(t0.makeRotation(-e)),this}translate(e,t){return this.premultiply(t0.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),a=Math.sin(e);return this.set(t,-a,0,a,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,a=e.elements;for(let o=0;o<9;o++)if(t[o]!==a[o])return!1;return!0}fromArray(e,t=0){for(let a=0;a<9;a++)this.elements[a]=e[a+t];return this}toArray(e=[],t=0){const a=this.elements;return e[t]=a[0],e[t+1]=a[1],e[t+2]=a[2],e[t+3]=a[3],e[t+4]=a[4],e[t+5]=a[5],e[t+6]=a[6],e[t+7]=a[7],e[t+8]=a[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const t0=new ht;function D_(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function lc(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function Tb(){const n=lc("canvas");return n.style.display="block",n}const Zv={};function bo(n){n in Zv||(Zv[n]=!0,console.warn(n))}function Cb(n,e,t){return new Promise(function(a,o){function l(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:o();break;case n.TIMEOUT_EXPIRED:setTimeout(l,t);break;default:a()}}setTimeout(l,t)})}function Ab(n){const e=n.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function Rb(n){const e=n.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const Kv=new ht().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),Qv=new ht().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Nb(){const n={enabled:!0,workingColorSpace:Ro,spaces:{},convert:function(o,l,u){return this.enabled===!1||l===u||!l||!u||(this.spaces[l].transfer===kt&&(o.r=Ls(o.r),o.g=Ls(o.g),o.b=Ls(o.b)),this.spaces[l].primaries!==this.spaces[u].primaries&&(o.applyMatrix3(this.spaces[l].toXYZ),o.applyMatrix3(this.spaces[u].fromXYZ)),this.spaces[u].transfer===kt&&(o.r=Eo(o.r),o.g=Eo(o.g),o.b=Eo(o.b))),o},workingToColorSpace:function(o,l){return this.convert(o,this.workingColorSpace,l)},colorSpaceToWorking:function(o,l){return this.convert(o,l,this.workingColorSpace)},getPrimaries:function(o){return this.spaces[o].primaries},getTransfer:function(o){return o===Ca?bf:this.spaces[o].transfer},getLuminanceCoefficients:function(o,l=this.workingColorSpace){return o.fromArray(this.spaces[l].luminanceCoefficients)},define:function(o){Object.assign(this.spaces,o)},_getMatrix:function(o,l,u){return o.copy(this.spaces[l].toXYZ).multiply(this.spaces[u].fromXYZ)},_getDrawingBufferColorSpace:function(o){return this.spaces[o].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(o=this.workingColorSpace){return this.spaces[o].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(o,l){return bo("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(o,l)},toWorkingColorSpace:function(o,l){return bo("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),n.colorSpaceToWorking(o,l)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],a=[.3127,.329];return n.define({[Ro]:{primaries:e,whitePoint:a,transfer:bf,toXYZ:Kv,fromXYZ:Qv,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:hi},outputColorSpaceConfig:{drawingBufferColorSpace:hi}},[hi]:{primaries:e,whitePoint:a,transfer:kt,toXYZ:Kv,fromXYZ:Qv,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:hi}}}),n}const Lt=Nb();function Ls(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}
vendor: 28,760 bytes, line 64
64function Eo(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let to;class Lb{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let a;if(e instanceof HTMLCanvasElement)a=e;else{to===void 0&&(to=lc("canvas")),to.width=e.width,to.height=e.height;const o=to.getContext("2d");e instanceof ImageData?o.putImageData(e,0,0):o.drawImage(e,0,0,e.width,e.height),a=to}return a.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=lc("canvas");t.width=e.width,t.height=e.height;const a=t.getContext("2d");a.drawImage(e,0,0,e.width,e.height);const o=a.getImageData(0,0,e.width,e.height),l=o.data;for(let u=0;u<l.length;u++)l[u]=Ls(l[u]/255)*255;return a.putImageData(o,0,0),t}else if(e.data){const t=e.data.slice(0);for(let a=0;a<t.length;a++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[a]=Math.floor(Ls(t[a]/255)*255):t[a]=Ls(t[a]);return{data:t,width:e.width,height:e.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}let Db=0;class xm{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:Db++}),this.uuid=_c(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){const t=this.data;return t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight):t!==null?e.set(t.width,t.height,t.depth||0):e.set(0,0,0),e}set needsUpdate(e){e===!0&&this.version++}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];const a={uuid:this.uuid,url:""},o=this.data;if(o!==null){let l;if(Array.isArray(o)){l=[];for(let u=0,f=o.length;u<f;u++)o[u].isDataTexture?l.push(n0(o[u].image)):l.push(n0(o[u]))}else l=n0(o);a.url=l}return t||(e.images[this.uuid]=a),a}}function n0(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?Lb.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let Ub=0;const i0=new le;class Wn extends Io{constructor(e=Wn.DEFAULT_IMAGE,t=Wn.DEFAULT_MAPPING,a=mr,o=mr,l=Xi,u=gr,f=Oi,d=Us,h=Wn.DEFAULT_ANISOTROPY,g=Ca){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Ub++}),this.uuid=_c(),this.name="",this.source=new xm(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=a,this.wrapT=o,this.magFilter=l,this.minFilter=u,this.anisotropy=h,this.format=f,this.internalFormat=null,this.type=d,this.offset=new St(0,0),this.repeat=new St(1,1),this.center=new St(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new ht,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=g,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(e&&e.depth&&e.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(i0).x}get height(){return this.source.getSize(i0).y}get depth(){return this.source.getSize(i0).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const a=e[t];if(a===void 0){console.warn(`THREE.Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const o=this[t];if(o===void 0){console.warn(`THREE.Texture.setValues(): property '${t}' does not exist.`);continue}o&&a&&o.isVector2&&a.isVector2||o&&a&&o.isVector3&&a.isVector3||o&&a&&o.isMatrix3&&a.isMatrix3?o.copy(a):this[t]=a}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const a={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(a.userData=this.userData),t||(e.textures[this.uuid]=a),a}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==M_)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case sp:e.x=e.x-Math.floor(e.x);break;case mr:e.x=e.x<0?0:1;break;case ap:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case sp:e.y=e.y-Math.floor(e.y);break;case mr:e.y=e.y<0?0:1;break;case ap:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}Wn.DEFAULT_IMAGE=null;Wn.DEFAULT_MAPPING=M_;Wn.DEFAULT_ANISOTROPY=1;class cn{constructor(e=0,t=0,a=0,o=1){cn.prototype.isVector4=!0,this.x=e,this.y=t,this.z=a,this.w=o}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,a,o){return this.x=e,this.y=t,this.z=a,this.w=o,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){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: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,a=this.y,o=this.z,l=this.w,u=e.elements;return this.x=u[0]*t+u[4]*a+u[8]*o+u[12]*l,this.y=u[1]*t+u[5]*a+u[9]*o+u[13]*l,this.z=u[2]*t+u[6]*a+u[10]*o+u[14]*l,this.w=u[3]*t+u[7]*a+u[11]*o+u[15]*l,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,a,o,l;const d=e.elements,h=d[0],g=d[4],v=d[8],x=d[1],y=d[5],b=d[9],w=d[2],M=d[6],S=d[10];if(Math.abs(g-x)<.01&&Math.abs(v-w)<.01&&Math.abs(b-M)<.01){if(Math.abs(g+x)<.1&&Math.abs(v+w)<.1&&Math.abs(b+M)<.1&&Math.abs(h+y+S-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const T=(h+1)/2,R=(y+1)/2,P=(S+1)/2,I=(g+x)/4,F=(v+w)/4,V=(b+M)/4;return T>R&&T>P?T<.01?(a=0,o=.707106781,l=.707106781):(a=Math.sqrt(T),o=I/a,l=F/a):R>P?R<.01?(a=.707106781,o=0,l=.707106781):(o=Math.sqrt(R),a=I/o,l=V/o):P<.01?(a=.707106781,o=.707106781,l=0):(l=Math.sqrt(P),a=F/l,o=V/l),this.set(a,o,l,t),this}let N=Math.sqrt((M-b)*(M-b)+(v-w)*(v-w)+(x-g)*(x-g));return Math.abs(N)<.001&&(N=1),this.x=(M-b)/N,this.y=(v-w)/N,this.z=(x-g)/N,this.w=Math.acos((h+y+S-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Tt(this.x,e.x,t.x),this.y=Tt(this.y,e.y,t.y),this.z=Tt(this.z,e.z,t.z),this.w=Tt(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Tt(this.x,e,t),this.y=Tt(this.y,e,t),this.z=Tt(this.z,e,t),this.w=Tt(this.w,e,t),this}clampLength(e,t){const a=this.length();return this.divideScalar(a||1).multiplyScalar(Tt(a,e,t))}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(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.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(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,a){return this.x=e.x+(t.x-e.x)*a,this.y=e.y+(t.y-e.y)*a,this.z=e.z+(t.z-e.z)*a,this.w=e.w+(t.w-e.w)*a,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),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 Pb extends Io{constructor(e=1,t=1,a={}){super(),a=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Xi,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},a),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=a.depth,this.scissor=new cn(0,0,e,t),this.scissorTest=!1,this.viewport=new cn(0,0,e,t);const o={width:e,height:t,depth:a.depth},l=new Wn(o);this.textures=[];const u=a.count;for(let f=0;f<u;f++)this.textures[f]=l.clone(),this.textures[f].isRenderTargetTexture=!0,this.textures[f].renderTarget=this;this._setTextureOptions(a),this.depthBuffer=a.depthBuffer,this.stencilBuffer=a.stencilBuffer,this.resolveDepthBuffer=a.resolveDepthBuffer,this.resolveStencilBuffer=a.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=a.depthTexture,this.samples=a.samples,this.multiview=a.multiview}_setTextureOptions(e={}){const t={minFilter:Xi,generateMipmaps:!1,flipY:!1,internalFormat:null};e.mapping!==void 0&&(t.mapping=e.mapping),e.wrapS!==void 0&&(t.wrapS=e.wrapS),e.wrapT!==void 0&&(t.wrapT=e.wrapT),e.wrapR!==void 0&&(t.wrapR=e.wrapR),e.magFilter!==void 0&&(t.magFilter=e.magFilter),e.minFilter!==void 0&&(t.minFilter=e.minFilter),e.format!==void 0&&(t.format=e.format),e.type!==void 0&&(t.type=e.type),e.anisotropy!==void 0&&(t.anisotropy=e.anisotropy),e.colorSpace!==void 0&&(t.colorSpace=e.colorSpace),e.flipY!==void 0&&(t.flipY=e.flipY),e.generateMipmaps!==void 0&&(t.generateMipmaps=e.generateMipmaps),e.internalFormat!==void 0&&(t.internalFormat=e.internalFormat);for(let a=0;a<this.textures.length;a++)this.textures[a].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,a=1){if(this.width!==e||this.height!==t||this.depth!==a){this.width=e,this.height=t,this.depth=a;for(let o=0,l=this.textures.length;o<l;o++)this.textures[o].image.width=e,this.textures[o].image.height=t,this.textures[o].image.depth=a,this.textures[o].isArrayTexture=this.textures[o].image.depth>1;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,a=e.textures.length;t<a;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;const o=Object.assign({},e.textures[t].image);this.textures[t].source=new xm(o)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Mr extends Pb{constructor(e=1,t=1,a={}){super(e,t,a),this.isWebGLRenderTarget=!0}}class U_ extends Wn{constructor(e=null,t=1,a=1,o=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:a,depth:o},this.magFilter=Ii,this.minFilter=Ii,this.wrapR=mr,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Ob extends Wn{constructor(e=null,t=1,a=1,o=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:a,depth:o},this.magFilter=Ii,this.minFilter=Ii,this.wrapR=mr,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Sc{constructor(e=new le(1/0,1/0,1/0),t=new le(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,a=e.length;t<a;t+=3)this.expandByPoint(Ri.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,a=e.count;t<a;t++)this.expandByPoint(Ri.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,a=e.length;t<a;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const a=Ri.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(a),this.max.copy(e).add(a),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const a=e.geometry;if(a!==void 0){const l=a.getAttribute("position");if(t===!0&&l!==void 0&&e.isInstancedMesh!==!0)for(let u=0,f=l.count;u<f;u++)e.isMesh===!0?e.getVertexPosition(u,Ri):Ri.fromBufferAttribute(l,u),Ri.applyMatrix4(e.matrixWorld),this.expandByPoint(Ri);else e.boundingBox!==void 0?(e.boundingBox===null&&e.computeBoundingBox(),zu.copy(e.boundingBox)):(a.boundingBox===null&&a.computeBoundingBox(),zu.copy(a.boundingBox)),zu.applyMatrix4(e.matrixWorld),this.union(zu)}const o=e.children;for(let l=0,u=o.length;l<u;l++)this.expandByObject(o[l],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Ri),Ri.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,a;return e.normal.x>0?(t=e.normal.x*this.min.x,a=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,a=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,a+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,a+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,a+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,a+=e.normal.z*this.min.z),t<=-e.constant&&a>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Fl),Vu.subVectors(this.max,Fl),no.subVectors(e.a,Fl),io.subVectors(e.b,Fl),so.subVectors(e.c,Fl),_a.subVectors(io,no),ya.subVectors(so,io),tr.subVectors(no,so);let t=[0,-_a.z,_a.y,0,-ya.z,ya.y,0,-tr.z,tr.y,_a.z,0,-_a.x,ya.z,0,-ya.x,tr.z,0,-tr.x,-_a.y,_a.x,0,-ya.y,ya.x,0,-tr.y,tr.x,0];return!s0(t,no,io,so,Vu)||(t=[1,0,0,0,1,0,0,0,1],!s0(t,no,io,so,Vu))?!1:(ju.crossVectors(_a,ya),t=[ju.x,ju.y,ju.z],s0(t,no,io,so,Vu))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Ri).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Ri).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Ss[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Ss[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Ss[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Ss[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Ss[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Ss[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Ss[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Ss[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Ss),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const Ss=[new le,new le,new le,new le,new le,new le,new le,new le],Ri=new le,zu=new Sc,no=new le,io=new le,so=new le,_a=new le,ya=new le,tr=new le,Fl=new le,Vu=new le,ju=new le,nr=new le;function s0(n,e,t,a,o){for(let l=0,u=n.length-3;l<=u;l+=3){nr.fromArray(n,l);const f=o.x*Math.abs(nr.x)+o.y*Math.abs(nr.y)+o.z*Math.abs(nr.z),d=e.dot(nr),h=t.dot(nr),g=a.dot(nr);if(Math.max(-Math.max(d,h,g),Math.min(d,h,g))>f)return!1}return!0}const Ib=new Sc,zl=new le,a0=new le;class _m{constructor(e=new le,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const a=this.center;t!==void 0?a.copy(t):Ib.setFromPoints(e).getCenter(a);let o=0;for(let l=0,u=e.length;l<u;l++)o=Math.max(o,a.distanceToSquared(e[l]));return this.radius=Math.sqrt(o),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const a=this.center.distanceToSquared(e);return t.copy(e),a>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;zl.subVectors(e,this.center);const t=zl.lengthSq();if(t>this.radius*this.radius){const a=Math.sqrt(t),o=(a-this.radius)*.5;this.center.addScaledVector(zl,o/a),this.radius+=o}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(a0.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(zl.copy(e.center).add(a0)),this.expandByPoint(zl.copy(e.center).sub(a0))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const Ms=new le,r0=new le,Hu=new le,Sa=new le,o0=new le,ku=new le,l0=new le;class Bb{constructor(e=new le,t=new le(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Ms)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const a=t.dot(this.direction);return a<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,a)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Ms.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Ms.copy(this.origin).addScaledVector(this.direction,t),Ms.distanceToSquared(e))}distanceSqToSegment(e,t,a,o){r0.copy(e).add(t).multiplyScalar(.5),Hu.copy(t).sub(e).normalize(),Sa.copy(this.origin).sub(r0);const l=e.distanceTo(t)*.5,u=-this.direction.dot(Hu),f=Sa.dot(this.direction),d=-Sa.dot(Hu),h=Sa.lengthSq(),g=Math.abs(1-u*u);let v,x,y,b;if(g>0)if(v=u*d-f,x=u*f-d,b=l*g,v>=0)if(x>=-b)if(x<=b){const w=1/g;v*=w,x*=w,y=v*(v+u*x+2*f)+x*(u*v+x+2*d)+h}else x=l,v=Math.max(0,-(u*x+f)),y=-v*v+x*(x+2*d)+h;else x=-l,v=Math.max(0,-(u*x+f)),y=-v*v+x*(x+2*d)+h;else x<=-b?(v=Math.max(0,-(-u*l+f)),x=v>0?-l:Math.min(Math.max(-l,-d),l),y=-v*v+x*(x+2*d)+h):x<=b?(v=0,x=Math.min(Math.max(-l,-d),l),y=x*(x+2*d)+h):(v=Math.max(0,-(u*l+f)),x=v>0?l:Math.min(Math.max(-l,-d),l),y=-v*v+x*(x+2*d)+h);else x=u>0?-l:l,v=Math.max(0,-(u*x+f)),y=-v*v+x*(x+2*d)+h;return a&&a.copy(this.origin).addScaledVector(this.direction,v),o&&o.copy(r0).addScaledVector(Hu,x),y}intersectSphere(e,t){Ms.subVectors(e.center,this.origin);const a=Ms.dot(this.direction),o=Ms.dot(Ms)-a*a,l=e.radius*e.radius;if(o>l)return null;const u=Math.sqrt(l-o),f=a-u,d=a+u;return d<0?null:f<0?this.at(d,t):this.at(f,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const a=-(this.origin.dot(e.normal)+e.constant)/t;return a>=0?a:null}intersectPlane(e,t){const a=this.distanceToPlane(e);return a===null?null:this.at(a,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let a,o,l,u,f,d;const h=1/this.direction.x,g=1/this.direction.y,v=1/this.direction.z,x=this.origin;return h>=0?(a=(e.min.x-x.x)*h,o=(e.max.x-x.x)*h):(a=(e.max.x-x.x)*h,o=(e.min.x-x.x)*h),g>=0?(l=(e.min.y-x.y)*g,u=(e.max.y-x.y)*g):(l=(e.max.y-x.y)*g,u=(e.min.y-x.y)*g),a>u||l>o||((l>a||isNaN(a))&&(a=l),(u<o||isNaN(o))&&(o=u),v>=0?(f=(e.min.z-x.z)*v,d=(e.max.z-x.z)*v):(f=(e.max.z-x.z)*v,d=(e.min.z-x.z)*v),a>d||f>o)||((f>a||a!==a)&&(a=f),(d<o||o!==o)&&(o=d),o<0)?null:this.at(a>=0?a:o,t)}intersectsBox(e){return this.intersectBox(e,Ms)!==null}intersectTriangle(e,t,a,o,l){o0.subVectors(t,e),ku.subVectors(a,e),l0.crossVectors(o0,ku);let u=this.direction.dot(l0),f;if(u>0){if(o)return null;f=1}else if(u<0)f=-1,u=-u;else return null;Sa.subVectors(this.origin,e);const d=f*this.direction.dot(ku.crossVectors(Sa,ku));if(d<0)return null;const h=f*this.direction.dot(o0.cross(Sa));if(h<0||d+h>u)return null;const g=-f*Sa.dot(l0);return g<0?null:this.at(g/u,l)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class gn{constructor(e,t,a,o,l,u,f,d,h,g,v,x,y,b,w,M){gn.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,a,o,l,u,f,d,h,g,v,x,y,b,w,M)}set(e,t,a,o,l,u,f,d,h,g,v,x,y,b,w,M){const S=this.elements;return S[0]=e,S[4]=t,S[8]=a,S[12]=o,S[1]=l,S[5]=u,S[9]=f,S[13]=d,S[2]=h,S[6]=g,S[10]=v,S[14]=x,S[3]=y,S[7]=b,S[11]=w,S[15]=M,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 gn().fromArray(this.elements)}copy(e){const t=this.elements,a=e.elements;return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],this}copyPosition(e){const t=this.elements,a=e.elements;return t[12]=a[12],t[13]=a[13],t[14]=a[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,a){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),a.setFromMatrixColumn(this,2),this}makeBasis(e,t,a){return this.set(e.x,t.x,a.x,0,e.y,t.y,a.y,0,e.z,t.z,a.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,a=e.elements,o=1/ao.setFromMatrixColumn(e,0).length(),l=1/ao.setFromMatrixColumn(e,1).length(),u=1/ao.setFromMatrixColumn(e,2).length();return t[0]=a[0]*o,t[1]=a[1]*o,t[2]=a[2]*o,t[3]=0,t[4]=a[4]*l,t[5]=a[5]*l,t[6]=a[6]*l,t[7]=0,t[8]=a[8]*u,t[9]=a[9]*u,t[10]=a[10]*u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,a=e.x,o=e.y,l=e.z,u=Math.cos(a),f=Math.sin(a),d=Math.cos(o),h=Math.sin(o),g=Math.cos(l),v=Math.sin(l);if(e.order==="XYZ"){const x=u*g,y=u*v,b=f*g,w=f*v;t[0]=d*g,t[4]=-d*v,t[8]=h,t[1]=y+b*h,t[5]=x-w*h,t[9]=-f*d,t[2]=w-x*h,t[6]=b+y*h,t[10]=u*d}else if(e.order==="YXZ"){const x=d*g,y=d*v,b=h*g,w=h*v;t[0]=x+w*f,t[4]=b*f-y,t[8]=u*h,t[1]=u*v,t[5]=u*g,t[9]=-f,t[2]=y*f-b,t[6]=w+x*f,t[10]=u*d}else if(e.order==="ZXY"){const x=d*g,y=d*v,b=h*g,w=h*v;
vendor: 11,543 bytes, line 64
64t[0]=x-w*f,t[4]=-u*v,t[8]=b+y*f,t[1]=y+b*f,t[5]=u*g,t[9]=w-x*f,t[2]=-u*h,t[6]=f,t[10]=u*d}else if(e.order==="ZYX"){const x=u*g,y=u*v,b=f*g,w=f*v;t[0]=d*g,t[4]=b*h-y,t[8]=x*h+w,t[1]=d*v,t[5]=w*h+x,t[9]=y*h-b,t[2]=-h,t[6]=f*d,t[10]=u*d}else if(e.order==="YZX"){const x=u*d,y=u*h,b=f*d,w=f*h;t[0]=d*g,t[4]=w-x*v,t[8]=b*v+y,t[1]=v,t[5]=u*g,t[9]=-f*g,t[2]=-h*g,t[6]=y*v+b,t[10]=x-w*v}else if(e.order==="XZY"){const x=u*d,y=u*h,b=f*d,w=f*h;t[0]=d*g,t[4]=-v,t[8]=h*g,t[1]=x*v+w,t[5]=u*g,t[9]=y*v-b,t[2]=b*v-y,t[6]=f*g,t[10]=w*v+x}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Fb,e,zb)}lookAt(e,t,a){const o=this.elements;return ui.subVectors(e,t),ui.lengthSq()===0&&(ui.z=1),ui.normalize(),Ma.crossVectors(a,ui),Ma.lengthSq()===0&&(Math.abs(a.z)===1?ui.x+=1e-4:ui.z+=1e-4,ui.normalize(),Ma.crossVectors(a,ui)),Ma.normalize(),Gu.crossVectors(ui,Ma),o[0]=Ma.x,o[4]=Gu.x,o[8]=ui.x,o[1]=Ma.y,o[5]=Gu.y,o[9]=ui.y,o[2]=Ma.z,o[6]=Gu.z,o[10]=ui.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const a=e.elements,o=t.elements,l=this.elements,u=a[0],f=a[4],d=a[8],h=a[12],g=a[1],v=a[5],x=a[9],y=a[13],b=a[2],w=a[6],M=a[10],S=a[14],N=a[3],T=a[7],R=a[11],P=a[15],I=o[0],F=o[4],V=o[8],U=o[12],L=o[1],z=o[5],ce=o[9],ue=o[13],ge=o[2],me=o[6],j=o[10],Z=o[14],Y=o[3],he=o[7],O=o[11],ee=o[15];return l[0]=u*I+f*L+d*ge+h*Y,l[4]=u*F+f*z+d*me+h*he,l[8]=u*V+f*ce+d*j+h*O,l[12]=u*U+f*ue+d*Z+h*ee,l[1]=g*I+v*L+x*ge+y*Y,l[5]=g*F+v*z+x*me+y*he,l[9]=g*V+v*ce+x*j+y*O,l[13]=g*U+v*ue+x*Z+y*ee,l[2]=b*I+w*L+M*ge+S*Y,l[6]=b*F+w*z+M*me+S*he,l[10]=b*V+w*ce+M*j+S*O,l[14]=b*U+w*ue+M*Z+S*ee,l[3]=N*I+T*L+R*ge+P*Y,l[7]=N*F+T*z+R*me+P*he,l[11]=N*V+T*ce+R*j+P*O,l[15]=N*U+T*ue+R*Z+P*ee,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],a=e[4],o=e[8],l=e[12],u=e[1],f=e[5],d=e[9],h=e[13],g=e[2],v=e[6],x=e[10],y=e[14],b=e[3],w=e[7],M=e[11],S=e[15];return b*(+l*d*v-o*h*v-l*f*x+a*h*x+o*f*y-a*d*y)+w*(+t*d*y-t*h*x+l*u*x-o*u*y+o*h*g-l*d*g)+M*(+t*h*v-t*f*y-l*u*v+a*u*y+l*f*g-a*h*g)+S*(-o*f*g-t*d*v+t*f*x+o*u*v-a*u*x+a*d*g)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,a){const o=this.elements;return e.isVector3?(o[12]=e.x,o[13]=e.y,o[14]=e.z):(o[12]=e,o[13]=t,o[14]=a),this}invert(){const e=this.elements,t=e[0],a=e[1],o=e[2],l=e[3],u=e[4],f=e[5],d=e[6],h=e[7],g=e[8],v=e[9],x=e[10],y=e[11],b=e[12],w=e[13],M=e[14],S=e[15],N=v*M*h-w*x*h+w*d*y-f*M*y-v*d*S+f*x*S,T=b*x*h-g*M*h-b*d*y+u*M*y+g*d*S-u*x*S,R=g*w*h-b*v*h+b*f*y-u*w*y-g*f*S+u*v*S,P=b*v*d-g*w*d-b*f*x+u*w*x+g*f*M-u*v*M,I=t*N+a*T+o*R+l*P;if(I===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const F=1/I;return e[0]=N*F,e[1]=(w*x*l-v*M*l-w*o*y+a*M*y+v*o*S-a*x*S)*F,e[2]=(f*M*l-w*d*l+w*o*h-a*M*h-f*o*S+a*d*S)*F,e[3]=(v*d*l-f*x*l-v*o*h+a*x*h+f*o*y-a*d*y)*F,e[4]=T*F,e[5]=(g*M*l-b*x*l+b*o*y-t*M*y-g*o*S+t*x*S)*F,e[6]=(b*d*l-u*M*l-b*o*h+t*M*h+u*o*S-t*d*S)*F,e[7]=(u*x*l-g*d*l+g*o*h-t*x*h-u*o*y+t*d*y)*F,e[8]=R*F,e[9]=(b*v*l-g*w*l-b*a*y+t*w*y+g*a*S-t*v*S)*F,e[10]=(u*w*l-b*f*l+b*a*h-t*w*h-u*a*S+t*f*S)*F,e[11]=(g*f*l-u*v*l-g*a*h+t*v*h+u*a*y-t*f*y)*F,e[12]=P*F,e[13]=(g*w*o-b*v*o+b*a*x-t*w*x-g*a*M+t*v*M)*F,e[14]=(b*f*o-u*w*o-b*a*d+t*w*d+u*a*M-t*f*M)*F,e[15]=(u*v*o-g*f*o+g*a*d-t*v*d-u*a*x+t*f*x)*F,this}scale(e){const t=this.elements,a=e.x,o=e.y,l=e.z;return t[0]*=a,t[4]*=o,t[8]*=l,t[1]*=a,t[5]*=o,t[9]*=l,t[2]*=a,t[6]*=o,t[10]*=l,t[3]*=a,t[7]*=o,t[11]*=l,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],a=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],o=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,a,o))}makeTranslation(e,t,a){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,a,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),a=Math.sin(e);return this.set(1,0,0,0,0,t,-a,0,0,a,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),a=Math.sin(e);return this.set(t,0,a,0,0,1,0,0,-a,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),a=Math.sin(e);return this.set(t,-a,0,0,a,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const a=Math.cos(t),o=Math.sin(t),l=1-a,u=e.x,f=e.y,d=e.z,h=l*u,g=l*f;return this.set(h*u+a,h*f-o*d,h*d+o*f,0,h*f+o*d,g*f+a,g*d-o*u,0,h*d-o*f,g*d+o*u,l*d*d+a,0,0,0,0,1),this}makeScale(e,t,a){return this.set(e,0,0,0,0,t,0,0,0,0,a,0,0,0,0,1),this}makeShear(e,t,a,o,l,u){return this.set(1,a,l,0,e,1,u,0,t,o,1,0,0,0,0,1),this}compose(e,t,a){const o=this.elements,l=t._x,u=t._y,f=t._z,d=t._w,h=l+l,g=u+u,v=f+f,x=l*h,y=l*g,b=l*v,w=u*g,M=u*v,S=f*v,N=d*h,T=d*g,R=d*v,P=a.x,I=a.y,F=a.z;return o[0]=(1-(w+S))*P,o[1]=(y+R)*P,o[2]=(b-T)*P,o[3]=0,o[4]=(y-R)*I,o[5]=(1-(x+S))*I,o[6]=(M+N)*I,o[7]=0,o[8]=(b+T)*F,o[9]=(M-N)*F,o[10]=(1-(x+w))*F,o[11]=0,o[12]=e.x,o[13]=e.y,o[14]=e.z,o[15]=1,this}decompose(e,t,a){const o=this.elements;let l=ao.set(o[0],o[1],o[2]).length();const u=ao.set(o[4],o[5],o[6]).length(),f=ao.set(o[8],o[9],o[10]).length();this.determinant()<0&&(l=-l),e.x=o[12],e.y=o[13],e.z=o[14],Ni.copy(this);const h=1/l,g=1/u,v=1/f;return Ni.elements[0]*=h,Ni.elements[1]*=h,Ni.elements[2]*=h,Ni.elements[4]*=g,Ni.elements[5]*=g,Ni.elements[6]*=g,Ni.elements[8]*=v,Ni.elements[9]*=v,Ni.elements[10]*=v,t.setFromRotationMatrix(Ni),a.x=l,a.y=u,a.z=f,this}makePerspective(e,t,a,o,l,u,f=Rs){const d=this.elements,h=2*l/(t-e),g=2*l/(a-o),v=(t+e)/(t-e),x=(a+o)/(a-o);let y,b;if(f===Rs)y=-(u+l)/(u-l),b=-2*u*l/(u-l);else if(f===Ef)y=-u/(u-l),b=-u*l/(u-l);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+f);return d[0]=h,d[4]=0,d[8]=v,d[12]=0,d[1]=0,d[5]=g,d[9]=x,d[13]=0,d[2]=0,d[6]=0,d[10]=y,d[14]=b,d[3]=0,d[7]=0,d[11]=-1,d[15]=0,this}makeOrthographic(e,t,a,o,l,u,f=Rs){const d=this.elements,h=1/(t-e),g=1/(a-o),v=1/(u-l),x=(t+e)*h,y=(a+o)*g;let b,w;if(f===Rs)b=(u+l)*v,w=-2*v;else if(f===Ef)b=l*v,w=-1*v;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+f);return d[0]=2*h,d[4]=0,d[8]=0,d[12]=-x,d[1]=0,d[5]=2*g,d[9]=0,d[13]=-y,d[2]=0,d[6]=0,d[10]=w,d[14]=-b,d[3]=0,d[7]=0,d[11]=0,d[15]=1,this}equals(e){const t=this.elements,a=e.elements;for(let o=0;o<16;o++)if(t[o]!==a[o])return!1;return!0}fromArray(e,t=0){for(let a=0;a<16;a++)this.elements[a]=e[a+t];return this}toArray(e=[],t=0){const a=this.elements;return e[t]=a[0],e[t+1]=a[1],e[t+2]=a[2],e[t+3]=a[3],e[t+4]=a[4],e[t+5]=a[5],e[t+6]=a[6],e[t+7]=a[7],e[t+8]=a[8],e[t+9]=a[9],e[t+10]=a[10],e[t+11]=a[11],e[t+12]=a[12],e[t+13]=a[13],e[t+14]=a[14],e[t+15]=a[15],e}}const ao=new le,Ni=new gn,Fb=new le(0,0,0),zb=new le(1,1,1),Ma=new le,Gu=new le,ui=new le,$v=new gn,Jv=new yc;class Ps{constructor(e=0,t=0,a=0,o=Ps.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=a,this._order=o}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,a,o=this._order){return this._x=e,this._y=t,this._z=a,this._order=o,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,a=!0){const o=e.elements,l=o[0],u=o[4],f=o[8],d=o[1],h=o[5],g=o[9],v=o[2],x=o[6],y=o[10];switch(t){case"XYZ":this._y=Math.asin(Tt(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(-g,y),this._z=Math.atan2(-u,l)):(this._x=Math.atan2(x,h),this._z=0);break;case"YXZ":this._x=Math.asin(-Tt(g,-1,1)),Math.abs(g)<.9999999?(this._y=Math.atan2(f,y),this._z=Math.atan2(d,h)):(this._y=Math.atan2(-v,l),this._z=0);break;case"ZXY":this._x=Math.asin(Tt(x,-1,1)),Math.abs(x)<.9999999?(this._y=Math.atan2(-v,y),this._z=Math.atan2(-u,h)):(this._y=0,this._z=Math.atan2(d,l));break;case"ZYX":this._y=Math.asin(-Tt(v,-1,1)),Math.abs(v)<.9999999?(this._x=Math.atan2(x,y),this._z=Math.atan2(d,l)):(this._x=0,this._z=Math.atan2(-u,h));break;case"YZX":this._z=Math.asin(Tt(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(-g,h),this._y=Math.atan2(-v,l)):(this._x=0,this._y=Math.atan2(f,y));break;case"XZY":this._z=Math.asin(-Tt(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(x,h),this._y=Math.atan2(f,l)):(this._x=Math.atan2(-g,y),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,a===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,a){return $v.makeRotationFromQuaternion(e),this.setFromRotationMatrix($v,t,a)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Jv.setFromEuler(this),this.setFromQuaternion(Jv,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ps.DEFAULT_ORDER="XYZ";class P_{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!==0}}let Vb=0;const e3=new le,ro=new yc,bs=new gn,Wu=new le,Vl=new le,jb=new le,Hb=new yc,t3=new le(1,0,0),n3=new le(0,1,0),i3=new le(0,0,1),s3={type:"added"},kb={type:"removed"},oo={type:"childadded",child:null},c0={type:"childremoved",child:null};class ti extends Io{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:Vb++}),this.uuid=_c(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=ti.DEFAULT_UP.clone();const e=new le,t=new Ps,a=new yc,o=new le(1,1,1);function l(){a.setFromEuler(t,!1)}function u(){t.setFromQuaternion(a,void 0,!1)}t._onChange(l),a._onChange(u),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:a},scale:{configurable:!0,enumerable:!0,value:o},modelViewMatrix:{value:new gn},normalMatrix:{value:new ht}}),this.matrix=new gn,this.matrixWorld=new gn,this.matrixAutoUpdate=ti.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=ti.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new P_,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}
vendor: 4,289 bytes, line 64
64setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return ro.setFromAxisAngle(e,t),this.quaternion.multiply(ro),this}rotateOnWorldAxis(e,t){return ro.setFromAxisAngle(e,t),this.quaternion.premultiply(ro),this}rotateX(e){return this.rotateOnAxis(t3,e)}rotateY(e){return this.rotateOnAxis(n3,e)}rotateZ(e){return this.rotateOnAxis(i3,e)}translateOnAxis(e,t){return e3.copy(e).applyQuaternion(this.quaternion),this.position.add(e3.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(t3,e)}translateY(e){return this.translateOnAxis(n3,e)}translateZ(e){return this.translateOnAxis(i3,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(bs.copy(this.matrixWorld).invert())}lookAt(e,t,a){e.isVector3?Wu.copy(e):Wu.set(e,t,a);const o=this.parent;this.updateWorldMatrix(!0,!1),Vl.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?bs.lookAt(Vl,Wu,this.up):bs.lookAt(Wu,Vl,this.up),this.quaternion.setFromRotationMatrix(bs),o&&(bs.extractRotation(o.matrixWorld),ro.setFromRotationMatrix(bs),this.quaternion.premultiply(ro.invert()))}add(e){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(s3),oo.child=e,this.dispatchEvent(oo),oo.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let a=0;a<arguments.length;a++)this.remove(arguments[a]);return this}const t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(kb),c0.child=e,this.dispatchEvent(c0),c0.child=null),this}removeFromParent(){const e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),bs.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),bs.multiply(e.parent.matrixWorld)),e.applyMatrix4(bs),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(s3),oo.child=e,this.dispatchEvent(oo),oo.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let a=0,o=this.children.length;a<o;a++){const u=this.children[a].getObjectByProperty(e,t);if(u!==void 0)return u}}getObjectsByProperty(e,t,a=[]){this[e]===t&&a.push(this);const o=this.children;for(let l=0,u=o.length;l<u;l++)o[l].getObjectsByProperty(e,t,a);return a}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Vl,e,jb),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Vl,Hb,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let a=0,o=t.length;a<o;a++)t[a].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);const t=this.children;for(let a=0,o=t.length;a<o;a++)t[a].traverseVisible(e)}traverseAncestors(e){const t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let a=0,o=t.length;a<o;a++)t[a].updateMatrixWorld(e)}updateWorldMatrix(e,t){const a=this.parent;if(e===!0&&a!==null&&a.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix
vendor: 5,435 bytes, line 64
64):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){const o=this.children;for(let l=0,u=o.length;l<u;l++)o[l].updateWorldMatrix(!1,!0)}}toJSON(e){const t=e===void 0||typeof e=="string",a={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},a.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const o={};o.uuid=this.uuid,o.type=this.type,this.name!==""&&(o.name=this.name),this.castShadow===!0&&(o.castShadow=!0),this.receiveShadow===!0&&(o.receiveShadow=!0),this.visible===!1&&(o.visible=!1),this.frustumCulled===!1&&(o.frustumCulled=!1),this.renderOrder!==0&&(o.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(o.userData=this.userData),o.layers=this.layers.mask,o.matrix=this.matrix.toArray(),o.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(o.matrixAutoUpdate=!1),this.isInstancedMesh&&(o.type="InstancedMesh",o.count=this.count,o.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(o.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(o.type="BatchedMesh",o.perObjectFrustumCulled=this.perObjectFrustumCulled,o.sortObjects=this.sortObjects,o.drawRanges=this._drawRanges,o.reservedRanges=this._reservedRanges,o.geometryInfo=this._geometryInfo.map(f=>({...f,boundingBox:f.boundingBox?f.boundingBox.toJSON():void 0,boundingSphere:f.boundingSphere?f.boundingSphere.toJSON():void 0})),o.instanceInfo=this._instanceInfo.map(f=>({...f})),o.availableInstanceIds=this._availableInstanceIds.slice(),o.availableGeometryIds=this._availableGeometryIds.slice(),o.nextIndexStart=this._nextIndexStart,o.nextVertexStart=this._nextVertexStart,o.geometryCount=this._geometryCount,o.maxInstanceCount=this._maxInstanceCount,o.maxVertexCount=this._maxVertexCount,o.maxIndexCount=this._maxIndexCount,o.geometryInitialized=this._geometryInitialized,o.matricesTexture=this._matricesTexture.toJSON(e),o.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(o.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(o.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(o.boundingBox=this.boundingBox.toJSON()));function l(f,d){return f[d.uuid]===void 0&&(f[d.uuid]=d.toJSON(e)),d.uuid}if(this.isScene)this.background&&(this.background.isColor?o.background=this.background.toJSON():this.background.isTexture&&(o.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(o.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){o.geometry=l(e.geometries,this.geometry);const f=this.geometry.parameters;if(f!==void 0&&f.shapes!==void 0){const d=f.shapes;if(Array.isArray(d))for(let h=0,g=d.length;h<g;h++){const v=d[h];l(e.shapes,v)}else l(e.shapes,d)}}if(this.isSkinnedMesh&&(o.bindMode=this.bindMode,o.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(l(e.skeletons,this.skeleton),o.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const f=[];for(let d=0,h=this.material.length;d<h;d++)f.push(l(e.materials,this.material[d]));o.material=f}else o.material=l(e.materials,this.material);if(this.children.length>0){o.children=[];for(let f=0;f<this.children.length;f++)o.children.push(this.children[f].toJSON(e).object)}if(this.animations.length>0){o.animations=[];for(let f=0;f<this.animations.length;f++){const d=this.animations[f];o.animations.push(l(e.animations,d))}}if(t){const f=u(e.geometries),d=u(e.materials),h=u(e.textures),g=u(e.images),v=u(e.shapes),x=u(e.skeletons),y=u(e.animations),b=u(e.nodes);f.length>0&&(a.geometries=f),d.length>0&&(a.materials=d),h.length>0&&(a.textures=h),g.length>0&&(a.images=g),v.length>0&&(a.shapes=v),x.length>0&&(a.skeletons=x),y.length>0&&(a.animations=y),b.length>0&&(a.nodes=b)}return a.object=o,a;function u(f){const d=[];for(const h in f){const g=f[h];delete g.metadata,d.push(g)}return d}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let a=0;a<e.children.length;a++){const o=e.children[a];this.add(o.clone())}return this}}ti.DEFAULT_UP=new le(0,1,0);ti.DEFAULT_MATRIX_AUTO_UPDATE=!0;ti.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const Li=new le,Es=new le,u0=new le,ws=new le,lo=new le,co=new le,a3=new le,f0=new le,d0=new le,h0=new le,p0=new cn,m0=new cn,g0=new cn;class Pi{constructor(e=new le,t=new le,a=new le){this.a=e,this.b=t,this.c=a}static getNormal(e,t,a,o){o.subVectors(a,t),Li.subVectors(e,t),o.cross(Li);const l=o.lengthSq();return l>0?o.multiplyScalar(1/Math.sqrt(l)):o.set(0,0,0)}static getBarycoord(e,t,a,o,l){Li.subVectors(o,t),Es.subVectors(a,t),u0.subVectors(e,t);const u=Li.dot(Li),f=Li.dot(Es),d=Li.dot(u0),h=Es.dot(Es),g=Es.dot(u0),v=u*
vendor: 5,757 bytes, line 64
64h-f*f;if(v===0)return l.set(0,0,0),null;const x=1/v,y=(h*d-f*g)*x,b=(u*g-f*d)*x;return l.set(1-y-b,b,y)}static containsPoint(e,t,a,o){return this.getBarycoord(e,t,a,o,ws)===null?!1:ws.x>=0&&ws.y>=0&&ws.x+ws.y<=1}static getInterpolation(e,t,a,o,l,u,f,d){return this.getBarycoord(e,t,a,o,ws)===null?(d.x=0,d.y=0,"z"in d&&(d.z=0),"w"in d&&(d.w=0),null):(d.setScalar(0),d.addScaledVector(l,ws.x),d.addScaledVector(u,ws.y),d.addScaledVector(f,ws.z),d)}static getInterpolatedAttribute(e,t,a,o,l,u){return p0.setScalar(0),m0.setScalar(0),g0.setScalar(0),p0.fromBufferAttribute(e,t),m0.fromBufferAttribute(e,a),g0.fromBufferAttribute(e,o),u.setScalar(0),u.addScaledVector(p0,l.x),u.addScaledVector(m0,l.y),u.addScaledVector(g0,l.z),u}static isFrontFacing(e,t,a,o){return Li.subVectors(a,t),Es.subVectors(e,t),Li.cross(Es).dot(o)<0}set(e,t,a){return this.a.copy(e),this.b.copy(t),this.c.copy(a),this}setFromPointsAndIndices(e,t,a,o){return this.a.copy(e[t]),this.b.copy(e[a]),this.c.copy(e[o]),this}setFromAttributeAndIndices(e,t,a,o){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,a),this.c.fromBufferAttribute(e,o),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Li.subVectors(this.c,this.b),Es.subVectors(this.a,this.b),Li.cross(Es).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Pi.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Pi.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,a,o,l){return Pi.getInterpolation(e,this.a,this.b,this.c,t,a,o,l)}containsPoint(e){return Pi.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Pi.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const a=this.a,o=this.b,l=this.c;let u,f;lo.subVectors(o,a),co.subVectors(l,a),f0.subVectors(e,a);const d=lo.dot(f0),h=co.dot(f0);if(d<=0&&h<=0)return t.copy(a);d0.subVectors(e,o);const g=lo.dot(d0),v=co.dot(d0);if(g>=0&&v<=g)return t.copy(o);const x=d*v-g*h;if(x<=0&&d>=0&&g<=0)return u=d/(d-g),t.copy(a).addScaledVector(lo,u);h0.subVectors(e,l);const y=lo.dot(h0),b=co.dot(h0);if(b>=0&&y<=b)return t.copy(l);const w=y*h-d*b;if(w<=0&&h>=0&&b<=0)return f=h/(h-b),t.copy(a).addScaledVector(co,f);const M=g*b-y*v;if(M<=0&&v-g>=0&&y-b>=0)return a3.subVectors(l,o),f=(v-g)/(v-g+(y-b)),t.copy(o).addScaledVector(a3,f);const S=1/(M+w+x);return u=w*S,f=x*S,t.copy(a).addScaledVector(lo,u).addScaledVector(co,f)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const O_={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},ba={h:0,s:0,l:0},Xu={h:0,s:0,l:0};function v0(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class Fe{constructor(e,t,a){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,a)}set(e,t,a){if(t===void 0&&a===void 0){const o=e;o&&o.isColor?this.copy(o):typeof o=="number"?this.setHex(o):typeof o=="str
64ing"&&this.setStyle(o)}else this.setRGB(e,t,a);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=hi){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Lt.colorSpaceToWorking(this,t),this}setRGB(e,t,a,o=Lt.workingColorSpace){return this.r=e,this.g=t,this.b=a,Lt.colorSpaceToWorking(this,o),this}setHSL(e,t,a,o=Lt.workingColorSpace){if(e=wb(e,1),t=Tt(t,0,1),a=Tt(a,0,1),t===0)this.r=this.g=this.b=a;else{const l=a<=.5?a*(1+t):a+t-a*t,u=2*a-l;this.r=v0(u,l,e+1/3),this.g=v0(u,l,e),this.b=v0(u,l,e-1/3)}return Lt.colorSpaceToWorking(this,o),this}setStyle(e,t=hi){function a(l){l!==void 0&&parseFloat(l)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let o;if(o=/^(\w+)\(([^\)]*)\)/.exec(e)){let l;const u=o[1],f=o[2];switch(u){case"rgb":case"rgba":if(l=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(f))return a(l[4]),this.setRGB(Math.min(255,parseInt(l[1],10))/255,Math.min(255,parseInt(l[2],10))/255,Math.min(255,parseInt(l[3],10))/255,t);if(l=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(f))return a(l[4]),this.setRGB(Math.min(100,parseInt(l[1],10))/100,Math.min(100,parseInt(l[2],10))/100,Math.min(100,parseInt(l[3],10))/100,t);break;case"hsl":case"hsla":if(l=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(f))return a(l[4]),this.setHSL(parseFloat(l[1])/360,parseFloat(l[2])/100,parseFloat(l[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(o=/^\#([A-Fa-f\d]+)$/.exec(e)){const l=o[1],u=l.length;if(u===3)return this.setRGB(parseInt(l.charAt(0),16)/15,parseInt(l.charAt(1),16)/15,parseInt(l.charAt(2),16)/15,t);if(u===6)return this.setHex(parseInt(l,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=hi){const a=O_[e.toLowerCase()];return a!==void 0?this.setHex(a,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Ls(e.r),this.g=Ls(e.g),this.b=Ls(e.b),this}copyLinearToSRGB(e){return this.r=Eo(e.r),this.g=Eo(e.g),this.b=Eo(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=hi){return Lt.workingToColorSpace(Vn.copy(this),e),Math.round(Tt(Vn.r*255,0,255))*65536+Math.round(Tt(Vn.g*255,0,255))*256+Math.round(Tt(Vn.b*255,0,255))}getHexString(e=hi){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Lt.workingColorSpace){Lt.workingToColorSpace(Vn.copy(this),t);const a=Vn.r,o=Vn.g,l=Vn.b,u=Math.max(a,o,l),f=Math.min(a,o,l);let d,h;const g=(f+u)/2;if(f===u)d=0,h=0;else{const v=u-f;switch(h=g<=.5?v/(u+f):v/(2-u-f),u){case a:d=(o-l)/v+(o<l?6:0);break;case o:d=(l-a)/v+2;break;case l:d=(a-o)/v+4;break}d/=6}return e.h=d,e.s=h,e.l=g,e}getRGB(e,t=Lt.workingColorSpace){return Lt.workingToColorSpace(Vn.copy(this),t),e.r=Vn.r,e.g=Vn.g,e.b=Vn.b,e}getStyle(e=hi){Lt.workingToColorSpace(Vn.copy(this),e);const t=Vn.r,a=Vn.g,o=Vn.b;return e!==hi?`color(${e} ${t.toFixed(3)} ${a.toFixed(3)} ${o.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(a*255)},${Math.round(o*255)})`}offsetHSL(e,t,a){return this.getHSL(ba),this.setHSL(ba.h+e,ba.s+t,ba.l+a)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,a){return this.r=e.r+(t.r-e.r)*a,this.g=e.g+(t.g-e.g)*a,this.b=e.b+(t.b-e.b)*a,this}lerpHSL(e,t){this.getHSL(ba),e.getHSL(Xu);const a=Jh(ba.h,Xu.h,t),o=Jh(ba.s,Xu.s,t),l=Jh(ba.l,Xu.l,t);return this.setHSL(a,o,l),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,a=this.g,o=this.b,l=e.elements;return this.r=l[0]*t+l[3]*a+l[6]*o,this.g=l[1]*t+l[4]*a+l[7]*o,this.b=l[2]*t+l[5]*a+l[8]*o,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const Vn=new Fe;Fe.NAMES=O_;let Gb=0;class If extends Io{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Gb++}),this.uuid=_c(),this.name="",this.type="Material",this.blending=Mo,this.side=Na,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=q0,this.blendDst=Y0,this.blendEquation=dr,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Fe(0,0,0),this.blendAlpha=0,this.depthFunc=To,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Wv,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=eo,this.stencilZFail=eo,this.stencilZPass=eo,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const a=e[t];if(a===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const o=this[t];if(o===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}o&&o.isColor?o.set(a):o&&o.isVector3&&a&&a.isVector3?o.copy(a):this[t]=a}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const a={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};
vendor: 6,463 bytes, line 64
64a.uuid=this.uuid,a.type=this.type,this.name!==""&&(a.name=this.name),this.color&&this.color.isColor&&(a.color=this.color.getHex()),this.roughness!==void 0&&(a.roughness=this.roughness),this.metalness!==void 0&&(a.metalness=this.metalness),this.sheen!==void 0&&(a.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(a.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(a.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(a.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(a.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(a.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(a.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(a.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(a.shininess=this.shininess),this.clearcoat!==void 0&&(a.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(a.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(a.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(a.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(a.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,a.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(a.dispersion=this.dispersion),this.iridescence!==void 0&&(a.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(a.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(a.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(a.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(a.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(a.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(a.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(a.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(a.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(a.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(a.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(a.lightMap=this.lightMap.toJSON(e).uuid,a.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(a.aoMap=this.aoMap.toJSON(e).uuid,a.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(a.bumpMap=this.bumpMap.toJSON(e).uuid,a.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(a.normalMap=this.normalMap.toJSON(e).uuid,a.normalMapType=this.normalMapType,a.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(a.displacementMap=this.displacementMap.toJSON(e).uuid,a.displacementScale=this.displacementScale,a.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(a.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(a.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(a.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(a.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(a.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(a.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(a.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(a.combine=this.combine)),this.envMapRotation!==void 0&&(a.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(a.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(a.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(a.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(a.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(a.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(a.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(a.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(a.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(a.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(a.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(a.size=this.size),this.shadowSide!==null&&(a.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(a.sizeAttenuation=this.sizeAttenuation),this.blending!==Mo&&(a.blending=this.blending),this.side!==Na&&(a.side=this.side),this.vertexColors===!0&&(a.vertexColors=!0),this.opacity<1&&(a.opacity=this.opacity),this.transparent===!0&&(a.transparent=!0),this.blendSrc!==q0&&(a.blendSrc=this.blendSrc),this.blendDst!==Y0&&(a.blendDst=this.blendDst),this.blendEquation!==dr&&(a.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(a.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(a.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(a.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(a.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(a.blendAlpha=this.blendAlpha),this.depthFunc!==To&&(a.depthFunc=this.depthFunc),this.depthTest===!1&&(a.depthTest=this.depthTest),this.depthWrite===!1&&(a.depthWrite=this.depthWrite),this.colorWrite===!1&&(a.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(a.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Wv&&(a.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(a.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(a.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==eo&&(a.stencilFail=this.stencilFail),this.stencilZFail!==eo&&(a.stencilZFail=this.stencilZFail),this.stencilZPass!==eo&&(a.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(a.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(a.rotation=this.rotation),this.polygonOffset===!0&&(a.pol
vendor: 9,781 bytes, line 64
64ygonOffset=!0),this.polygonOffsetFactor!==0&&(a.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(a.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(a.linewidth=this.linewidth),this.dashSize!==void 0&&(a.dashSize=this.dashSize),this.gapSize!==void 0&&(a.gapSize=this.gapSize),this.scale!==void 0&&(a.scale=this.scale),this.dithering===!0&&(a.dithering=!0),this.alphaTest>0&&(a.alphaTest=this.alphaTest),this.alphaHash===!0&&(a.alphaHash=!0),this.alphaToCoverage===!0&&(a.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(a.premultipliedAlpha=!0),this.forceSinglePass===!0&&(a.forceSinglePass=!0),this.wireframe===!0&&(a.wireframe=!0),this.wireframeLinewidth>1&&(a.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(a.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(a.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(a.flatShading=!0),this.visible===!1&&(a.visible=!1),this.toneMapped===!1&&(a.toneMapped=!1),this.fog===!1&&(a.fog=!1),Object.keys(this.userData).length>0&&(a.userData=this.userData);function o(l){const u=[];for(const f in l){const d=l[f];delete d.metadata,u.push(d)}return u}if(t){const l=o(e.textures),u=o(e.images);l.length>0&&(a.textures=l),u.length>0&&(a.images=u)}return a}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let a=null;if(t!==null){const o=t.length;a=new Array(o);for(let l=0;l!==o;++l)a[l]=t[l].clone()}return this.clippingPlanes=a,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class ym extends If{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Fe(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 Ps,this.combine=S_,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const hn=new le,qu=new St;let Wb=0;class qi{constructor(e,t,a=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Wb++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=a,this.usage=Xv,this.updateRanges=[],this.gpuType=As,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,a){e*=this.itemSize,a*=t.itemSize;for(let o=0,l=this.itemSize;o<l;o++)this.array[e+o]=t.array[a+o];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,a=this.count;t<a;t++)qu.fromBufferAttribute(this,t),qu.applyMatrix3(e),this.setXY(t,qu.x,qu.y);else if(this.itemSize===3)for(let t=0,a=this.count;t<a;t++)hn.fromBufferAttribute(this,t),hn.applyMatrix3(e),this.setXYZ(t,hn.x,hn.y,hn.z);return this}applyMatrix4(e){for(let t=0,a=this.count;t<a;t++)hn.fromBufferAttribute(this,t),hn.applyMatrix4(e),this.setXYZ(t,hn.x,hn.y,hn.z);return this}applyNormalMatrix(e){for(let t=0,a=this.count;t<a;t++)hn.fromBufferAttribute(this,t),hn.applyNormalMatrix(e),this.setXYZ(t,hn.x,hn.y,hn.z);return this}transformDirection(e){for(let t=0,a=this.count;t<a;t++)hn.fromBufferAttribute(this,t),hn.transformDirection(e),this.setXYZ(t,hn.x,hn.y,hn.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let a=this.array[e*this.itemSize+t];return this.normalized&&(a=Bl(a,this.array)),a}setComponent(e,t,a){return this.normalized&&(a=Qn(a,this.array)),this.array[e*this.itemSize+t]=a,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=Bl(t,this.array)),t}setX(e,t){return this.normalized&&(t=Qn(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=Bl(t,this.array)),t}setY(e,t){return this.normalized&&(t=Qn(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=Bl(t,this.array)),t}setZ(e,t){return this.normalized&&(t=Qn(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=Bl(t,this.array)),t}setW(e,t){return this.normalized&&(t=Qn(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,a){return e*=this.itemSize,this.normalized&&(t=Qn(t,this.array),a=Qn(a,this.array)),this.array[e+0]=t,this.array[e+1]=a,this}setXYZ(e,t,a,o){return e*=this.itemSize,this.normalized&&(t=Qn(t,this.array),a=Qn(a,this.array),o=Qn(o,this.array)),this.array[e+0]=t,this.array[e+1]=a,this.array[e+2]=o,this}setXYZW(e,t,a,o,l){return e*=this.itemSize,this.normalized&&(t=Qn(t,this.array),a=Qn(a,this.array),o=Qn(o,this.array),l=Qn(l,this.array)),this.array[e+0]=t,this.array[e+1]=a,this.array[e+2]=o,this.array[e+3]=l,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(e.name=this.name),this.usage!==Xv&&(e.usage=this.usage),e}}class I_ extends qi{constructor(e,t,a){super(new Uint16Array(e),t,a)}}class B_ extends qi{constructor(e,t,a){super(new Uint32Array(e),t,a)}}class Yi extends qi{constructor(e,t,a){super(new Float32Array(e),t,a)}}let Xb=0;const Mi=new gn,x0=new ti,uo=new le,fi=new Sc,jl=new Sc,Rn=new le;class Ua extends Io{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Xb++}),this.uuid=_c(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(D_(e)?B_:I_)(e,1):this.index=e,this}setIndirect(e){return this.indirect=e,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,a=0){this.groups.push({start:e,count:t,materialIndex:a})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);const a=this.attributes.normal;if(a!==void 0){const l=new ht().getNormalMatrix(e);a.applyNormalMatrix(l),a.needsUpdate=!0}const o=this.attributes.tangent;return o!==void 0&&(o.transformDirection(e),o.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return Mi.makeRotationFromQuaternion(e),this.applyMatrix4(Mi),this}rotateX(e){return Mi.makeRotationX(e),this.applyMatrix4(Mi),this}rotateY(e){return Mi.makeRotationY(e),this.applyMatrix4(Mi),this}rotateZ(e){return Mi.makeRotationZ(e),this.applyMatrix4(Mi),this}translate(e,t,a){return Mi.makeTranslation(e,t,a),this.applyMatrix4(Mi),this}scale(e,t,a){return Mi.makeScale(e,t,a),this.applyMatrix4(Mi),this}lookAt(e){return x0.lookAt(e),x0.updateMatrix(),this.applyMatrix4(x0.matrix
vendor: 4,742 bytes, line 64
64),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(uo).negate(),this.translate(uo.x,uo.y,uo.z),this}setFromPoints(e){const t=this.getAttribute("position");if(t===void 0){const a=[];for(let o=0,l=e.length;o<l;o++){const u=e[o];a.push(u.x,u.y,u.z||0)}this.setAttribute("position",new Yi(a,3))}else{const a=Math.min(e.length,t.count);for(let o=0;o<a;o++){const l=e[o];t.setXYZ(o,l.x,l.y,l.z||0)}e.length>t.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Sc);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new le(-1/0,-1/0,-1/0),new le(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let a=0,o=t.length;a<o;a++){const l=t[a];fi.setFromBufferAttribute(l),this.morphTargetsRelative?(Rn.addVectors(this.boundingBox.min,fi.min),this.boundingBox.expandByPoint(Rn),Rn.addVectors(this.boundingBox.max,fi.max),this.boundingBox.expandByPoint(Rn)):(this.boundingBox.expandByPoint(fi.min),this.boundingBox.expandByPoint(fi.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new _m);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new le,1/0);return}if(e){const a=this.boundingSphere.center;if(fi.setFromBufferAttribute(e),t)for(let l=0,u=t.length;l<u;l++){const f=t[l];jl.setFromBufferAttribute(f),this.morphTargetsRelative?(Rn.addVectors(fi.min,jl.min),fi.expandByPoint(Rn),Rn.addVectors(fi.max,jl.max),fi.expandByPoint(Rn)):(fi.expandByPoint(jl.min),fi.expandByPoint(jl.max))}fi.getCenter(a);let o=0;for(let l=0,u=e.count;l<u;l++)Rn.fromBufferAttribute(e,l),o=Math.max(o,a.distanceToSquared(Rn));if(t)for(let l=0,u=t.length;l<u;l++){const f=t[l],d=this.morphTargetsRelative;for(let h=0,g=f.count;h<g;h++)Rn.fromBufferAttribute(f,h),d&&(uo.fromBufferAttribute(e,h),Rn.add(uo)),o=Math.max(o,a.distanceToSquared(Rn))}this.boundingSphere.radius=Math.sqrt(o),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const a=t.position,o=t.normal,l=t.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new qi(new Float32Array(4*a.count),4));const u=this.getAttribute("tangent"),f=[],d=[];for(let V=0;V<a.count;V++)f[V]=new le,d[V]=new le;const h=new le,g=new le,v=new le,x=new St,y=new St,b=new St,w=new le,M=new le;function S(V,U,L){h.fromBufferAttribute(a,V),g.fromBufferAttribute(a,U),v.fromBufferAttribute(a,L),x.fromBufferAttribute(l,V),y.fromBufferAttribute(l,U),b.fromBufferAttribute(l,L),g.sub(h),v.sub(h),y.sub(x),b.sub(x);const z=1/(y.x*b.y-b.x*y.y);isFinite(z)&&(w.copy(g).multiplyScalar(b.y).addScaledVector(v,-y.y).multiplyScalar(z),M.copy(v).multiplyScalar(y.x).addScaledVector(g,-b.x).multiplyScalar(z),f[V].add(w),f[U].add(w),f[L].add(w),d[V].add(M),d[U].add(M),d[L].add(M))}let N=this.groups;N.length===0&&(N=[{start:0,count:e.count}]);for(let V=0,U=N.length;V<U;++V){const L=N[V],z=L.start,ce=L.count;for(let ue=z,ge=z+ce;ue<ge;ue+=3)S(e.getX(ue+0),e.getX(ue+1),e.getX(ue+2))}const T=new le,R=new le,P=new le,I=new le;function F(V){P.fromBufferAttribute(o,V),I.copy(P);const U=f[V];T.copy(U),T.sub(P.multiplyScalar(P.dot(U))).normalize(),R.crossVectors(I,U);const z=R.dot(d[V])<0?-1:1;u.setXYZW(V,T.x,T.y,T.z,z)}for(let V=0,U=N.length;V<U;++V){const L=N[V],z=L.start,ce=L.count;for(let ue=z,ge=z+ce;ue<ge;ue+=3)F(e.getX(ue+0)),F(e.getX(ue+1)),F(e.getX(ue+2))}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(t!==void 0){let a=this.getAttribute("normal");if(a===void 0)a=new qi(new Float32Array(t.count*3),3),this.setAttribute("normal",a);else for(let x=0,y=a.count;x<y;x++)a.setXYZ(x,0,0,0);
vendor: 6,299 bytes, line 64
64const o=new le,l=new le,u=new le,f=new le,d=new le,h=new le,g=new le,v=new le;if(e)for(let x=0,y=e.count;x<y;x+=3){const b=e.getX(x+0),w=e.getX(x+1),M=e.getX(x+2);o.fromBufferAttribute(t,b),l.fromBufferAttribute(t,w),u.fromBufferAttribute(t,M),g.subVectors(u,l),v.subVectors(o,l),g.cross(v),f.fromBufferAttribute(a,b),d.fromBufferAttribute(a,w),h.fromBufferAttribute(a,M),f.add(g),d.add(g),h.add(g),a.setXYZ(b,f.x,f.y,f.z),a.setXYZ(w,d.x,d.y,d.z),a.setXYZ(M,h.x,h.y,h.z)}else for(let x=0,y=t.count;x<y;x+=3)o.fromBufferAttribute(t,x+0),l.fromBufferAttribute(t,x+1),u.fromBufferAttribute(t,x+2),g.subVectors(u,l),v.subVectors(o,l),g.cross(v),a.setXYZ(x+0,g.x,g.y,g.z),a.setXYZ(x+1,g.x,g.y,g.z),a.setXYZ(x+2,g.x,g.y,g.z);this.normalizeNormals(),a.needsUpdate=!0}}normalizeNormals(){const e=this.attributes.normal;for(let t=0,a=e.count;t<a;t++)Rn.fromBufferAttribute(e,t),Rn.normalize(),e.setXYZ(t,Rn.x,Rn.y,Rn.z)}toNonIndexed(){function e(f,d){const h=f.array,g=f.itemSize,v=f.normalized,x=new h.constructor(d.length*g);let y=0,b=0;for(let w=0,M=d.length;w<M;w++){f.isInterleavedBufferAttribute?y=d[w]*f.data.stride+f.offset:y=d[w]*g;for(let S=0;S<g;S++)x[b++]=h[y++]}return new qi(x,g,v)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new Ua,a=this.index.array,o=this.attributes;for(const f in o){const d=o[f],h=e(d,a);t.setAttribute(f,h)}const l=this.morphAttributes;for(const f in l){const d=[],h=l[f];for(let g=0,v=h.length;g<v;g++){const x=h[g],y=e(x,a);d.push(y)}t.morphAttributes[f]=d}t.morphTargetsRelative=this.morphTargetsRelative;const u=this.groups;for(let f=0,d=u.length;f<d;f++){const h=u[f];t.addGroup(h.start,h.count,h.materialIndex)}return t}toJSON(){const e={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){const d=this.parameters;for(const h in d)d[h]!==void 0&&(e[h]=d[h]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const a=this.attributes;for(const d in a){const h=a[d];e.data.attributes[d]=h.toJSON(e.data)}const o={};let l=!1;for(const d in this.morphAttributes){const h=this.morphAttributes[d],g=[];for(let v=0,x=h.length;v<x;v++){const y=h[v];g.push(y.toJSON(e.data))}g.length>0&&(o[d]=g,l=!0)}l&&(e.data.morphAttributes=o,e.data.morphTargetsRelative=this.morphTargetsRelative);const u=this.groups;u.length>0&&(e.data.groups=JSON.parse(JSON.stringify(u)));const f=this.boundingSphere;return f!==null&&(e.data.boundingSphere=f.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const a=e.index;a!==null&&this.setIndex(a.clone());const o=e.attributes;for(const h in o){const g=o[h];this.setAttribute(h,g.clone(t))}const l=e.morphAttributes;for(const h in l){const g=[],v=l[h];for(let x=0,y=v.length;x<y;x++)g.push(v[x].clone(t));this.morphAttributes[h]=g}this.morphTargetsRelative=e.morphTargetsRelative;const u=e.groups;for(let h=0,g=u.length;h<g;h++){const v=u[h];this.addGroup(v.start,v.count,v.materialIndex)}const f=e.boundingBox;f!==null&&(this.boundingBox=f.clone());const d=e.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const r3=new gn,ir=new Bb,Yu=new _m,o3=new le,Zu=new le,Ku=new le,Qu=new le,_0=new le,$u=new le,l3=new le,Ju=new le;class pi extends ti{constructor(e=new Ua,t=new ym){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,a=Object.keys(t);if(a.length>0){const o=t[a[0]];if(o!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let l=0,u=o.length;l<u;l++){const f=o[l].name||String(l);this.morphTargetInfluences.push(0),this.morphTargetDictionary[f]=l}}}}getVertexPosition(e,t){const a=this.geometry,o=a.attributes.position,l=a.morphAttributes.position,u=a.morphTargetsRelative;t.fromBufferAttribute(o,e);const f=this.morphTargetInfluences;if(l&&f){$u.set(0,0,0);for(let d=0,h=l.length;d<h;d++){const g=f[d],v=l[d];g!==0&&(_0.fromBufferAttribute(v,e),u?$u.addScaledVector(_0,g):$u.addScaledVector(_0.sub(t),g))}t.add($u)}return t}raycast(e,t){const a=this.geometry,o=this.material,l=this.matrixWorld;o!==void 0&&(a.boundingSphere===null&&a.computeBoundingSphere(),Yu.copy(a.boundingSphere),Yu.applyMatrix4(l),ir.copy(e.ray).recast(e.near),!(Yu.containsPoint(ir.origin)===!1&&(ir.intersectSphere(Yu,o3)===null||ir.origin.distanceToSquared(o3)>(e.far-e.near)**2))&&(r3.copy(l).invert(),ir.copy(e.ray).applyMatrix4(r3),!(a.boundingBox!==null&&ir.intersectsBox(a.boundingBox)===!1)&&this._computeIntersections(e,t,ir)))}_computeIntersections(e,t,a){let o;const l=this.geometry,u=this.material,f=l.index,d=l.attributes.position,h=l.attributes.uv,g=l.attributes.uv1,v=l.attributes.normal,x=l.groups,y=l.drawRange;if(f!==null)if(Array.isArray(u))for(let b=0,w=x.length;b<w;b++){const M=x[b],S=u[M.materialIndex],N=Math.max(M.start,y.start),T=Math.min(f.count,Math.min(M.start+M.count,y.start+y.count));for(let R=N,P=T;R<P;R+=3){const I=f.getX(R),F=f.getX(R+1),V=f.getX(R+2);o=ef(this,S,e,a,h,g,v,I,F,V),o&&(o.faceIndex=Math.floor(R/3),o.face.materialIndex=M.materialIndex,t.push(o))}}else{const b=Math.max(0,y.start),w=Math.min(f.count,y.start+y.count);for(let M=b,S=w;M<S;M+=3){const N=f.getX(M),T=f.getX(M+1),R=f.getX(M+2);o=ef(this,u,e,a,h,g,v,N,T,R),o&&(o.faceIndex=Math.floor(M/3),t.pu
vendor: 7,038 bytes, lines 64-68
64sh(o))}}else if(d!==void 0)if(Array.isArray(u))for(let b=0,w=x.length;b<w;b++){const M=x[b],S=u[M.materialIndex],N=Math.max(M.start,y.start),T=Math.min(d.count,Math.min(M.start+M.count,y.start+y.count));for(let R=N,P=T;R<P;R+=3){const I=R,F=R+1,V=R+2;o=ef(this,S,e,a,h,g,v,I,F,V),o&&(o.faceIndex=Math.floor(R/3),o.face.materialIndex=M.materialIndex,t.push(o))}}else{const b=Math.max(0,y.start),w=Math.min(d.count,y.start+y.count);for(let M=b,S=w;M<S;M+=3){const N=M,T=M+1,R=M+2;o=ef(this,u,e,a,h,g,v,N,T,R),o&&(o.faceIndex=Math.floor(M/3),t.push(o))}}}}function qb(n,e,t,a,o,l,u,f){let d;if(e.side===ei?d=a.intersectTriangle(u,l,o,!0,f):d=a.intersectTriangle(o,l,u,e.side===Na,f),d===null)return null;Ju.copy(f),Ju.applyMatrix4(n.matrixWorld);const h=t.ray.origin.distanceTo(Ju);return h<t.near||h>t.far?null:{distance:h,point:Ju.clone(),object:n}}function ef(n,e,t,a,o,l,u,f,d,h){n.getVertexPosition(f,Zu),n.getVertexPosition(d,Ku),n.getVertexPosition(h,Qu);const g=qb(n,e,t,a,Zu,Ku,Qu,l3);if(g){const v=new le;Pi.getBarycoord(l3,Zu,Ku,Qu,v),o&&(g.uv=Pi.getInterpolatedAttribute(o,f,d,h,v,new St)),l&&(g.uv1=Pi.getInterpolatedAttribute(l,f,d,h,v,new St)),u&&(g.normal=Pi.getInterpolatedAttribute(u,f,d,h,v,new le),g.normal.dot(a.direction)>0&&g.normal.multiplyScalar(-1));const x={a:f,b:d,c:h,normal:new le,materialIndex:0};Pi.getNormal(Zu,Ku,Qu,x.normal),g.face=x,g.barycoord=v}return g}class Mc extends Ua{constructor(e=1,t=1,a=1,o=1,l=1,u=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:a,widthSegments:o,heightSegments:l,depthSegments:u};const f=this;o=Math.floor(o),l=Math.floor(l),u=Math.floor(u);const d=[],h=[],g=[],v=[];let x=0,y=0;b("z","y","x",-1,-1,a,t,e,u,l,0),b("z","y","x",1,-1,a,t,-e,u,l,1),b("x","z","y",1,1,e,a,t,o,u,2),b("x","z","y",1,-1,e,a,-t,o,u,3),b("x","y","z",1,-1,e,t,a,o,l,4),b("x","y","z",-1,-1,e,t,-a,o,l,5),this.setIndex(d),this.setAttribute("position",new Yi(h,3)),this.setAttribute("normal",new Yi(g,3)),this.setAttribute("uv",new Yi(v,2));function b(w,M,S,N,T,R,P,I,F,V,U){const L=R/F,z=P/V,ce=R/2,ue=P/2,ge=I/2,me=F+1,j=V+1;let Z=0,Y=0;const he=new le;for(let O=0;O<j;O++){const ee=O*z-ue;for(let Me=0;Me<me;Me++){const be=Me*L-ce;he[w]=be*N,he[M]=ee*T,he[S]=ge,h.push(he.x,he.y,he.z),he[w]=0,he[M]=0,he[S]=I>0?1:-1,g.push(he.x,he.y,he.z),v.push(Me/F),v.push(1-O/V),Z+=1}}for(let O=0;O<V;O++)for(let ee=0;ee<F;ee++){const Me=x+ee+me*O,be=x+ee+me*(O+1),te=x+(ee+1)+me*(O+1),xe=x+(ee+1)+me*O;d.push(Me,be,xe),d.push(be,te,xe),Y+=6}f.addGroup(y,Y,U),y+=Y,x+=Z}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Mc(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function No(n){const e={};for(const t in n){e[t]={};for(const a in n[t]){const o=n[t][a];o&&(o.isColor||o.isMatrix3||o.isMatrix4||o.isVector2||o.isVector3||o.isVector4||o.isTexture||o.isQuaternion)?o.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][a]=null):e[t][a]=o.clone():Array.isArray(o)?e[t][a]=o.slice():e[t][a]=o}}return e}function kn(n){const e={};for(let t=0;t<n.length;t++){const a=No(n[t]);for(const o in a)e[o]=a[o]}return e}function Yb(n){const e=[];for(let t=0;t<n.length;t++)e.push(n[t].clone());return e}function F_(n){const e=n.getRenderTarget();return e===null?n.outputColorSpace:e.isXRRenderTarget===!0?e.texture.colorSpace:Lt.workingColorSpace}const Zb={clone:No,merge:kn};var Kb=`void main() { 65 gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 66}`,Qb=`void main() { 67 gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 ); 68}`;class Bi extends If{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Kb,this.fragmentShader=Qb,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,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=No(e.uniforms),this.uniformsGroups=Yb(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const o in this.uniforms){const u=this.uniforms[o].value;u&&u.isTexture?t.uniforms[o]={type:"t",value:u.toJSON(e).uuid}:u&&u.isColor?t.uniforms[o]={type:"c",value:u.getHex()}:u&&u.isVector2?t.uniforms[o]={type:"v2",value:u.toArray()}:u&&u.isVector3?t.uniforms[o]={type:"v3",value:u.toArray()}:u&&u.isVector4?t.uniforms[o]={type:"v4",value:u.toArray()}:u&&u.isMatrix3?t.uniforms[o]={type:"m3",value:u.toArray()}:u&&u.isMatrix4?t.uniforms[o]={type:"m4",value:u.toArray()}:t.uniforms[o]={value:u}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const a={};for(const o in this.extensions)this.extensions[o]===!0&&(a[o]=!0);return Object.keys(a).length>0&&(t.extensions=a),t}}class z_ extends ti{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new gn,this.projectionMatrix=new gn,this.projectionMatrixInverse=new gn,this.coordinateSystem=Rs}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Ea=new le,c3=new St,u3=new St;class mn extends z_{constructor(e=50,t=1,a=.1,o=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=a,this.far=o,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Dp*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan($h*.5*this.fov);return .5*this.getFilmHeight()/e}
vendor: 4,156 bytes, line 68
68getEffectiveFOV(){return Dp*2*Math.atan(Math.tan($h*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,a){Ea.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(Ea.x,Ea.y).multiplyScalar(-e/Ea.z),Ea.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),a.set(Ea.x,Ea.y).multiplyScalar(-e/Ea.z)}getViewSize(e,t){return this.getViewBounds(e,c3,u3),t.subVectors(u3,c3)}setViewOffset(e,t,a,o,l,u){this.aspect=e/t,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=e,this.view.fullHeight=t,this.view.offsetX=a,this.view.offsetY=o,this.view.width=l,this.view.height=u,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan($h*.5*this.fov)/this.zoom,a=2*t,o=this.aspect*a,l=-.5*o;const u=this.view;if(this.view!==null&&this.view.enabled){const d=u.fullWidth,h=u.fullHeight;l+=u.offsetX*o/d,t-=u.offsetY*a/h,o*=u.width/d,a*=u.height/h}const f=this.filmOffset;f!==0&&(l+=e*f/this.getFilmWidth()),this.projectionMatrix.makePerspective(l,l+o,t,t-a,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const fo=-90,ho=1;class $b extends ti{constructor(e,t,a){super(),this.type="CubeCamera",this.renderTarget=a,this.coordinateSystem=null,this.activeMipmapLevel=0;const o=new mn(fo,ho,e,t);o.layers=this.layers,this.add(o);const l=new mn(fo,ho,e,t);l.layers=this.layers,this.add(l);const u=new mn(fo,ho,e,t);u.layers=this.layers,this.add(u);const f=new mn(fo,ho,e,t);f.layers=this.layers,this.add(f);const d=new mn(fo,ho,e,t);d.layers=this.layers,this.add(d);const h=new mn(fo,ho,e,t);h.layers=this.layers,this.add(h)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[a,o,l,u,f,d]=t;for(const h of t)this.remove(h);if(e===Rs)a.up.set(0,1,0),a.lookAt(1,0,0),o.up.set(0,1,0),o.lookAt(-1,0,0),l.up.set(0,0,-1),l.lookAt(0,1,0),u.up.set(0,0,1),u.lookAt(0,-1,0),f.up.set(0,1,0),f.lookAt(0,0,1),d.up.set(0,1,0),d.lookAt(0,0,-1);else if(e===Ef)a.up.set(0,-1,0),a.lookAt(-1,0,0),o.up.set(0,-1,0),o.lookAt(1,0,0),l.up.set(0,0,1),l.lookAt(0,1,0),u.up.set(0,0,-1),u.lookAt(0,-1,0),f.up.set(0,-1,0),f.lookAt(0,0,1),d.up.set(0,-1,0),d.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const h of t)this.add(h),h.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:a,activeMipmapLevel:o}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[l,u,f,d,h,g]=this.children,v=e.getRenderTarget(),x=e.getActiveCubeFace(),y=e.getActiveMipmapLevel(),b=e.xr.enabled;e.xr.enabled=!1;const w=a.texture.generateMipmaps;a.texture.generateMipmaps=!1,e.setRenderTarget(a,0,o),e.render(t,l),e.setRenderTarget(a,1,o),e.render(t,u),e.setRenderTarget(a,2,o),e.render(t,f),e.setRenderTarget(a,3,o),e.render(t,d),e.setRenderTarget(a,4,o),e.render(t,h),a.texture.generateMipmaps=w,e.setRenderTarget(a,5,o),e.render(t,g),e.setRenderTarget(v,x,y),e.xr.enabled=b,a.texture.needsPMREMUpdate=!0}}class Sm extends Wn{constructor(e=[],t=Co,a,o,l,u,f,d,h,g){super(e,t,a,o,l,u,f,d,h,g),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Jb extends Mr{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const a={width:e,height:e,depth:1},o=[a,a,a,a,a,a];this.texture=new Sm(o),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace
vendor: 7,226 bytes, lines 68-103
68=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const a={uniforms:{tEquirect:{value:null}},vertexShader:` 69 70 varying vec3 vWorldDirection; 71 72 vec3 transformDirection( in vec3 dir, in mat4 matrix ) { 73 74 return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); 75 76 } 77 78 void main() { 79 80 vWorldDirection = transformDirection( position, modelMatrix ); 81 82 #include <begin_vertex> 83 #include <project_vertex> 84 85 } 86 `,fragmentShader:` 87 88 uniform sampler2D tEquirect; 89 90 varying vec3 vWorldDirection; 91 92 #include <common> 93 94 void main() { 95 96 vec3 direction = normalize( vWorldDirection ); 97 98 vec2 sampleUV = equirectUv( direction ); 99 100 gl_FragColor = texture2D( tEquirect, sampleUV ); 101 102 } 103 `},o=new Mc(5,5,5),l=new Bi({name:"CubemapFromEquirect",uniforms:No(a.uniforms),vertexShader:a.vertexShader,fragmentShader:a.fragmentShader,side:ei,blending:Aa});l.uniforms.tEquirect.value=t;const u=new pi(o,l),f=t.minFilter;return t.minFilter===gr&&(t.minFilter=Xi),new $b(1,10,this).update(e,u),t.minFilter=f,u.geometry.dispose(),u.material.dispose(),this}clear(e,t=!0,a=!0,o=!0){const l=e.getRenderTarget();for(let u=0;u<6;u++)e.setRenderTarget(this,u),e.clear(t,a,o);e.setRenderTarget(l)}}class Yl extends ti{constructor(){super(),this.isGroup=!0,this.type="Group"}}const eE={type:"move"};class y0{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Yl,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 Yl,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new le,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new le),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Yl,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new le,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new le),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const a of e.hand.values())this._getHandJoint(t,a)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,a){let o=null,l=null,u=null;const f=this._targetRay,d=this._grip,h=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(h&&e.hand){u=!0;for(const w of e.hand.values()){const M=t.getJointPose(w,a),S=this._getHandJoint(h,w);M!==null&&(S.matrix.fromArray(M.transform.matrix),S.matrix.decompose(S.position,S.rotation,S.scale),S.matrixWorldNeedsUpdate=!0,S.jointRadius=M.radius),S.visible=M!==null}const g=h.joints["index-finger-tip"],v=h.joints["thumb-tip"],x=g.position.distanceTo(v.position),y=.02,b=.005;h.inputState.pinching&&x>y+b?(h.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!h.inputState.pinching&&x<=y-b&&(h.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else d!==null&&e.gripSpace&&(l=t.getPose(e.gripSpace,a),l!==null&&(d.matrix.fromArray(l.transform.matrix),d.matrix.decompose(d.position,d.rotation,d.scale),d.matrixWorldNeedsUpdate=!0,l.linearVelocity?(d.hasLinearVelocity=!0,d.linearVelocity.copy(l.linearVelocity)):d.hasLinearVelocity=!1,l.angularVelocity?(d.hasAngularVelocity=!0,d.angularVelocity.copy(l.angularVelocity)):d.hasAngularVelocity=!1));f!==null&&(o=t.getPose(e.targetRaySpace,a),o===null&&l!==null&&(o=l),o!==null&&(f.matrix.fromArray(o.transform.matrix),f.matrix.decompose(f.position,f.rotation,f.scale),f.matrixWorldNeedsUpdate=!0,o.linearVelocity?(f.hasLinearVelocity=!0,f.linearVelocity.copy(o.linearVelocity)):f.hasLinearVelocity=!1,o.angularVelocity?(f.hasAngularVelocity=!0,f.angularVelocity.copy(o.angularVelocity)):f.hasAngularVelocity=!1,this.dispatchEvent(eE)))}return f!==null&&(f.visible=o!==null),d!==null&&(d.visible=l!==null),h!==null&&(h.visible=u!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const a=new Yl;a.matrixAutoUpdate=!1,a.visible=!1,e.joints[t.jointName]=a,e.add(a)}return e.joints[t.jointName]}}class zs extends ti{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 Ps,this.environmentIntensity=1,this.environmentRotation=new Ps,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}const S0=new le,tE=new le,nE=new ht;class cr{constructor(e=new le(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,a,o){return this.normal.set(e,t,a),this.constant=o,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,a){const o=S0.subVectors(a,t).cross(tE.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(o,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const a=e.delta(S0),o=this.normal.dot(a);if(o===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;
vendor: 8,994 bytes, line 103
103const l=-(e.start.dot(this.normal)+this.constant)/o;return l<0||l>1?null:t.copy(e.start).addScaledVector(a,l)}intersectsLine(e){const t=this.distanceToPoint(e.start),a=this.distanceToPoint(e.end);return t<0&&a>0||a<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const a=t||nE.getNormalMatrix(e),o=this.coplanarPoint(S0).applyMatrix4(e),l=this.normal.applyMatrix3(a).normalize();return this.constant=-o.dot(l),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const sr=new _m,iE=new St(.5,.5),tf=new le;class V_{constructor(e=new cr,t=new cr,a=new cr,o=new cr,l=new cr,u=new cr){this.planes=[e,t,a,o,l,u]}set(e,t,a,o,l,u){const f=this.planes;return f[0].copy(e),f[1].copy(t),f[2].copy(a),f[3].copy(o),f[4].copy(l),f[5].copy(u),this}copy(e){const t=this.planes;for(let a=0;a<6;a++)t[a].copy(e.planes[a]);return this}setFromProjectionMatrix(e,t=Rs){const a=this.planes,o=e.elements,l=o[0],u=o[1],f=o[2],d=o[3],h=o[4],g=o[5],v=o[6],x=o[7],y=o[8],b=o[9],w=o[10],M=o[11],S=o[12],N=o[13],T=o[14],R=o[15];if(a[0].setComponents(d-l,x-h,M-y,R-S).normalize(),a[1].setComponents(d+l,x+h,M+y,R+S).normalize(),a[2].setComponents(d+u,x+g,M+b,R+N).normalize(),a[3].setComponents(d-u,x-g,M-b,R-N).normalize(),a[4].setComponents(d-f,x-v,M-w,R-T).normalize(),t===Rs)a[5].setComponents(d+f,x+v,M+w,R+T).normalize();else if(t===Ef)a[5].setComponents(f,v,w,T).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),sr.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),sr.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(sr)}intersectsSprite(e){sr.center.set(0,0,0);const t=iE.distanceTo(e.center);return sr.radius=.7071067811865476+t,sr.applyMatrix4(e.matrixWorld),this.intersectsSphere(sr)}intersectsSphere(e){const t=this.planes,a=e.center,o=-e.radius;for(let l=0;l<6;l++)if(t[l].distanceToPoint(a)<o)return!1;return!0}intersectsBox(e){const t=this.planes;for(let a=0;a<6;a++){const o=t[a];if(tf.x=o.normal.x>0?e.max.x:e.min.x,tf.y=o.normal.y>0?e.max.y:e.min.y,tf.z=o.normal.z>0?e.max.z:e.min.z,o.distanceToPoint(tf)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let a=0;a<6;a++)if(t[a].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class j_ extends Wn{constructor(e,t,a=Sr,o,l,u,f=Ii,d=Ii,h,g=rc,v=1){if(g!==rc&&g!==oc)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const x={width:e,height:t,depth:v};super(x,o,l,u,f,d,g,a,h),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new xm(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class Bo extends Ua{constructor(e=1,t=1,a=1,o=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:a,heightSegments:o};const l=e/2,u=t/2,f=Math.floor(a),d=Math.floor(o),h=f+1,g=d+1,v=e/f,x=t/d,y=[],b=[],w=[],M=[];for(let S=0;S<g;S++){const N=S*x-u;for(let T=0;T<h;T++){const R=T*v-l;b.push(R,-N,0),w.push(0,0,1),M.push(T/f),M.push(1-S/d)}}for(let S=0;S<d;S++)for(let N=0;N<f;N++){const T=N+h*S,R=N+h*(S+1),P=N+1+h*(S+1),I=N+1+h*S;y.push(T,R,I),y.push(R,P,I)}this.setIndex(y),this.setAttribute("position",new Yi(b,3)),this.setAttribute("normal",new Yi(w,3)),this.setAttribute("uv",new Yi(M,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Bo(e.width,e.height,e.widthSegments,e.heightSegments)}}class wf extends Ua{constructor(e=1,t=32,a=16,o=0,l=Math.PI*2,u=0,f=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:a,phiStart:o,phiLength:l,thetaStart:u,thetaLength:f},t=Math.max(3,Math.floor(t)),a=Math.max(2,Math.floor(a));const d=Math.min(u+f,Math.PI);let h=0;const g=[],v=new le,x=new le,y=[],b=[],w=[],M=[];for(let S=0;S<=a;S++){const N=[],T=S/a;let R=0;S===0&&u===0?R=.5/t:S===a&&d===Math.PI&&(R=-.5/t);for(let P=0;P<=t;P++){const I=P/t;v.x=-e*Math.cos(o+I*l)*Math.sin(u+T*f),v.y=e*Math.cos(u+T*f),v.z=e*Math.sin(o+I*l)*Math.sin(u+T*f),b.push(v.x,v.y,v.z),x.copy(v).normalize(),w.push(x.x,x.y,x.z),M.push(I+R,1-T),N.push(h++)}g.push(N)}for(let S=0;S<a;S++)for(let N=0;N<t;N++){const T=g[S][N+1],R=g[S][N],P=g[S+1][N],I=g[S+1][N+1];(S!==0||u>0)&&y.push(T,R,I),(S!==a-1||d<Math.PI)&&y.push(R,P,I)}this.setIndex(y),this.setAttribute("position",new Yi(b,3)),this.setAttribute("normal",new Yi(w,3)),this.setAttribute("uv",new Yi(M,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new wf(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class sE extends If{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=pb,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class aE extends If{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const M0={enabled:!1,files:{},add:function(n,e){this.enabled!==!1&&(this.files[n]=e)},get:function(n){if(this.enabled!==!1)return this.files[n]},remove:function(n){delete this.files[n]},clear:function(){this.files={}}};class rE{constructor(e,t,a){const o=this;let l=!1,u=0,f=0,d;const h=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=a,this.itemStart=function(g){f++,l===!1&&o.onStart!==void 0&&o.onStart(g,u,f),l=!0},this.itemEnd=function(g){u++,o.onProgress!==void 0&&o.onProgress(g,u,f),u===f&&(l=!1,o.onLoad!==void 0&&o.onLoad())},this.itemError=function(g){o.onError!==void 0&&o.onError(g)},this.resolveURL=function(g){return d?d(g):g},this.setURLModifier=function(g){return d=g,this},this.addHandler=function(g,v){return h.push(g,v),this},this.removeHandler=function(g){const v=h.indexOf(g);return v!==-1&&h.splice(v,2),this},this.getHandler=function(g){for(let v=0,x=h.length;v<x;v+=2){const y=h[v],b=h[v+1];if(y.global&&(y.lastIndex=0),y.test(g))return b}return null}}}const oE=new rE;class Bf{constructor(e){this.manager=e!==void 0?e:oE,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){const a=this;return new Promise(function(o,l){a.load(e,o,t,l)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}}Bf.DEFAULT_MATERIAL_NAME="__DEFAULT";const po=new WeakMap;class H_ extends Bf{constructor(e){super(e)}load(e,t,a,o){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const l=this,u=M0.get(`image:${e}`);if(u!==void 0){if(u.complete===!0)l.manager.itemStart(e),setTimeout(function(){t&&t(u),l.manager.itemEnd(e)},0);else{let v=po.get(u);v===void 0&&(v=[],po.set(u,v)),v.push({onLoad:t,onError:o})}return u}const f=lc("img");function d(){g(),t&&t(this);const v=po.get(this)||[];for(let x=0;x<v.length;x++){const y=v[x];y.onLoad&&y.onLoad(this)}po.delete(this),l.manager.itemEnd(e)}function h(v){g(),o&&o(v),M0.remove(`image:${e}`);const x=po.get(this)||[];for(let y=0;y<x.length;y++){const b=x[y];b.onError&&b.onError(v)}po.delete(this),l.manager.itemError(e),l.manager.itemEnd(e)}function g(){f.removeEventListener("load",d,!1),f.removeEventListener("error",h,!1)}return f.addEventListener("load",d,!1),f.addEventListener("error",h,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(f.crossOrigin=this.crossOrigin),M0.add(`image:${e}`,f),l.manager.itemStart(e),f.src=e,f}}class Vs extends Bf{constructor(e){super(e)}load(e,t,a,o){const l=new Sm;
vendor: 6,207 bytes, line 103
103l.colorSpace=hi;const u=new H_(this.manager);u.setCrossOrigin(this.crossOrigin),u.setPath(this.path);let f=0;function d(h){u.load(e[h],function(g){l.images[h]=g,f++,f===6&&(l.needsUpdate=!0,t&&t(l))},void 0,o)}for(let h=0;h<e.length;++h)d(h);return l}}class js extends Bf{constructor(e){super(e)}load(e,t,a,o){const l=new Wn,u=new H_(this.manager);return u.setCrossOrigin(this.crossOrigin),u.setPath(this.path),u.load(e,function(f){l.image=f,l.needsUpdate=!0,t!==void 0&&t(l)},a,o),l}}class lE extends ti{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Fe(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}}class cE extends z_{constructor(e=-1,t=1,a=1,o=-1,l=.1,u=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=a,this.bottom=o,this.near=l,this.far=u,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,a,o,l,u){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=e,this.view.fullHeight=t,this.view.offsetX=a,this.view.offsetY=o,this.view.width=l,this.view.height=u,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),a=(this.right+this.left)/2,o=(this.top+this.bottom)/2;let l=a-e,u=a+e,f=o+t,d=o-t;if(this.view!==null&&this.view.enabled){const h=(this.right-this.left)/this.view.fullWidth/this.zoom,g=(this.top-this.bottom)/this.view.fullHeight/this.zoom;l+=h*this.view.offsetX,u=l+h*this.view.width,f-=g*this.view.offsetY,d=f-g*this.view.height}this.projectionMatrix.makeOrthographic(l,u,f,d,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}class Hs extends lE{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class uE extends mn{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class ks{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}class hr{constructor(e){this.value=e}clone(){return new hr(this.value.clone===void 0?this.value:this.value.clone())}}function f3(n,e,t,a){const o=fE(a);switch(t){case T_:return n*e;case A_:return n*e/o.components*o.byteLength;case mm:return n*e/o.components*o.byteLength;case R_:return n*e*2/o.components*o.byteLength;case gm:return n*e*2/o.components*o.byteLength;case C_:return n*e*3/o.components*o.byteLength;case Oi:return n*e*4/o.components*o.byteLength;case vm:return n*e*4/o.components*o.byteLength;case df:case hf:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*8;case pf:case mf:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case op:case cp:return Math.max(n,16)*Math.max(e,8)/4;case rp:case lp:return Math.max(n,8)*Math.max(e,8)/2;case up:case fp:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*8;case dp:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case hp:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case pp:return Math.floor((n+4)/5)*Math.floor((e+3)/4)*16;case mp:return Math.floor((n+4)/5)*Math.floor((e+4)/5)*16;case gp:return Math.floor((n+5)/6)*Math.floor((e+4)/5)*16;case vp:return Math.floor((n+5)/6)*Math.floor((e+5)/6)*16;case xp:return Math.floor((n+7)/8)*Math.floor((e+4)/5)*16;case _p:return Math.floor((n+7)/8)*Math.floor((e+5)/6)*16;case yp:return Math.floor((n+7)/8)*Math.floor((e+7)/8)*16;case Sp:return Math.floor((n+9)/10)*Math.floor((e+4)/5)*16;case Mp:return Math.floor((n+9)/10)*Math.floor((e+5)/6)*16;case bp:return Math.floor((n+9)/10)*Math.floor((e+7)/8)*16;case Ep:return Math.floor((n+9)/10)*Math.floor((e+9)/10)*16;case wp:return Math.floor((n+11)/12)*Math.floor((e+9)/10)*16;case Tp:return Math.floor((n+11)/12)*Math.floor((e+11)/12)*16;case gf:case Cp:case Ap:return Math.ceil(n/4)*Math.ceil(e/4)*16;case N_:case Rp:return Math.ceil(n/4)*Math.ceil(e/4)*8;case Np:case Lp:return Math.ceil(n/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function fE(n){switch(n){case Us:case b_:return{byteLength:1,components:1};case sc:case E_:case xc:return{byteLength:2,components:1};case hm:case pm:return{byteLength:2,components:4};case Sr:case dm:case As:return{byteLength:4,components:1};case w_:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${n}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:fm}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=fm);
vendor: 4,581 bytes, lines 103-166
103/** 104 * @license 105 * Copyright 2010-2025 Three.js Authors 106 * SPDX-License-Identifier: MIT 107 */function k_(){let n=null,e=!1,t=null,a=null;function o(l,u){t(l,u),a=n.requestAnimationFrame(o)}return{start:function(){e!==!0&&t!==null&&(a=n.requestAnimationFrame(o),e=!0)},stop:function(){n.cancelAnimationFrame(a),e=!1},setAnimationLoop:function(l){t=l},setContext:function(l){n=l}}}function dE(n){const e=new WeakMap;function t(f,d){const h=f.array,g=f.usage,v=h.byteLength,x=n.createBuffer();n.bindBuffer(d,x),n.bufferData(d,h,g),f.onUploadCallback();let y;if(h instanceof Float32Array)y=n.FLOAT;else if(typeof Float16Array<"u"&&h instanceof Float16Array)y=n.HALF_FLOAT;else if(h instanceof Uint16Array)f.isFloat16BufferAttribute?y=n.HALF_FLOAT:y=n.UNSIGNED_SHORT;else if(h instanceof Int16Array)y=n.SHORT;else if(h instanceof Uint32Array)y=n.UNSIGNED_INT;else if(h instanceof Int32Array)y=n.INT;else if(h instanceof Int8Array)y=n.BYTE;else if(h instanceof Uint8Array)y=n.UNSIGNED_BYTE;else if(h instanceof Uint8ClampedArray)y=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+h);return{buffer:x,type:y,bytesPerElement:h.BYTES_PER_ELEMENT,version:f.version,size:v}}function a(f,d,h){const g=d.array,v=d.updateRanges;if(n.bindBuffer(h,f),v.length===0)n.bufferSubData(h,0,g);else{v.sort((y,b)=>y.start-b.start);let x=0;for(let y=1;y<v.length;y++){const b=v[x],w=v[y];w.start<=b.start+b.count+1?b.count=Math.max(b.count,w.start+w.count-b.start):(++x,v[x]=w)}v.length=x+1;for(let y=0,b=v.length;y<b;y++){const w=v[y];n.bufferSubData(h,w.start*g.BYTES_PER_ELEMENT,g,w.start,w.count)}d.clearUpdateRanges()}d.onUploadCallback()}function o(f){return f.isInterleavedBufferAttribute&&(f=f.data),e.get(f)}function l(f){f.isInterleavedBufferAttribute&&(f=f.data);const d=e.get(f);d&&(n.deleteBuffer(d.buffer),e.delete(f))}function u(f,d){if(f.isInterleavedBufferAttribute&&(f=f.data),f.isGLBufferAttribute){const g=e.get(f);(!g||g.version<f.version)&&e.set(f,{buffer:f.buffer,type:f.type,bytesPerElement:f.elementSize,version:f.version});return}const h=e.get(f);if(h===void 0)e.set(f,t(f,d));else if(h.version<f.version){if(h.size!==f.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");a(h.buffer,f,d),h.version=f.version}}return{get:o,remove:l,update:u}}var hE=`#ifdef USE_ALPHAHASH 108 if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; 109#endif`,pE=`#ifdef USE_ALPHAHASH 110 const float ALPHA_HASH_SCALE = 0.05; 111 float hash2D( vec2 value ) { 112 return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); 113 } 114 float hash3D( vec3 value ) { 115 return hash2D( vec2( hash2D( value.xy ), value.z ) ); 116 } 117 float getAlphaHashThreshold( vec3 position ) { 118 float maxDeriv = max( 119 length( dFdx( position.xyz ) ), 120 length( dFdy( position.xyz ) ) 121 ); 122 float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); 123 vec2 pixScales = vec2( 124 exp2( floor( log2( pixScale ) ) ), 125 exp2( ceil( log2( pixScale ) ) ) 126 ); 127 vec2 alpha = vec2( 128 hash3D( floor( pixScales.x * position.xyz ) ), 129 hash3D( floor( pixScales.y * position.xyz ) ) 130 ); 131 float lerpFactor = fract( log2( pixScale ) ); 132 float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; 133 float a = min( lerpFactor, 1.0 - lerpFactor ); 134 vec3 cases = vec3( 135 x * x / ( 2.0 * a * ( 1.0 - a ) ), 136 ( x - 0.5 * a ) / ( 1.0 - a ), 137 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) 138 ); 139 float threshold = ( x < ( 1.0 - a ) ) 140 ? ( ( x < a ) ? cases.x : cases.y ) 141 : cases.z; 142 return clamp( threshold , 1.0e-6, 1.0 ); 143 } 144#endif`,mE=`#ifdef USE_ALPHAMAP 145 diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; 146#endif`,gE=`#ifdef USE_ALPHAMAP 147 uniform sampler2D alphaMap; 148#endif`,vE=`#ifdef USE_ALPHATEST 149 #ifdef ALPHA_TO_COVERAGE 150 diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a ); 151 if ( diffuseColor.a == 0.0 ) discard; 152 #else 153 if ( diffuseColor.a < alphaTest ) discard; 154 #endif 155#endif`,xE=`#ifdef USE_ALPHATEST 156 uniform float alphaTest; 157#endif`,_E=`#ifdef USE_AOMAP 158 float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; 159 reflectedLight.indirectDiffuse *= ambientOcclusion; 160 #if defined( USE_CLEARCOAT ) 161 clearcoatSpecularIndirect *= ambientOcclusion; 162 #endif 163 #if defined( USE_SHEEN ) 164 sheenSpecularIndirect *= ambientOcclusion; 165 #endif 166 #if defined( USE_ENVMAP ) && defined( STANDARD )
167 float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); 168 reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); 169 #endif 170#endif`,yE=`#ifdef USE_AOMAP 171 uniform sampler2D aoMap; 172 uniform float aoMapIntensity; 173#endif`,SE=`#ifdef USE_BATCHING 174 #if ! defined( GL_ANGLE_multi_draw ) 175 #define gl_DrawID _gl_DrawID 176 uniform int _gl_DrawID; 177 #endif 178 uniform highp sampler2D batchingTexture; 179 uniform highp usampler2D batchingIdTexture; 180 mat4 getBatchingMatrix( const in float i ) { 181 int size = textureSize( batchingTexture, 0 ).x; 182 int j = int( i ) * 4; 183 int x = j % size; 184 int y = j / size; 185 vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); 186 vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); 187 vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); 188 vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); 189 return mat4( v1, v2, v3, v4 ); 190 } 191 float getIndirectIndex( const in int i ) { 192 int size = textureSize( batchingIdTexture, 0 ).x; 193 int x = i % size; 194 int y = i / size; 195 return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r ); 196 } 197#endif 198#ifdef USE_BATCHING_COLOR 199 uniform sampler2D batchingColorTexture; 200 vec3 getBatchingColor( const in float i ) { 201 int size = textureSize( batchingColorTexture, 0 ).x; 202 int j = int( i ); 203 int x = j % size; 204 int y = j / size; 205 return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb; 206 } 207#endif`,ME=`#ifdef USE_BATCHING 208 mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); 209#endif`,bE=`vec3 transformed = vec3( position ); 210#ifdef USE_ALPHAHASH 211 vPosition = vec3( position ); 212#endif`,EE=`vec3 objectNormal = vec3( normal ); 213#ifdef USE_TANGENT 214 vec3 objectTangent = vec3( tangent.xyz ); 215#endif`,wE=`float G_BlinnPhong_Implicit( ) { 216 return 0.25; 217} 218float D_BlinnPhong( const in float shininess, const in float dotNH ) { 219 return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); 220} 221vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { 222 vec3 halfDir = normalize( lightDir + viewDir ); 223 float dotNH = saturate( dot( normal, halfDir ) ); 224 float dotVH = saturate( dot( viewDir, halfDir ) ); 225 vec3 F = F_Schlick( specularColor, 1.0, dotVH ); 226 float G = G_BlinnPhong_Implicit( ); 227 float D = D_BlinnPhong( shininess, dotNH ); 228 return F * ( G * D ); 229} // validated`,TE=`#ifdef USE_IRIDESCENCE 230 const mat3 XYZ_TO_REC709 = mat3( 231 3.2404542, -0.9692660, 0.0556434, 232 -1.5371385, 1.8760108, -0.2040259, 233 -0.4985314, 0.0415560, 1.0572252 234 ); 235 vec3 Fresnel0ToIor( vec3 fresnel0 ) { 236 vec3 sqrtF0 = sqrt( fresnel0 ); 237 return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); 238 } 239 vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { 240 return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); 241 } 242 float IorToFresnel0( float transmittedIor, float incidentIor ) { 243 return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); 244 } 245 vec3 evalSensitivity( float OPD, vec3 shift ) { 246 float phase = 2.0 * PI * OPD * 1.0e-9; 247 vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); 248 vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); 249 vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); 250 vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); 251 xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); 252 xyz /= 1.0685e-7; 253 vec3 rgb = XYZ_TO_REC709 * xyz; 254 return rgb; 255 } 256 vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { 257 vec3 I; 258 float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); 259 float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); 260 float cosTheta2Sq = 1.0 - sinTheta2Sq; 261 if ( cosTheta2Sq < 0.0 ) { 262 return vec3( 1.0 ); 263 } 264 float cosTheta2 = sqrt( cosTheta2Sq ); 265 float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );
266 float R12 = F_Schlick( R0, 1.0, cosTheta1 ); 267 float T121 = 1.0 - R12; 268 float phi12 = 0.0; 269 if ( iridescenceIOR < outsideIOR ) phi12 = PI; 270 float phi21 = PI - phi12; 271 vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); 272 vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); 273 vec3 phi23 = vec3( 0.0 ); 274 if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI; 275 if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI; 276 if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI; 277 float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; 278 vec3 phi = vec3( phi21 ) + phi23; 279 vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); 280 vec3 r123 = sqrt( R123 ); 281 vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); 282 vec3 C0 = R12 + Rs; 283 I = C0; 284 vec3 Cm = Rs - T121; 285 for ( int m = 1; m <= 2; ++ m ) { 286 Cm *= r123; 287 vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); 288 I += Cm * Sm; 289 } 290 return max( I, vec3( 0.0 ) ); 291 } 292#endif`,CE=`#ifdef USE_BUMPMAP 293 uniform sampler2D bumpMap; 294 uniform float bumpScale; 295 vec2 dHdxy_fwd() { 296 vec2 dSTdx = dFdx( vBumpMapUv ); 297 vec2 dSTdy = dFdy( vBumpMapUv ); 298 float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; 299 float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; 300 float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; 301 return vec2( dBx, dBy ); 302 } 303 vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { 304 vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); 305 vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); 306 vec3 vN = surf_norm; 307 vec3 R1 = cross( vSigmaY, vN ); 308 vec3 R2 = cross( vN, vSigmaX ); 309 float fDet = dot( vSigmaX, R1 ) * faceDirection; 310 vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); 311 return normalize( abs( fDet ) * surf_norm - vGrad ); 312 } 313#endif`,AE=`#if NUM_CLIPPING_PLANES > 0 314 vec4 plane; 315 #ifdef ALPHA_TO_COVERAGE 316 float distanceToPlane, distanceGradient; 317 float clipOpacity = 1.0; 318 #pragma unroll_loop_start 319 for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { 320 plane = clippingPlanes[ i ]; 321 distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; 322 distanceGradient = fwidth( distanceToPlane ) / 2.0; 323 clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); 324 if ( clipOpacity == 0.0 ) discard; 325 } 326 #pragma unroll_loop_end 327 #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES 328 float unionClipOpacity = 1.0; 329 #pragma unroll_loop_start 330 for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { 331 plane = clippingPlanes[ i ]; 332 distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; 333 distanceGradient = fwidth( distanceToPlane ) / 2.0; 334 unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); 335 } 336 #pragma unroll_loop_end 337 clipOpacity *= 1.0 - unionClipOpacity; 338 #endif 339 diffuseColor.a *= clipOpacity; 340 if ( diffuseColor.a == 0.0 ) discard; 341 #else 342 #pragma unroll_loop_start 343 for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { 344 plane = clippingPlanes[ i ]; 345 if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; 346 } 347 #pragma unroll_loop_end 348 #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES 349 bool clipped = true; 350 #pragma unroll_loop_start 351 for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { 352 plane = clippingPlanes[ i ]; 353 clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; 354 } 355 #pragma unroll_loop_end 356 if ( clipped ) discard; 357 #endif 358 #endif 359#endif`,RE=`#if NUM_CLIPPING_PLANES > 0 360 varying vec3 vClipPosition; 361 uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; 362#endif`,NE=`#if NUM_CLIPPING_PLANES > 0 363 varying vec3 vClipPosition; 364#endif`,LE=`#if NUM_CLIPPING_PLANES > 0 365 vClipPosition = - mvPosition.xyz; 366#endif`,DE=`#if defined( USE_COLOR_ALPHA ) 367 diffuseColor *= vColor; 368#elif defined( USE_COLOR ) 369 diffuseColor.rgb *= vColor; 370#endif`,UE=`#if defined( USE_COLOR_ALPHA ) 371 varying vec4 vColor; 372#elif defined( USE_COLOR ) 373 varying vec3 vColor; 374#endif`,PE=`#if defined( USE_COLOR_ALPHA ) 375 varying vec4 vColor; 376#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) 377 varying vec3 vColor; 378#endif`,OE=`#if defined( USE_COLOR_ALPHA ) 379 vColor = vec4( 1.0 ); 380#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) 381 vColor = vec3( 1.0 ); 382#endif 383#ifdef USE_COLOR 384 vColor *= color; 385#endif 386#ifdef USE_INSTANCING_COLOR 387 vColor.xyz *= instanceColor.xyz; 388#endif 389#ifdef USE_BATCHING_COLOR 390 vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); 391 vColor.xyz *= batchingColor.xyz; 392#endif`,IE=`#define PI 3.141592653589793 393#define PI2 6.283185307179586 394#define PI_HALF 1.5707963267948966 395#define RECIPROCAL_PI 0.3183098861837907 396#define RECIPROCAL_PI2 0.15915494309189535 397#define EPSILON 1e-6 398#ifndef saturate 399#define saturate( a ) clamp( a, 0.0, 1.0 ) 400#endif 401#define whiteComplement( a ) ( 1.0 - saturate( a ) ) 402float pow2( const in float x ) { return x*x; } 403vec3 pow2( const in vec3 x ) { return x*x; } 404float pow3( const in float x ) { return x*x*x; } 405float pow4( const in float x ) { float x2 = x*x; return x2*x2; } 406float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } 407float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } 408highp float rand( const in vec2 uv ) { 409 const highp float a = 12.9898, b = 78.233, c = 43758.5453; 410 highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); 411 return fract( sin( sn ) * c ); 412} 413#ifdef HIGH_PRECISION 414 float precisionSafeLength( vec3 v ) { return length( v ); } 415#else 416 float precisionSafeLength( vec3 v ) { 417 float maxComponent = max3( abs( v ) ); 418 return length( v / maxComponent ) * maxComponent; 419 } 420#endif 421struct IncidentLight { 422 vec3 color; 423 vec3 direction; 424 bool visible; 425}; 426struct ReflectedLight { 427 vec3 directDiffuse; 428 vec3 directSpecular; 429 vec3 indirectDiffuse; 430 vec3 indirectSpecular; 431}; 432#ifdef USE_ALPHAHASH 433 varying vec3 vPosition; 434#endif 435vec3 transformDirection( in vec3 dir, in mat4 matrix ) { 436 return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); 437} 438vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { 439 return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); 440} 441mat3 transposeMat3( const in mat3 m ) { 442 mat3 tmp; 443 tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); 444 tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); 445 tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); 446 return tmp; 447} 448bool isPerspectiveMatrix( mat4 m ) { 449 return m[ 2 ][ 3 ] == - 1.0; 450} 451vec2 equirectUv( in vec3 dir ) { 452 float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; 453 float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; 454 return vec2( u, v ); 455}
456vec3 BRDF_Lambert( const in vec3 diffuseColor ) { 457 return RECIPROCAL_PI * diffuseColor; 458} 459vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { 460 float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); 461 return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); 462} 463float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { 464 float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); 465 return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); 466} // validated`,BE=`#ifdef ENVMAP_TYPE_CUBE_UV 467 #define cubeUV_minMipLevel 4.0 468 #define cubeUV_minTileSize 16.0 469 float getFace( vec3 direction ) { 470 vec3 absDirection = abs( direction ); 471 float face = - 1.0; 472 if ( absDirection.x > absDirection.z ) { 473 if ( absDirection.x > absDirection.y ) 474 face = direction.x > 0.0 ? 0.0 : 3.0; 475 else 476 face = direction.y > 0.0 ? 1.0 : 4.0; 477 } else { 478 if ( absDirection.z > absDirection.y ) 479 face = direction.z > 0.0 ? 2.0 : 5.0; 480 else 481 face = direction.y > 0.0 ? 1.0 : 4.0; 482 } 483 return face; 484 } 485 vec2 getUV( vec3 direction, float face ) { 486 vec2 uv; 487 if ( face == 0.0 ) { 488 uv = vec2( direction.z, direction.y ) / abs( direction.x ); 489 } else if ( face == 1.0 ) { 490 uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); 491 } else if ( face == 2.0 ) { 492 uv = vec2( - direction.x, direction.y ) / abs( direction.z ); 493 } else if ( face == 3.0 ) { 494 uv = vec2( - direction.z, direction.y ) / abs( direction.x ); 495 } else if ( face == 4.0 ) { 496 uv = vec2( - direction.x, direction.z ) / abs( direction.y ); 497 } else { 498 uv = vec2( direction.x, direction.y ) / abs( direction.z ); 499 } 500 return 0.5 * ( uv + 1.0 ); 501 } 502 vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { 503 float face = getFace( direction ); 504 float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); 505 mipInt = max( mipInt, cubeUV_minMipLevel ); 506 float faceSize = exp2( mipInt ); 507 highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; 508 if ( face > 2.0 ) { 509 uv.y += faceSize; 510 face -= 3.0; 511 } 512 uv.x += face * faceSize; 513 uv.x += filterInt * 3.0 * cubeUV_minTileSize; 514 uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); 515 uv.x *= CUBEUV_TEXEL_WIDTH; 516 uv.y *= CUBEUV_TEXEL_HEIGHT; 517 #ifdef texture2DGradEXT 518 return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; 519 #else 520 return texture2D( envMap, uv ).rgb; 521 #endif 522 } 523 #define cubeUV_r0 1.0 524 #define cubeUV_m0 - 2.0 525 #define cubeUV_r1 0.8 526 #define cubeUV_m1 - 1.0 527 #define cubeUV_r4 0.4 528 #define cubeUV_m4 2.0 529 #define cubeUV_r5 0.305 530 #define cubeUV_m5 3.0 531 #define cubeUV_r6 0.21 532 #define cubeUV_m6 4.0 533 float roughnessToMip( float roughness ) { 534 float mip = 0.0; 535 if ( roughness >= cubeUV_r1 ) { 536 mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; 537 } else if ( roughness >= cubeUV_r4 ) { 538 mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; 539 } else if ( roughness >= cubeUV_r5 ) { 540 mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; 541 } else if ( roughness >= cubeUV_r6 ) { 542 mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; 543 } else { 544 mip = - 2.0 * log2( 1.16 * roughness ); } 545 return mip; 546 } 547 vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { 548 float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); 549 float mipF = fract( mip ); 550 float mipInt = floor( mip ); 551 vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); 552 if ( mipF == 0.0 ) { 553 return vec4( color0, 1.0 ); 554 } else { 555 vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); 556 return vec4( mix( color0, color1, mipF ), 1.0 ); 557 } 558 } 559#endif`,FE=`vec3 transformedNormal = objectNormal; 560#ifdef USE_TANGENT 561 vec3 transformedTangent = objectTangent; 562#endif 563#ifdef USE_BATCHING 564 mat3 bm = mat3( batchingMatrix ); 565 transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); 566 transformedNormal = bm * transformedNormal; 567 #ifdef USE_TANGENT 568 transformedTangent = bm * transformedTangent; 569 #endif 570#endif 571#ifdef USE_INSTANCING 572 mat3 im = mat3( instanceMatrix ); 573 transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); 574 transformedNormal = im * transformedNormal; 575 #ifdef USE_TANGENT 576 transformedTangent = im * transformedTangent; 577 #endif 578#endif 579transformedNormal = normalMatrix * transformedNormal; 580#ifdef FLIP_SIDED 581 transformedNormal = - transformedNormal; 582#endif 583#ifdef USE_TANGENT 584 transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; 585 #ifdef FLIP_SIDED 586 transformedTangent = - transformedTangent; 587 #endif 588#endif`,zE=`#ifdef USE_DISPLACEMENTMAP 589 uniform sampler2D displacementMap; 590 uniform float displacementScale; 591 uniform float displacementBias; 592#endif`,VE=`#ifdef USE_DISPLACEMENTMAP 593 transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + dis
593placementBias ); 594#endif`,jE=`#ifdef USE_EMISSIVEMAP 595 vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); 596 #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE 597 emissiveColor = sRGBTransferEOTF( emissiveColor ); 598 #endif 599 totalEmissiveRadiance *= emissiveColor.rgb; 600#endif`,HE=`#ifdef USE_EMISSIVEMAP 601 uniform sampler2D emissiveMap; 602#endif`,kE="gl_FragColor = linearToOutputTexel( gl_FragColor );",GE=`vec4 LinearTransferOETF( in vec4 value ) { 603 return value; 604} 605vec4 sRGBTransferEOTF( in vec4 value ) { 606 return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); 607} 608vec4 sRGBTransferOETF( in vec4 value ) { 609 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 ); 610}`,WE=`#ifdef USE_ENVMAP 611 #ifdef ENV_WORLDPOS 612 vec3 cameraToFrag; 613 if ( isOrthographic ) { 614 cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); 615 } else { 616 cameraToFrag = normalize( vWorldPosition - cameraPosition ); 617 } 618 vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); 619 #ifdef ENVMAP_MODE_REFLECTION 620 vec3 reflectVec = reflect( cameraToFrag, worldNormal ); 621 #else 622 vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); 623 #endif 624 #else 625 vec3 reflectVec = vReflect; 626 #endif 627 #ifdef ENVMAP_TYPE_CUBE 628 vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); 629 #else 630 vec4 envColor = vec4( 0.0 ); 631 #endif 632 #ifdef ENVMAP_BLENDING_MULTIPLY 633 outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); 634 #elif defined( ENVMAP_BLENDING_MIX ) 635 outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); 636 #elif defined( ENVMAP_BLENDING_ADD ) 637 outgoingLight += envColor.xyz * specularStrength * reflectivity; 638 #endif 639#endif`,XE=`#ifdef USE_ENVMAP 640 uniform float envMapIntensity; 641 uniform float flipEnvMap; 642 uniform mat3 envMapRotation; 643 #ifdef ENVMAP_TYPE_CUBE 644 uniform samplerCube envMap; 645 #else 646 uniform sampler2D envMap; 647 #endif 648 649#endif`,qE=`#ifdef USE_ENVMAP 650 uniform float reflectivity; 651 #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) 652 #define ENV_WORLDPOS 653 #endif 654 #ifdef ENV_WORLDPOS 655 varying vec3 vWorldPosition; 656 uniform float refractionRatio; 657 #else 658 varying vec3 vReflect; 659 #endif 660#endif`,YE=`#ifdef USE_ENVMAP 661 #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) 662 #define ENV_WORLDPOS 663 #endif 664 #ifdef ENV_WORLDPOS 665 666 varying vec3 vWorldPosition; 667 #else 668 varying vec3 vReflect; 669 uniform float refractionRatio; 670 #endif 671#endif`,ZE=`#ifdef USE_ENVMAP 672 #ifdef ENV_WORLDPOS 673 vWorldPosition = worldPosition.xyz; 674 #else 675 vec3 cameraToVertex; 676 if ( isOrthographic ) { 677 cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); 678 } else {
679 cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); 680 } 681 vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); 682 #ifdef ENVMAP_MODE_REFLECTION 683 vReflect = reflect( cameraToVertex, worldNormal ); 684 #else 685 vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); 686 #endif 687 #endif 688#endif`,KE=`#ifdef USE_FOG 689 vFogDepth = - mvPosition.z; 690#endif`,QE=`#ifdef USE_FOG 691 varying float vFogDepth; 692#endif`,$E=`#ifdef USE_FOG 693 #ifdef FOG_EXP2 694 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); 695 #else 696 float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); 697 #endif 698 gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); 699#endif`,JE=`#ifdef USE_FOG 700 uniform vec3 fogColor; 701 varying float vFogDepth; 702 #ifdef FOG_EXP2 703 uniform float fogDensity; 704 #else 705 uniform float fogNear; 706 uniform float fogFar; 707 #endif 708#endif`,ew=`#ifdef USE_GRADIENTMAP 709 uniform sampler2D gradientMap; 710#endif 711vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { 712 float dotNL = dot( normal, lightDirection ); 713 vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); 714 #ifdef USE_GRADIENTMAP 715 return vec3( texture2D( gradientMap, coord ).r ); 716 #else 717 vec2 fw = fwidth( coord ) * 0.5; 718 return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); 719 #endif 720}`,tw=`#ifdef USE_LIGHTMAP 721 uniform sampler2D lightMap; 722 uniform float lightMapIntensity; 723#endif`,nw=`LambertMaterial material; 724material.diffuseColor = diffuseColor.rgb; 725material.specularStrength = specularStrength;`,iw=`varying vec3 vViewPosition; 726struct LambertMaterial { 727 vec3 diffuseColor; 728 float specularStrength; 729}; 730void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { 731 float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); 732 vec3 irradiance = dotNL * directLight.color; 733 reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 734} 735void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { 736 reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 737} 738#define RE_Direct RE_Direct_Lambert 739#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,sw=`uniform bool receiveShadow; 740uniform vec3 ambientLightColor; 741#if defined( USE_LIGHT_PROBES ) 742 uniform vec3 lightProbe[ 9 ]; 743#endif 744vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { 745 float x = normal.x, y = normal.y, z = normal.z; 746 vec3 result = shCoefficients[ 0 ] * 0.886227; 747 result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; 748 result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; 749 result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; 750 result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; 751 result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; 752 result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); 753 result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; 754 result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); 755 return result; 756} 757vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { 758 vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); 759 vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); 760 return irradiance; 761} 762vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { 763 vec3 irradiance = ambientLightColor; 764 return irradiance; 765} 766float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { 767 float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); 768 if ( cutoffDistance > 0.0 ) { 769 distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); 770 } 771 return distanceFalloff; 772} 773float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { 774 return smoothstep( coneCosine, penumbraCosine, angleCosine ); 775} 776#if NUM_DIR_LIGHTS > 0 777 struct DirectionalLight { 778 vec3 direction; 779 vec3 color; 780 }; 781 uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; 782 void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { 783 light.color = directionalLight.color; 784 light.direction = directionalLight.direction; 785 light.visible = true; 786 } 787#endif 788#if NUM_POINT_LIGHTS > 0 789 struct PointLight { 790 vec3 position; 791 vec3 color; 792 float distance; 793 float decay; 794 }; 795 uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; 796 void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { 797 vec3 lVector = pointLight.position - geometryPosition; 798 light.direction = normalize( lVector ); 799 float lightDistance = length( lVector ); 800 light.color = pointLight.color; 801 light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); 802 light.visible = ( light.color != vec3( 0.0 ) ); 803 } 804#endif
805#if NUM_SPOT_LIGHTS > 0 806 struct SpotLight { 807 vec3 position; 808 vec3 direction; 809 vec3 color; 810 float distance; 811 float decay; 812 float coneCos; 813 float penumbraCos; 814 }; 815 uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; 816 void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { 817 vec3 lVector = spotLight.position - geometryPosition; 818 light.direction = normalize( lVector ); 819 float angleCos = dot( light.direction, spotLight.direction ); 820 float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); 821 if ( spotAttenuation > 0.0 ) { 822 float lightDistance = length( lVector ); 823 light.color = spotLight.color * spotAttenuation; 824 light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); 825 light.visible = ( light.color != vec3( 0.0 ) ); 826 } else { 827 light.color = vec3( 0.0 ); 828 light.visible = false; 829 } 830 } 831#endif 832#if NUM_RECT_AREA_LIGHTS > 0 833 struct RectAreaLight { 834 vec3 color; 835 vec3 position; 836 vec3 halfWidth; 837 vec3 halfHeight; 838 }; 839 uniform sampler2D ltc_1; uniform sampler2D ltc_2; 840 uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; 841#endif 842#if NUM_HEMI_LIGHTS > 0 843 struct HemisphereLight { 844 vec3 direction; 845 vec3 skyColor; 846 vec3 groundColor; 847 }; 848 uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; 849 vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { 850 float dotNL = dot( normal, hemiLight.direction ); 851 float hemiDiffuseWeight = 0.5 * dotNL + 0.5; 852 vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); 853 return irradiance; 854 } 855#endif`,aw=`#ifdef USE_ENVMAP 856 vec3 getIBLIrradiance( const in vec3 normal ) { 857 #ifdef ENVMAP_TYPE_CUBE_UV 858 vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); 859 vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); 860 return PI * envMapColor.rgb * envMapIntensity; 861 #else 862 return vec3( 0.0 ); 863 #endif 864 } 865 vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { 866 #ifdef ENVMAP_TYPE_CUBE_UV 867 vec3 reflectVec = reflect( - viewDir, normal ); 868 reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); 869 reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); 870 vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); 871 return envMapColor.rgb * envMapIntensity; 872 #else 873 return vec3( 0.0 ); 874 #endif 875 } 876 #ifdef USE_ANISOTROPY 877 vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { 878 #ifdef ENVMAP_TYPE_CUBE_UV 879 vec3 bentNormal = cross( bitangent, viewDir ); 880 bentNormal = normalize( cross( bentNormal, bitangent ) ); 881 bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); 882 return getIBLRadiance( viewDir, bentNormal, roughness ); 883 #else 884 return vec3( 0.0 ); 885 #endif 886 } 887 #endif 888#endif`,rw=`ToonMaterial material; 889material.diffuseColor = diffuseColor.rgb;`,ow=`varying vec3 vViewPosition; 890struct ToonMaterial { 891 vec3 diffuseColor; 892}; 893void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { 894 vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; 895 reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 896} 897void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { 898 reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 899} 900#define RE_Direct RE_Direct_Toon 901#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,lw=`BlinnPhongMaterial material; 902material.diffuseColor = diffuseColor.rgb; 903material.specularColor = specular; 904material.specularShininess = shininess; 905material.specularStrength = specularStrength;`,cw=`varying vec3 vViewPosition; 906struct BlinnPhongMaterial { 907 vec3 diffuseColor; 908 vec3 specularColor; 909 float specularShininess; 910 float specularStrength; 911}; 912void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
913 float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); 914 vec3 irradiance = dotNL * directLight.color; 915 reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 916 reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; 917} 918void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { 919 reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 920} 921#define RE_Direct RE_Direct_BlinnPhong 922#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,uw=`PhysicalMaterial material; 923material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); 924vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); 925float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); 926material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; 927material.roughness = min( material.roughness, 1.0 ); 928#ifdef IOR 929 material.ior = ior; 930 #ifdef USE_SPECULAR 931 float specularIntensityFactor = specularIntensity; 932 vec3 specularColorFactor = specularColor; 933 #ifdef USE_SPECULAR_COLORMAP 934 specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; 935 #endif 936 #ifdef USE_SPECULAR_INTENSITYMAP 937 specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; 938 #endif 939 material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); 940 #else 941 float specularIntensityFactor = 1.0; 942 vec3 specularColorFactor = vec3( 1.0 ); 943 material.specularF90 = 1.0; 944 #endif 945 material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); 946#else 947 material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); 948 material.specularF90 = 1.0; 949#endif 950#ifdef USE_CLEARCOAT 951 material.clearcoat = clearcoat; 952 material.clearcoatRoughness = clearcoatRoughness; 953 material.clearcoatF0 = vec3( 0.04 ); 954 material.clearcoatF90 = 1.0; 955 #ifdef USE_CLEARCOATMAP 956 material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; 957 #endif 958 #ifdef USE_CLEARCOAT_ROUGHNESSMAP 959 material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; 960 #endif 961 material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); 962 material.clearcoatRoughness += geometryRoughness; 963 material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); 964#endif 965#ifdef USE_DISPERSION 966 material.dispersion = dispersion; 967#endif 968#ifdef USE_IRIDESCENCE 969 material.iridescence = iridescence; 970 material.iridescenceIOR = iridescenceIOR; 971 #ifdef USE_IRIDESCENCEMAP 972 material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; 973 #endif 974 #ifdef USE_IRIDESCENCE_THICKNESSMAP 975 material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; 976 #else 977 material.iridescenceThickness = iridescenceThicknessMaximum; 978 #endif 979#endif 980#ifdef USE_SHEEN 981 material.sheenColor = sheenColor; 982 #ifdef USE_SHEEN_COLORMAP 983 material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; 984 #endif 985 material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); 986 #ifdef USE_SHEEN_ROUGHNESSMAP 987 material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; 988 #endif 989#endif 990#ifdef USE_ANISOTROPY 991 #ifdef USE_ANISOTROPYMAP 992 mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); 993 vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; 994 vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; 995 #else 996 vec2 anisotropyV = anisotropyVector; 997 #endif 998 material.anisotropy = length( anisotropyV ); 999 if( material.anisotropy == 0.0 ) { 1000 anisotropyV = vec2( 1.0, 0.0 ); 1001 } else { 1002 anisotropyV /= material.anisotropy; 1003 material.anisotropy = saturate( material.anisotropy ); 1004 } 1005 material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );
1006 material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; 1007 material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; 1008#endif`,fw
vendor: 14,687 bytes, lines 1008-1309
1008=`struct PhysicalMaterial { 1009 vec3 diffuseColor; 1010 float roughness; 1011 vec3 specularColor; 1012 float specularF90; 1013 float dispersion; 1014 #ifdef USE_CLEARCOAT 1015 float clearcoat; 1016 float clearcoatRoughness; 1017 vec3 clearcoatF0; 1018 float clearcoatF90; 1019 #endif 1020 #ifdef USE_IRIDESCENCE 1021 float iridescence; 1022 float iridescenceIOR; 1023 float iridescenceThickness; 1024 vec3 iridescenceFresnel; 1025 vec3 iridescenceF0; 1026 #endif 1027 #ifdef USE_SHEEN 1028 vec3 sheenColor; 1029 float sheenRoughness; 1030 #endif 1031 #ifdef IOR 1032 float ior; 1033 #endif 1034 #ifdef USE_TRANSMISSION 1035 float transmission; 1036 float transmissionAlpha; 1037 float thickness; 1038 float attenuationDistance; 1039 vec3 attenuationColor; 1040 #endif 1041 #ifdef USE_ANISOTROPY 1042 float anisotropy; 1043 float alphaT; 1044 vec3 anisotropyT; 1045 vec3 anisotropyB; 1046 #endif 1047}; 1048vec3 clearcoatSpecularDirect = vec3( 0.0 ); 1049vec3 clearcoatSpecularIndirect = vec3( 0.0 ); 1050vec3 sheenSpecularDirect = vec3( 0.0 ); 1051vec3 sheenSpecularIndirect = vec3(0.0 ); 1052vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { 1053 float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); 1054 float x2 = x * x; 1055 float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); 1056 return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); 1057} 1058float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { 1059 float a2 = pow2( alpha ); 1060 float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); 1061 float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); 1062 return 0.5 / max( gv + gl, EPSILON ); 1063} 1064float D_GGX( const in float alpha, const in float dotNH ) { 1065 float a2 = pow2( alpha ); 1066 float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; 1067 return RECIPROCAL_PI * a2 / pow2( denom ); 1068} 1069#ifdef USE_ANISOTROPY 1070 float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { 1071 float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); 1072 float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); 1073 float v = 0.5 / ( gv + gl ); 1074 return saturate(v); 1075 } 1076 float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { 1077 float a2 = alphaT * alphaB; 1078 highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); 1079 highp float v2 = dot( v, v ); 1080 float w2 = a2 / v2; 1081 return RECIPROCAL_PI * a2 * pow2 ( w2 ); 1082 } 1083#endif 1084#ifdef USE_CLEARCOAT 1085 vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { 1086 vec3 f0 = material.clearcoatF0; 1087 float f90 = material.clearcoatF90; 1088 float roughness = material.clearcoatRoughness; 1089 float alpha = pow2( roughness ); 1090 vec3 halfDir = normalize( lightDir + viewDir ); 1091 float dotNL = saturate( dot( normal, lightDir ) ); 1092 float dotNV = saturate( dot( normal, viewDir ) ); 1093 float dotNH = saturate( dot( normal, halfDir ) ); 1094 float dotVH = saturate( dot( viewDir, halfDir ) ); 1095 vec3 F = F_Schlick( f0, f90, dotVH ); 1096 float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); 1097 float D = D_GGX( alpha, dotNH ); 1098 return F * ( V * D ); 1099 } 1100#endif 1101vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { 1102 vec3 f0 = material.specularColor; 1103 float f90 = material.specularF90; 1104 float roughness = material.roughness; 1105 float alpha = pow2( roughness ); 1106 vec3 halfDir = normalize( lightDir + viewDir ); 1107 float dotNL = saturate( dot( normal, lightDir ) ); 1108 float dotNV = saturate( dot( normal, viewDir ) ); 1109 float dotNH = saturate( dot( normal, halfDir ) ); 1110 float dotVH = saturate( dot( viewDir, halfDir ) ); 1111 vec3 F = F_Schlick( f0, f90, dotVH ); 1112 #ifdef USE_IRIDESCENCE 1113 F = mix( F, material.iridescenceFresnel, material.iridescence ); 1114 #endif 1115 #ifdef USE_ANISOTROPY 1116 float dotTL = dot( material.anisotropyT, lightDir ); 1117 float dotTV = dot( material.anisotropyT, viewDir ); 1118 float dotTH = dot( material.anisotropyT, halfDir ); 1119 float dotBL = dot( material.anisotropyB, lightDir ); 1120 float dotBV = dot( material.anisotropyB, viewDir ); 1121 float dotBH = dot( material.anisotropyB, halfDir ); 1122 float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); 1123 float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); 1124 #else 1125 float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); 1126 float D = D_GGX( alpha, dotNH ); 1127 #endif 1128 return F * ( V * D ); 1129} 1130vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { 1131 const float LUT_SIZE = 64.0; 1132 const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; 1133 const float LUT_BIAS = 0.5 / LUT_SIZE; 1134 float dotNV = saturate( dot( N, V ) ); 1135 vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); 1136 uv = uv * LUT_SCALE + LUT_BIAS; 1137 return uv; 1138} 1139float LTC_ClippedSphereFormFactor( const in vec3 f ) { 1140 float l = length( f ); 1141 return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); 1142} 1143vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { 1144 float x = dot( v1, v2 ); 1145 float y = abs( x ); 1146 float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; 1147 float b = 3.4175940 + ( 4.1616724 + y ) * y; 1148 float v = a / b; 1149 float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; 1150 return cross( v1, v2 ) * theta_sintheta; 1151} 1152vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { 1153 vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; 1154 vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; 1155 vec3 lightNormal = cross( v1, v2 ); 1156 if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); 1157 vec3 T1, T2; 1158 T1 = normalize( V - N * dot( V, N ) ); 1159 T2 = - cross( N, T1 ); 1160 mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); 1161 vec3 coords[ 4 ]; 1162 coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); 1163 coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); 1164 coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); 1165 coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); 1166 coords[ 0 ] = normalize( coords[ 0 ] ); 1167 coords[ 1 ] = normalize( coords[ 1 ] ); 1168 coords[ 2 ] = normalize( coords[ 2 ] ); 1169 coords[ 3 ] = normalize( coords[ 3 ] ); 1170 vec3 vectorFormFactor = vec3( 0.0 ); 1171 vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); 1172 vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); 1173 vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); 1174 vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); 1175 float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); 1176 return vec3( result ); 1177} 1178#if defined( USE_SHEEN ) 1179float D_Charlie( float roughness, float dotNH ) { 1180 float alpha = pow2( roughness ); 1181 float invAlpha = 1.0 / alpha; 1182 float cos2h = dotNH * dotNH; 1183 float sin2h = max( 1.0 - cos2h, 0.0078125 ); 1184 return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); 1185} 1186float V_Neubelt( float dotNV, float dotNL ) { 1187 return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); 1188} 1189vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { 1190 vec3 halfDir = normalize( lightDir + viewDir ); 1191 float dotNL = saturate( dot( normal, lightDir ) ); 1192 float dotNV = saturate( dot( normal, viewDir ) ); 1193 float dotNH = saturate( dot( normal, halfDir ) ); 1194 float D = D_Charlie( sheenRoughness, dotNH ); 1195 float V = V_Neubelt( dotNV, dotNL ); 1196 return sheenColor * ( D * V ); 1197} 1198#endif 1199float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { 1200 float dotNV = saturate( dot( normal, viewDir ) ); 1201 float r2 = roughness * roughness; 1202 float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; 1203 float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; 1204 float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); 1205 return saturate( DG * RECIPROCAL_PI ); 1206} 1207vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { 1208 float dotNV = saturate( dot( normal, viewDir ) ); 1209 const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); 1210 const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); 1211 vec4 r = roughness * c0 + c1; 1212 float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; 1213 vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; 1214 return fab; 1215} 1216vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { 1217 vec2 fab = DFGApprox( normal, viewDir, roughness ); 1218 return specularColor * fab.x + specularF90 * fab.y; 1219} 1220#ifdef USE_IRIDESCENCE 1221void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { 1222#else 1223void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { 1224#endif 1225 vec2 fab = DFGApprox( normal, viewDir, roughness ); 1226 #ifdef USE_IRIDESCENCE 1227 vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); 1228 #else 1229 vec3 Fr = specularColor; 1230 #endif 1231 vec3 FssEss = Fr * fab.x + specularF90 * fab.y; 1232 float Ess = fab.x + fab.y; 1233 float Ems = 1.0 - Ess; 1234 vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); 1235 singleScatter += FssEss; 1236 multiScatter += Fms * Ems; 1237} 1238#if NUM_RECT_AREA_LIGHTS > 0 1239 void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { 1240 vec3 normal = geometryNormal; 1241 vec3 viewDir = geometryViewDir; 1242 vec3 position = geometryPosition; 1243 vec3 lightPos = rectAreaLight.position; 1244 vec3 halfWidth = rectAreaLight.halfWidth; 1245 vec3 halfHeight = rectAreaLight.halfHeight; 1246 vec3 lightColor = rectAreaLight.color; 1247 float roughness = material.roughness; 1248 vec3 rectCoords[ 4 ]; 1249 rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; 1250 rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; 1251 rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; 1252 vec2 uv = LTC_Uv( normal, viewDir, roughness ); 1253 vec4 t1 = texture2D( ltc_1, uv ); 1254 vec4 t2 = texture2D( ltc_2, uv ); 1255 mat3 mInv = mat3( 1256 vec3( t1.x, 0, t1.y ), 1257 vec3( 0, 1, 0 ), 1258 vec3( t1.z, 0, t1.w ) 1259 ); 1260 vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); 1261 reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); 1262 reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); 1263 } 1264#endif 1265void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { 1266 float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); 1267 vec3 irradiance = dotNL * directLight.color; 1268 #ifdef USE_CLEARCOAT 1269 float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); 1270 vec3 ccIrradiance = dotNLcc * directLight.color; 1271 clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); 1272 #endif 1273 #ifdef USE_SHEEN 1274 sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); 1275 #endif 1276 reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); 1277 reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 1278} 1279void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { 1280 reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 1281} 1282void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { 1283 #ifdef USE_CLEARCOAT 1284 clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); 1285 #endif 1286 #ifdef USE_SHEEN 1287 sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); 1288 #endif 1289 vec3 singleScattering = vec3( 0.0 ); 1290 vec3 multiScattering = vec3( 0.0 ); 1291 vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; 1292 #ifdef USE_IRIDESCENCE 1293 computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); 1294 #else 1295 computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); 1296 #endif 1297 vec3 totalScattering = singleScattering + multiScattering; 1298 vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); 1299 reflectedLight.indirectSpecular += radiance * singleScattering; 1300 reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; 1301 reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; 1302} 1303#define RE_Direct RE_Direct_Physical 1304#define RE_Direct_RectArea RE_Direct_RectArea_Physical 1305#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical 1306#define RE_IndirectSpecular RE_IndirectSpecular_Physical 1307float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { 1308 return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); 1309}`,
1309dw=` 1310vec3 geometryPosition = - vViewPosition; 1311vec3 geometryNormal = normal; 1312vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); 1313vec3 geometryClearcoatNormal = vec3( 0.0 ); 1314#ifdef USE_CLEARCOAT 1315 geometryClearcoatNormal = clearcoatNormal; 1316#endif 1317#ifdef USE_IRIDESCENCE 1318 float dotNVi = saturate( dot( normal, geometryViewDir ) ); 1319 if ( material.iridescenceThickness == 0.0 ) { 1320 material.iridescence = 0.0; 1321 } else { 1322 material.iridescence = saturate( material.iridescence ); 1323 } 1324 if ( material.iridescence > 0.0 ) { 1325 material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); 1326 material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); 1327 } 1328#endif 1329IncidentLight directLight; 1330#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) 1331 PointLight pointLight; 1332 #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 1333 PointLightShadow pointLightShadow; 1334 #endif 1335 #pragma unroll_loop_start 1336 for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { 1337 pointLight = pointLights[ i ]; 1338 getPointLightInfo( pointLight, geometryPosition, directLight ); 1339 #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) 1340 pointLightShadow = pointLightShadows[ i ]; 1341 directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; 1342 #endif 1343 RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 1344 } 1345 #pragma unroll_loop_end 1346#endif 1347#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) 1348 SpotLight spotLight; 1349 vec4 spotColor; 1350 vec3 spotLightCoord; 1351 bool inSpotLightMap; 1352 #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 1353 SpotLightShadow spotLightShadow; 1354 #endif 1355 #pragma unroll_loop_start 1356 for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { 1357 spotLight = spotLights[ i ]; 1358 getSpotLightInfo( spotLight, geometryPosition, directLight ); 1359 #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) 1360 #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX 1361 #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) 1362 #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS 1363 #else 1364 #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) 1365 #endif 1366 #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) 1367 spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; 1368 inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); 1369 spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); 1370 directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; 1371 #endif 1372 #undef SPOT_LIGHT_MAP_INDEX 1373 #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) 1374 spotLightShadow = spotLightShadows[ i ]; 1375 directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; 1376 #endif 1377 RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 1378 } 1379 #pragma unroll_loop_end 1380#endif 1381#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) 1382 DirectionalLight directionalLight; 1383 #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 1384 DirectionalLightShadow directionalLightShadow; 1385 #endif 1386 #pragma unroll_loop_start 1387 for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { 1388 directionalLight = directionalLights[ i ]; 1389 getDirectionalLightInfo( directionalLight, directLight ); 1390 #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) 1391 directionalLightShadow = directionalLightShadows[ i ]; 1392 directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; 1393 #endif 1394 RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 1395 } 1396 #pragma unroll_loop_end 1397#endif 1398#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) 1399 RectAreaLight rectAreaLight; 1400 #pragma unroll_loop_start 1401 for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { 1402 rectAreaLight = rectAreaLights[ i ]; 1403 RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 1404 } 1405 #pragma unroll_loop_end 1406#endif 1407#if defined( RE_IndirectDiffuse ) 1408 vec3 iblIrradiance = vec3( 0.0 ); 1409 vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); 1410 #if defined( USE_LIGHT_PROBES ) 1411 irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); 1412 #endif 1413 #if ( NUM_HEMI_LIGHTS > 0 ) 1414 #pragma unroll_loop_start 1415 for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { 1416 irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); 1417 } 1418 #pragma unroll_loop_end 1419 #endif 1420#endif 1421#if defined( RE_IndirectSpecular ) 1422 vec3 radiance = vec3( 0.0 ); 1423 vec3 clearcoatRadiance = vec3( 0.0 ); 1424#endif`,hw=`#if defined( RE_IndirectDiffuse ) 1425 #ifdef USE_LIGHTMAP 1426 vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); 1427 vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; 1428 irradiance += lightMapIrradiance; 1429 #endif 1430 #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) 1431 iblIrradiance += getIBLIrradiance( geometryNormal ); 1432 #endif 1433#endif 1434#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) 1435 #ifdef USE_ANISOTROPY 1436 radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); 1437 #else 1438 radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); 1439 #endif 1440 #ifdef USE_CLEARCOAT 1441 clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); 1442 #endif 1443#endif`,pw=`#if defined( RE_IndirectDiffuse ) 1444 RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 1445#endif 1446#if defined( RE_IndirectSpecular ) 1447 RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 1448#endif`,mw=`#if defined( USE_LOGDEPTHBUF ) 1449 gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; 1450#endif`,gw=`#if defined( USE_LOGDEPTHBUF ) 1451 uniform float logDepthBufFC; 1452 varying float vFragDepth; 1453 varying float vIsPerspective; 1454#endif`,vw=`#ifdef USE_LOGDEPTHBUF 1455 varying float vFragDepth; 1456 varying float vIsPerspective; 1457#endif`,xw=`#ifdef USE_LOGDEPTHBUF 1458 vFragDepth = 1.0 + gl_Position.w; 1459 vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); 1460#endif`,_w=`#ifdef USE_MAP 1461 vec4 sampledDiffuseColor = texture2D( map, vMapUv ); 1462 #ifdef DECODE_VIDEO_TEXTURE 1463 sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); 1464 #endif 1465 diffuseColor *= sampledDiffuseColor; 1466#endif`,yw=`#ifdef USE_MAP 1467 uniform sampler2D map; 1468#endif`,Sw=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) 1469 #if defined( USE_POINTS_UV ) 1470 vec2 uv = vUv; 1471 #else 1472 vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; 1473 #endif 1474#endif 1475#ifdef USE_MAP 1476 diffuseColor *= texture2D( map, uv ); 1477#endif 1478#ifdef USE_ALPHAMAP 1479 diffuseColor.a *= texture2D( alphaMap, uv ).g; 1480#endif`,Mw=`#if defined( USE_POINTS_UV ) 1481 varying vec2 vUv; 1482#else 1483 #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) 1484 uniform mat3 uvTransform; 1485 #endif 1486#endif 1487#ifdef USE_MAP 1488 uniform sampler2D map; 1489#endif 1490#ifdef USE_ALPHAMAP 1491 uniform sampler2D alphaMap; 1492#endif`,bw=`float metalnessFactor = metalness; 1493#ifdef USE_METALNESSMAP 1494 vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); 1495 metalnessFactor *= texelMetalness.b; 1496#endif`,Ew=`#ifdef USE_METALNESSMAP 1497 uniform sampler2D metalnessMap; 1498#endif`,ww=`#ifdef USE_INSTANCING_MORPH 1499 float morphTargetInfluences[ MORPHTARGETS_COUNT ]; 1500 float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; 1501 for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { 1502 morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; 1503 } 1504#endif`,Tw=`#if defined( USE_MORPHCOLORS ) 1505 vColor *= morphTargetBaseInfluence; 1506 for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { 1507 #if defined( USE_COLOR_ALPHA ) 1508 if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; 1509 #elif defined( USE_COLOR ) 1510 if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; 1511 #endif 1512 } 1513#endif`,Cw=`#ifdef USE_MORPHNORMALS 1514 objectNormal *= morphTargetBaseInfluence; 1515 for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { 1516 if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; 1517 } 1518#endif`,Aw=`#ifdef USE_MORPHTARGETS 1519 #ifndef USE_INSTANCING_MORPH 1520 uniform float morphTargetBaseInfluence; 1521 uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; 1522 #endif 1523 uniform sampler2DArray morphTargetsTexture; 1524 uniform ivec2 morphTargetsTextureSize; 1525 vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { 1526 int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; 1527 int y = texelIndex / morphTargetsTextureSize.x; 1528 int x = texelIndex - y * morphTargetsTextureSize.x; 1529 ivec3 morphUV = ivec3( x, y, morphTargetIndex ); 1530 return texelFetch( morphTargetsTexture, morphUV, 0 ); 1531 } 1532#endif`,Rw=`#ifdef USE_MORPHTARGETS 1533 transformed *= morphTargetBaseInfluence; 1534 for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { 1535 if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; 1536 } 1537#endif`,Nw=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; 1538#ifdef FLAT_SHADED 1539 vec3 fdx = dFdx( vViewPosition ); 1540 vec3 fdy = dFdy( vViewPosition ); 1541 vec3 normal = normalize( cross( fdx, fdy ) ); 1542#else 1543 vec3 normal = normalize( vNormal ); 1544 #ifdef DOUBLE_SIDED 1545 normal *= faceDirection; 1546 #endif 1547#endif 1548#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) 1549 #ifdef USE_TANGENT 1550 mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); 1551 #else 1552 mat3 tbn = getTangentFrame( - vViewPosition, normal, 1553 #if defined( USE_NORMALMAP ) 1554 vNormalMapUv 1555 #elif defined( USE_CLEARCOAT_NORMALMAP ) 1556 vClearcoatNormalMapUv 1557 #else 1558 vUv 1559 #endif 1560 ); 1561 #endif 1562 #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) 1563 tbn[0] *= faceDirection; 1564 tbn[1] *= faceDirection; 1565 #endif 1566#endif 1567#ifdef USE_CLEARCOAT_NORMALMAP 1568 #ifdef USE_TANGENT 1569 mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); 1570 #else 1571 mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); 1572 #endif 1573 #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) 1574 tbn2[0] *= faceDirection; 1575 tbn2[1] *= faceDirection; 1576 #endif 1577#endif 1578vec3 nonPerturbedNormal = normal;`,Lw=`#ifdef USE_NORMALMAP_OBJECTSPACE 1579 normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; 1580 #ifdef FLIP_SIDED 1581 normal = - normal; 1582 #endif 1583 #ifdef DOUBLE_SIDED 1584 normal = normal * faceDirection; 1585 #endif 1586 normal = normalize( normalMatrix * normal ); 1587#elif defined( USE_NORMALMAP_TANGENTSPACE ) 1588 vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; 1589 mapN.xy *= normalScale; 1590 normal = normalize( tbn * mapN ); 1591#elif defined( USE_BUMPMAP )
1592 normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); 1593#endif`,Dw=`#ifndef FLAT_SHADED 1594 varying vec3 vNormal; 1595 #ifdef USE_TANGENT 1596 varying vec3 vTangent; 1597 varying vec3 vBitangent; 1598 #endif 1599#endif`,Uw=`#ifndef FLAT_SHADED 1600 varying vec3 vNormal; 1601 #ifdef USE_TANGENT 1602 varying vec3 vTangent; 1603 varying vec3 vBitangent; 1604 #endif 1605#endif`,Pw=`#ifndef FLAT_SHADED 1606 vNormal = normalize( transformedNormal ); 1607 #ifdef USE_TANGENT 1608 vTangent = normalize( transformedTangent ); 1609 vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); 1610 #endif 1611#endif`,Ow=`#ifdef USE_NORMALMAP 1612 uniform sampler2D normalMap; 1613 uniform vec2 normalScale; 1614#endif 1615#ifdef USE_NORMALMAP_OBJECTSPACE 1616 uniform mat3 normalMatrix; 1617#endif 1618#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) 1619 mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { 1620 vec3 q0 = dFdx( eye_pos.xyz ); 1621 vec3 q1 = dFdy( eye_pos.xyz ); 1622 vec2 st0 = dFdx( uv.st ); 1623 vec2 st1 = dFdy( uv.st ); 1624 vec3 N = surf_norm; 1625 vec3 q1perp = cross( q1, N ); 1626 vec3 q0perp = cross( N, q0 ); 1627 vec3 T = q1perp * st0.x + q0perp * st1.x; 1628 vec3 B = q1perp * st0.y + q0perp * st1.y; 1629 float det = max( dot( T, T ), dot( B, B ) ); 1630 float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); 1631 return mat3( T * scale, B * scale, N ); 1632 } 1633#endif`,Iw=`#ifdef USE_CLEARCOAT 1634 vec3 clearcoatNormal = nonPerturbedNormal; 1635#endif`,Bw=`#ifdef USE_CLEARCOAT_NORMALMAP 1636 vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; 1637 clearcoatMapN.xy *= clearcoatNormalScale; 1638 clearcoatNormal = normalize( tbn2 * clearcoatMapN ); 1639#endif`,Fw=`#ifdef USE_CLEARCOATMAP 1640 uniform sampler2D clearcoatMap; 1641#endif 1642#ifdef USE_CLEARCOAT_NORMALMAP 1643 uniform sampler2D clearcoatNormalMap; 1644 uniform vec2 clearcoatNormalScale; 1645#endif 1646#ifdef USE_CLEARCOAT_ROUGHNESSMAP 1647 uniform sampler2D clearcoatRoughnessMap; 1648#endif`,zw=`#ifdef USE_IRIDESCENCEMAP 1649 uniform sampler2D iridescenceMap; 1650#endif 1651#ifdef USE_IRIDESCENCE_THICKNESSMAP 1652 uniform sampler2D iridescenceThicknessMap; 1653#endif`,Vw=`#ifdef OPAQUE 1654diffuseColor.a = 1.0; 1655#endif 1656#ifdef USE_TRANSMISSION 1657diffuseColor.a *= material.transmissionAlpha; 1658#endif 1659gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,jw=`vec3 packNormalToRGB( const in vec3 normal ) { 1660 return normalize( normal ) * 0.5 + 0.5; 1661} 1662vec3 unpackRGBToNormal( const in vec3 rgb ) { 1663 return 2.0 * rgb.xyz - 1.0; 1664} 1665const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; 1666const float Inv255 = 1. / 255.; 1667const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); 1668const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); 1669const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); 1670const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); 1671vec4 packDepthToRGBA( const in float v ) { 1672 if( v <= 0.0 ) 1673 return vec4( 0., 0., 0., 0. ); 1674 if( v >= 1.0 ) 1675 return vec4( 1., 1., 1., 1. ); 1676 float vuf; 1677 float af = modf( v * PackFactors.a, vuf ); 1678 float bf = modf( vuf * ShiftRight8, vuf ); 1679 float gf = modf( vuf * ShiftRight8, vuf ); 1680 return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); 1681} 1682vec3 packDepthToRGB( const in float v ) { 1683 if( v <= 0.0 ) 1684 return vec3( 0., 0., 0. ); 1685 if( v >= 1.0 ) 1686 return vec3( 1., 1., 1. ); 1687 float vuf; 1688 float bf = modf( v * PackFactors.b, vuf ); 1689 float gf = modf( vuf * ShiftRight8, vuf ); 1690 return vec3( vuf * Inv255, gf * PackUpscale, bf ); 1691} 1692vec2 packDepthToRG( const in float v ) { 1693 if( v <= 0.0 ) 1694 return vec2( 0., 0. ); 1695 if( v >= 1.0 ) 1696 return vec2( 1., 1. ); 1697 float vuf; 1698 float gf = modf( v * 256., vuf ); 1699 return vec2( vuf * Inv255, gf ); 1700} 1701float unpackRGBAToDepth( const in vec4 v ) { 1702 return dot( v, UnpackFactors4 ); 1703} 1704float unpackRGBToDepth( const in vec3 v ) { 1705 return dot( v, UnpackFactors3 ); 1706} 1707float unpackRGToDepth( const in vec2 v ) { 1708 return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; 1709} 1710vec4 pack2HalfToRGBA( const in vec2 v ) {
1711 vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); 1712 return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); 1713} 1714vec2 unpackRGBATo2Half( const in vec4 v ) { 1715 return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); 1716} 1717float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { 1718 return ( viewZ + near ) / ( near - far ); 1719} 1720float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { 1721 return depth * ( near - far ) - near; 1722} 1723float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { 1724 return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); 1725} 1726float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { 1727 return ( near * far ) / ( ( far - near ) * depth - far ); 1728}`,Hw=`#ifdef PREMULTIPLIED_ALPHA 1729 gl_FragColor.rgb *= gl_FragColor.a; 1730#endif`,kw=`vec4 mvPosition = vec4( transformed, 1.0 ); 1731#ifdef USE_BATCHING 1732 mvPosition = batchingMatrix * mvPosition; 1733#endif 1734#ifdef USE_INSTANCING 1735 mvPosition = instanceMatrix * mvPosition; 1736#endif 1737mvPosition = modelViewMatrix * mvPosition; 1738gl_Position = projectionMatrix * mvPosition;`,Gw=`#ifdef DITHERING 1739 gl_FragColor.rgb = dithering( gl_FragColor.rgb ); 1740#endif`,Ww=`#ifdef DITHERING 1741 vec3 dithering( vec3 color ) { 1742 float grid_position = rand( gl_FragCoord.xy ); 1743 vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); 1744 dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); 1745 return color + dither_shift_RGB; 1746 } 1747#endif`,Xw=`float roughnessFactor = roughness; 1748#ifdef USE_ROUGHNESSMAP 1749 vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); 1750 roughnessFactor *= texelRoughness.g; 1751#endif`,qw=`#ifdef USE_ROUGHNESSMAP 1752 uniform sampler2D roughnessMap; 1753#endif`,Yw=
vendor: 8,887 bytes, lines 1753-1939
1753`#if NUM_SPOT_LIGHT_COORDS > 0 1754 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; 1755#endif 1756#if NUM_SPOT_LIGHT_MAPS > 0 1757 uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; 1758#endif 1759#ifdef USE_SHADOWMAP 1760 #if NUM_DIR_LIGHT_SHADOWS > 0 1761 uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; 1762 varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; 1763 struct DirectionalLightShadow { 1764 float shadowIntensity; 1765 float shadowBias; 1766 float shadowNormalBias; 1767 float shadowRadius; 1768 vec2 shadowMapSize; 1769 }; 1770 uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; 1771 #endif 1772 #if NUM_SPOT_LIGHT_SHADOWS > 0 1773 uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; 1774 struct SpotLightShadow { 1775 float shadowIntensity; 1776 float shadowBias; 1777 float shadowNormalBias; 1778 float shadowRadius; 1779 vec2 shadowMapSize; 1780 }; 1781 uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; 1782 #endif 1783 #if NUM_POINT_LIGHT_SHADOWS > 0 1784 uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; 1785 varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; 1786 struct PointLightShadow { 1787 float shadowIntensity; 1788 float shadowBias; 1789 float shadowNormalBias; 1790 float shadowRadius; 1791 vec2 shadowMapSize; 1792 float shadowCameraNear; 1793 float shadowCameraFar; 1794 }; 1795 uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; 1796 #endif 1797 float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { 1798 return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); 1799 } 1800 vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { 1801 return unpackRGBATo2Half( texture2D( shadow, uv ) ); 1802 } 1803 float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ 1804 float occlusion = 1.0; 1805 vec2 distribution = texture2DDistribution( shadow, uv ); 1806 float hard_shadow = step( compare , distribution.x ); 1807 if (hard_shadow != 1.0 ) { 1808 float distance = compare - distribution.x ; 1809 float variance = max( 0.00000, distribution.y * distribution.y ); 1810 float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); 1811 } 1812 return occlusion; 1813 } 1814 float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { 1815 float shadow = 1.0; 1816 shadowCoord.xyz /= shadowCoord.w; 1817 shadowCoord.z += shadowBias; 1818 bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; 1819 bool frustumTest = inFrustum && shadowCoord.z <= 1.0; 1820 if ( frustumTest ) { 1821 #if defined( SHADOWMAP_TYPE_PCF ) 1822 vec2 texelSize = vec2( 1.0 ) / shadowMapSize; 1823 float dx0 = - texelSize.x * shadowRadius; 1824 float dy0 = - texelSize.y * shadowRadius; 1825 float dx1 = + texelSize.x * shadowRadius; 1826 float dy1 = + texelSize.y * shadowRadius; 1827 float dx2 = dx0 / 2.0; 1828 float dy2 = dy0 / 2.0; 1829 float dx3 = dx1 / 2.0; 1830 float dy3 = dy1 / 2.0; 1831 shadow = ( 1832 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + 1833 texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + 1834 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + 1835 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + 1836 texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + 1837 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + 1838 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + 1839 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + 1840 texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + 1841 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + 1842 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + 1843 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + 1844 texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + 1845 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + 1846 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + 1847 texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + 1848 texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) 1849 ) * ( 1.0 / 17.0 ); 1850 #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) 1851 vec2 texelSize = vec2( 1.0 ) / shadowMapSize; 1852 float dx = texelSize.x; 1853 float dy = texelSize.y; 1854 vec2 uv = shadowCoord.xy; 1855 vec2 f = fract( uv * shadowMapSize + 0.5 ); 1856 uv -= f * texelSize; 1857 shadow = ( 1858 texture2DCompare( shadowMap, uv, shadowCoord.z ) + 1859 texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + 1860 texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + 1861 texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + 1862 mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), 1863 texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), 1864 f.x ) + 1865 mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), 1866 texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), 1867 f.x ) + 1868 mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), 1869 texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), 1870 f.y ) + 1871 mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), 1872 texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), 1873 f.y ) + 1874 mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), 1875 texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), 1876 f.x ), 1877 mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), 1878 texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), 1879 f.x ), 1880 f.y ) 1881 ) * ( 1.0 / 9.0 ); 1882 #elif defined( SHADOWMAP_TYPE_VSM ) 1883 shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); 1884 #else 1885 shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); 1886 #endif 1887 } 1888 return mix( 1.0, shadow, shadowIntensity ); 1889 } 1890 vec2 cubeToUV( vec3 v, float texelSizeY ) { 1891 vec3 absV = abs( v ); 1892 float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); 1893 absV *= scaleToCube; 1894 v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); 1895 vec2 planar = v.xy; 1896 float almostATexel = 1.5 * texelSizeY; 1897 float almostOne = 1.0 - almostATexel; 1898 if ( absV.z >= almostOne ) { 1899 if ( v.z > 0.0 ) 1900 planar.x = 4.0 - v.x; 1901 } else if ( absV.x >= almostOne ) { 1902 float signX = sign( v.x ); 1903 planar.x = v.z * signX + 2.0 * signX; 1904 } else if ( absV.y >= almostOne ) { 1905 float signY = sign( v.y ); 1906 planar.x = v.x + 2.0 * signY + 2.0; 1907 planar.y = v.z * signY - 2.0; 1908 } 1909 return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); 1910 } 1911 float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { 1912 float shadow = 1.0; 1913 vec3 lightToPosition = shadowCoord.xyz; 1914 1915 float lightToPositionLength = length( lightToPosition ); 1916 if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { 1917 float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; 1918 vec3 bd3D = normalize( lightToPosition ); 1919 vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); 1920 #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) 1921 vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; 1922 shadow = ( 1923 texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + 1924 texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + 1925 texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + 1926 texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + 1927 texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + 1928 texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + 1929 texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + 1930 texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + 1931 texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) 1932 ) * ( 1.0 / 9.0 ); 1933 #else 1934 shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); 1935 #endif 1936 } 1937 return mix( 1.0, shadow, shadowIntensity ); 1938 } 1939#endif`,
1939Zw=`#if NUM_SPOT_LIGHT_COORDS > 0 1940 uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; 1941 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; 1942#endif 1943#ifdef USE_SHADOWMAP 1944 #if NUM_DIR_LIGHT_SHADOWS > 0 1945 uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; 1946 varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; 1947 struct DirectionalLightShadow { 1948 float shadowIntensity; 1949 float shadowBias; 1950 float shadowNormalBias; 1951 float shadowRadius; 1952 vec2 shadowMapSize; 1953 }; 1954 uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; 1955 #endif 1956 #if NUM_SPOT_LIGHT_SHADOWS > 0 1957 struct SpotLightShadow { 1958 float shadowIntensity; 1959 float shadowBias; 1960 float shadowNormalBias; 1961 float shadowRadius; 1962 vec2 shadowMapSize; 1963 }; 1964 uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; 1965 #endif 1966 #if NUM_POINT_LIGHT_SHADOWS > 0 1967 uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; 1968 varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; 1969 struct PointLightShadow { 1970 float shadowIntensity; 1971 float shadowBias; 1972 float shadowNormalBias; 1973 float shadowRadius; 1974 vec2 shadowMapSize; 1975 float shadowCameraNear; 1976 float shadowCameraFar; 1977 }; 1978 uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; 1979 #endif 1980#endif`,Kw=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) 1981 vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); 1982 vec4 shadowWorldPosition; 1983#endif 1984#if defined( USE_SHADOWMAP ) 1985 #if NUM_DIR_LIGHT_SHADOWS > 0 1986 #pragma unroll_loop_start 1987 for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { 1988 shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); 1989 vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; 1990 } 1991 #pragma unroll_loop_end 1992 #endif 1993 #if NUM_POINT_LIGHT_SHADOWS > 0 1994 #pragma unroll_loop_start 1995 for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { 1996 shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); 1997 vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; 1998 } 1999 #pragma unroll_loop_end 2000 #endif 2001#endif 2002#if NUM_SPOT_LIGHT_COORDS > 0 2003 #pragma unroll_loop_start 2004 for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { 2005 shadowWorldPosition = worldPosition; 2006 #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) 2007 shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; 2008 #endif 2009 vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; 2010 } 2011 #pragma unroll_loop_end 2012#endif`,Qw=`float getShadowMask() { 2013 float shadow = 1.0; 2014 #ifdef USE_SHADOWMAP 2015 #if NUM_DIR_LIGHT_SHADOWS > 0 2016 DirectionalLightShadow directionalLight; 2017 #pragma unroll_loop_start 2018 for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { 2019 directionalLight = directionalLightShadows[ i ]; 2020 shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; 2021 } 2022 #pragma unroll_loop_end 2023 #endif 2024 #if NUM_SPOT_LIGHT_SHADOWS > 0 2025 SpotLightShadow spotLight; 2026 #pragma unroll_loop_start 2027 for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { 2028 spotLight = spotLightShadows[ i ]; 2029 shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; 2030 } 2031 #pragma unroll_loop_end 2032 #endif 2033 #if NUM_POINT_LIGHT_SHADOWS > 0 2034 PointLightShadow pointLight; 2035 #pragma unroll_loop_start 2036 for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { 2037 pointLight = pointLightShadows[ i ]; 2038 shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; 2039 } 2040 #pragma unroll_loop_end 2041 #endif 2042 #endif 2043 return shadow; 2044}`,$w=`#ifdef USE_SKINNING 2045 mat4 boneMatX = getBoneMatrix( skinIndex.x ); 2046 mat4 boneMatY = getBoneMatrix( skinIndex.y ); 2047 mat4 boneMatZ = getBoneMatrix( skinIndex.z ); 2048 mat4 boneMatW = getBoneMatrix( skinIndex.w ); 2049#endif`,Jw=`#ifdef USE_SKINNING 2050 uniform mat4 bindMatrix; 2051 uniform mat4 bindMatrixInverse; 2052 uniform highp sampler2D boneTexture; 2053 mat4 getBoneMatrix( const in float i ) { 2054 int size = textureSize( boneTexture, 0 ).x; 2055 int j = int( i ) * 4; 2056 int x = j % size; 2057 int y = j / size; 2058 vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); 2059 vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); 2060 vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); 2061 vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); 2062 return mat4( v1, v2, v3, v4 ); 2063 } 2064#endif`,e8=`#ifdef USE_SKINNING 2065 vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); 2066 vec4 skinned = vec4( 0.0 ); 2067 skinned += boneMatX * skinVertex * skinWeight.x; 2068 skinned += boneMatY * skinVertex * skinWeight.y; 2069 skinned += boneMatZ * skinVertex * skinWeight.z; 2070 skinned += boneMatW * skinVertex * skinWeight.w; 2071 transformed = ( bindMatrixInverse * skinned ).xyz; 2072#endif`,t8=`#ifdef USE_SKINNING 2073 mat4 skinMatrix = mat4( 0.0 ); 2074 skinMatrix += skinWeight.x * boneMatX; 2075 skinMatrix += skinWeight.y * boneMatY; 2076 skinMatrix += skinWeight.z * boneMatZ; 2077 skinMatrix += skinWeight.w * boneMatW; 2078 skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; 2079 objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; 2080 #ifdef USE_TANGENT 2081 objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; 2082 #endif 2083#endif`,n8=`float specularStrength; 2084#ifdef USE_SPECULARMAP 2085 vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); 2086 specularStrength = texelSpecular.r; 2087#else 2088 specularStrength = 1.0; 2089#endif`,i8=`#ifdef USE_SPECULARMAP 2090 uniform sampler2D specularMap; 2091#endif`,s8=`#if defined( TONE_MAPPING ) 2092 gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); 2093#endif`,a8=`#ifndef saturate 2094#define saturate( a ) clamp( a, 0.0, 1.0 ) 2095#endif 2096uniform float toneMappingExposure; 2097vec3 LinearToneMapping( vec3 color ) { 2098 return saturate( toneMappingExposure * color ); 2099} 2100vec3 ReinhardToneMapping( vec3 color ) { 2101 color *= toneMappingExposure; 2102 return saturate( color / ( vec3( 1.0 ) + color ) ); 2103} 2104vec3 CineonToneMapping( vec3 color ) { 2105 color *= toneMappingExposure; 2106 color = max( vec3( 0.0 ), color - 0.004 ); 2107 return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); 2108} 2109vec3 RRTAndODTFit( vec3 v ) { 2110 vec3 a = v * ( v + 0.0245786 ) - 0.000090537; 2111 vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; 2112 return a / b; 2113} 2114vec3 ACESFilmicToneMapping( vec3 color ) { 2115 const mat3 ACESInputMat = mat3( 2116 vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), 2117 vec3( 0.04823, 0.01566, 0.83777 ) 2118 ); 2119 const mat3 ACESOutputMat = mat3( 2120 vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), 2121 vec3( -0.07367, -0.00605, 1.07602 ) 2122 ); 2123 color *= toneMappingExposure / 0.6; 2124 color = ACESInputMat * color; 2125 color = RRTAndODTFit( color ); 2126 color = ACESOutputMat * color; 2127 return saturate( color ); 2128} 2129const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( 2130 vec3( 1.6605, - 0.1246, - 0.0182 ), 2131 vec3( - 0.5876, 1.1329, - 0.1006 ), 2132 vec3( - 0.0728, - 0.0083, 1.1187 ) 2133); 2134const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( 2135 vec3( 0.6274, 0.0691, 0.0164 ), 2136 vec3( 0.3293, 0.9195, 0.0880 ), 2137 vec3( 0.0433, 0.0113, 0.8956 ) 2138); 2139vec3 agxDefaultContrastApprox( vec3 x ) { 2140 vec3 x2 = x * x; 2141 vec3 x4 = x2 * x2; 2142 return + 15.5 * x4 * x2 2143 - 40.14 * x4 * x 2144 + 31.96 * x4 2145 - 6.868 * x2 * x 2146 + 0.4298 * x2 2147 + 0.1191 * x 2148 - 0.00232; 2149} 2150vec3 AgXToneMapping( vec3 color ) { 2151 const mat3 AgXInsetMatrix = mat3( 2152 vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), 2153 vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), 2154 vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) 2155 );
2156 const mat3 AgXOutsetMatrix = mat3( 2157 vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), 2158 vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), 2159 vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) 2160 ); 2161 const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; 2162 color *= toneMappingExposure; 2163 color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; 2164 color = AgXInsetMatrix * color; 2165 color = max( color, 1e-10 ); color = log2( color ); 2166 color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); 2167 color = clamp( color, 0.0, 1.0 ); 2168 color = agxDefaultContrastApprox( color ); 2169 color = AgXOutsetMatrix * color; 2170 color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); 2171 color = LINEAR_REC2020_TO_LINEAR_SRGB * color; 2172 color = clamp( color, 0.0, 1.0 ); 2173 return color; 2174} 2175vec3 NeutralToneMapping( vec3 color ) { 2176 const float StartCompression = 0.8 - 0.04; 2177 const float Desaturation = 0.15; 2178 color *= toneMappingExposure; 2179 float x = min( color.r, min( color.g, color.b ) ); 2180 float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; 2181 color -= offset; 2182 float peak = max( color.r, max( color.g, color.b ) ); 2183 if ( peak < StartCompression ) return color; 2184 float d = 1. - StartCompression; 2185 float newPeak = 1. - d * d / ( peak + d - StartCompression ); 2186 color *= newPeak / peak; 2187 float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); 2188 return mix( color, vec3( newPeak ), g ); 2189} 2190vec3 CustomToneMapping( vec3 color ) { return color; }`,r8=`#ifdef USE_TRANSMISSION 2191 material.transmission = transmission; 2192 material.transmissionAlpha = 1.0; 2193 material.thickness = thickness; 2194 material.attenuationDistance = attenuationDistance; 2195 material.attenuationColor = attenuationColor; 2196 #ifdef USE_TRANSMISSIONMAP 2197 material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; 2198 #endif 2199 #ifdef USE_THICKNESSMAP 2200 material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; 2201 #endif 2202 vec3 pos = vWorldPosition; 2203 vec3 v = normalize( cameraPosition - pos ); 2204 vec3 n = inverseTransformDirection( normal, viewMatrix ); 2205 vec4 transmitted = getIBLVolumeRefraction( 2206 n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, 2207 pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, 2208 material.attenuationColor, material.attenuationDistance ); 2209 material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); 2210 totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); 2211#endif`,o8=`#ifdef USE_TRANSMISSION 2212 uniform float transmission; 2213 uniform float thickness; 2214 uniform float attenuationDistance; 2215 uniform vec3 attenuationColor; 2216 #ifdef USE_TRANSMISSIONMAP 2217 uniform sampler2D transmissionMap; 2218 #endif 2219 #ifdef USE_THICKNESSMAP 2220 uniform sampler2D thicknessMap; 2221 #endif 2222 uniform vec2 transmissionSamplerSize; 2223 uniform sampler2D transmissionSamplerMap; 2224 uniform mat4 modelMatrix; 2225 uniform mat4 projectionMatrix; 2226 varying vec3 vWorldPosition; 2227 float w0( float a ) { 2228 return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); 2229 } 2230 float w1( float a ) { 2231 return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); 2232 } 2233 float w2( float a ){ 2234 return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); 2235 } 2236 float w3( float a ) { 2237 return ( 1.0 / 6.0 ) * ( a * a * a ); 2238 } 2239 float g0( float a ) { 2240 return w0( a ) + w1( a ); 2241 } 2242 float g1( float a ) { 2243 return w2( a ) + w3( a ); 2244 } 2245 float h0( float a ) { 2246 return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); 2247 } 2248 float h1( float a ) { 2249 return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); 2250 } 2251 vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { 2252 uv = uv * texelSize.zw + 0.5; 2253 vec2 iuv = floor( uv ); 2254 vec2 fuv = fract( uv ); 2255 float g0x = g0( fuv.x ); 2256 float g1x = g1( fuv.x ); 2257 float h0x = h0( fuv.x ); 2258 float h1x = h1( fuv.x ); 2259 float h0y = h0( fuv.y ); 2260 float h1y = h1( fuv.y ); 2261 vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; 2262 vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; 2263 vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; 2264 vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; 2265 return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + 2266 g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); 2267 } 2268 vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { 2269 vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); 2270 vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); 2271 vec2 fLodSizeInv = 1.0 / fLodSize; 2272 vec2 cLodSizeInv = 1.0 / cLodSize; 2273 vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); 2274 vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); 2275 return mix( fSample, cSample, fract( lod ) ); 2276 } 2277 vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { 2278 vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); 2279 vec3 modelScale; 2280 modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); 2281 modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); 2282 modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); 2283 return normalize( refractionVector ) * thickness * modelScale; 2284 } 2285 float applyIorToRoughness( const in float roughness, const in float ior ) { 2286 return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); 2287 } 2288 vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { 2289 float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); 2290 return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); 2291 } 2292 vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { 2293 if ( isinf( attenuationDistance ) ) { 2294 return vec3( 1.0 ); 2295 } else { 2296 vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; 2297 vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; 2298 } 2299 } 2300 vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, 2301 const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, 2302 const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, 2303 const in vec3 attenuationColor, const in float attenuationDistance ) { 2304 vec4 transmittedLight; 2305 vec3 transmittance; 2306 #ifdef USE_DISPERSION 2307 float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; 2308 vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); 2309 for ( int i = 0; i < 3; i ++ ) { 2310 vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); 2311 vec3 refractedRayExit = position + transmissionRay; 2312 vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); 2313 vec2 refractionCoords = ndcPos.xy / ndcPos.w; 2314 refractionCoords += 1.0; 2315 refractionCoords /= 2.0; 2316 vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); 2317 transmittedLight[ i ] = transmissionSample[ i ]; 2318 transmittedLight.a += transmissionSample.a; 2319 transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; 2320 } 2321 transmittedLight.a /= 3.0; 2322 #else 2323 vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); 2324 vec3 refractedRayExit = position + transmissionRay; 2325 vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); 2326 vec2 refractionCoords = ndcPos.xy / ndcPos.w; 2327 refractionCoords += 1.0; 2328 refractionCoords /= 2.0; 2329 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); 2330 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); 2331 #endif 2332 vec3 attenuatedColor = transmittance * transmittedLight.rgb; 2333 vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); 2334 float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; 2335 return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); 2336 } 2337#endif`,l8=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) 2338 varying vec2 vUv; 2339#endif 2340#ifdef USE_MAP 2341 varying vec2 vMapUv; 2342#endif 2343#ifdef USE_ALPHAMAP
2344 varying vec2 vAlphaMapUv; 2345#endif 2346#ifdef USE_LIGHTMAP 2347 varying vec2 vLightMapUv; 2348#endif 2349#ifdef USE_AOMAP 2350 varying vec2 vAoMapUv; 2351#endif 2352#ifdef USE_BUMPMAP 2353 varying vec2 vBumpMapUv; 2354#endif 2355#ifdef USE_NORMALMAP 2356 varying vec2 vNormalMapUv; 2357#endif 2358#ifdef USE_EMISSIVEMAP 2359 varying vec2 vEmissiveMapUv; 2360#endif 2361#ifdef USE_METALNESSMAP 2362 varying vec2 vMetalnessMapUv; 2363#endif 2364#ifdef USE_ROUGHNESSMAP 2365 varying vec2 vRoughnessMapUv; 2366#endif 2367#ifdef USE_ANISOTROPYMAP 2368 varying vec2 vAnisotropyMapUv; 2369#endif 2370#ifdef USE_CLEARCOATMAP 2371 varying vec2 vClearcoatMapUv; 2372#endif 2373#ifdef USE_CLEARCOAT_NORMALMAP 2374 varying vec2 vClearcoatNormalMapUv; 2375#endif 2376#ifdef USE_CLEARCOAT_ROUGHNESSMAP 2377 varying vec2 vClearcoatRoughnessMapUv; 2378#endif 2379#ifdef USE_IRIDESCENCEMAP 2380 varying vec2 vIridescenceMapUv; 2381#endif 2382#ifdef USE_IRIDESCENCE_THICKNESSMAP 2383 varying vec2 vIridescenceThicknessMapUv; 2384#endif 2385#ifdef USE_SHEEN_COLORMAP 2386 varying vec2 vSheenColorMapUv; 2387#endif 2388#ifdef USE_SHEEN_ROUGHNESSMAP 2389 varying vec2 vSheenRoughnessMapUv; 2390#endif 2391#ifdef USE_SPECULARMAP 2392 varying vec2 vSpecularMapUv; 2393#endif 2394#ifdef USE_SPECULAR_COLORMAP 2395 varying vec2 vSpecularColorMapUv; 2396#endif 2397#ifdef USE_SPECULAR_INTENSITYMAP 2398 varying vec2 vSpecularIntensityMapUv; 2399#endif 2400#ifdef USE_TRANSMISSIONMAP 2401 uniform mat3 transmissionMapTransform; 2402 varying vec2 vTransmissionMapUv; 2403#endif 2404#ifdef USE_THICKNESSMAP 2405 uniform mat3 thicknessMapTransform; 2406 varying vec2 vThicknessMapUv; 2407#endif`,c8=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) 2408 varying vec2 vUv; 2409#endif 2410#ifdef USE_MAP 2411 uniform mat3 mapTransform; 2412 varying vec2 vMapUv; 2413#endif 2414#ifdef USE_ALPHAMAP 2415 uniform mat3 alphaMapTransform; 2416 varying vec2 vAlphaMapUv; 2417#endif 2418#ifdef USE_LIGHTMAP 2419 uniform mat3 lightMapTransform; 2420 varying vec2 vLightMapUv; 2421#endif 2422#ifdef USE_AOMAP 2423 uniform mat3 aoMapTransform; 2424 varying vec2 vAoMapUv; 2425#endif 2426#ifdef USE_BUMPMAP 2427 uniform mat3 bumpMapTransform; 2428 varying vec2 vBumpMapUv; 2429#endif 2430#ifdef USE_NORMALMAP 2431 uniform mat3 normalMapTransform; 2432 varying vec2 vNormalMapUv; 2433#endif 2434#ifdef USE_DISPLACEMENTMAP 2435 uniform mat3 displacementMapTransform; 2436 varying vec2 vDisplacementMapUv; 2437#endif 2438#ifdef USE_EMISSIVEMAP 2439 uniform mat3 emissiveMapTransform; 2440 varying vec2 vEmissiveMapUv; 2441#endif 2442#ifdef USE_METALNESSMAP 2443 uniform mat3 metalnessMapTransform; 2444 varying vec2 vMetalnessMapUv; 2445#endif 2446#ifdef USE_ROUGHNESSMAP 2447 uniform mat3 roughnessMapTransform; 2448 varying vec2 vRoughnessMapUv; 2449#endif 2450#ifdef USE_ANISOTROPYMAP 2451 uniform mat3 anisotropyMapTransform; 2452 varying vec2 vAnisotropyMapUv; 2453#endif 2454#ifdef USE_CLEARCOATMAP 2455 uniform mat3 clearcoatMapTransform; 2456 varying vec2 vClearcoatMapUv; 2457#endif 2458#ifdef USE_CLEARCOAT_NORMALMAP 2459 uniform mat3 clearcoatNormalMapTransform; 2460 varying vec2 vClearcoatNormalMapUv; 2461#endif 2462#ifdef USE_CLEARCOAT_ROUGHNESSMAP 2463 uniform mat3 clearcoatRoughnessMapTransform; 2464 varying vec2 vClearcoatRoughnessMapUv; 2465#endif 2466#ifdef USE_SHEEN_COLORMAP 2467 uniform mat3 sheenColorMapTransform; 2468 varying vec2 vSheenColorMapUv; 2469#endif 2470#ifdef USE_SHEEN_ROUGHNESSMAP 2471 uniform mat3 sheenRoughnessMapTransform; 2472 varying vec2 vSheenRoughnessMapUv; 2473#endif 2474#ifdef USE_IRIDESCENCEMAP 2475 uniform mat3 iridescenceMapTransform; 2476 varying vec2 vIridescenceMapUv; 2477#endif 2478#ifdef USE_IRIDESCENCE_THICKNESSMAP 2479 uniform mat3 iridescenceThicknessMapTransform; 2480 varying vec2 vIridescenceThicknessMapUv; 2481#endif 2482#ifdef USE_SPECULARMAP 2483 uniform mat3 specularMapTransform; 2484 varying vec2 vSpecularMapUv; 2485#endif 2486#ifdef USE_SPECULAR_COLORMAP 2487 uniform mat3 specularColorMapTransform; 2488 varying vec2 vSpecularColorMapUv; 2489#endif 2490#ifdef USE_SPECULAR_INTENSITYMAP 2491 uniform mat3 specularIntensityMapTransform; 2492 varying vec2 vSpecularIntensityMapUv; 2493#endif 2494#ifdef USE_TRANSMISSIONMAP 2495 uniform mat3 transmissionMapTransform; 2496 varying vec2 vTransmissionMapUv; 2497#endif 2498#ifdef USE_THICKNESSMAP 2499 uniform mat3 thicknessMapTransform; 2500 varying vec2 vThicknessMapUv; 2501#endif`,u8=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) 2502 vUv = vec3( uv, 1 ).xy; 2503#endif 2504#ifdef USE_MAP 2505 vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; 2506#endif 2507#ifdef USE_ALPHAMAP 2508 vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; 2509#endif 2510#ifdef USE_LIGHTMAP 2511 vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; 2512#endif 2513#ifdef USE_AOMAP 2514 vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; 2515#endif 2516#ifdef USE_BUMPMAP 2517 vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; 2518#endif 2519#ifdef USE_NORMALMAP 2520 vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; 2521#endif 2522#ifdef USE_DISPLACEMENTMAP 2523 vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; 2524#endif 2525#ifdef USE_EMISSIVEMAP 2526 vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; 2527#endif 2528#ifdef USE_METALNESSMAP 2529 vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; 2530#endif 2531#ifdef USE_ROUGHNESSMAP 2532 vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; 2533#endif 2534#ifdef USE_ANISOTROPYMAP 2535 vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; 2536#endif 2537#ifdef USE_CLEARCOATMAP 2538 vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; 2539#endif 2540#ifdef USE_CLEARCOAT_NORMALMAP 2541 vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; 2542#endif 2543#ifdef USE_CLEARCOAT_ROUGHNESSMAP 2544 vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; 2545#endif
2546#ifdef USE_IRIDESCENCEMAP 2547 vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; 2548#endif 2549#ifdef USE_IRIDESCENCE_THICKNESSMAP 2550 vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; 2551#endif 2552#ifdef USE_SHEEN_COLORMAP 2553 vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; 2554#endif 2555#ifdef USE_SHEEN_ROUGHNESSMAP 2556 vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; 2557#endif 2558#ifdef USE_SPECULARMAP 2559 vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; 2560#endif 2561#ifdef USE_SPECULAR_COLORMAP 2562 vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; 2563#endif 2564#ifdef USE_SPECULAR_INTENSITYMAP 2565 vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; 2566#endif 2567#ifdef USE_TRANSMISSIONMAP 2568 vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; 2569#endif 2570#ifdef USE_THICKNESSMAP 2571 vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; 2572#endif`,f8=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 2573 vec4 worldPosition = vec4( transformed, 1.0 ); 2574 #ifdef USE_BATCHING 2575 worldPosition = batchingMatrix * worldPosition; 2576 #endif 2577 #ifdef USE_INSTANCING 2578 worldPosition = instanceMatrix * worldPosition; 2579 #endif 2580 worldPosition = modelMatrix * worldPosition; 2581#endif`;const d8=`varying vec2 vUv; 2582uniform mat3 uvTransform; 2583void main() { 2584 vUv = ( uvTransform * vec3( uv, 1 ) ).xy; 2585 gl_Position = vec4( position.xy, 1.0, 1.0 ); 2586}`,h8=`uniform sampler2D t2D; 2587uniform float backgroundIntensity; 2588varying vec2 vUv; 2589void main() { 2590 vec4 texColor = texture2D( t2D, vUv ); 2591 #ifdef DECODE_VIDEO_TEXTURE 2592 texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); 2593 #endif 2594 texColor.rgb *= backgroundIntensity; 2595 gl_FragColor = texColor; 2596 #include <tonemapping_fragment> 2597 #include <colorspace_fragment> 2598}`,p8=`varying vec3 vWorldDirection; 2599#include <common> 2600void main() { 2601 vWorldDirection = transformDirection( position, modelMatrix ); 2602 #include <begin_vertex> 2603 #include <project_vertex> 2604 gl_Position.z = gl_Position.w; 2605}`,m8=`#ifdef ENVMAP_TYPE_CUBE 2606 uniform samplerCube envMap; 2607#elif defined( ENVMAP_TYPE_CUBE_UV ) 2608 uniform sampler2D envMap; 2609#endif 2610uniform float flipEnvMap; 2611uniform float backgroundBlurriness; 2612uniform float backgroundIntensity; 2613uniform mat3 backgroundRotation; 2614varying vec3 vWorldDirection; 2615#include <cube_uv_reflection_fragment> 2616void main() { 2617 #ifdef ENVMAP_TYPE_CUBE 2618 vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); 2619 #elif defined( ENVMAP_TYPE_CUBE_UV ) 2620 vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); 2621 #else 2622 vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); 2623 #endif 2624 texColor.rgb *= backgroundIntensity; 2625 gl_FragColor = texColor; 2626 #include <tonemapping_fragment> 2627 #include <colorspace_fragment> 2628}`,g8=`varying vec3 vWorldDirection; 2629#include <common> 2630void main() { 2631 vWorldDirection = transformDirection( position, modelMatrix ); 2632 #include <begin_vertex> 2633 #include <project_vertex> 2634 gl_Position.z = gl_Position.w; 2635}`,v8=`uniform samplerCube tCube; 2636uniform float tFlip; 2637uniform float opacity; 2638varying vec3 vWorldDirection; 2639void main() { 2640 vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); 2641 gl_FragColor = texColor; 2642 gl_FragColor.a *= opacity; 2643 #include <tonemapping_fragment> 2644 #include <colorspace_fragment> 2645}`,x8=`#include <common> 2646#include <batching_pars_vertex> 2647#include <uv_pars_vertex> 2648#include <displacementmap_pars_vertex> 2649#include <morphtarget_pars_vertex> 2650#include <skinning_pars_vertex> 2651#include <logdepthbuf_pars_vertex> 2652#include <clipping_planes_pars_vertex> 2653varying vec2 vHighPrecisionZW; 2654void main() { 2655 #include <uv_vertex> 2656 #include <batching_vertex> 2657 #include <skinbase_vertex> 2658 #include <morphinstance_vertex> 2659 #ifdef USE_DISPLACEMENTMAP 2660 #include <beginnormal_vertex> 2661 #include <morphnormal_vertex> 2662 #include <skinnormal_vertex> 2663 #endif 2664 #include <begin_vertex> 2665 #include <morphtarget_vertex> 2666 #include <skinning_vertex> 2667 #include <displacementmap_vertex> 2668 #include <project_vertex> 2669 #include <logdepthbuf_vertex> 2670 #include <clipping_planes_vertex> 2671 vHighPrecisionZW = gl_Position.zw; 2672}`,_8=`#if DEPTH_PACKING == 3200 2673 uniform float opacity; 2674#endif 2675#include <common> 2676#include <packing> 2677#include <uv_pars_fragment> 2678#include <map_pars_fragment> 2679#include <alphamap_pars_fragment> 2680#include <alphatest_pars_fragment> 2681#include <alphahash_pars_fragment> 2682#include <logdepthbuf_pars_fragment> 2683#include <clipping_planes_pars_fragment> 2684varying vec2 vHighPrecisionZW; 2685void main() { 2686 vec4 diffuseColor = vec4( 1.0 ); 2687 #include <clipping_planes_fragment> 2688 #if DEPTH_PACKING == 3200 2689 diffuseColor.a = opacity; 2690 #endif 2691 #include <map_fragment> 2692 #include <alphamap_fragment> 2693 #include <alphatest_fragment> 2694 #include <alphahash_fragment> 2695 #include <logdepthbuf_fragment> 2696 float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; 2697 #if DEPTH_PACKING == 3200 2698 gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); 2699 #elif DEPTH_PACKING == 3201 2700 gl_FragColor = packDepthToRGBA( fragCoordZ ); 2701 #elif DEPTH_PACKING == 3202 2702 gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); 2703 #elif DEPTH_PACKING == 3203 2704 gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); 2705 #endif 2706}`,y8=`#define DISTANCE 2707varying vec3 vWorldPosition; 2708#include <common> 2709#include <batching_pars_vertex> 2710#include <uv_pars_vertex> 2711#include <displacementmap_pars_vertex> 2712#include <morphtarget_pars_vertex> 2713#include <skinning_pars_vertex> 2714#include <clipping_planes_pars_vertex> 2715void main() { 2716 #include <uv_vertex> 2717 #include <batching_vertex> 2718 #include <skinbase_vertex> 2719 #include <morphinstance_vertex> 2720 #ifdef USE_DISPLACEMENTMAP 2721 #include <beginnormal_vertex> 2722 #include <morphnormal_vertex> 2723 #include <skinnormal_vertex> 2724 #endif 2725 #include <begin_vertex> 2726 #include <morphtarget_vertex> 2727 #include <skinning_vertex> 2728 #include <displacementmap_vertex> 2729 #include <project_vertex> 2730 #include <worldpos_vertex> 2731 #include <clipping_planes_vertex> 2732 vWorldPosition = worldPosition.xyz; 2733}`,S8=`#define DISTANCE 2734uniform vec3 referencePosition; 2735uniform float nearDistance; 2736uniform float farDistance; 2737varying vec3 vWorldPosition; 2738#include <common> 2739#include <packing> 2740#include <uv_pars_fragment> 2741#include <map_pars_fragment> 2742#include <alphamap_pars_fragment> 2743#include <alphatest_pars_fragment> 2744#include <alphahash_pars_fragment> 2745#include <clipping_planes_pars_fragment> 2746void main () { 2747 vec4 diffuseColor = vec4( 1.0 ); 2748 #include <clipping_planes_fragment> 2749 #include <map_fragment> 2750 #include <alphamap_fragment> 2751 #include <alphatest_fragment> 2752 #include <alphahash_fragment> 2753 float dist = length( vWorldPosition - referencePosition ); 2754 dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); 2755 dist = saturate( dist ); 2756 gl_FragColor = packDepthToRGBA( dist ); 2757}`,M8=`varying vec3 vWorldDirection; 2758#include <common> 2759void main() { 2760 vWorldDirection = transformDirection( position, modelMatrix ); 2761 #include <begin_vertex> 2762 #include <project_vertex> 2763}`,b8=`uniform sampler2D tEquirect; 2764varying vec3 vWorldDirection; 2765#include <common> 2766void main() { 2767 vec3 direction = normalize( vWorldDirection ); 2768 vec2 sampleUV = equirectUv( direction ); 2769 gl_FragColor = texture2D( tEquirect, sampleUV ); 2770 #include <tonemapping_fragment> 2771 #include <colorspace_fragment> 2772}`,E8=`uniform float scale; 2773attribute float lineDistance; 2774varying float vLineDistance; 2775#include <common> 2776#include <uv_pars_vertex> 2777#include <color_pars_vertex> 2778#include <fog_pars_vertex> 2779#include <morphtarget_pars_vertex> 2780#include <logdepthbuf_pars_vertex> 2781#include <clipping_planes_pars_vertex> 2782void main() { 2783 vLineDistance = scale * lineDistance; 2784 #include <uv_vertex> 2785 #include <color_vertex> 2786 #include <morphinstance_vertex> 2787 #include <morphcolor_vertex> 2788 #include <begin_vertex> 2789 #include <morphtarget_vertex> 2790 #include <project_vertex> 2791 #include <logdepthbuf_vertex> 2792 #include <clipping_planes_vertex> 2793 #include <fog_vertex> 2794}`,w8=`uniform vec3 diffuse; 2795uniform float opacity; 2796uniform float dashSize; 2797uniform float totalSize; 2798varying float vLineDistance; 2799#include <common> 2800#include <color_pars_fragment> 2801#include <uv_pars_fragment> 2802#include <map_pars_fragment> 2803#include <fog_pars_fragment> 2804#include <logdepthbuf_pars_fragment> 2805#include <clipping_planes_pars_fragment> 2806void main() { 2807 vec4 diffuseColor = vec4( diffuse, opacity ); 2808 #include <clipping_planes_fragment> 2809 if ( mod( vLineDistance, totalSize ) > dashSize ) { 2810 discard; 2811 } 2812 vec3 outgoingLight = vec3( 0.0 ); 2813 #include <logdepthbuf_fragment> 2814 #include <map_fragment> 2815 #include <color_fragment> 2816 outgoingLight = diffuseColor.rgb; 2817 #include <opaque_fragment> 2818 #include <tonemapping_fragment> 2819 #include <colorspace_fragment> 2820 #include <fog_fragment> 2821 #include <premultiplied_alpha_fragment> 2822}`,T8=`#include <common> 2823#include <batching_pars_vertex> 2824#include <uv_pars_vertex> 2825#include <envmap_pars_vertex> 2826#include <color_pars_vertex> 2827#include <fog_pars_vertex> 2828#include <morphtarget_pars_vertex> 2829#include <skinning_pars_vertex> 2830#include <logdepthbuf_pars_vertex> 2831#include <clipping_planes_pars_vertex> 2832void main() { 2833 #include <uv_vertex> 2834 #include <color_vertex> 2835 #include <morphinstance_vertex> 2836 #include <morphcolor_vertex> 2837 #include <batching_vertex> 2838 #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) 2839 #include <beginnormal_vertex> 2840 #include <morphnormal_vertex> 2841 #include <skinbase_vertex> 2842 #include <skinnormal_vertex> 2843 #include <defaultnormal_vertex> 2844 #endif 2845 #include <begin_vertex> 2846 #include <morphtarget_vertex> 2847 #include <skinning_vertex> 2848 #include <project_vertex> 2849 #include <logdepthbuf_vertex> 2850 #include <clipping_planes_vertex> 2851 #include <worldpos_vertex> 2852 #include <envmap_vertex> 2853 #include <fog_vertex> 2854}`,C8=`uniform vec3 diffuse; 2855uniform float opacity; 2856#ifndef FLAT_SHADED 2857 varying vec3 vNormal; 2858#endif 2859#include <common> 2860#include <dithering_pars_fragment> 2861#include <color_pars_fragment> 2862#include <uv_pars_fragment> 2863#include <map_pars_fragment> 2864#include <alphamap_pars_fragment> 2865#include <alphatest_pars_fragment> 2866#include <alphahash_pars_fragment> 2867#include <aomap_pars_fragment> 2868#include <lightmap_pars_fragment> 2869#include <envmap_common_pars_fragment> 2870#include <envmap_pars_fragment> 2871#include <fog_pars_fragment> 2872#include <specularmap_pars_fragment> 2873#include <logdepthbuf_pars_fragment> 2874#include <clipping_planes_pars_fragment> 2875void main() { 2876 vec4 diffuseColor = vec4( diffuse, opacity ); 2877 #include <clipping_planes_fragment> 2878 #include <logdepthbuf_fragment> 2879 #include <map_fragment> 2880 #include <color_fragment> 2881 #include <alphamap_fragment> 2882 #include <alphatest_fragment> 2883 #include <alphahash_fragment> 2884 #include <specularmap_fragment> 2885 ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 2886 #ifdef USE_LIGHTMAP 2887 vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); 2888 reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; 2889 #else 2890 reflectedLight.indirectDiffuse += vec3( 1.0 ); 2891 #endif 2892 #include <aomap_fragment> 2893 reflectedLight.indirectDiffuse *= diffuseColor.rgb; 2894 vec3 outgoingLight = reflectedLight.indirectDiffuse; 2895 #include <envmap_fragment> 2896 #include <opaque_fragment> 2897 #include <tonemapping_fragment> 2898 #include <colorspace_fragment> 2899 #include <fog_fragment> 2900 #include <premultiplied_alpha_fragment> 2901 #include <dithering_fragment> 2902}`,A8=`#define LAMBERT 2903varying vec3 vViewPosition; 2904#include <common> 2905#include <batching_pars_vertex> 2906#include <uv_pars_vertex> 2907#include <displacementmap_pars_vertex> 2908#include <envmap_pars_vertex> 2909#include <color_pars_vertex> 2910#include <fog_pars_vertex> 2911#include <normal_pars_vertex> 2912#include <morphtarget_pars_vertex> 2913#include <skinning_pars_vertex> 2914#include <shadowmap_pars_vertex> 2915#include <logdepthbuf_pars_vertex> 2916#include <clipping_planes_pars_vertex> 2917void main() { 2918 #include <uv_vertex> 2919 #include <color_vertex> 2920 #include <morphinstance_vertex> 2921 #include <morphcolor_vertex> 2922 #include <batching_vertex> 2923 #include <beginnormal_vertex> 2924 #include <morphnormal_vertex> 2925 #include <skinbase_vertex> 2926 #include <skinnormal_vertex> 2927 #include <defaultnormal_vertex> 2928 #include <normal_vertex> 2929 #include <begin_vertex> 2930 #include <morphtarget_vertex> 2931 #include <skinning_vertex> 2932 #include <displacementmap_vertex> 2933 #include <project_vertex> 2934 #include <logdepthbuf_vertex> 2935 #include <clipping_planes_vertex> 2936 vViewPosition = - mvPosition.xyz; 2937 #include <worldpos_vertex> 2938 #include <envmap_vertex> 2939 #include <shadowmap_vertex> 2940 #include <fog_vertex> 2941}`,R8=`#define LAMBERT 2942uniform vec3 diffuse; 2943uniform vec3 emissive; 2944uniform float opacity; 2945#include <common> 2946#include <packing> 2947#include <dithering_pars_fragment> 2948#include <color_pars_fragment> 2949#include <uv_pars_fragment> 2950#include <map_pars_fragment> 2951#include <alphamap_pars_fragment> 2952#include <alphatest_pars_fragment> 2953#include <alphahash_pars_fragment> 2954#include <aomap_pars_fragment> 2955#include <lightmap_pars_fragment> 2956#include <emissivemap_pars_fragment> 2957#include <envmap_common_pars_fragment> 2958#include <envmap_pars_fragment> 2959#include <fog_pars_fragment> 2960#include <bsdfs> 2961#include <lights_pars_begin> 2962#include <normal_pars_fragment> 2963#include <lights_lambert_pars_fragment> 2964#include <shadowmap_pars_fragment> 2965#include <bumpmap_pars_fragment> 2966#include <normalmap_pars_fragment> 2967#include <specularmap_pars_fragment> 2968#include <logdepthbuf_pars_fragment> 2969#include <clipping_planes_pars_fragment> 2970void main() { 2971 vec4 diffuseColor = vec4( diffuse, opacity ); 2972 #include <clipping_planes_fragment> 2973 ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 2974 vec3 totalEmissiveRadiance = emissive; 2975 #include <logdepthbuf_fragment> 2976 #include <map_fragment> 2977 #include <color_fragment> 2978 #include <alphamap_fragment> 2979 #include <alphatest_fragment> 2980 #include <alphahash_fragment> 2981 #include <specularmap_fragment> 2982 #include <normal_fragment_begin> 2983 #include <normal_fragment_maps> 2984 #include <emissivemap_fragment> 2985 #include <lights_lambert_fragment> 2986 #include <lights_fragment_begin> 2987 #include <lights_fragment_maps> 2988 #include <lights_fragment_end> 2989 #include <aomap_fragment> 2990 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; 2991 #include <envmap_fragment> 2992 #include <opaque_fragment> 2993 #include <tonemapping_fragment> 2994 #include <colorspace_fragment> 2995 #include <fog_fragment> 2996 #include <premultiplied_alpha_fragment> 2997 #include <dithering_fragment> 2998}`,N8=`#define MATCAP 2999varying vec3 vViewPosition; 3000#include <common> 3001#include <batching_pars_vertex> 3002#include <uv_pars_vertex> 3003#include <color_pars_vertex> 3004#include <displacementmap_pars_vertex> 3005#include <fog_pars_vertex> 3006#include <normal_pars_vertex> 3007#include <morphtarget_pars_vertex> 3008#include <skinning_pars_vertex> 3009#include <logdepthbuf_pars_vertex> 3010#include <clipping_planes_pars_vertex> 3011void main() { 3012 #include <uv_vertex> 3013 #include <color_vertex> 3014 #include <morphinstance_vertex> 3015 #include <morphcolor_vertex> 3016 #include <batching_vertex> 3017 #include <beginnormal_vertex> 3018 #include <morphnormal_vertex> 3019 #include <skinbase_vertex> 3020 #include <skinnormal_vertex> 3021 #include <defaultnormal_vertex> 3022 #include <normal_vertex> 3023 #include <begin_vertex> 3024 #include <morphtarget_vertex> 3025 #include <skinning_vertex> 3026 #include <displacementmap_vertex> 3027 #include <project_vertex> 3028 #include <logdepthbuf_vertex> 3029 #include <clipping_planes_vertex> 3030 #include <fog_vertex> 3031 vViewPosition = - mvPosition.xyz; 3032}`,L8=`#define MATCAP 3033uniform vec3 diffuse; 3034uniform float opacity; 3035uniform sampler2D matcap; 3036varying vec3 vViewPosition; 3037#include <common> 3038#include <dithering_pars_fragment> 3039#include <color_pars_fragment> 3040#include <uv_pars_fragment> 3041#include <map_pars_fragment> 3042#include <alphamap_pars_fragment> 3043#include <alphatest_pars_fragment> 3044#include <alphahash_pars_fragment> 3045#include <fog_pars_fragment> 3046#include <normal_pars_fragment> 3047#include <bumpmap_pars_fragment> 3048#include <normalmap_pars_fragment> 3049#include <logdepthbuf_pars_fragment> 3050#include <clipping_planes_pars_fragment> 3051void main() { 3052 ve
3052c4 diffuseColor = vec4( diffuse, opacity ); 3053 #include <clipping_planes_fragment> 3054 #include <logdepthbuf_fragment> 3055 #include <map_fragment> 3056 #include <color_fragment> 3057 #include <alphamap_fragment> 3058 #include <alphatest_fragment> 3059 #include <alphahash_fragment> 3060 #include <normal_fragment_begin> 3061 #include <normal_fragment_maps> 3062 vec3 viewDir = normalize( vViewPosition ); 3063 vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); 3064 vec3 y = cross( viewDir, x ); 3065 vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; 3066 #ifdef USE_MATCAP 3067 vec4 matcapColor = texture2D( matcap, uv ); 3068 #else 3069 vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); 3070 #endif 3071 vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; 3072 #include <opaque_fragment> 3073 #include <tonemapping_fragment> 3074 #include <colorspace_fragment> 3075 #include <fog_fragment> 3076 #include <premultiplied_alpha_fragment> 3077 #include <dithering_fragment> 3078}`,D8=`#define NORMAL 3079#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) 3080 varying vec3 vViewPosition; 3081#endif 3082#include <common> 3083#include <batching_pars_vertex> 3084#include <uv_pars_vertex> 3085#include <displacementmap_pars_vertex> 3086#include <normal_pars_vertex> 3087#include <morphtarget_pars_vertex> 3088#include <skinning_pars_vertex> 3089#include <logdepthbuf_pars_vertex> 3090#include <clipping_planes_pars_vertex> 3091void main() { 3092 #include <uv_vertex> 3093 #include <batching_vertex> 3094 #include <beginnormal_vertex> 3095 #include <morphinstance_vertex> 3096 #include <morphnormal_vertex> 3097 #include <skinbase_vertex> 3098 #include <skinnormal_vertex> 3099 #include <defaultnormal_vertex> 3100 #include <normal_vertex> 3101 #include <begin_vertex> 3102 #include <morphtarget_vertex> 3103 #include <skinning_vertex> 3104 #include <displacementmap_vertex> 3105 #include <project_vertex> 3106 #include <logdepthbuf_vertex> 3107 #include <clipping_planes_vertex> 3108#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) 3109 vViewPosition = - mvPosition.xyz; 3110#endif 3111}`,U8=`#define NORMAL 3112uniform float opacity; 3113#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) 3114 varying vec3 vViewPosition; 3115#endif 3116#include <packing> 3117#include <uv_pars_fragment> 3118#include <normal_pars_fragment> 3119#include <bumpmap_pars_fragment> 3120#include <normalmap_pars_fragment> 3121#include <logdepthbuf_pars_fragment> 3122#include <clipping_planes_pars_fragment> 3123void main() { 3124 vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); 3125 #include <clipping_planes_fragment> 3126 #include <logdepthbuf_fragment> 3127 #include <normal_fragment_begin> 3128 #include <normal_fragment_maps> 3129 gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); 3130 #ifdef OPAQUE 3131 gl_FragColor.a = 1.0; 3132 #endif 3133}`,P8=`#define PHONG 3134varying vec3 vViewPosition; 3135#include <common> 3136#include <batching_pars_vertex> 3137#include <uv_pars_vertex> 3138#include <displacementmap_pars_vertex> 3139#include <envmap_pars_vertex> 3140#include <color_pars_vertex> 3141#include <fog_pars_vertex> 3142#include <normal_pars_vertex> 3143#include <morphtarget_pars_vertex> 3144#include <skinning_pars_vertex> 3145#include <shadowmap_pars_vertex> 3146#include <logdepthbuf_pars_vertex> 3147#include <clipping_planes_pars_vertex> 3148void main() { 3149 #include <uv_vertex> 3150 #include <color_vertex> 3151 #include <morphcolor_vertex> 3152 #include <batching_vertex> 3153 #include <beginnormal_vertex> 3154 #include <morphinstance_vertex> 3155 #include <morphnormal_vertex> 3156 #include <skinbase_vertex> 3157 #include <skinnormal_vertex> 3158 #include <defaultnormal_vertex> 3159 #include <normal_vertex> 3160 #include <begin_vertex> 3161 #include <morphtarget_vertex> 3162 #include <skinning_vertex> 3163 #include <displacementmap_vertex> 3164 #include <project_vertex> 3165 #include <logdepthbuf_vertex> 3166 #include <clipping_planes_vertex> 3167 vViewPosition = - mvPosition.xyz; 3168 #include <worldpos_vertex> 3169 #include <envmap_vertex> 3170 #include <shadowmap_vertex> 3171 #include <fog_vertex> 3172}`,O8=`#define PHONG 3173uniform vec3 diffuse; 3174uniform vec3 emissive; 3175uniform vec3 specular; 3176uniform float shininess; 3177uniform float opacity; 3178#include <common> 3179#include <packing> 3180#include <dithering_pars_fragment> 3181#include <color_pars_fragment> 3182#include <uv_pars_fragment> 3183#include <map_pars_fragment> 3184#include <alphamap_pars_fragment> 3185#include <alphatest_pars_fragment> 3186#include <alphahash_pars_fragment> 3187#include <aomap_pars_fragment> 3188#include <lightmap_pars_fragment> 3189#include <emissivemap_pars_fragment> 3190#include <envmap_common_pars_fragment> 3191#include <envmap_pars_fragment> 3192#include <fog_pars_fragment> 3193#include <bsdfs> 3194#include <lights_pars_begin> 3195#include <normal_pars_fragment> 3196#include <lights_phong_pars_fragment> 3197#include <shadowmap_pars_fragment> 3198#include <bumpmap_pars_fragment> 3199#include <normalmap_pars_fragment> 3200#include <specularmap_pars_fragment> 3201#include <logdepthbuf_pars_fragment> 3202#include <clipping_planes_pars_fragment> 3203void main() { 3204 vec4 diffuseColor = vec4( diffuse, opacity ); 3205 #include <clipping_planes_fragment> 3206 ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 3207 vec3 totalEmissiveRadiance = emissive; 3208 #include <logdepthbuf_fragment> 3209 #include <map_fragment> 3210 #include <color_fragment> 3211 #include <alphamap_fragment> 3212 #include <alphatest_fragment> 3213 #include <alphahash_fragment> 3214 #include <specularmap_fragment> 3215 #include <normal_fragment_begin> 3216 #include <normal_fragment_maps> 3217 #include <emissivemap_fragment> 3218 #include <lights_phong_fragment> 3219 #include <lights_fragment_begin> 3220 #include <lights_fragment_maps> 3221 #include <lights_fragment_end> 3222 #include <aomap_fragment> 3223 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; 3224 #include <envmap_fragment> 3225 #include <opaque_fragment> 3226 #include <tonemapping_fragment> 3227 #include <colorspace_fragment> 3228 #include <fog_fragment> 3229 #include <premultiplied_alpha_fragment> 3230 #include <dithering_fragment> 3231}`,I8=`#define STANDARD 3232varying vec3 vViewPosition; 3233#ifdef USE_TRANSMISSION 3234 varying vec3 vWorldPosition; 3235#endif 3236#include <common> 3237#include <batching_pars_vertex> 3238#include <uv_pars_vertex> 3239#include <displacementmap_pars_vertex> 3240#include <color_pars_vertex> 3241#include <fog_pars_vertex> 3242#include <normal_pars_vertex> 3243#include <morphtarget_pars_vertex> 3244#include <skinning_pars_vertex> 3245#include <shadowmap_pars_vertex> 3246#include <logdepthbuf_pars_vertex> 3247#include <clipping_planes_pars_vertex> 3248void main() { 3249 #include <uv_vertex> 3250 #include <color_vertex> 3251 #include <morphinstance_vertex> 3252 #include <morphcolor_vertex> 3253 #include <batching_vertex> 3254 #include <beginnormal_vertex> 3255 #include <morphnormal_vertex> 3256 #include <skinbase_vertex> 3257 #include <skinnormal_vertex> 3258 #include <defaultnormal_vertex> 3259 #include <normal_vertex> 3260 #include <begin_vertex> 3261 #include <morphtarget_vertex> 3262 #include <skinning_vertex> 3263 #include <displacementmap_vertex> 3264 #include <project_vertex> 3265 #include <logdepthbuf_vertex> 3266 #include <clipping_planes_vertex> 3267 vViewPosition = - mvPosition.xyz; 3268 #include <worldpos_vertex> 3269 #include <shadowmap_vertex> 3270 #include <fog_vertex> 3271#ifdef USE_TRANSMISSION 3272 vWorldPosition = worldPosition.xyz; 3273#endif 3274}`,B8=`#define STANDARD 3275#ifdef PHYSICAL 3276 #define IOR 3277 #define USE_SPECULAR 3278#endif 3279uniform vec3 diffuse; 3280uniform vec3 emissive; 3281uniform float roughness; 3282uniform float metalness; 3283uniform float opacity; 3284#ifdef IOR 3285 uniform float ior; 3286#endif 3287#ifdef USE_SPECULAR 3288 uniform float specularIntensity; 3289 uniform vec3 specularColor; 3290 #ifdef USE_SPECULAR_COLORMAP 3291 uniform sampler2D specularColorMap; 3292 #endif 3293 #ifdef USE_SPECULAR_INTENSITYMAP 3294 uniform sampler2D specularIntensityMap; 3295 #endif 3296#endif 3297#ifdef USE_CLEARCOAT 3298 uniform float clearcoat; 3299 uniform float clearcoatRoughness; 3300#endif 3301#ifdef USE_DISPERSION 3302 uniform float dispersion; 3303#endif
3304#ifdef USE_IRIDESCENCE 3305 uniform float iridescence; 3306 uniform float iridescenceIOR; 3307 uniform float iridescenceThicknessMinimum; 3308 uniform float iridescenceThicknessMaximum; 3309#endif 3310#ifdef USE_SHEEN 3311 uniform vec3 sheenColor; 3312 uniform float sheenRoughness; 3313 #ifdef USE_SHEEN_COLORMAP 3314 uniform sampler2D sheenColorMap; 3315 #endif 3316 #ifdef USE_SHEEN_ROUGHNESSMAP 3317 uniform sampler2D sheenRoughnessMap; 3318 #endif 3319#endif 3320#ifdef USE_ANISOTROPY 3321 uniform vec2 anisotropyVector; 3322 #ifdef USE_ANISOTROPYMAP 3323 uniform sampler2D anisotropyMap; 3324 #endif 3325#endif 3326varying vec3 vViewPosition; 3327#include <common> 3328#include <packing> 3329#include <dithering_pars_fragment> 3330#include <color_pars_fragment> 3331#include <uv_pars_fragment> 3332#include <map_pars_fragment> 3333#include <alphamap_pars_fragment> 3334#include <alphatest_pars_fragment> 3335#include <alphahash_pars_fragment> 3336#include <aomap_pars_fragment> 3337#include <lightmap_pars_fragment> 3338#include <emissivemap_pars_fragment> 3339#include <iridescence_fragment> 3340#include <cube_uv_reflection_fragment> 3341#include <envmap_common_pars_fragment> 3342#include <envmap_physical_pars_fragment> 3343#include <fog_pars_fragment> 3344#include <lights_pars_begin> 3345#include <normal_pars_fragment> 3346#include <lights_physical_pars_fragment> 3347#include <transmission_pars_fragment> 3348#include <shadowmap_pars_fragment> 3349#include <bumpmap_pars_fragment> 3350#include <normalmap_pars_fragment> 3351#include <clearcoat_pars_fragment> 3352#include <iridescence_pars_fragment> 3353#include <roughnessmap_pars_fragment> 3354#include <metalnessmap_pars_fragment> 3355#include <logdepthbuf_pars_fragment> 3356#include <clipping_planes_pars_fragment> 3357void main() { 3358 vec4 diffuseColor = vec4( diffuse, opacity ); 3359 #include <clipping_planes_fragment> 3360 ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 3361 vec3 totalEmissiveRadiance = emissive; 3362 #include <logdepthbuf_fragment> 3363 #include <map_fragment> 3364 #include <color_fragment> 3365 #include <alphamap_fragment> 3366 #include <alphatest_fragment> 3367 #include <alphahash_fragment> 3368 #include <roughnessmap_fragment> 3369 #include <metalnessmap_fragment> 3370 #include <normal_fragment_begin> 3371 #include <normal_fragment_maps> 3372 #include <clearcoat_normal_fragment_begin> 3373 #include <clearcoat_normal_fragment_maps> 3374 #include <emissivemap_fragment> 3375 #include <lights_physical_fragment> 3376 #include <lights_fragment_begin> 3377 #include <lights_fragment_maps> 3378 #include <lights_fragment_end> 3379 #include <aomap_fragment> 3380 vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; 3381 vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; 3382 #include <transmission_fragment> 3383 vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; 3384 #ifdef USE_SHEEN 3385 float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); 3386 outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; 3387 #endif 3388 #ifdef USE_CLEARCOAT 3389 float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); 3390 vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); 3391 outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; 3392 #endif 3393 #include <opaque_fragment> 3394 #include <tonemapping_fragment> 3395 #include <colorspace_fragment> 3396 #include <fog_fragment> 3397 #include <premultiplied_alpha_fragment> 3398 #include <dithering_fragment> 3399}`,F8=`#define TOON 3400varying vec3 vViewPosition; 3401#include <common> 3402#include <batching_pars_vertex> 3403#include <uv_pars_vertex> 3404#include <displacementmap_pars_vertex> 3405#include <color_pars_vertex> 3406#include <fog_pars_vertex> 3407#include <normal_pars_vertex> 3408#include <morphtarget_pars_vertex> 3409#include <skinning_pars_vertex> 3410#include <shadowmap_pars_vertex> 3411#include <logdepthbuf_pars_vertex> 3412#include <clipping_planes_pars_vertex> 3413void main() { 3414 #include <uv_vertex> 3415 #include <color_vertex> 3416 #include <morphinstance_vertex> 3417 #include <morphcolor_vertex> 3418 #include <batching_vertex> 3419 #include <beginnormal_vertex> 3420 #include <morphnormal_vertex> 3421 #include <skinbase_vertex> 3422 #include <skinnormal_vertex> 3423 #include <defaultnormal_vertex> 3424 #include <normal_vertex> 3425 #include <begin_vertex> 3426 #include <morphtarget_vertex> 3427 #include <skinning_vertex> 3428 #include <displacementmap_vertex> 3429 #include <project_vertex> 3430 #include <logdepthbuf_vertex> 3431 #include <clipping_planes_vertex> 3432 vViewPosition = - mvPosition.xyz; 3433 #include <worldpos_vertex> 3434 #include <shadowmap_vertex> 3435 #include <fog_vertex> 3436}`,z8=`#define TOON 3437uniform vec3 diffuse; 3438uniform vec3 emissive; 3439uniform float opacity; 3440#include <common> 3441#include <packing> 3442#include <dithering_pars_fragment> 3443#include <color_pars_fragment> 3444#include <uv_pars_fragment> 3445#include <map_pars_fragment> 3446#include <alphamap_pars_fragment> 3447#include <alphatest_pars_fragment> 3448#include <alphahash_pars_fragment> 3449#include <aomap_pars_fragment> 3450#include <lightmap_pars_fragment> 3451#include <emissivemap_pars_fragment> 3452#include <gradientmap_pars_fragment> 3453#include <fog_pars_fragment> 3454#include <bsdfs> 3455#include <lights_pars_begin> 3456#include <normal_pars_fragment> 3457#include <lights_toon_pars_fragment> 3458#include <shadowmap_pars_fragment> 3459#include <bumpmap_pars_fragment> 3460#include <normalmap_pars_fragment> 3461#include <logdepthbuf_pars_fragment> 3462#include <clipping_planes_pars_fragment> 3463void main() { 3464 vec4 diffuseColor = vec4( diffuse, opacity ); 3465 #include <clipping_planes_fragment> 3466 ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 3467 vec3 totalEmissiveRadiance = emissive; 3468 #include <logdepthbuf_fragment> 3469 #include <map_fragment> 3470 #include <color_fragment> 3471 #include <alphamap_fragment> 3472 #include <alphatest_fragment> 3473 #include <alphahash_fragment> 3474 #include <normal_fragment_begin> 3475 #include <normal_fragment_maps> 3476 #include <emissivemap_fragment> 3477 #include <lights_toon_fragment> 3478 #include <lights_fragment_begin> 3479 #include <lights_fragment_maps> 3480 #include <lights_fragment_end> 3481 #include <aomap_fragment> 3482 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; 3483 #include <opaque_fragment> 3484 #include <tonemapping_fragment> 3485 #include <colorspace_fragment> 3486 #include <fog_fragment> 3487 #include <premultiplied_alpha_fragment> 3488 #include <dithering_fragment> 3489}`,V8=`uniform float size; 3490uniform float scale; 3491#include <common> 3492#include <color_pars_vertex> 3493#include <fog_pars_vertex> 3494#include <morphtarget_pars_vertex> 3495#include <logdepthbuf_pars_vertex> 3496#include <clipping_planes_pars_vertex> 3497#ifdef USE_POINTS_UV 3498 varying vec2 vUv; 3499 uniform mat3 uvTransform; 3500#endif 3501void main() { 3502 #ifdef USE_POINTS_UV 3503 vUv = ( uvTransform * vec3( uv, 1 ) ).xy; 3504 #endif 3505 #include <color_vertex> 3506 #include <morphinstance_vertex> 3507 #include <morphcolor_vertex> 3508 #include <begin_vertex> 3509 #include <morphtarget_vertex> 3510 #include <project_vertex> 3511 gl_PointSize = size; 3512 #ifdef USE_SIZEATTENUATION 3513 bool isPerspective = isPerspectiveMatrix( projectionMatrix ); 3514 if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); 3515 #endif 3516 #include <logdepthbuf_vertex> 3517 #include <clipping_planes_vertex> 3518 #include <worldpos_vertex> 3519 #include <fog_vertex> 3520}`,j8=`uniform vec3 diffuse; 3521uniform float opacity; 3522#include <common> 3523#include <color_pars_fragment> 3524#include <map_particle_pars_fragment> 3525#include <alphatest_pars_fragment> 3526#include <alphahash_pars_fragment> 3527#include <fog_pars_fragment> 3528#include <logdepthbuf_pars_fragment> 3529#include <clipping_planes_pars_fragment> 3530void main() { 3531 vec4 diffuseColor = vec4( diffuse, opacity ); 3532 #include <clipping_planes_fragment> 3533 vec3 outgoingLight = vec3( 0.0 ); 3534 #include <logdepthbuf_fragment> 3535 #include <map_particle_fragment> 3536 #include <color_fragment> 3537 #include <alphatest_fragment> 3538 #include <alphahash_fragment> 3539 outgoingLight = diffuseColor.rgb; 3540 #include <opaque_fragment> 3541 #include <tonemapping_fragment> 3542 #include <colorspace_fragment> 3543 #include <fog_fragment> 3544 #include <premultiplied_alpha_fragment> 3545}`,H8=`#include <common> 3546#include <batching_pars_vertex> 3547#include <fog_pars_vertex> 3548#include <morphtarget_pars_vertex> 3549#include <skinning_pars_vertex> 3550#include <logdepthbuf_pars_vertex> 3551#include <shadowmap_pars_vertex> 3552void main() { 3553 #include <batching_vertex> 3554 #include <beginnormal_vertex> 3555 #include <morphinstance_vertex> 3556 #include <morphnormal_vertex> 3557 #include <skinbase_vertex> 3558 #include <skinnormal_vertex> 3559 #include <defaultnormal_vertex> 3560 #include <begin_vertex> 3561 #include <morphtarget_vertex> 3562 #include <skinning_vertex> 3563 #include <project_vertex> 3564 #include <logdepthbuf_vertex> 3565 #include <worldpos_vertex> 3566 #include <shadowmap_vertex> 3567 #include <fog_vertex> 3568}`,k8=`uniform vec3 color; 3569uniform float opacity; 3570#include <common> 3571#include <packing> 3572#include <fog_pars_fragment> 3573#include <bsdfs> 3574#include <lights_pars_begin> 3575#include <logdepthbuf_pars_fragment> 3576#include <shadowmap_pars_fragment> 3577#include <shadowmask_pars_fragment> 3578void main() { 3579 #include <logdepthbuf_fragment> 3580 gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); 3581 #include <tonemapping_fragment> 3582 #include <colorspace_fragment> 3583 #include <fog_fragment> 3584}`,G8=`uniform float rotation; 3585uniform vec2 center; 3586#include <common> 3587#include <uv_pars_vertex> 3588#include <fog_pars_vertex> 3589#include <logdepthbuf_pars_vertex> 3590#include <clipping_planes_pars_vertex> 3591void main() { 3592 #include <uv_vertex> 3593 vec4 mvPosition = modelViewMatrix[ 3 ]; 3594 vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); 3595 #ifndef USE_SIZEATTENUATION 3596 bool isPerspective = isPerspectiveMatrix( projectionMatrix ); 3597 if ( isPerspective ) scale *= - mvPosition.z; 3598 #endif 3599 vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; 3600 vec2 rotatedPosition; 3601 rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; 3602 rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; 3603 mvPosition.xy += rotatedPosition; 3604 gl_Position = projectionMatrix * mvPosition; 3605 #include <logdepthbuf_vertex> 3606 #include <clipping_planes_vertex> 3607 #include <fog_vertex> 3608}`,W8=`uniform vec3 diffuse; 3609uniform float opacity; 3610#include <common> 3611#include <uv_pars_fragment> 3612#include <map_pars_fragment> 3613#include <alphamap_pars_fragment> 3614#include <alphatest_pars_fragment> 3615#include <alphahash_pars_fragment> 3616#include <fog_pars_fragment> 3617#include <logdepthbuf_pars_fragment> 3618#include <clipping_planes_pars_fragment> 3619void main() { 3620 vec4 diffuseColor = vec4( diffuse, opacity ); 3621 #include <clipping_planes_fragment> 3622 vec3 outgoingLight = vec3( 0.0 ); 3623 #include <logdepthbuf_fragment> 3624 #include <map_fragment> 3625 #include <alphamap_fragment> 3626 #include <alphatest_fragment> 3627 #include <alphahash_fragment> 3628 outgoingLight = diffuseColor.rgb; 3629 #include <opaque_fragment> 3630 #include <tonemapping_fragment> 3631 #include <colorspace_fragment> 3632 #include <fog_fragment> 3633}`,mt={alphahash_fragment:hE,alphahash_pars_fragment:pE,alphamap_fragment:mE,alphamap_pars_fragment:gE,alphatest_fragment:vE,alphatest_pars_fragment:xE,aomap_fragment:_E,aomap_pars_fragment:yE,batching_pars_vertex:SE,batching_vertex:ME,begin_vertex:bE,beginnormal_vertex:EE,bsdfs:wE,iridescence_fragment:TE,bumpmap_pars_fragment:CE,clipping_planes_fragment:AE,clipping_planes_pars_fragment:RE,clipping_planes_pars_vertex:NE,clipping_planes_vertex:LE,color_fragment:DE,color_pars_fragment:UE,color_pars_vertex:PE,color_vertex:OE,common:IE,cube_uv_reflection_fragment:BE,defaultnormal_vertex:FE,displacementmap_pars_vertex:zE,displacementmap_vertex:VE,emissivemap_fragment:jE,emissivemap_pars_fragment:HE,colorspace_fragment:kE,colorspace_pars_fragment:GE,envmap_fragment:WE,envmap_common_pars_fragment:XE,envmap_pars_fragment:q
vendor: 6,580 bytes, line 3633
3633E,envmap_pars_vertex:YE,envmap_physical_pars_fragment:aw,envmap_vertex:ZE,fog_vertex:KE,fog_pars_vertex:QE,fog_fragment:$E,fog_pars_fragment:JE,gradientmap_pars_fragment:ew,lightmap_pars_fragment:tw,lights_lambert_fragment:nw,lights_lambert_pars_fragment:iw,lights_pars_begin:sw,lights_toon_fragment:rw,lights_toon_pars_fragment:ow,lights_phong_fragment:lw,lights_phong_pars_fragment:cw,lights_physical_fragment:uw,lights_physical_pars_fragment:fw,lights_fragment_begin:dw,lights_fragment_maps:hw,lights_fragment_end:pw,logdepthbuf_fragment:mw,logdepthbuf_pars_fragment:gw,logdepthbuf_pars_vertex:vw,logdepthbuf_vertex:xw,map_fragment:_w,map_pars_fragment:yw,map_particle_fragment:Sw,map_particle_pars_fragment:Mw,metalnessmap_fragment:bw,metalnessmap_pars_fragment:Ew,morphinstance_vertex:ww,morphcolor_vertex:Tw,morphnormal_vertex:Cw,morphtarget_pars_vertex:Aw,morphtarget_vertex:Rw,normal_fragment_begin:Nw,normal_fragment_maps:Lw,normal_pars_fragment:Dw,normal_pars_vertex:Uw,normal_vertex:Pw,normalmap_pars_fragment:Ow,clearcoat_normal_fragment_begin:Iw,clearcoat_normal_fragment_maps:Bw,clearcoat_pars_fragment:Fw,iridescence_pars_fragment:zw,opaque_fragment:Vw,packing:jw,premultiplied_alpha_fragment:Hw,project_vertex:kw,dithering_fragment:Gw,dithering_pars_fragment:Ww,roughnessmap_fragment:Xw,roughnessmap_pars_fragment:qw,shadowmap_pars_fragment:Yw,shadowmap_pars_vertex:Zw,shadowmap_vertex:Kw,shadowmask_pars_fragment:Qw,skinbase_vertex:$w,skinning_pars_vertex:Jw,skinning_vertex:e8,skinnormal_vertex:t8,specularmap_fragment:n8,specularmap_pars_fragment:i8,tonemapping_fragment:s8,tonemapping_pars_fragment:a8,transmission_fragment:r8,transmission_pars_fragment:o8,uv_pars_fragment:l8,uv_pars_vertex:c8,uv_vertex:u8,worldpos_vertex:f8,background_vert:d8,background_frag:h8,backgroundCube_vert:p8,backgroundCube_frag:m8,cube_vert:g8,cube_frag:v8,depth_vert:x8,depth_frag:_8,distanceRGBA_vert:y8,distanceRGBA_frag:S8,equirect_vert:M8,equirect_frag:b8,linedashed_vert:E8,linedashed_frag:w8,meshbasic_vert:T8,meshbasic_frag:C8,meshlambert_vert:A8,meshlambert_frag:R8,meshmatcap_vert:N8,meshmatcap_frag:L8,meshnormal_vert:D8,meshnormal_frag:U8,meshphong_vert:P8,meshphong_frag:O8,meshphysical_vert:I8,meshphysical_frag:B8,meshtoon_vert:F8,meshtoon_frag:z8,points_vert:V8,points_frag:j8,shadow_vert:H8,shadow_frag:k8,sprite_vert:G8,sprite_frag:W8},Ie={common:{diffuse:{value:new Fe(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ht},alphaMap:{value:null},alphaMapTransform:{value:new ht},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ht}},envmap:{envMap:{value:null},envMapRotation:{value:new ht},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ht}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ht}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ht},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ht},normalScale:{value:new St(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ht},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ht}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ht}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ht}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Fe(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 Fe(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ht},alphaTest:{value:0},uvTransform:{value:new ht}},sprite:{diffuse:{value:new Fe(16777215)},opacity:{value:1},center:{value:new St(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ht},alphaMap:{value:null},alphaMapTransform:{value:new ht},alphaTest:{value:0}}},Wi={basic:{uniforms:kn([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.fog]),vertexShader:mt.meshbasic_vert,fragmentShader:mt.meshbasic_frag},lambert:{uniforms:kn([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,Ie.lights,{emissive:{value:new Fe(0)}}]),vertexShader:mt.meshlambert_vert,fragmentShader:mt.meshlambert_frag},phong:{uniforms:kn([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,Ie.lights,{emissive:{value:new Fe(0)},specular:{value:new Fe(1118481)},shininess:{value:30}}]),vertexShader:mt.meshphong_vert,fragmentShader:mt.meshphong_frag},standard:{uniforms:kn([Ie.common,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.roughnessmap,Ie.metalnessmap,Ie.fog,Ie.lights,{emissive:{value:new Fe(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:mt.meshphysical_vert,fragmentShader:mt.meshphysical_frag},toon:{uniforms:kn([Ie.common,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.gradientmap,Ie.fog,Ie.lights,{emissive:{value:new Fe(0)}}]),vertexShader:mt.meshtoon_vert,fragmentShader:mt.meshtoon_frag},matcap:{uniforms:kn([Ie.common,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,{matc
vendor: 5,281 bytes, line 3633
3633ap:{value:null}}]),vertexShader:mt.meshmatcap_vert,fragmentShader:mt.meshmatcap_frag},points:{uniforms:kn([Ie.points,Ie.fog]),vertexShader:mt.points_vert,fragmentShader:mt.points_frag},dashed:{uniforms:kn([Ie.common,Ie.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:mt.linedashed_vert,fragmentShader:mt.linedashed_frag},depth:{uniforms:kn([Ie.common,Ie.displacementmap]),vertexShader:mt.depth_vert,fragmentShader:mt.depth_frag},normal:{uniforms:kn([Ie.common,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,{opacity:{value:1}}]),vertexShader:mt.meshnormal_vert,fragmentShader:mt.meshnormal_frag},sprite:{uniforms:kn([Ie.sprite,Ie.fog]),vertexShader:mt.sprite_vert,fragmentShader:mt.sprite_frag},background:{uniforms:{uvTransform:{value:new ht},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:mt.background_vert,fragmentShader:mt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ht}},vertexShader:mt.backgroundCube_vert,fragmentShader:mt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:mt.cube_vert,fragmentShader:mt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:mt.equirect_vert,fragmentShader:mt.equirect_frag},distanceRGBA:{uniforms:kn([Ie.common,Ie.displacementmap,{referencePosition:{value:new le},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:mt.distanceRGBA_vert,fragmentShader:mt.distanceRGBA_frag},shadow:{uniforms:kn([Ie.lights,Ie.fog,{color:{value:new Fe(0)},opacity:{value:1}}]),vertexShader:mt.shadow_vert,fragmentShader:mt.shadow_frag}};Wi.physical={uniforms:kn([Wi.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ht},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ht},clearcoatNormalScale:{value:new St(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ht},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ht},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ht},sheen:{value:0},sheenColor:{value:new Fe(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ht},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ht},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ht},transmissionSamplerSize:{value:new St},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ht},attenuationDistance:{value:0},attenuationColor:{value:new Fe(0)},specularColor:{value:new Fe(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ht},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ht},anisotropyVector:{value:new St},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ht}}]),vertexShader:mt.meshphysical_vert,fragmentShader:mt.meshphysical_frag};const nf={r:0,b:0,g:0},ar=new Ps,X8=new gn;function q8(n,e,t,a,o,l,u){const f=new Fe(0);let d=l===!0?0:1,h,g,v=null,x=0,y=null;function b(T){let R=T.isScene===!0?T.background:null;return R&&R.isTexture&&(R=(T.backgroundBlurriness>0?t:e).get(R)),R}function w(T){let R=!1;const P=b(T);P===null?S(f,d):P&&P.isColor&&(S(P,1),R=!0);const I=n.xr.getEnvironmentBlendMode();I==="additive"?a.buffers.color.setClear(0,0,0,1,u):I==="alpha-blend"&&a.buffers.color.setClear(0,0,0,0,u),(n.autoClear||R)&&(a.buffers.depth.setTest(!0),a.buffers.depth.setMask(!0),a.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function M(T,R){const P=b(R);P&&(P.isCubeTexture||P.mapping===Of)?(g===void 0&&(g=new pi(new Mc(1,1,1),new Bi({name:"BackgroundCubeMaterial",uniforms:No(Wi.backgroundCube.uniforms),vertexShader:Wi.backgroundCube.vertexShader,fragmentShader:Wi.backgroundCube.fragmentShader,side:ei,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),g.geometry.deleteAttribute("normal"),g.geometry.deleteAttribute("uv"),g.onBeforeRender=function(I,F,V){this.matrixWorld.copyPosition(V.matrixWorld)},Object.defineProperty(g.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),o.update(g)),ar.copy(R.backgroundRotation),ar.x*=-1,ar.y*=-1,ar.z*=-1,P.isCubeTexture&&P.isRenderTargetTexture===!1&&(ar.y*=-1,ar.z*=-1),g.material.uniforms.envMap.value=P,g.material.uniforms.flipEnvMap.value=P.isCubeTexture&&P.isRenderTargetTexture===!1?-1:1,g.material.uniforms.backgroundBlurriness.value=R.backgroundBlurriness,g.material.uniforms.backgroundIntensity.value=R.backgroundIntensity,g.material.uniforms.backgroundRotation.value.setFromMatrix4(X8.makeRotationFromEuler(ar)),g.material.toneMapped=Lt.getTransfer(P.colorSpace)!==kt,(v!==P||x!==P.version||y!==n.toneMapping)&&(g.material.needsUpdate=!0,v=P,x=P.version,y=n.toneMapping),g.layers.enableAll(),T.unshift(g,g.geometry,g.material,0,0,null)):P&&P.isTexture&&(h===void 0&&(h=new pi(new Bo(2,2),new Bi({name:"Backgroun
3633dMaterial",uniforms:No(Wi.background.uniforms),vertexShader:Wi.background.vertexShader,fragmentShader:Wi.background.fragmentShader,side:Na,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),h.geometry.deleteAttribute("normal"),Object.defineProperty(h.material,"map",{get:function(){return this.uniforms.t2D.value}}),o.update(h)),h.material.uniforms.t2D.value=P,h.material.uniforms.backgroundIntensity.value=R.backgroundIntensity,h.material.toneMapped=Lt.getTransfer(P.colorSpace)!==kt,P.matrixAutoUpdate===!0&&P.updateMatrix(),h.material.uniforms.uvTransform.value.copy(P.matrix),(v!==P||x!==P.version||y!==n.toneMapping)&&(h.material.needsUpdate=!0,v=P,x=P.version,y=n.toneMapping),h.layers.enableAll(),T.unshift(h,h.geometry,h.material,0,0,null))}function S(T,R){T.getRGB(nf,F_(n)),a.buffers.color.setClear(nf.r,nf.g,nf.b,R,u)}function N(){g!==void 0&&(g.geometry.dispose(),g.material.dispose(),g=void 0),h!==void 0&&(h.geometry.dispose(),h.material.dispose(),h=void 0)}return{getClearColor:function(){return f},setClearColor:function(T,R=1){f.set(T),d=R,S(f,d)},getClearAlpha:function(){return d},setClearAlpha:function(T){d=T,S(f,d)},render:w,addToRenderList:M,dispose:N}}function Y8(n,e){const t=n.getParameter(n.MAX_VERTEX_ATTRIBS),a={},o=x(null);let l=o,u=!1;function f(L,z,ce,ue,ge){let me=!1;const j=v(ue,ce,z);l!==j&&(l=j,h(l.object)),me=y(L,ue,ce,ge),me&&b(L,ue,ce,ge),ge!==null&&e.update(ge,n.ELEMENT_ARRAY_BUFFER),(me||u)&&(u=!1,R(L,z,ce,ue),ge!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(ge).buffer))}function d(){return n.createVertexArray()}function h(L){return n.bindVertexArray(L)}function g(L){return n.deleteVertexArray(L)}function v(L,z,ce){const ue=ce.wireframe===!0;let ge=a[L.id];ge===void 0&&(ge={},a[L.id]=ge);let me=ge[z.id];me===void 0&&(me={},ge[z.id]=me);let j=me[ue];return j===void 0&&(j=x(d()),me[ue]=j),j}function x(L){const z=[],ce=[],ue=[];for(let ge=0;ge<t;ge++)z[ge]=0,ce[ge]=0,ue[ge]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:z,enabledAttributes:ce,attributeDivisors:ue,object:L,attributes:{},index:null}}function y(L,z,ce,ue){const ge=l.attributes,me=z.attributes;let j=0;const Z=ce.getAttributes();for(const Y in Z)if(Z[Y].location>=0){const O=ge[Y];let ee=me[Y];if(ee===void 0&&(Y==="instanceMatrix"&&L.instanceMatrix&&(ee=L.instanceMatrix),Y==="instanceColor"&&L.instanceColor&&(ee=L.instanceColor)),O===void 0||O.attribute!==ee||ee&&O.data!==ee.data)return!0;j++}return l.attributesNum!==j||l.index!==ue}function b(L,z,ce,ue){const ge={},me=z.attributes;let j=0;const Z=ce.getAttributes();for(const Y in Z)if(Z[Y].location>=0){let O=me[Y];O===void 0&&(Y==="instanceMatrix"&&L.instanceMatrix&&(O=L.instanceMatrix),Y==="instanceColor"&&L.instanceColor&&(O=L.instanceColor));const ee={};ee.attribute=O,O&&O.data&&(ee.data=O.data),ge[Y]=ee,j++}l.attributes=ge,l.attributesNum=j,l.index=ue}function w(){const L=l.newAttributes;for(let z=0,ce=L.length;z<ce;z++)L[z]=0}function M(L){S(L,0)}function S(L,z){const ce=l.newAttributes,ue=l.enabledAttributes,ge=l.attributeDivisors;ce[L]=1,ue[L]===0&&(n.enableVertexAttribArray(L),ue[L]=1),ge[L]!==z&&(n.vertexAttribDivisor(L,z),ge[L]=z)}function N(){const L=l.newAttributes,z=l.enabledAttributes;for(let ce=0,ue=z.length;ce<ue;ce++)z[ce]!==L[ce]&&(n.disableVertexAttribArray(ce),z[ce]=0)}function T(L,z,ce,ue,ge,me,j){j===!0?n.vertexAttribIPointer(L,z,ce,ge,me):n.vertexAttribPointer(L,z,ce,ue,ge,me)}function R(L,z,ce,ue){w();const ge=ue.attributes,me=ce.getAttributes(),j=z.defaultAttributeValues;for(const Z in me){const Y=me[Z];if(Y.location>=0){let he=ge[Z];if(he===void 0&&(Z==="instanceMatrix"&&L.instanceMatrix&&(he=L.instanceMatrix),Z==="instanceColor"&&L.instanceColor&&(he=L.instanceColor)),he!==void 0){const O=he.normalized,ee=he.itemSize,Me=e.get(he);if(Me===void 0)continue;const be=Me.buffer,te=Me.type,xe=Me.bytesPerElement,Ee=te===n.INT||te===n.UNSIGNED_INT||he.gpuType===dm;if(he.isInterleavedBufferAttribute){const Te=he.data,Ue=Te.stride,ut=he.offset;if(Te.isInstancedInterleavedBuffer){for(let Qe=0;Qe<Y.locationSize;Qe++)S(Y.location+Qe,Te.meshPerAttribute);L.isInstancedMesh!==!0&&ue._maxInstanceCount===void 0&&(ue._maxInstanceCount=Te.meshPerAttribute*Te.count)}else for(let Qe=0;Qe<Y.locationSize;
vendor: 2,035 bytes, line 3633
3633Qe++)M(Y.location+Qe);n.bindBuffer(n.ARRAY_BUFFER,be);for(let Qe=0;Qe<Y.locationSize;Qe++)T(Y.location+Qe,ee/Y.locationSize,te,O,Ue*xe,(ut+ee/Y.locationSize*Qe)*xe,Ee)}else{if(he.isInstancedBufferAttribute){for(let Te=0;Te<Y.locationSize;Te++)S(Y.location+Te,he.meshPerAttribute);L.isInstancedMesh!==!0&&ue._maxInstanceCount===void 0&&(ue._maxInstanceCount=he.meshPerAttribute*he.count)}else for(let Te=0;Te<Y.locationSize;Te++)M(Y.location+Te);n.bindBuffer(n.ARRAY_BUFFER,be);for(let Te=0;Te<Y.locationSize;Te++)T(Y.location+Te,ee/Y.locationSize,te,O,ee*xe,ee/Y.locationSize*Te*xe,Ee)}}else if(j!==void 0){const O=j[Z];if(O!==void 0)switch(O.length){case 2:n.vertexAttrib2fv(Y.location,O);break;case 3:n.vertexAttrib3fv(Y.location,O);break;case 4:n.vertexAttrib4fv(Y.location,O);break;default:n.vertexAttrib1fv(Y.location,O)}}}}N()}function P(){V();for(const L in a){const z=a[L];for(const ce in z){const ue=z[ce];for(const ge in ue)g(ue[ge].object),delete ue[ge];delete z[ce]}delete a[L]}}function I(L){if(a[L.id]===void 0)return;const z=a[L.id];for(const ce in z){const ue=z[ce];for(const ge in ue)g(ue[ge].object),delete ue[ge];delete z[ce]}delete a[L.id]}function F(L){for(const z in a){const ce=a[z];if(ce[L.id]===void 0)continue;const ue=ce[L.id];for(const ge in ue)g(ue[ge].object),delete ue[ge];delete ce[L.id]}}function V(){U(),u=!0,l!==o&&(l=o,h(l.object))}function U(){o.geometry=null,o.program=null,o.wireframe=!1}return{setup:f,reset:V,resetDefaultState:U,dispose:P,releaseStatesOfGeometry:I,releaseStatesOfProgram:F,initAttributes:w,enableAttribute:M,disableUnusedAttributes:N}}function Z8(n,e,t){let a;function o(h){a=h}function l(h,g){n.drawArrays(a,h,g),t.update(g,a,1)}function u(h,g,v){v!==0&&(n.drawArraysInstanced(a,h,g,v),t.update(g,a,v))}function f(h,g,v){if(v===0)return;e.get("WEBGL_multi_draw").multiDrawArraysWEBGL(a,h,0,g,0,v);let y=0;for(let b=0;b<v;b++)y+=g[b];t.update(y,a,1)}function d(h,g,v,x){if(v===0)return;const y=e.get("WEBGL_multi_draw");if(y===null)for(let b=0;b<h.length;b++)u(h[b],g[b],x[b]);
vendor: 12,579 bytes, lines 3633-3708
3633else{y.multiDrawArraysInstancedWEBGL(a,h,0,g,0,x,0,v);let b=0;for(let w=0;w<v;w++)b+=g[w]*x[w];t.update(b,a,1)}}this.setMode=o,this.render=l,this.renderInstances=u,this.renderMultiDraw=f,this.renderMultiDrawInstances=d}function K8(n,e,t,a){let o;function l(){if(o!==void 0)return o;if(e.has("EXT_texture_filter_anisotropic")===!0){const F=e.get("EXT_texture_filter_anisotropic");o=n.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else o=0;return o}function u(F){return!(F!==Oi&&a.convert(F)!==n.getParameter(n.IMPLEMENTATION_COLOR_READ_FORMAT))}function f(F){const V=F===xc&&(e.has("EXT_color_buffer_half_float")||e.has("EXT_color_buffer_float"));return!(F!==Us&&a.convert(F)!==n.getParameter(n.IMPLEMENTATION_COLOR_READ_TYPE)&&F!==As&&!V)}function d(F){if(F==="highp"){if(n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.HIGH_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";F="mediump"}return F==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let h=t.precision!==void 0?t.precision:"highp";const g=d(h);g!==h&&(console.warn("THREE.WebGLRenderer:",h,"not supported, using",g,"instead."),h=g);const v=t.logarithmicDepthBuffer===!0,x=t.reverseDepthBuffer===!0&&e.has("EXT_clip_control"),y=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),b=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),w=n.getParameter(n.MAX_TEXTURE_SIZE),M=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),S=n.getParameter(n.MAX_VERTEX_ATTRIBS),N=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),T=n.getParameter(n.MAX_VARYING_VECTORS),R=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),P=b>0,I=n.getParameter(n.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:l,getMaxPrecision:d,textureFormatReadable:u,textureTypeReadable:f,precision:h,logarithmicDepthBuffer:v,reverseDepthBuffer:x,maxTextures:y,maxVertexTextures:b,maxTextureSize:w,maxCubemapSize:M,maxAttributes:S,maxVertexUniforms:N,maxVaryings:T,maxFragmentUniforms:R,vertexTextures:P,maxSamples:I}}function Q8(n){const e=this;let t=null,a=0,o=!1,l=!1;const u=new cr,f=new ht,d={value:null,needsUpdate:!1};this.uniform=d,this.numPlanes=0,this.numIntersection=0,this.init=function(v,x){const y=v.length!==0||x||a!==0||o;return o=x,a=v.length,y},this.beginShadows=function(){l=!0,g(null)},this.endShadows=function(){l=!1},this.setGlobalState=function(v,x){t=g(v,x,0)},this.setState=function(v,x,y){const b=v.clippingPlanes,w=v.clipIntersection,M=v.clipShadows,S=n.get(v);if(!o||b===null||b.length===0||l&&!M)l?g(null):h();else{const N=l?0:a,T=N*4;let R=S.clippingState||null;d.value=R,R=g(b,x,T,y);for(let P=0;P!==T;++P)R[P]=t[P];S.clippingState=R,this.numIntersection=w?this.numPlanes:0,this.numPlanes+=N}};function h(){d.value!==t&&(d.value=t,d.needsUpdate=a>0),e.numPlanes=a,e.numIntersection=0}function g(v,x,y,b){const w=v!==null?v.length:0;let M=null;if(w!==0){if(M=d.value,b!==!0||M===null){const S=y+w*4,N=x.matrixWorldInverse;f.getNormalMatrix(N),(M===null||M.length<S)&&(M=new Float32Array(S));for(let T=0,R=y;T!==w;++T,R+=4)u.copy(v[T]).applyMatrix4(N,f),u.normal.toArray(M,R),M[R+3]=u.constant}d.value=M,d.needsUpdate=!0}return e.numPlanes=w,e.numIntersection=0,M}}function $8(n){let e=new WeakMap;function t(u,f){return f===np?u.mapping=Co:f===ip&&(u.mapping=Ao),u}function a(u){if(u&&u.isTexture){const f=u.mapping;if(f===np||f===ip)if(e.has(u)){const d=e.get(u).texture;return t(d,u.mapping)}else{const d=u.image;if(d&&d.height>0){const h=new Jb(d.height);return h.fromEquirectangularTexture(n,u),e.set(u,h),u.addEventListener("dispose",o),t(h.texture,u.mapping)}else return null}}return u}function o(u){const f=u.target;f.removeEventListener("dispose",o);const d=e.get(f);d!==void 0&&(e.delete(f),d.dispose())}function l(){e=new WeakMap}return{get:a,dispose:l}}const go=4,d3=[.125,.215,.35,.446,.526,.582],pr=20,b0=new cE,h3=new Fe;let E0=null,w0=0,T0=0,C0=!1;const ur=(1+Math.sqrt(5))/2,mo=1/ur,p3=[new le(-ur,mo,0),new le(ur,mo,0),new le(-mo,0,ur),new le(mo,0,ur),new le(0,ur,-mo),new le(0,ur,mo),new le(-1,1,-1),new le(1,1,-1),new le(-1,1,1),new le(1,1,1)],J8=new le;class m3{constructor(e){this._renderer=e,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(e,t=0,a=.1,o=100,l={}){const{size:u=256,position:f=J8}=l;E0=this._renderer.getRenderTarget(),w0=this._renderer.getActiveCubeFace(),T0=this._renderer.getActiveMipmapLevel(),C0=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(u);const d=this._allocateTargets();return d.depthBuffer=!0,this._sceneToCubeUV(e,a,o,d,f),t>0&&this._blur(d,0,0,t),this._applyPMREM(d),this._cleanup(d),d}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=x3(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=v3(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(E0,w0,T0),this._renderer.xr.enabled=C0,e.scissorTest=!1,sf(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===Co||e.mapping===Ao?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),E0=this._renderer.getRenderTarget(),w0=this._renderer.getActiveCubeFace(),T0=this._renderer.getActiveMipmapLevel(),C0=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const a=t||this._allocateTargets();return this._textureToCubeUV(e,a),this._applyPMREM(a),this._cleanup(a),a}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,a={magFilter:Xi,minFilter:Xi,generateMipmaps:!1,type:xc,format:Oi,colorSpace:Ro,depthBuffer:!1},o=g3(e,t,a);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=g3(e,t,a);const{_lodMax:l}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=eT(l)),this._blurMaterial=tT(l,e,t)}return o}_compileMaterial(e){const t=new pi(this._lodPlanes[0],e);this._renderer.compile(t,b0)}_sceneToCubeUV(e,t,a,o,l){const d=new mn(90,1,t,a),h=[1,-1,1,1,1,1],g=[1,1,1,-1,-1,-1],v=this._renderer,x=v.autoClear,y=v.toneMapping;v.getClearColor(h3),v.toneMapping=Ra,v.autoClear=!1;const b=new ym({name:"PMREM.Background",side:ei,depthWrite:!1,depthTest:!1}),w=new pi(new Mc,b);let M=!1;const S=e.background;S?S.isColor&&(b.color.copy(S),e.background=null,M=!0):(b.color.copy(h3),M=!0);for(let N=0;N<6;N++){const T=N%3;T===0?(d.up.set(0,h[N],0),d.position.set(l.x,l.y,l.z),d.lookAt(l.x+g[N],l.y,l.z)):T===1?(d.up.set(0,0,h[N]),d.position.set(l.x,l.y,l.z),d.lookAt(l.x,l.y+g[N],l.z)):(d.up.set(0,h[N],0),d.position.set(l.x,l.y,l.z),d.lookAt(l.x,l.y,l.z+g[N]));const R=this._cubeSize;sf(o,T*R,N>2?R:0,R,R),v.setRenderTarget(o),M&&v.render(w,d),v.render(e,d)}w.geometry.dispose(),w.material.dispose(),v.toneMapping=y,v.autoClear=x,e.background=S}_textureToCubeUV(e,t){const a=this._renderer,o=e.mapping===Co||e.mapping===Ao;o?(this._cubemapMaterial===null&&(this._cubemapMaterial=x3()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=v3());const l=o?this._cubemapMaterial:this._equirectMaterial,u=new pi(this._lodPlanes[0],l),f=l.uniforms;f.envMap.value=e;const d=this._cubeSize;sf(t,0,0,3*d,2*d),a.setRenderTarget(t),a.render(u,b0)}_applyPMREM(e){const t=this._renderer,a=t.autoClear;t.autoClear=!1;const o=this._lodPlanes.length;for(let l=1;l<o;l++){const u=Math.sqrt(this._sigmas[l]*this._sigmas[l]-this._sigmas[l-1]*this._sigmas[l-1]),f=p3[(o-l-1)%p3.length];this._blur(e,l-1,l,u,f)}t.autoClear=a}_blur(e,t,a,o,l){const u=this._pingPongRenderTarget;this._halfBlur(e,u,t,a,o,"latitudinal",l),this._halfBlur(u,e,a,a,o,"longitudinal",l)}_halfBlur(e,t,a,o,l,u,f){const d=this._renderer,h=this._blurMaterial;u!=="latitudinal"&&u!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const g=3,v=new pi(this._lodPlanes[o],h),x=h.uniforms,y=this._sizeLods[a]-1,b=isFinite(l)?Math.PI/(2*y):2*Math.PI/(2*pr-1),w=l/b,M=isFinite(l)?1+Math.floor(g*w):pr;M>pr&&console.warn(`sigmaRadians, ${l}, is too large and will clip, as it requested ${M} samples when the maximum is set to ${pr}`);const S=[];let N=0;for(let F=0;F<pr;++F){const V=F/w,U=Math.exp(-V*V/2);S.push(U),F===0?N+=U:F<M&&(N+=2*U)}for(let F=0;F<S.length;F++)S[F]=S[F]/N;x.envMap.value=e.texture,x.samples.value=M,x.weights.value=S,x.latitudinal.value=u==="latitudinal",f&&(x.poleAxis.value=f);const{_lodMax:T}=this;x.dTheta.value=b,x.mipInt.value=T-a;const R=this._sizeLods[o],P=3*R*(o>T-go?o-T+go:0),I=4*(this._cubeSize-R);sf(t,P,I,3*R,2*R),d.setRenderTarget(t),d.render(v,b0)}}function eT(n){const e=[],t=[],a=[];let o=n;const l=n-go+1+d3.length;for(let u=0;u<l;u++){const f=Math.pow(2,o);t.push(f);let d=1/f;u>n-go?d=d3[u-n+go-1]:u===0&&(d=0),a.push(d);const h=1/(f-2),g=-h,v=1+h,x=[g,g,v,g,v,v,g,g,v,v,g,v],y=6,b=6,w=3,M=2,S=1,N=new Float32Array(w*b*y),T=new Float32Array(M*b*y),R=new Float32Array(S*b*y);for(let I=0;I<y;I++){const F=I%3*2/3-1,V=I>2?0:-1,U=[F,V,0,F+2/3,V,0,F+2/3,V+1,0,F,V,0,F+2/3,V+1,0,F,V+1,0];N.set(U,w*b*I),T.set(x,M*b*I);const L=[I,I,I,I,I,I];R.set(L,S*b*I)}const P=new Ua;P.setAttribute("position",new qi(N,w)),P.setAttribute("uv",new qi(T,M)),P.setAttribute("faceIndex",new qi(R,S)),e.push(P),o>go&&o--}return{lodPlanes:e,sizeLods:t,sigmas:a}}function g3(n,e,t){const a=new Mr(n,e,t);return a.texture.mapping=Of,a.texture.name="PMREM.cubeUv",a.scissorTest=!0,a}function sf(n,e,t,a,o){n.viewport.set(e,t,a,o),n.scissor.set(e,t,a,o)}function tT(n,e,t){const a=new Float32Array(pr),o=new le(0,1,0);return new Bi({name:"SphericalGaussianBlur",defines:{n:pr,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:a},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:o}},vertexShader:Mm(),fragmentShader:` 3634 3635 precision mediump float; 3636 precision mediump int; 3637 3638 varying vec3 vOutputDirection; 3639 3640 uniform sampler2D envMap; 3641 uniform int samples; 3642 uniform float weights[ n ]; 3643 uniform bool latitudinal; 3644 uniform float dTheta; 3645 uniform float mipInt; 3646 uniform vec3 poleAxis; 3647 3648 #define ENVMAP_TYPE_CUBE_UV 3649 #include <cube_uv_reflection_fragment> 3650 3651 vec3 getSample( float theta, vec3 axis ) { 3652 3653 float cosTheta = cos( theta ); 3654 // Rodrigues' axis-angle rotation 3655 vec3 sampleDirection = vOutputDirection * cosTheta 3656 + cross( axis, vOutputDirection ) * sin( theta ) 3657 + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); 3658 3659 return bilinearCubeUV( envMap, sampleDirection, mipInt ); 3660 3661 } 3662 3663 void main() { 3664 3665 vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); 3666 3667 if ( all( equal( axis, vec3( 0.0 ) ) ) ) { 3668 3669 axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); 3670 3671 } 3672 3673 axis = normalize( axis ); 3674 3675 gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); 3676 gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); 3677 3678 for ( int i = 1; i < n; i++ ) { 3679 3680 if ( i >= samples ) { 3681 3682 break; 3683 3684 } 3685 3686 float theta = dTheta * float( i ); 3687 gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); 3688 gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); 3689 3690 } 3691 3692 } 3693 `,blending:Aa,depthTest:!1,depthWrite:!1})}function v3(){return new Bi({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Mm(),fragmentShader:` 3694 3695 precision mediump float; 3696 precision mediump int; 3697 3698 varying vec3 vOutputDirection; 3699 3700 uniform sampler2D envMap; 3701 3702 #include <common> 3703 3704 void main() { 3705 3706 vec3 outputDirection = normalize( vOutputDirection ); 3707 vec2 uv = equirectUv( outputDirection ); 3708
3709 gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); 3710 3711 } 3712 `,blending:Aa,depthTest:!1,depthWrite:!1})}function x3(){return new Bi({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Mm(),fragmentShader:` 3713 3714 precision mediump float; 3715 precision mediump int; 3716 3717 uniform float flipEnvMap; 3718 3719 varying vec3 vOutputDirection; 3720 3721 uniform samplerCube envMap; 3722 3723 void main() { 3724 3725 gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); 3726 3727 } 3728 `,blending:Aa,depthTest:!1,depthWrite:!1})}function Mm(){return` 3729 3730 precision mediump float; 3731 precision mediump int; 3732 3733 attribute float faceIndex; 3734 3735 varying vec3 vOutputDirection; 3736 3737 // RH coordinate system; PMREM face-indexing convention 3738 vec3 getDirection( vec2 uv, float face ) { 3739 3740 uv = 2.0 * uv - 1.0; 3741 3742 vec3 direction = vec3( uv, 1.0 ); 3743 3744 if ( face == 0.0 ) { 3745 3746 direction = direction.zyx; // ( 1, v, u ) pos x 3747 3748 } else if ( face == 1.0 ) { 3749 3750 direction = direction.xzy; 3751 direction.xz *= -1.0; // ( -u, 1, -v ) pos y 3752 3753 } else if ( face == 2.0 ) { 3754 3755 direction.x *= -1.0; // ( -u, v, 1 ) pos z 3756 3757 } else if ( face == 3.0 ) { 3758 3759 direction = direction.zyx; 3760 direction.xz *= -1.0; // ( -1, v, -u ) neg x 3761 3762 } else if ( face == 4.0 ) { 3763 3764 direction = direction.xzy; 3765 direction.xy *= -1.0; // ( -u, -1, v ) neg y 3766 3767 } else if ( face == 5.0 ) { 3768 3769 direction.z *= -1.0; // ( u, v, -1 ) neg z 3770 3771 } 3772 3773 return direction; 3774 3775 } 3776 3777 void main() { 3778 3779 vOutputDirection = getDirection( uv, faceIndex ); 3780 gl_Position = vec4( position, 1.0 ); 3781 3782 } 3783 `}function nT(n){let e=new WeakMap,t=null;function a(f){if(f&&f.isTexture){const d=f.mapping,h=d===np||d===ip,g=d===Co||d===Ao;if(h||g){let v=e.get(f);const x=v!==void 0?v.texture.pmremVersion:0;if(f.isRenderTargetTexture&&f.pmremVersion!==x)return t===null&&(t=new m3(n)),v=h?t.fromEquirectangular(f,v):t.fromCubemap(f,v),v.texture.pmremVersion=f.pmremVersion,e.set(f,v),v.texture;if(v!==void 0)return v.texture;{const y=f.image;return h&&y&&y.height>0||g&&y&&o(y)?(t===null&&(t=new m3(n)),v=h?t.fromEquirectangular(f):t.fromCubemap(f),v.texture.pmremVersion=f.pmremVersion,e.set(f,v),f.addEventListener("dispose",l),v.texture):null}}}return f}function o(f){let d=0;const h=6;for(let g=0;g<h;g++)f[g]!==void 0&&d++;return d===h}function l(f){const d=f.target;d.removeEventListener("dispose",l);const h=e.get(d);h!==void 0&&(e.delete(d),h.dispose())}function u(){e=new WeakMap,t!==null&&(t.dispose(),t=null)}return{get:a,dispose:u}}function iT(n){const e={};function t(a){if(e[a]!==void 0)return e[a];let o;switch(a){case"WEBGL_depth_texture":o=n.getExtension("WEBGL_depth_texture")||n.getExtension("MOZ_WEBGL_depth_texture")||n.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":o=n.getExtension("EXT_texture_filter_anisotropic")||n.getExtension("MOZ_EXT_texture_filter_anisotropic")||n.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":o=n.getExtension("WEBGL_compressed_texture_s3tc")||n.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":o=n.getExtension("WEBGL_compressed_texture_pvrtc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:o=n.getExtension(a)}return e[a]=o,o}return{has:function(a){return t(a)!==null},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(a){const o=t(a);return o===null&&bo("THREE.WebGLRenderer: "+a+" extension not supported."),o}}}function sT(n,e,t,a){const o={},l=new WeakMap;function u(v){const x=v.target;x.index!==null&&e.remove(x.index);for(const b in x.attributes)e.remove(x.attributes[b]);x.removeEventListener("dispose",u),delete o[x.id];const y=l.get(x);y&&(e.remove(y),l.delete(x)),a.releaseStatesOfGeometry(x),x.isInstancedBufferGeometry===!0&&delete x._maxInstanceCount,t.memory.geometries--}function f(v,x){return o[x.id]===!0||(x.addEventListener("dispose",u),o[x.id]=!0,t.memory.geometries++),x}function d(v){const x=v.attributes;for(const y in x)e.update(x[y],n.ARRAY_BUFFER)}function h(v){const x=[],y=v.index,b=v.attributes.position;let w=0;if(y!==null){const N=y.array;w=y.version;for(let T=0,R=N.length;T<R;T+=3){const P=N[T+0],I=N[T+1],F=N[T+2];x.push(P,I,I,F,F,P)}}else if(b!==void 0){const N=b.array;w=b.version;for(let T=0,R=N.length/3-1;T<R;T+=3){const P=T+0,I=T+1,F=T+2;x.push(P,I,I,F,F,P)}}else return;const M=new(D_(x)?B_:I_)(x,1);M.version=w;const S=l.get(v);S&&e.remove(S),l.set(v,M)}function g(v){const x=l.get(v);if(x){const y=v.index;y!==null&&x.version<y.version&&h(v)}else h(v);return l.get(v)}return{get:f,update:d,getWireframeAttribute:g}}function aT(n,e,t){let a;function o(x){a=x}let l,u;function f(x){l=x.type,u=x.bytesPerElement}function d(x,y){n.drawElements(a,y,l,x*u),t.update(y,a,1)}function h(x,y,b){b!==0&&(n.drawElementsInstanced(a,y,l,x*u,b),t.update(y,a,b))}function g(x,y,b){if(b===0)return;e.get("WEBGL_multi_draw").multiDrawElementsWEBGL(a,y,0,l,x,0,b);let M=0;for(let S=0;S<b;S++)M+=y[S];t.update(M,a,1)}function v(x,y,b,w){if(b===0)return;const M=e.get("WEBGL_multi_draw");if(M===null)for(let S=0;S<x.length;S++)h(x[S]/u,y[S],w[S]);
vendor: 17,444 bytes, lines 3783-3818
3783else{M.multiDrawElementsInstancedWEBGL(a,y,0,l,x,0,w,0,b);let S=0;for(let N=0;N<b;N++)S+=y[N]*w[N];t.update(S,a,1)}}this.setMode=o,this.setIndex=f,this.render=d,this.renderInstances=h,this.renderMultiDraw=g,this.renderMultiDrawInstances=v}function rT(n){const e={geometries:0,textures:0},t={frame:0,calls:0,triangles:0,points:0,lines:0};function a(l,u,f){switch(t.calls++,u){case n.TRIANGLES:t.triangles+=f*(l/3);break;case n.LINES:t.lines+=f*(l/2);break;case n.LINE_STRIP:t.lines+=f*(l-1);break;case n.LINE_LOOP:t.lines+=f*l;break;case n.POINTS:t.points+=f*l;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",u);break}}function o(){t.calls=0,t.triangles=0,t.points=0,t.lines=0}return{memory:e,render:t,programs:null,autoReset:!0,reset:o,update:a}}function oT(n,e,t){const a=new WeakMap,o=new cn;function l(u,f,d){const h=u.morphTargetInfluences,g=f.morphAttributes.position||f.morphAttributes.normal||f.morphAttributes.color,v=g!==void 0?g.length:0;let x=a.get(f);if(x===void 0||x.count!==v){let L=function(){V.dispose(),a.delete(f),f.removeEventListener("dispose",L)};var y=L;x!==void 0&&x.texture.dispose();const b=f.morphAttributes.position!==void 0,w=f.morphAttributes.normal!==void 0,M=f.morphAttributes.color!==void 0,S=f.morphAttributes.position||[],N=f.morphAttributes.normal||[],T=f.morphAttributes.color||[];let R=0;b===!0&&(R=1),w===!0&&(R=2),M===!0&&(R=3);let P=f.attributes.position.count*R,I=1;P>e.maxTextureSize&&(I=Math.ceil(P/e.maxTextureSize),P=e.maxTextureSize);const F=new Float32Array(P*I*4*v),V=new U_(F,P,I,v);V.type=As,V.needsUpdate=!0;const U=R*4;for(let z=0;z<v;z++){const ce=S[z],ue=N[z],ge=T[z],me=P*I*4*z;for(let j=0;j<ce.count;j++){const Z=j*U;b===!0&&(o.fromBufferAttribute(ce,j),F[me+Z+0]=o.x,F[me+Z+1]=o.y,F[me+Z+2]=o.z,F[me+Z+3]=0),w===!0&&(o.fromBufferAttribute(ue,j),F[me+Z+4]=o.x,F[me+Z+5]=o.y,F[me+Z+6]=o.z,F[me+Z+7]=0),M===!0&&(o.fromBufferAttribute(ge,j),F[me+Z+8]=o.x,F[me+Z+9]=o.y,F[me+Z+10]=o.z,F[me+Z+11]=ge.itemSize===4?o.w:1)}}x={count:v,texture:V,size:new St(P,I)},a.set(f,x),f.addEventListener("dispose",L)}if(u.isInstancedMesh===!0&&u.morphTexture!==null)d.getUniforms().setValue(n,"morphTexture",u.morphTexture,t);else{let b=0;for(let M=0;M<h.length;M++)b+=h[M];const w=f.morphTargetsRelative?1:1-b;d.getUniforms().setValue(n,"morphTargetBaseInfluence",w),d.getUniforms().setValue(n,"morphTargetInfluences",h)}d.getUniforms().setValue(n,"morphTargetsTexture",x.texture,t),d.getUniforms().setValue(n,"morphTargetsTextureSize",x.size)}return{update:l}}function lT(n,e,t,a){let o=new WeakMap;function l(d){const h=a.render.frame,g=d.geometry,v=e.get(d,g);if(o.get(v)!==h&&(e.update(v),o.set(v,h)),d.isInstancedMesh&&(d.hasEventListener("dispose",f)===!1&&d.addEventListener("dispose",f),o.get(d)!==h&&(t.update(d.instanceMatrix,n.ARRAY_BUFFER),d.instanceColor!==null&&t.update(d.instanceColor,n.ARRAY_BUFFER),o.set(d,h))),d.isSkinnedMesh){const x=d.skeleton;o.get(x)!==h&&(x.update(),o.set(x,h))}return v}function u(){o=new WeakMap}function f(d){const h=d.target;h.removeEventListener("dispose",f),t.remove(h.instanceMatrix),h.instanceColor!==null&&t.remove(h.instanceColor)}return{update:l,dispose:u}}const G_=new Wn,_3=new j_(1,1),W_=new U_,X_=new Ob,q_=new Sm,y3=[],S3=[],M3=new Float32Array(16),b3=new Float32Array(9),E3=new Float32Array(4);function Fo(n,e,t){const a=n[0];if(a<=0||a>0)return n;const o=e*t;let l=y3[o];if(l===void 0&&(l=new Float32Array(o),y3[o]=l),e!==0){a.toArray(l,0);for(let u=1,f=0;u!==e;++u)f+=t,n[u].toArray(l,f)}return l}function Sn(n,e){if(n.length!==e.length)return!1;for(let t=0,a=n.length;t<a;t++)if(n[t]!==e[t])return!1;return!0}function Mn(n,e){for(let t=0,a=e.length;t<a;t++)n[t]=e[t]}function Ff(n,e){let t=S3[e];t===void 0&&(t=new Int32Array(e),S3[e]=t);for(let a=0;a!==e;++a)t[a]=n.allocateTextureUnit();return t}function cT(n,e){const t=this.cache;t[0]!==e&&(n.uniform1f(this.addr,e),t[0]=e)}function uT(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(n.uniform2f(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Sn(t,e))return;n.uniform2fv(this.addr,e),Mn(t,e)}}function fT(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(n.uniform3f(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else if(e.r!==void 0)(t[0]!==e.r||t[1]!==e.g||t[2]!==e.b)&&(n.uniform3f(this.addr,e.r,e.g,e.b),t[0]=e.r,t[1]=e.g,t[2]=e.b);else{if(Sn(t,e))return;n.uniform3fv(this.addr,e),Mn(t,e)}}function dT(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(n.uniform4f(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Sn(t,e))return;n.uniform4fv(this.addr,e),Mn(t,e)}}function hT(n,e){const t=this.cache,a=e.elements;if(a===void 0){if(Sn(t,e))return;n.uniformMatrix2fv(this.addr,!1,e),Mn(t,e)}else{if(Sn(t,a))return;E3.set(a),n.uniformMatrix2fv(this.addr,!1,E3),Mn(t,a)}}function pT(n,e){const t=this.cache,a=e.elements;if(a===void 0){if(Sn(t,e))return;n.uniformMatrix3fv(this.addr,!1,e),Mn(t,e)}else{if(Sn(t,a))return;b3.set(a),n.uniformMatrix3fv(this.addr,!1,b3),Mn(t,a)}}function mT(n,e){const t=this.cache,a=e.elements;if(a===void 0){if(Sn(t,e))return;n.uniformMatrix4fv(this.addr,!1,e),Mn(t,e)}else{if(Sn(t,a))return;M3.set(a),n.uniformMatrix4fv(this.addr,!1,M3),Mn(t,a)}}function gT(n,e){const t=this.cache;t[0]!==e&&(n.uniform1i(this.addr,e),t[0]=e)}function vT(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(n.uniform2i(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Sn(t,e))return;n.uniform2iv(this.addr,e),Mn(t,e)}}function xT(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(n.uniform3i(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(Sn(t,e))return;n.uniform3iv(this.addr,e),Mn(t,e)}}function _T(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(n.uniform4i(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Sn(t,e))return;n.uniform4iv(this.addr,e),Mn(t,e)}}function yT(n,e){const t=this.cache;t[0]!==e&&(n.uniform1ui(this.addr,e),t[0]=e)}function ST(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(n.uniform2ui(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Sn(t,e))return;n.uniform2uiv(this.addr,e),Mn(t,e)}}function MT(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(n.uniform3ui(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(Sn(t,e))return;n.uniform3uiv(this.addr,e),Mn(t,e)}}function bT(n,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(n.uniform4ui(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Sn(t,e))return;n.uniform4uiv(this.addr,e),Mn(t,e)}}function ET(n,e,t){const a=this.cache,o=t.allocateTextureUnit();a[0]!==o&&(n.uniform1i(this.addr,o),a[0]=o);let l;this.type===n.SAMPLER_2D_SHADOW?(_3.compareFunction=L_,l=_3):l=G_,t.setTexture2D(e||l,o)}function wT(n,e,t){const a=this.cache,o=t.allocateTextureUnit();a[0]!==o&&(n.uniform1i(this.addr,o),a[0]=o),t.setTexture3D(e||X_,o)}function TT(n,e,t){const a=this.cache,o=t.allocateTextureUnit();a[0]!==o&&(n.uniform1i(this.addr,o),a[0]=o),t.setTextureCube(e||q_,o)}function CT(n,e,t){const a=this.cache,o=t.allocateTextureUnit();a[0]!==o&&(n.uniform1i(this.addr,o),a[0]=o),t.setTexture2DArray(e||W_,o)}function AT(n){switch(n){case 5126:return cT;case 35664:return uT;case 35665:return fT;case 35666:return dT;case 35674:return hT;case 35675:return pT;case 35676:return mT;case 5124:case 35670:return gT;case 35667:case 35671:return vT;case 35668:case 35672:return xT;case 35669:case 35673:return _T;case 5125:return yT;case 36294:return ST;case 36295:return MT;case 36296:return bT;case 35678:case 36198:case 36298:case 36306:case 35682:return ET;case 35679:case 36299:case 36307:return wT;case 35680:case 36300:case 36308:case 36293:return TT;case 36289:case 36303:case 36311:case 36292:return CT}}function RT(n,e){n.uniform1fv(this.addr,e)}function NT(n,e){const t=Fo(e,this.size,2);n.uniform2fv(this.addr,t)}function LT(n,e){const t=Fo(e,this.size,3);n.uniform3fv(this.addr,t)}function DT(n,e){const t=Fo(e,this.size,4);n.uniform4fv(this.addr,t)}function UT(n,e){const t=Fo(e,this.size,4);n.uniformMatrix2fv(this.addr,!1,t)}function PT(n,e){const t=Fo(e,this.size,9);n.uniformMatrix3fv(this.addr,!1,t)}function OT(n,e){const t=Fo(e,this.size,16);n.uniformMatrix4fv(this.addr,!1,t)}function IT(n,e){n.uniform1iv(this.addr,e)}function BT(n,e){n.uniform2iv(this.addr,e)}function FT(n,e){n.uniform3iv(this.addr,e)}function zT(n,e){n.uniform4iv(this.addr,e)}function VT(n,e){n.uniform1uiv(this.addr,e)}function jT(n,e){n.uniform2uiv(this.addr,e)}function HT(n,e){n.uniform3uiv(this.addr,e)}function kT(n,e){n.uniform4uiv(this.addr,e)}function GT(n,e,t){const a=this.cache,o=e.length,l=Ff(t,o);Sn(a,l)||(n.uniform1iv(this.addr,l),Mn(a,l));for(let u=0;u!==o;++u)t.setTexture2D(e[u]||G_,l[u])}function WT(n,e,t){const a=this.cache,o=e.length,l=Ff(t,o);Sn(a,l)||(n.uniform1iv(this.addr,l),Mn(a,l));for(let u=0;u!==o;++u)t.setTexture3D(e[u]||X_,l[u])}function XT(n,e,t){const a=this.cache,o=e.length,l=Ff(t,o);Sn(a,l)||(n.uniform1iv(this.addr,l),Mn(a,l));for(let u=0;u!==o;++u)t.setTextureCube(e[u]||q_,l[u])}function qT(n,e,t){const a=this.cache,o=e.length,l=Ff(t,o);Sn(a,l)||(n.uniform1iv(this.addr,l),Mn(a,l));for(let u=0;u!==o;++u)t.setTexture2DArray(e[u]||W_,l[u])}function YT(n){switch(n){case 5126:return RT;case 35664:return NT;case 35665:return LT;case 35666:return DT;case 35674:return UT;case 35675:return PT;case 35676:return OT;case 5124:case 35670:return IT;case 35667:case 35671:return BT;case 35668:case 35672:return FT;case 35669:case 35673:return zT;case 5125:return VT;case 36294:return jT;case 36295:return HT;case 36296:return kT;case 35678:case 36198:case 36298:case 36306:case 35682:return GT;case 35679:case 36299:case 36307:return WT;case 35680:case 36300:case 36308:case 36293:return XT;case 36289:case 36303:case 36311:case 36292:return qT}}class ZT{constructor(e,t,a){this.id=e,this.addr=a,this.cache=[],this.type=t.type,this.setValue=AT(t.type)}}class KT{constructor(e,t,a){this.id=e,this.addr=a,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=YT(t.type)}}class QT{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,a){const o=this.seq;for(let l=0,u=o.length;l!==u;++l){const f=o[l];f.setValue(e,t[f.id],a)}}}const A0=/(\w+)(\])?(\[|\.)?/g;function w3(n,e){n.seq.push(e),n.map[e.id]=e}function $T(n,e,t){const a=n.name,o=a.length;for(A0.lastIndex=0;;){const l=A0.exec(a),u=A0.lastIndex;let f=l[1];const d=l[2]==="]",h=l[3];if(d&&(f=f|0),h===void 0||h==="["&&u+2===o){w3(t,h===void 0?new ZT(f,n,e):new KT(f,n,e));break}else{let v=t.map[f];v===void 0&&(v=new QT(f),w3(t,v)),t=v}}}class vf{constructor(e,t){this.seq=[],this.map={};const a=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let o=0;o<a;++o){const l=e.getActiveUniform(t,o),u=e.getUniformLocation(t,l.name);$T(l,u,this)}}setValue(e,t,a,o){const l=this.map[t];l!==void 0&&l.setValue(e,a,o)}setOptional(e,t,a){const o=t[a];o!==void 0&&this.setValue(e,a,o)}static upload(e,t,a,o){for(let l=0,u=t.length;l!==u;++l){const f=t[l],d=a[f.id];d.needsUpdate!==!1&&f.setValue(e,d.value,o)}}static seqWithValue(e,t){const a=[];for(let o=0,l=e.length;o!==l;++o){const u=e[o];u.id in t&&a.push(u)}return a}}function T3(n,e,t){const a=n.createShader(e);return n.shaderSource(a,t),n.compileShader(a),a}const JT=37297;let e7=0;function t7(n,e){const t=n.split(` 3784`),a=[],o=Math.max(e-6,0),l=Math.min(e+6,t.length);for(let u=o;u<l;u++){const f=u+1;a.push(`${f===e?">":" "} ${f}: ${t[u]}`)}return a.join(` 3785`)}const C3=new ht;function n7(n){Lt._getMatrix(C3,Lt.workingColorSpace,n);const e=`mat3( ${C3.elements.map(t=>t.toFixed(4))} )`;switch(Lt.getTransfer(n)){case bf:return[e,"LinearTransferOETF"];case kt:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",n),[e,"LinearTransferOETF"]}}function A3(n,e,t){const a=n.getShaderParameter(e,n.COMPILE_STATUS),o=n.getShaderInfoLog(e).trim();if(a&&o==="")return"";const l=/ERROR: 0:(\d+)/.exec(o);if(l){const u=parseInt(l[1]);return t.toUpperCase()+` 3786 3787`+o+` 3788 3789`+t7(n.getShaderSource(e),u)}else return o}function i7(n,e){const t=n7(e);return[`vec4 ${n}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` 3790`)}function s7(n,e){let t;switch(e){case rb:t="Linear";break;case ob:t="Reinhard";break;case lb:t="Cineon";break;case cb:t="ACESFilmic";break;case fb:t="AgX";break;case db:t="Neutral";break;case ub:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const af=new le;function a7(){Lt.getLuminanceCoefficients(af);const n=af.x.toFixed(4),e=af.y.toFixed(4),t=af.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${n}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` 3791`)}function r7(n){return[n.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",n.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Zl).join(` 3792`)}function o7(n){const e=[];for(const t in n){const a=n[t];a!==!1&&e.push("#define "+t+" "+a)}return e.join(` 3793`)}function l7(n,e){const t={},a=n.getProgramParameter(e,n.ACTIVE_ATTRIBUTES);for(let o=0;o<a;o++){const l=n.getActiveAttrib(e,o),u=l.name;let f=1;l.type===n.FLOAT_MAT2&&(f=2),l.type===n.FLOAT_MAT3&&(f=3),l.type===n.FLOAT_MAT4&&(f=4),t[u]={type:l.type,location:n.getAttribLocation(e,u),locationSize:f}}return t}function Zl(n){return n!==""}function R3(n,e){const t=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return n.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,t).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function N3(n,e){return n.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const c7=/^[ \t]*#include +<([\w\d./]+)>/gm;function Up(n){return n.replace(c7,f7)}const u7=new Map;function f7(n,e){let t=mt[e];if(t===void 0){const a=u7.get(e);if(a!==void 0)t=mt[a],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,a);else throw new Error("Can not resolve #include <"+e+">")}return Up(t)}const d7=/#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 L3(n){return n.replace(d7,h7)}function h7(n,e,t,a){let o="";for(let l=parseInt(e);l<parseInt(t);l++)o+=a.replace(/\[\s*i\s*\]/g,"[ "+l+" ]").replace(/UNROLLED_LOOP_INDEX/g,l);return o}function D3(n){let e=`precision ${n.precision} float; 3794 precision ${n.precision} int; 3795 precision ${n.precision} sampler2D; 3796 precision ${n.precision} samplerCube; 3797 precision ${n.precision} sampler3D; 3798 precision ${n.precision} sampler2DArray; 3799 precision ${n.precision} sampler2DShadow; 3800 precision ${n.precision} samplerCubeShadow; 3801 precision ${n.precision} sampler2DArrayShadow; 3802 precision ${n.precision} isampler2D; 3803 precision ${n.precision} isampler3D; 3804 precision ${n.precision} isamplerCube; 3805 precision ${n.precision} isampler2DArray; 3806 precision ${n.precision} usampler2D; 3807 precision ${n.precision} usampler3D; 3808 precision ${n.precision} usamplerCube; 3809 precision ${n.precision} usampler2DArray; 3810 `;return n.precision==="highp"?e+=` 3811#define HIGH_PRECISION`:n.precision==="mediump"?e+=` 3812#define MEDIUM_PRECISION`:n.precision==="lowp"&&(e+=` 3813#define LOW_PRECISION`),e}function p7(n){let e="SHADOWMAP_TYPE_BASIC";return n.shadowMapType===y_?e="SHADOWMAP_TYPE_PCF":n.shadowMapType===z6?e="SHADOWMAP_TYPE_PCF_SOFT":n.shadowMapType===Cs&&(e="SHADOWMAP_TYPE_VSM"),e}function m7(n){let e="ENVMAP_TYPE_CUBE";if(n.envMap)switch(n.envMapMode){case Co:case Ao:e="ENVMAP_TYPE_CUBE";break;case Of:e="ENVMAP_TYPE_CUBE_UV";break}return e}function g7(n){let e="ENVMAP_MODE_REFLECTION";if(n.envMap)switch(n.envMapMode){case Ao:e="ENVMAP_MODE_REFRACTION";break}return e}function v7(n){let e="ENVMAP_BLENDING_NONE";if(n.envMap)switch(n.combine){case S_:e="ENVMAP_BLENDING_MULTIPLY";break;case sb:e="ENVMAP_BLENDING_MIX";break;case ab:e="ENVMAP_BLENDING_ADD";break}return e}function x7(n){const e=n.envMapCubeUVHeight;if(e===null)return null;const t=Math.log2(e)-2,a=1/e;return{texelWidth:1/(3*Math.max(Math.pow(2,t),112)),texelHeight:a,maxMip:t}}function _7(n,e,t,a){const o=n.getContext(),l=t.defines;let u=t.vertexShader,f=t.fragmentShader;const d=p7(t),h=m7(t),g=g7(t),v=v7(t),x=x7(t),y=r7(t),b=o7(l),w=o.createProgram();let M,S,N=t.glslVersion?"#version "+t.glslVersion+` 3814`:"";t.isRawShaderMaterial?(M=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,b].filter(Zl).join(` 3815`),M.length>0&&(M+=` 3816`),S=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,b].filter(Zl).join(` 3817`),S.length>0&&(S+=` 3818`)):(M=[D3(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,b,t.extensionCl
vendor: 6,454 bytes, lines 3818-3820
3818ipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+g:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+d:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.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",` 3819`].filter(Zl).join(` 3820`),S=[D3(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,b,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+h:"",t.envMap?"#define "+g:"",t.envMap?"#define "+v:"",x?"#define CUBEUV_TEXEL_WIDTH "+x.texelWidth:"",x?"#define CUBEUV_TEXEL_HEIGHT "+x.texelHeight:"",x?"#define CUBEUV_MAX_MIP "+x.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IR
3820IDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+d:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==Ra?"#define TONE_MAPPING":"",t.toneMapping!==Ra?mt.tonemapping_pars_fragment:"",t.toneMapping!==Ra?s7("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",mt.colorspace_pars_fragment,i7("linearToOutputTexel",t.outputColorSpace),a7(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` 3821`].filter(Zl).join(` 3822`)),u=Up(u),u=R3(u,t),u=N3(u,t),f=Up(f),f=R3(f,t),f=N3(f,t),u=L3(u),f=L3(f),t.isRawShaderMaterial!==!0&&(N=`#version 300 es 3823`,M=[y,"#define attribute in","#define varying out","#define texture2D texture"].join(` 3824`)+` 3825`+M,S=["#define varying in",t.glslVersion===qv?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===qv?"":"#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(` 3826`)+` 3827`+S);const T=N+M+u,R=N+S+f,P=T3(o,o.VERTEX_SHADER,T),I=T3(o,o.FRAGMENT_SHADER,R);o.attachShader(w,P),o.attachShader(w,I),t.index0AttributeName!==void 0?o.bindAttribLocation(w,0,t.index0AttributeName):t.morphTargets===!0&&o.bindAttribLocation(w,0,"position"),o.linkProgram(w);function F(z){if(n.debug.checkShaderErrors){const ce=o.getProgramInfoLog(w).trim(),ue=o.getShaderInfoLog(P).trim(),ge=o.getShaderInfoLog(I).trim();let me=!0,j=!0;if(o.getProgramParameter(w,o.LINK_STATUS)===!1)if(me=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(o,w,P,I);else{const Z=A3(o,P,"vertex"),Y=A3(o,I,"fragment");console.error("THREE.WebGLProgram: Shader Error "+o.getError()+" - VALIDATE_STATUS "+o.getProgramParameter(w,o.VALIDATE_STATUS)+` 3828 3829Material Name: `+z.name+` 3830Material Type: `+z.type+` 3831 3832Program Info Log: `+ce+` 3833`+Z+` 3834`+Y)}else ce!==""?console.warn("THREE.WebGLProgram: Program Info Log:",ce):(ue===""||ge==="")&&(j=!1);j&&(z.diagnostics={runnable:me,programLog:ce,vertexShader:{log:ue,prefix:M},fragmentShader:{log:ge,prefix:S}})}o.deleteShader(P),o.deleteShader(I),V=new vf(o,w),U=l7(o,w)}let V;this.getUniforms=function(){return V===void 0&&F(this),V};let U;this.getAttributes=function(){return U===void 0&&F(this),U};let L=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return L===!1&&(L=o.getProgramParameter(w,JT)),L},this.destroy=function(){a.releaseStatesOfProgram(this),o.deleteProgram(w),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=e7++,this.cacheKey=e,this.usedTimes=1,this.program=w,this.vertexShader=P,this.fragmentShader=I,this}let y7=0;class S7{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,a=e.fragmentShader,o=this._getShaderStage(t),l=this._getShaderStage(a),u=this._getShaderCacheForMaterial(e);return u.has(o)===!1&&(u.add(o),o.usedTimes++),u.has(l)===!1&&(u.add(l),l.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const a of t)a.usedTimes--,a.usedTimes===0&&this.shaderCache.delete(a.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let a=t.get(e);return a===void 0&&(a=new Set,t.set(e,a)),a}_getShaderStage(e){const t=this.shaderCache;let a=t.get(e);return a===void 0&&(a=new M7(e),t.set(e,a)),a}}class M7{constructor(e){this.id=y7++,this.code=e,this.usedTimes=0}}function b7(n,e,t,a,o,l,u){const f=new P_,d=new S7,h=new Set,g=[],v=o.logarithmicDepthBuffer,x=o.vertexTextures;let y=o.precision;const b={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 w(U){return h.add(U),U===0?"uv":`uv${U}`}function M(U,L,z,ce,ue){const ge=ce.fog,me=ue.geometry,j=U.isMeshStandardMaterial?ce.environment:null,Z=(U.isMeshStandardMaterial?t:e).get(U.envMap||j),Y=Z&&Z.mapping===Of?Z.image.height:null,he=b[U.type];U.precision!==null&&(y=o.getMaxPrecision(U.precision),y!==U.precision&&console.warn("THREE.WebGLProgram.getParameters:",U.precision,"not supported, using",y,"instead."));const O=me.morphAttributes.position||me.morphAttributes.normal||me.morphAttributes.color,ee=O!==void 0?O.length:0;let Me=0;me.morphAttributes.position!==void 0&&(Me=1),me.morphAttributes.normal!==void 0&&(Me=2),me.morphAttributes.color!==void 0&&(Me=3);let be,te,xe,Ee;if(he){const Rt=Wi[he];be=Rt.vertexShader,te=Rt.fragmentShader}else be=U.vertexShader,te=U.fragmentShader,d.update(U),xe=d.getVertexShaderID(U),Ee=d.getFragmentShaderID(U);const Te=n.getRenderTarget(),Ue=n.state.buffers.depth.getReversed(),ut=ue.isInstancedMesh===!0,Qe=ue.isBatchedMesh===!0,Et=!!U.map,Ut=!!U.matcap,gt=!!Z,k=!!U.aoMap,Xt=!!U.lightMap,ft
vendor: 10,217 bytes, line 3834
3834=!!U.bumpMap,rt=!!U.normalMap,He=!!U.displacementMap,vt=!!U.emissiveMap,Ke=!!U.metalnessMap,ot=!!U.roughnessMap,$t=U.anisotropy>0,B=U.clearcoat>0,C=U.dispersion>0,J=U.iridescence>0,de=U.sheen>0,fe=U.transmission>0,q=$t&&!!U.anisotropyMap,Ae=B&&!!U.clearcoatMap,Le=B&&!!U.clearcoatNormalMap,ze=B&&!!U.clearcoatRoughnessMap,Ge=J&&!!U.iridescenceMap,_e=J&&!!U.iridescenceThicknessMap,Re=de&&!!U.sheenColorMap,Be=de&&!!U.sheenRoughnessMap,We=!!U.specularMap,De=!!U.specularColorMap,tt=!!U.specularIntensityMap,W=fe&&!!U.transmissionMap,Pe=fe&&!!U.thicknessMap,we=!!U.gradientMap,Ve=!!U.alphaMap,Ce=U.alphaTest>0,Se=!!U.alphaHash,Xe=!!U.extensions;let lt=Ra;U.toneMapped&&(Te===null||Te.isXRRenderTarget===!0)&&(lt=n.toneMapping);const It={shaderID:he,shaderType:U.type,shaderName:U.name,vertexShader:be,fragmentShader:te,defines:U.defines,customVertexShaderID:xe,customFragmentShaderID:Ee,isRawShaderMaterial:U.isRawShaderMaterial===!0,glslVersion:U.glslVersion,precision:y,batching:Qe,batchingColor:Qe&&ue._colorsTexture!==null,instancing:ut,instancingColor:ut&&ue.instanceColor!==null,instancingMorph:ut&&ue.morphTexture!==null,supportsVertexTextures:x,outputColorSpace:Te===null?n.outputColorSpace:Te.isXRRenderTarget===!0?Te.texture.colorSpace:Ro,alphaToCoverage:!!U.alphaToCoverage,map:Et,matcap:Ut,envMap:gt,envMapMode:gt&&Z.mapping,envMapCubeUVHeight:Y,aoMap:k,lightMap:Xt,bumpMap:ft,normalMap:rt,displacementMap:x&&He,emissiveMap:vt,normalMapObjectSpace:rt&&U.normalMapType===vb,normalMapTangentSpace:rt&&U.normalMapType===gb,metalnessMap:Ke,roughnessMap:ot,anisotropy:$t,anisotropyMap:q,clearcoat:B,clearcoatMap:Ae,clearcoatNormalMap:Le,clearcoatRoughnessMap:ze,dispersion:C,iridescence:J,iridescenceMap:Ge,iridescenceThicknessMap:_e,sheen:de,sheenColorMap:Re,sheenRoughnessMap:Be,specularMap:We,specularColorMap:De,specularIntensityMap:tt,transmission:fe,transmissionMap:W,thicknessMap:Pe,gradientMap:we,opaque:U.transparent===!1&&U.blending===Mo&&U.alphaToCoverage===!1,alphaMap:Ve,alphaTest:Ce,alphaHash:Se,combine:U.combine,mapUv:Et&&w(U.map.channel),aoMapUv:k&&w(U.aoMap.channel),lightMapUv:Xt&&w(U.lightMap.channel),bumpMapUv:ft&&w(U.bumpMap.channel),normalMapUv:rt&&w(U.normalMap.channel),displacementMapUv:He&&w(U.displacementMap.channel),emissiveMapUv:vt&&w(U.emissiveMap.channel),metalnessMapUv:Ke&&w(U.metalnessMap.channel),roughnessMapUv:ot&&w(U.roughnessMap.channel),anisotropyMapUv:q&&w(U.anisotropyMap.channel),clearcoatMapUv:Ae&&w(U.clearcoatMap.channel),clearcoatNormalMapUv:Le&&w(U.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:ze&&w(U.clearcoatRoughnessMap.channel),iridescenceMapUv:Ge&&w(U.iridescenceMap.channel),iridescenceThicknessMapUv:_e&&w(U.iridescenceThicknessMap.channel),sheenColorMapUv:Re&&w(U.sheenColorMap.channel),sheenRoughnessMapUv:Be&&w(U.sheenRoughnessMap.channel),specularMapUv:We&&w(U.specularMap.channel),specularColorMapUv:De&&w(U.specularColorMap.channel),specularIntensityMapUv:tt&&w(U.specularIntensityMap.channel),transmissionMapUv:W&&w(U.transmissionMap.channel),thicknessMapUv:Pe&&w(U.thicknessMap.channel),alphaMapUv:Ve&&w(U.alphaMap.channel),vertexTangents:!!me.attributes.tangent&&(rt||$t),vertexColors:U.vertexColors,vertexAlphas:U.vertexColors===!0&&!!me.attributes.color&&me.attributes.color.itemSize===4,pointsUvs:ue.isPoints===!0&&!!me.attributes.uv&&(Et||Ve),fog:!!ge,useFog:U.fog===!0,fogExp2:!!ge&&ge.isFogExp2,flatShading:U.flatShading===!0&&U.wireframe===!1,sizeAttenuation:U.sizeAttenuation===!0,logarithmicDepthBuffer:v,reverseDepthBuffer:Ue,skinning:ue.isSkinnedMesh===!0,morphTargets:me.morphAttributes.position!==void 0,morphNormals:me.morphAttributes.normal!==void 0,morphColors:me.morphAttributes.color!==void 0,morphTargetsCount:ee,morphTextureStride:Me,numDirLights:L.directional.length,numPointLights:L.point.length,numSpotLights:L.spot.length,numSpotLightMaps:L.spotLightMap.length,numRectAreaLights:L.rectArea.length,numHemiLights:L.hemi.length,numDirLightShadows:L.directionalShadowMap.length,numPointLightShadows:L.pointShadowMap.length,numSpotLightShadows:L.spotShadowMap.length,numSpotLightShadowsWithMaps:L.numSpotLightShadowsWithMaps,numLightProbes:L.numLightProbes,numClippingPlanes:u.numPlanes,numClipIntersection:u.numIntersection,dithering:U.dithering,shadowMapEnabled:n.shadowMap.enabled&&z.length>0,shadowMapType:n.shadowMap.type,toneMapping:lt,decodeVideoTexture:Et&&U.map.isVideoTexture===!0&&Lt.getTransfer(U.map.colorSpace)===kt,decodeVideoTextureEmissive:vt&&U.emissiveMap.isVideoTexture===!0&&Lt.getTransfer(U.emissiveMap.colorSpace)===kt,premultipliedAlpha:U.premultipliedAlpha,doubleSided:U.side===Ui,flipSided:U.side===ei,useDepthPacking:U.depthPacking>=0,depthPacking:U.depthPacking||0,index0AttributeName:U.index0AttributeName,extensionClipCullDistance:Xe&&U.extensions.clipCullDistance===!0&&a.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Xe&&U.extensions.multiDraw===!0||Qe)&&a.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:a.has("KHR_parallel_shader_compile"),customProgramCacheKey:U.customProgramCacheKey()};return It.vertexUv1s=h.has(1),It.vertexUv2s=h.has(2),It.vertexUv3s=h.has(3),h.clear(),It}function S(U){const L=[];if(U.shaderID?L.push(U.shaderID):(L.push(U.customVertexShaderID),L.push(U.customFragmentShaderID)),U.defines!==void 0)for(const z in U.defines)L.push(z),L.push(U.defines[z]);return U.isRawShaderMaterial===!1&&(N(L,U),T(L,U),L.push(n.outputColorSpace)),L.push(U.customProgramCacheKey),L.join()}function N(U,L){U.push(L.precision),U.push(L.outputColorSpace),U.push(L.envMapMode),U.push(L.envMapCubeUVHeight),U.push(L.mapUv),U.push(L.alphaMapUv),U.push(L.lightMapUv),U.push(L.aoMapUv),U.push(L.bumpMapUv),U.push(L.normalMapUv),U.push(L.displacementMapUv),U.push(L.emissiveMapUv),U.push(L.metalnessMapUv),U.push(L.roughnessMapUv),U.push(L.anisotropyMapUv),U.push(L.clearcoatMapUv),U.push(L.clearcoatNormalMapUv),U.push(L.clearcoatRoughnessMapUv),U.push(L.iridescenceMapUv),U.push(L.iridescenceThicknessMapUv),U.push(L.sheenColorMapUv),U.push(L.sheenRoughnessMapUv),U.push(L.specularMapUv),U.push(L.specularColorMapUv),U.push(L.specularIntensityMapUv),U.push(L.transmissionMapUv),U.push(L.thicknessMapUv),U.push(L.combine),U.push(L.fogExp2),U.push(L.sizeAttenuation),U.push(L.morphTargetsCount),U.push(L.morphAttributeCount),U.push(L.numDirLights),U.push(L.numPointLights),U.push(L.numSpotLights),U.push(L.numSpotLightMaps),U.push(L.numHemiLights),U.push(L.numRectAreaLights),U.push(L.numDirLightShadows),U.push(L.numPointLightShadows),U.push(L.numSpotLightShadows),U.push(L.numSpotLightShadowsWithMaps),U.push(L.numLightProbes),U.push(L.shadowMapType),U.push(L.toneMapping),U.push(L.numClippingPlanes),U.push(L.numClipIntersection),U.push(L.depthPacking)}function T(U,L){f.disableAll(),L.supportsVertexTextures&&f.enable(0),L.instancing&&f.enable(1),L.instancingColor&&f.enable(2),L.instancingMorph&&f.enable(3),L.matcap&&f.enable(4),L.envMap&&f.enable(5),L.normalMapObjectSpace&&f.enable(6),L.normalMapTangentSpace&&f.enable(7),L.clearcoat&&f.enable(8),L.iridescence&&f.enable(9),L.alphaTest&&f.enable(10),L.vertexColors&&f.enable(11),L.vertexAlphas&&f.enable(12),L.vertexUv1s&&f.enable(13),L.vertexUv2s&&f.enable(14),L.vertexUv3s&&f.enable(15),L.vertexTangents&&f.enable(16),L.anisotropy&&f.enable(17),L.alphaHash&&f.enable(18),L.batching&&f.enable(19),L.dispersion&&f.enable(20),L.batchingColor&&f.enable(21),L.gradientMap&&f.enable(22),U.push(f.mask),f.disableAll(),L.fog&&f.enable(0),L.useFog&&f.enable(1),L.flatShading&&f.enable(2),L.logarithmicDepthBuffer&&f.enable(3),L.reverseDepthBuffer&&f.enable(4),L.skinning&&f.enable(5),L.morphTargets&&f.enable(6),L.morphNormals&&f.enable(7),L.morphColors&&f.enable(8),L.premultipliedAlpha&&f.enable(9),L.shadowMapEnabled&&f.enable(10),L.doubleSided&&f.enable(11),L.flipSided&&f.enable(12),L.useDepthPacking&&f.enable(13),L.dithering&&f.enable(14),L.transmission&&f.enable(15),L.sheen&&f.enable(16),L.opaque&&f.enable(17),L.pointsUvs&&f.enable(18),L.decodeVideoTexture&&f.enable(19),L.decodeVideoTextureEmissive&&f.enable(20),L.alphaToCoverage&&f.enable(21),U.push(f.mask)}function R(U){const L=b[U.type];let z;if(L){const ce=Wi[L];z=Zb.clone(ce.uniforms)}else z=U.uniforms;return z}function P(U,L){let z;for(let ce=0,ue=g.length;ce<ue;ce++){const ge=g[ce];if(ge.cacheKey===L){z=ge,++z.usedTimes;break}}return z===void 0&&(z=new _7(n,L,U,l),g.push(z)),z}function I(U){if(--U.usedTimes===0){const L=g.indexOf(U);g[L]=g[g.length-1],g.pop(),U.destroy()}}function F(U){d.remove(U)}function V(){d.dispose()}return{getParameters:M,getProgramCacheKey:S,getUniforms:R,acquireProgram:P,releaseProgram:I,releaseShaderCache:F,programs:g,dispose:V}}function E7(){let n=new WeakMap;function e(u){return n.has(u)}function t(u){let f=n.get(u);return f===void 0&&(f={},n.set(u,f)),f}function a(u){n.delete(u)}function o(u,f,d){n.get(u)[f]=d}function l(){n=new WeakMap}return{has:e,get:t,remove:a,update:o,dispose:l}}function w7(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.material.id!==e.material.id?n.material.id-e.material.id:n.z!==e.z?n.z-e.z:n.id-e.id}function U3(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.z!==e.z?e.z-n.z:n.id-e.id}function P3(){const n=[];let e=0;const t=[],a=[],o=[];function l(){e=0,t.length=0,a.length=0,o.length=0}function u(v,x,y,b,w,M){let S=n[e];return S===void 0?(S={id:v.id,object:v,geometry:x,material:y,groupOrder:b,renderOrder:v.renderOrder,z:w,group:M},n[e]=S):(S.id=v.id,S.object=v,S.geometry=x,S.material=y,S.groupOrder=b,S.renderOrder=v.renderOrder,S.z=w,S.group=M),e++,S}function f(v,x,y,b,w,M){const S=u(v,x,y,b,w,M);y.transmission>0?a.push(S):y.transparent===!0?o.push(S):t.push(S)}function d(v,x,y,b,w,M){const S=u(v,x,y,b,w,M);y.transmission>0?a.unshift(S):y.transparent===!0?o.unshift(S):t.unshift(S)}function h(v,x){t.length>1&&t.sort(v||w7),a.length>1&&a.sort(x||U3),o.length>1&&o.sort(x||U3)}function g(){for(let v=e,x=n.length;v<x;v++){const y=n[v];if(y.id===null)break;y.id=null,y.object=null,y.geometry=null,y.material=null,y.group=null}}return{opaque:t,transmissive:a,transparent:o,init:l,push:f,unshift:d,finish:g,
vendor: 1,287 bytes, line 3834
3834sort:h}}function T7(){let n=new WeakMap;function e(a,o){const l=n.get(a);let u;return l===void 0?(u=new P3,n.set(a,[u])):o>=l.length?(u=new P3,l.push(u)):u=l[o],u}function t(){n=new WeakMap}return{get:e,dispose:t}}function C7(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new le,color:new Fe};break;case"SpotLight":t={position:new le,direction:new le,color:new Fe,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new le,color:new Fe,distance:0,decay:0};break;case"HemisphereLight":t={direction:new le,skyColor:new Fe,groundColor:new Fe};break;case"RectAreaLight":t={color:new Fe,position:new le,halfWidth:new le,halfHeight:new le};break}return n[e.id]=t,t}}}function A7(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new St};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new St};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new St,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let R7=0;
vendor: 5,970 bytes, lines 3834-3840
3834function N7(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function L7(n){const e=new C7,t=A7(),a={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 h=0;h<9;h++)a.probe.push(new le);const o=new le,l=new gn,u=new gn;function f(h){let g=0,v=0,x=0;for(let U=0;U<9;U++)a.probe[U].set(0,0,0);let y=0,b=0,w=0,M=0,S=0,N=0,T=0,R=0,P=0,I=0,F=0;h.sort(N7);for(let U=0,L=h.length;U<L;U++){const z=h[U],ce=z.color,ue=z.intensity,ge=z.distance,me=z.shadow&&z.shadow.map?z.shadow.map.texture:null;if(z.isAmbientLight)g+=ce.r*ue,v+=ce.g*ue,x+=ce.b*ue;else if(z.isLightProbe){for(let j=0;j<9;j++)a.probe[j].addScaledVector(z.sh.coefficients[j],ue);F++}else if(z.isDirectionalLight){const j=e.get(z);if(j.color.copy(z.color).multiplyScalar(z.intensity),z.castShadow){const Z=z.shadow,Y=t.get(z);Y.shadowIntensity=Z.intensity,Y.shadowBias=Z.bias,Y.shadowNormalBias=Z.normalBias,Y.shadowRadius=Z.radius,Y.shadowMapSize=Z.mapSize,a.directionalShadow[y]=Y,a.directionalShadowMap[y]=me,a.directionalShadowMatrix[y]=z.shadow.matrix,N++}a.directional[y]=j,y++}else if(z.isSpotLight){const j=e.get(z);j.position.setFromMatrixPosition(z.matrixWorld),j.color.copy(ce).multiplyScalar(ue),j.distance=ge,j.coneCos=Math.cos(z.angle),j.penumbraCos=Math.cos(z.angle*(1-z.penumbra)),j.decay=z.decay,a.spot[w]=j;const Z=z.shadow;if(z.map&&(a.spotLightMap[P]=z.map,P++,Z.updateMatrices(z),z.castShadow&&I++),a.spotLightMatrix[w]=Z.matrix,z.castShadow){const Y=t.get(z);Y.shadowIntensity=Z.intensity,Y.shadowBias=Z.bias,Y.shadowNormalBias=Z.normalBias,Y.shadowRadius=Z.radius,Y.shadowMapSize=Z.mapSize,a.spotShadow[w]=Y,a.spotShadowMap[w]=me,R++}w++}else if(z.isRectAreaLight){const j=e.get(z);j.color.copy(ce).multiplyScalar(ue),j.halfWidth.set(z.width*.5,0,0),j.halfHeight.set(0,z.height*.5,0),a.rectArea[M]=j,M++}else if(z.isPointLight){const j=e.get(z);if(j.color.copy(z.color).multiplyScalar(z.intensity),j.distance=z.distance,j.decay=z.decay,z.castShadow){const Z=z.shadow,Y=t.get(z);Y.shadowIntensity=Z.intensity,Y.shadowBias=Z.bias,Y.shadowNormalBias=Z.normalBias,Y.shadowRadius=Z.radius,Y.shadowMapSize=Z.mapSize,Y.shadowCameraNear=Z.camera.near,Y.shadowCameraFar=Z.camera.far,a.pointShadow[b]=Y,a.pointShadowMap[b]=me,a.pointShadowMatrix[b]=z.shadow.matrix,T++}a.point[b]=j,b++}else if(z.isHemisphereLight){const j=e.get(z);j.skyColor.copy(z.color).multiplyScalar(ue),j.groundColor.copy(z.groundColor).multiplyScalar(ue),a.hemi[S]=j,S++}}M>0&&(n.has("OES_texture_float_linear")===!0?(a.rectAreaLTC1=Ie.LTC_FLOAT_1,a.rectAreaLTC2=Ie.LTC_FLOAT_2):(a.rectAreaLTC1=Ie.LTC_HALF_1,a.rectAreaLTC2=Ie.LTC_HALF_2)),a.ambient[0]=g,a.ambient[1]=v,a.ambient[2]=x;const V=a.hash;(V.directionalLength!==y||V.pointLength!==b||V.spotLength!==w||V.rectAreaLength!==M||V.hemiLength!==S||V.numDirectionalShadows!==N||V.numPointShadows!==T||V.numSpotShadows!==R||V.numSpotMaps!==P||V.numLightProbes!==F)&&(a.directional.length=y,a.spot.length=w,a.rectArea.length=M,a.point.length=b,a.hemi.length=S,a.directionalShadow.length=N,a.directionalShadowMap.length=N,a.pointShadow.length=T,a.pointShadowMap.length=T,a.spotShadow.length=R,a.spotShadowMap.length=R,a.directionalShadowMatrix.length=N,a.pointShadowMatrix.length=T,a.spotLightMatrix.length=R+P-I,a.spotLightMap.length=P,a.numSpotLightShadowsWithMaps=I,a.numLightProbes=F,V.directionalLength=y,V.pointLength=b,V.spotLength=w,V.rectAreaLength=M,V.hemiLength=S,V.numDirectionalShadows=N,V.numPointShadows=T,V.numSpotShadows=R,V.numSpotMaps=P,V.numLightProbes=F,a.version=R7++)}function d(h,g){let v=0,x=0,y=0,b=0,w=0;const M=g.matrixWorldInverse;for(let S=0,N=h.length;S<N;S++){const T=h[S];if(T.isDirectionalLight){const R=a.directional[v];R.direction.setFromMatrixPosition(T.matrixWorld),o.setFromMatrixPosition(T.target.matrixWorld),R.direction.sub(o),R.direction.transformDirection(M),v++}else if(T.isSpotLight){const R=a.spot[y];R.position.setFromMatrixPosition(T.matrixWorld),R.position.applyMatrix4(M),R.direction.setFromMatrixPosition(T.matrixWorld),o.setFromMatrixPosition(T.target.matrixWorld),R.direction.sub(o),R.direction.transformDirection(M),y++}else if(T.isRectAreaLight){const R=a.rectArea[b];R.position.setFromMatrixPosition(T.matrixWorld),R.position.applyMatrix4(M),u.identity(),l.copy(T.matrixWorld),l.premultiply(M),u.extractRotation(l),R.halfWidth.set(T.width*.5,0,0),R.halfHeight.set(0,T.height*.5,0),R.halfWidth.applyMatrix4(u),R.halfHeight.applyMatrix4(u),b++}else if(T.isPointLight){const R=a.point[x];R.position.setFromMatrixPosition(T.matrixWorld),R.position.applyMatrix4(M),x++}else if(T.isHemisphereLight){const R=a.hemi[w];R.direction.setFromMatrixPosition(T.matrixWorld),R.direction.transformDirection(M),w++}}}return{setup:f,setupView:d,state:a}}function O3(n){const e=new L7(n),t=[],a=[];function o(g){h.camera=g,t.length=0,a.length=0}function l(g){t.push(g)}function u(g){a.push(g)}function f(){e.setup(t)}function d(g){e.setupView(t,g)}const h={lightsArray:t,shadowsArray:a,camera:null,lights:e,transmissionRenderTarget:{}};return{init:o,state:h,setupLights:f,setupLightsView:d,pushLight:l,pushShadow:u}}function D7(n){let e=new WeakMap;function t(o,l=0){const u=e.get(o);let f;return u===void 0?(f=new O3(n),e.set(o,[f])):l>=u.length?(f=new O3(n),u.push(f)):f=u[l],f}function a(){e=new WeakMap}return{get:t,dispose:a}}const U7=`void main() { 3835 gl_Position = vec4( position, 1.0 ); 3836}`,P7=`uniform sampler2D shadow_pass; 3837uniform vec2 resolution; 3838uniform float radius; 3839#include <packing> 3840void main() {
3841 const float samples = float( VSM_SAMPLES ); 3842 float mean = 0.0; 3843 float squared_mean = 0.0; 3844 float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); 3845 float uvStart = samples <= 1.0 ? 0.0 : - 1.0; 3846 for ( float i = 0.0; i < samples; i ++ ) { 3847 float uvOffset = uvStart + i * uvStride; 3848 #ifdef HORIZONTAL_PASS 3849 vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); 3850 mean += distribution.x; 3851 squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; 3852 #else 3853 float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); 3854 mean += depth; 3855 squared_mean += depth * depth; 3856 #endif 3857 } 3858 mean = mean / samples; 3859 squared_mean = squared_mean / samples; 3860 float std_dev = sqrt( squared_mean - mean * mean ); 3861 gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); 3862}`;function O7(n,e,t){let a=new V_;const o=new St,l=new St,u=new cn,f=new sE({depthPacking:mb}),d=new aE,h={},g=t.maxTextureSize,v={[Na]:ei,[ei]:Na,[Ui]:Ui},x=new Bi({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new St},radius:{value:4}},vertexShader:U7,fragmentShader:P7}),y=x.clone();y.defines.HORIZONTAL_PASS=1;const b=new Ua;b.setAttribute("position",new qi(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const w=new pi(b,x),M=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=y_;let S=this.type;this.render=function(I,F,V){if(M.enabled===!1||M.autoUpdate===!1&&M.needsUpdate===!1||I.length===0)return;const U=n.getRenderTarget(),L=n.getActiveCubeFace(),z=n.getActiveMipmapLevel(),ce=n.state;ce.setBlending(Aa),ce.buffers.color.setClear(1,1,1,1),ce.buffers.depth.setTest(!0),ce.setScissorTest(!1);const ue=S!==Cs&&this.type===Cs,ge=S===Cs&&this.type!==Cs;for(let me=0,j=I.length;me<j;me++){const Z=I[me],Y=Z.shadow;if(Y===void 0){console.warn("THREE.WebGLShadowMap:",Z,"has no shadow.");continue}if(Y.autoUpdate===!1&&Y.needsUpdate===!1)continue;o.copy(Y.mapSize);const he=Y.getFrameExtents();if(o.multiply(he),l.copy(Y.mapSize),(o.x>g||o.y>g)&&(o.x>g&&(l.x=Math.floor(g/he.x),o.x=l.x*he.x,Y.mapSize.x=l.x),o.y>g&&(l.y=Math.floor(g/he.y),o.y=l.y*he.y,Y.mapSize.y=l.y)),Y.map===null||ue===!0||ge===!0){const ee=this.type!==Cs?{minFilter:Ii,magFilter:Ii}:{};Y.map!==null&&Y.map.dispose(),Y.map=new Mr(o.x,o.y,ee),Y.map.texture.name=Z.name+".shadowMap",Y.camera.updateProjectionMatrix()}n.setRenderTarget(Y.map),n.clear();const O=Y.getViewportCount();for(let ee=0;ee<O;ee++){const Me=Y.getViewport(ee);u.set(l.x*Me.x,l.y*Me.y,l.x*Me.z,l.y*Me.w),ce.viewport(u),Y.updateMatrices(Z,ee),a=Y.getFrustum(),R(F,V,Y.camera,Z,this.type)}Y.isPointLightShadow!==!0&&this.type===Cs&&N(Y,V),Y.needsUpdate=!1}S=this.type,M.needsUpdate=!1,n.setRenderTarget(U,L,z)};function N(I,F){const V=e.update(w);
vendor: 4,341 bytes, line 3862
3862x.defines.VSM_SAMPLES!==I.blurSamples&&(x.defines.VSM_SAMPLES=I.blurSamples,y.defines.VSM_SAMPLES=I.blurSamples,x.needsUpdate=!0,y.needsUpdate=!0),I.mapPass===null&&(I.mapPass=new Mr(o.x,o.y)),x.uniforms.shadow_pass.value=I.map.texture,x.uniforms.resolution.value=I.mapSize,x.uniforms.radius.value=I.radius,n.setRenderTarget(I.mapPass),n.clear(),n.renderBufferDirect(F,null,V,x,w,null),y.uniforms.shadow_pass.value=I.mapPass.texture,y.uniforms.resolution.value=I.mapSize,y.uniforms.radius.value=I.radius,n.setRenderTarget(I.map),n.clear(),n.renderBufferDirect(F,null,V,y,w,null)}function T(I,F,V,U){let L=null;const z=V.isPointLight===!0?I.customDistanceMaterial:I.customDepthMaterial;if(z!==void 0)L=z;else if(L=V.isPointLight===!0?d:f,n.localClippingEnabled&&F.clipShadows===!0&&Array.isArray(F.clippingPlanes)&&F.clippingPlanes.length!==0||F.displacementMap&&F.displacementScale!==0||F.alphaMap&&F.alphaTest>0||F.map&&F.alphaTest>0||F.alphaToCoverage===!0){const ce=L.uuid,ue=F.uuid;let ge=h[ce];ge===void 0&&(ge={},h[ce]=ge);let me=ge[ue];me===void 0&&(me=L.clone(),ge[ue]=me,F.addEventListener("dispose",P)),L=me}if(L.visible=F.visible,L.wireframe=F.wireframe,U===Cs?L.side=F.shadowSide!==null?F.shadowSide:F.side:L.side=F.shadowSide!==null?F.shadowSide:v[F.side],L.alphaMap=F.alphaMap,L.alphaTest=F.alphaToCoverage===!0?.5:F.alphaTest,L.map=F.map,L.clipShadows=F.clipShadows,L.clippingPlanes=F.clippingPlanes,L.clipIntersection=F.clipIntersection,L.displacementMap=F.displacementMap,L.displacementScale=F.displacementScale,L.displacementBias=F.displacementBias,L.wireframeLinewidth=F.wireframeLinewidth,L.linewidth=F.linewidth,V.isPointLight===!0&&L.isMeshDistanceMaterial===!0){const ce=n.properties.get(L);ce.light=V}return L}function R(I,F,V,U,L){if(I.visible===!1)return;if(I.layers.test(F.layers)&&(I.isMesh||I.isLine||I.isPoints)&&(I.castShadow||I.receiveShadow&&L===Cs)&&(!I.frustumCulled||a.intersectsObject(I))){I.modelViewMatrix.multiplyMatrices(V.matrixWorldInverse,I.matrixWorld);const ue=e.update(I),ge=I.material;if(Array.isArray(ge)){const me=ue.groups;for(let j=0,Z=me.length;j<Z;j++){const Y=me[j],he=ge[Y.materialIndex];if(he&&he.visible){const O=T(I,he,U,L);I.onBeforeShadow(n,I,F,V,ue,O,Y),n.renderBufferDirect(V,null,ue,O,I,Y),I.onAfterShadow(n,I,F,V,ue,O,Y)}}}else if(ge.visible){const me=T(I,ge,U,L);I.onBeforeShadow(n,I,F,V,ue,me,null),n.renderBufferDirect(V,null,ue,me,I,null),I.onAfterShadow(n,I,F,V,ue,me,null)}}const ce=I.children;for(let ue=0,ge=ce.length;ue<ge;ue++)R(ce[ue],F,V,U,L)}function P(I){I.target.removeEventListener("dispose",P);for(const V in h){const U=h[V],L=I.target.uuid;L in U&&(U[L].dispose(),delete U[L])}}}const I7={[Z0]:K0,[Q0]:ep,[$0]:tp,[To]:J0,[K0]:Z0,[ep]:Q0,[tp]:$0,[J0]:To};function B7(n,e){function t(){let W=!1;const Pe=new cn;let we=null;const Ve=new cn(0,0,0,0);return{setMask:function(Ce){we!==Ce&&!W&&(n.colorMask(Ce,Ce,Ce,Ce),we=Ce)},setLocked:function(Ce){W=Ce},setClear:function(Ce,Se,Xe,lt,It){It===!0&&(Ce*=lt,Se*=lt,Xe*=lt),Pe.set(Ce,Se,Xe,lt),Ve.equals(Pe)===!1&&(n.clearColor(Ce,Se,Xe,lt),Ve.copy(Pe))},reset:function(){W=!1,we=null,Ve.set(-1,0,0,0)}}}function a(){let W=!1,Pe=!1,we=null,Ve=null,Ce=null;return{setReversed:function(Se){if(Pe!==Se){const Xe=e.get("EXT_clip_control");Se?Xe.clipControlEXT(Xe.LOWER_LEFT_EXT,Xe.ZERO_TO_ONE_EXT):Xe.clipControlEXT(Xe.LOWER_LEFT_EXT,Xe.NEGATIVE_ONE_TO_ONE_EXT),Pe=Se;const lt=Ce;Ce=null,this.setClear(lt)}},getReversed:function(){return Pe},setTest:function(Se){Se?Te(n.DEPTH_TEST):Ue(n.DEPTH_TEST)},setMask:function(Se){we!==Se&&!W&&(n.depthMask(Se),we=Se)},setFunc:function(Se){if(Pe&&(Se=I7[Se]),Ve!==Se){switch(Se){case Z0:n.depthFunc(n.NEVER);break;case K0:n.depthFunc(n.ALWAYS);break;case Q0:n.depthFunc(n.LESS);break;case To:n.depthFunc(n.LEQUAL);break;case $0:n.depthFunc(n.EQUAL);break;case J0:n.depthFunc(n.GEQUAL);break;case ep:n.depthFunc(n.GREATER);break;case tp:n.depthFunc(n.NOTEQUAL);break;default:n.depthFunc(n.LEQUAL)}Ve=Se}},setLocked:function(Se){W=Se},setClear:function(Se){Ce!==Se&&(Pe&&(Se=1-Se),n.clearDepth(Se),Ce=Se)},reset:function(){W=!1,we=null,Ve=null,Ce=null,Pe=!1}}}function o(){let W=!1,Pe=null,we=null,Ve=null,Ce=null,Se=null,Xe=null,lt=null,It=null;return{setTest:function(Rt){W||(Rt?Te(n.STENCIL_TEST):Ue(n.STENCIL_TEST))},setMask:function(Rt){Pe!==Rt&&!W&&(n.stencilMask(Rt),Pe=Rt)}
vendor: 4,189 bytes, line 3862
3862,setFunc:function(Rt,ni,bn){(we!==Rt||Ve!==ni||Ce!==bn)&&(n.stencilFunc(Rt,ni,bn),we=Rt,Ve=ni,Ce=bn)},setOp:function(Rt,ni,bn){(Se!==Rt||Xe!==ni||lt!==bn)&&(n.stencilOp(Rt,ni,bn),Se=Rt,Xe=ni,lt=bn)},setLocked:function(Rt){W=Rt},setClear:function(Rt){It!==Rt&&(n.clearStencil(Rt),It=Rt)},reset:function(){W=!1,Pe=null,we=null,Ve=null,Ce=null,Se=null,Xe=null,lt=null,It=null}}}const l=new t,u=new a,f=new o,d=new WeakMap,h=new WeakMap;let g={},v={},x=new WeakMap,y=[],b=null,w=!1,M=null,S=null,N=null,T=null,R=null,P=null,I=null,F=new Fe(0,0,0),V=0,U=!1,L=null,z=null,ce=null,ue=null,ge=null;const me=n.getParameter(n.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let j=!1,Z=0;const Y=n.getParameter(n.VERSION);Y.indexOf("WebGL")!==-1?(Z=parseFloat(/^WebGL (\d)/.exec(Y)[1]),j=Z>=1):Y.indexOf("OpenGL ES")!==-1&&(Z=parseFloat(/^OpenGL ES (\d)/.exec(Y)[1]),j=Z>=2);let he=null,O={};const ee=n.getParameter(n.SCISSOR_BOX),Me=n.getParameter(n.VIEWPORT),be=new cn().fromArray(ee),te=new cn().fromArray(Me);function xe(W,Pe,we,Ve){const Ce=new Uint8Array(4),Se=n.createTexture();n.bindTexture(W,Se),n.texParameteri(W,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(W,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let Xe=0;Xe<we;Xe++)W===n.TEXTURE_3D||W===n.TEXTURE_2D_ARRAY?n.texImage3D(Pe,0,n.RGBA,1,1,Ve,0,n.RGBA,n.UNSIGNED_BYTE,Ce):n.texImage2D(Pe+Xe,0,n.RGBA,1,1,0,n.RGBA,n.UNSIGNED_BYTE,Ce);return Se}const Ee={};Ee[n.TEXTURE_2D]=xe(n.TEXTURE_2D,n.TEXTURE_2D,1),Ee[n.TEXTURE_CUBE_MAP]=xe(n.TEXTURE_CUBE_MAP,n.TEXTURE_CUBE_MAP_POSITIVE_X,6),Ee[n.TEXTURE_2D_ARRAY]=xe(n.TEXTURE_2D_ARRAY,n.TEXTURE_2D_ARRAY,1,1),Ee[n.TEXTURE_3D]=xe(n.TEXTURE_3D,n.TEXTURE_3D,1,1),l.setClear(0,0,0,1),u.setClear(1),f.setClear(0),Te(n.DEPTH_TEST),u.setFunc(To),ft(!1),rt(Hv),Te(n.CULL_FACE),k(Aa);function Te(W){g[W]!==!0&&(n.enable(W),g[W]=!0)}function Ue(W){g[W]!==!1&&(n.disable(W),g[W]=!1)}function ut(W,Pe){return v[W]!==Pe?(n.bindFramebuffer(W,Pe),v[W]=Pe,W===n.DRAW_FRAMEBUFFER&&(v[n.FRAMEBUFFER]=Pe),W===n.FRAMEBUFFER&&(v[n.DRAW_FRAMEBUFFER]=Pe),!0):!1}function Qe(W,Pe){let we=y,Ve=!1;if(W){we=x.get(Pe),we===void 0&&(we=[],x.set(Pe,we));const Ce=W.textures;if(we.length!==Ce.length||we[0]!==n.COLOR_ATTACHMENT0){for(let Se=0,Xe=Ce.length;Se<Xe;Se++)we[Se]=n.COLOR_ATTACHMENT0+Se;we.length=Ce.length,Ve=!0}}else we[0]!==n.BACK&&(we[0]=n.BACK,Ve=!0);Ve&&n.drawBuffers(we)}function Et(W){return b!==W?(n.useProgram(W),b=W,!0):!1}const Ut={[dr]:n.FUNC_ADD,[j6]:n.FUNC_SUBTRACT,[H6]:n.FUNC_REVERSE_SUBTRACT};Ut[k6]=n.MIN,Ut[G6]=n.MAX;const gt={[W6]:n.ZERO,[X6]:n.ONE,[q6]:n.SRC_COLOR,[q0]:n.SRC_ALPHA,[J6]:n.SRC_ALPHA_SATURATE,[Q6]:n.DST_COLOR,[Z6]:n.DST_ALPHA,[Y6]:n.ONE_MINUS_SRC_COLOR,[Y0]:n.ONE_MINUS_SRC_ALPHA,[$6]:n.ONE_MINUS_DST_COLOR,[K6]:n.ONE_MINUS_DST_ALPHA,[eb]:n.CONSTANT_COLOR,[tb]:n.ONE_MINUS_CONSTANT_COLOR,[nb]:n.CONSTANT_ALPHA,[ib]:n.ONE_MINUS_CONSTANT_ALPHA};function k(W,Pe,we,Ve,Ce,Se,Xe,lt,It,Rt){if(W===Aa){w===!0&&(Ue(n.BLEND),w=!1);return}if(w===!1&&(Te(n.BLEND),w=!0),W!==V6){if(W!==M||Rt!==U){if((S!==dr||R!==dr)&&(n.blendEquation(n.FUNC_ADD),S=dr,R=dr),Rt)switch(W){case Mo:n.blendFuncSeparate(n.ONE,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case X0:n.blendFunc(n.ONE,n.ONE);break;case kv:n.blendFuncSeparate(n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ZERO,n.ONE);break;case Gv:n.blendFuncSeparate(n.DST_COLOR,n.ONE_MINUS_SRC_ALPHA,n.ZERO,n.ONE);break;default:console.error("THREE.WebGLState: Invalid blending: ",W);break}else switch(W){case Mo:n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case X0:n.blendFuncSeparate(n.SRC_ALPHA,n.ONE,n.ONE,n.ONE);break;case kv:console.error("THREE.WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true");break;case Gv:console.error("THREE.WebGLState: MultiplyBlending requires material.premultipliedAlpha = true");break;default:console.error("THREE.WebGLState: Invalid blending: ",W);break}N=null,T=null,P=null,I=null,F.set(0,0,0),V=0,M=W,U=Rt}return}Ce=Ce||Pe,Se=Se||we,Xe=Xe||Ve,(Pe!==S||Ce!==R)&&(n.blendEquationSeparate(Ut[Pe],Ut[Ce]),S=Pe,R=Ce),(we!==N||Ve!==T||Se!==P||Xe!==I)&&(n.blendFuncSeparate(gt[we],gt[Ve],gt[Se],gt[Xe]),N=we,T=Ve,P=Se,I=Xe),(lt.equals(F)===!1||It!==V)&&(n.blendColor
vendor: 3,404 bytes, line 3862
3862(lt.r,lt.g,lt.b,It),F.copy(lt),V=It),M=W,U=!1}function Xt(W,Pe){W.side===Ui?Ue(n.CULL_FACE):Te(n.CULL_FACE);let we=W.side===ei;Pe&&(we=!we),ft(we),W.blending===Mo&&W.transparent===!1?k(Aa):k(W.blending,W.blendEquation,W.blendSrc,W.blendDst,W.blendEquationAlpha,W.blendSrcAlpha,W.blendDstAlpha,W.blendColor,W.blendAlpha,W.premultipliedAlpha),u.setFunc(W.depthFunc),u.setTest(W.depthTest),u.setMask(W.depthWrite),l.setMask(W.colorWrite);const Ve=W.stencilWrite;f.setTest(Ve),Ve&&(f.setMask(W.stencilWriteMask),f.setFunc(W.stencilFunc,W.stencilRef,W.stencilFuncMask),f.setOp(W.stencilFail,W.stencilZFail,W.stencilZPass)),vt(W.polygonOffset,W.polygonOffsetFactor,W.polygonOffsetUnits),W.alphaToCoverage===!0?Te(n.SAMPLE_ALPHA_TO_COVERAGE):Ue(n.SAMPLE_ALPHA_TO_COVERAGE)}function ft(W){L!==W&&(W?n.frontFace(n.CW):n.frontFace(n.CCW),L=W)}function rt(W){W!==B6?(Te(n.CULL_FACE),W!==z&&(W===Hv?n.cullFace(n.BACK):W===F6?n.cullFace(n.FRONT):n.cullFace(n.FRONT_AND_BACK))):Ue(n.CULL_FACE),z=W}function He(W){W!==ce&&(j&&n.lineWidth(W),ce=W)}function vt(W,Pe,we){W?(Te(n.POLYGON_OFFSET_FILL),(ue!==Pe||ge!==we)&&(n.polygonOffset(Pe,we),ue=Pe,ge=we)):Ue(n.POLYGON_OFFSET_FILL)}function Ke(W){W?Te(n.SCISSOR_TEST):Ue(n.SCISSOR_TEST)}function ot(W){W===void 0&&(W=n.TEXTURE0+me-1),he!==W&&(n.activeTexture(W),he=W)}function $t(W,Pe,we){we===void 0&&(he===null?we=n.TEXTURE0+me-1:we=he);let Ve=O[we];Ve===void 0&&(Ve={type:void 0,texture:void 0},O[we]=Ve),(Ve.type!==W||Ve.texture!==Pe)&&(he!==we&&(n.activeTexture(we),he=we),n.bindTexture(W,Pe||Ee[W]),Ve.type=W,Ve.texture=Pe)}function B(){const W=O[he];W!==void 0&&W.type!==void 0&&(n.bindTexture(W.type,null),W.type=void 0,W.texture=void 0)}function C(){try{n.compressedTexImage2D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function J(){try{n.compressedTexImage3D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function de(){try{n.texSubImage2D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function fe(){try{n.texSubImage3D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function q(){try{n.compressedTexSubImage2D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function Ae(){try{n.compressedTexSubImage3D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function Le(){try{n.texStorage2D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function ze(){try{n.texStorage3D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function Ge(){try{n.texImage2D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function _e(){try{n.texImage3D(...arguments)}catch(W){console.error("THREE.WebGLState:",W)}}function Re(W){be.equals(W)===!1&&(n.scissor(W.x,W.y,W.z,W.w),be.copy(W))}function Be(W){te.equals(W)===!1&&(n.viewport(W.x,W.y,W.z,W.w),te.copy(W))}function We(W,Pe){let we=h.get(Pe);we===void 0&&(we=new WeakMap,h.set(Pe,we));let Ve=we.get(W);Ve===void 0&&(Ve=n.getUniformBlockIndex(Pe,W.name),we.set(W,Ve))}function De(W,Pe){const Ve=h.get(Pe).get(W);d.get(Pe)!==Ve&&(n.uniformBlockBinding(Pe,Ve,W.__bindingPointIndex),d.set(Pe,Ve))}function tt(){n.disable(n.BLEND),n.disable(n.CULL_FACE),n.disable(n.DEPTH_TEST),n.disable(n.POLYGON_OFFSET_FILL),n.disable(n.SCISSOR_TEST),n.disable(n.STENCIL_TEST),n.disable(n.SAMPLE_ALPHA_TO_COVERAGE),n.blendEquation(n.FUNC_ADD),n.blendFunc(n.ONE,n.ZERO),n.blendFuncSeparate(n.ONE,n.ZERO,n.ONE,n.ZERO),n.blendColor
vendor: 5,301 bytes, line 3862
3862(0,0,0,0),n.colorMask(!0,!0,!0,!0),n.clearColor(0,0,0,0),n.depthMask(!0),n.depthFunc(n.LESS),u.setReversed(!1),n.clearDepth(1),n.stencilMask(4294967295),n.stencilFunc(n.ALWAYS,0,4294967295),n.stencilOp(n.KEEP,n.KEEP,n.KEEP),n.clearStencil(0),n.cullFace(n.BACK),n.frontFace(n.CCW),n.polygonOffset(0,0),n.activeTexture(n.TEXTURE0),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.useProgram(null),n.lineWidth(1),n.scissor(0,0,n.canvas.width,n.canvas.height),n.viewport(0,0,n.canvas.width,n.canvas.height),g={},he=null,O={},v={},x=new WeakMap,y=[],b=null,w=!1,M=null,S=null,N=null,T=null,R=null,P=null,I=null,F=new Fe(0,0,0),V=0,U=!1,L=null,z=null,ce=null,ue=null,ge=null,be.set(0,0,n.canvas.width,n.canvas.height),te.set(0,0,n.canvas.width,n.canvas.height),l.reset(),u.reset(),f.reset()}return{buffers:{color:l,depth:u,stencil:f},enable:Te,disable:Ue,bindFramebuffer:ut,drawBuffers:Qe,useProgram:Et,setBlending:k,setMaterial:Xt,setFlipSided:ft,setCullFace:rt,setLineWidth:He,setPolygonOffset:vt,setScissorTest:Ke,activeTexture:ot,bindTexture:$t,unbindTexture:B,compressedTexImage2D:C,compressedTexImage3D:J,texImage2D:Ge,texImage3D:_e,updateUBOMapping:We,uniformBlockBinding:De,texStorage2D:Le,texStorage3D:ze,texSubImage2D:de,texSubImage3D:fe,compressedTexSubImage2D:q,compressedTexSubImage3D:Ae,scissor:Re,viewport:Be,reset:tt}}function F7(n,e,t,a,o,l,u){const f=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,d=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),h=new St,g=new WeakMap;let v;const x=new WeakMap;let y=!1;try{y=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function b(B,C){return y?new OffscreenCanvas(B,C):lc("canvas")}function w(B,C,J){let de=1;const fe=$t(B);if((fe.width>J||fe.height>J)&&(de=J/Math.max(fe.width,fe.height)),de<1)if(typeof HTMLImageElement<"u"&&B instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&B instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&B instanceof ImageBitmap||typeof VideoFrame<"u"&&B instanceof VideoFrame){const q=Math.floor(de*fe.width),Ae=Math.floor(de*fe.height);v===void 0&&(v=b(q,Ae));const Le=C?b(q,Ae):v;return Le.width=q,Le.height=Ae,Le.getContext("2d").drawImage(B,0,0,q,Ae),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+fe.width+"x"+fe.height+") to ("+q+"x"+Ae+")."),Le}else return"data"in B&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+fe.width+"x"+fe.height+")."),B;return B}function M(B){return B.generateMipmaps}function S(B){n.generateMipmap(B)}function N(B){return B.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:B.isWebGL3DRenderTarget?n.TEXTURE_3D:B.isWebGLArrayRenderTarget||B.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function T(B,C,J,de,fe=!1){if(B!==null){if(n[B]!==void 0)return n[B];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+B+"'")}let q=C;if(C===n.RED&&(J===n.FLOAT&&(q=n.R32F),J===n.HALF_FLOAT&&(q=n.R16F),J===n.UNSIGNED_BYTE&&(q=n.R8)),C===n.RED_INTEGER&&(J===n.UNSIGNED_BYTE&&(q=n.R8UI),J===n.UNSIGNED_SHORT&&(q=n.R16UI),J===n.UNSIGNED_INT&&(q=n.R32UI),J===n.BYTE&&(q=n.R8I),J===n.SHORT&&(q=n.R16I),J===n.INT&&(q=n.R32I)),C===n.RG&&(J===n.FLOAT&&(q=n.RG32F),J===n.HALF_FLOAT&&(q=n.RG16F),J===n.UNSIGNED_BYTE&&(q=n.RG8)),C===n.RG_INTEGER&&(J===n.UNSIGNED_BYTE&&(q=n.RG8UI),J===n.UNSIGNED_SHORT&&(q=n.RG16UI),J===n.UNSIGNED_INT&&(q=n.RG32UI),J===n.BYTE&&(q=n.RG8I),J===n.SHORT&&(q=n.RG16I),J===n.INT&&(q=n.RG32I)),C===n.RGB_INTEGER&&(J===n.UNSIGNED_BYTE&&(q=n.RGB8UI),J===n.UNSIGNED_SHORT&&(q=n.RGB16UI),J===n.UNSIGNED_INT&&(q=n.RGB32UI),J===n.BYTE&&(q=n.RGB8I),J===n.SHORT&&(q=n.RGB16I),J===n.INT&&(q=n.RGB32I)),C===n.RGBA_INTEGER&&(J===n.UNSIGNED_BYTE&&(q=n.RGBA8UI),J===n.UNSIGNED_SHORT&&(q=n.RGBA16UI),J===n.UNSIGNED_INT&&(q=n.RGBA32UI),J===n.BYTE&&(q=n.RGBA8I),J===n.SHORT&&(q=n.RGBA16I),J===n.INT&&(q=n.RGBA32I)),C===n.RGB&&J===n.UNSIGNED_INT_5_9_9_9_REV&&(q=n.RGB9_E5),C===n.RGBA){const Ae=fe?bf:Lt.getTransfer(de);J===n.FLOAT&&(q=n.RGBA32F),J===n.HALF_FLOAT&&(q=n.RGBA16F),J===n.UNSIGNED_BYTE&&(q=Ae===kt?n.SRGB8_ALPHA8:n.RGBA8),J===n.UNSIGNED_SHORT_4_4_4_4&&(q=n.RGBA4),J===n.UNSIGNED_SHORT_5_5_5_1&&(q=n.RGB5_A1)}return(q===n.R16F||q===n.R32F||q===n.RG16F||q===n.RG32F||q===n.RGBA16F||q===n.RGBA32F)&&e.get("EXT_color_buffer_float"),q}function R(B,C){let J;return B?C===null||C===Sr||C===ac?J=n.DEPTH24_STENCIL8:C===As?J=n.DEPTH32F_STENCIL8:C===sc&&(J=n.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):C===null||C===Sr||C===ac?J=n.DEPTH_COMPONENT24:C===As?J=n.DEPTH_COMPONENT32F:C===sc&&(J=n.DEPTH_COMPONENT16),J}function P(B,C){return M(B)===!0||B.isFramebufferTexture&&B.minFilter!==Ii&&B.minFilter!==Xi?Math.log2(Math.max(C.width,C.height))+1:B.mipmaps!==void 0&&B.mipmaps.length>0?B.mipmaps.length:B.isCompressedTexture&&Array.isArray(B.image)?C.mipmaps.length:1}function I(B){const C=B.target;C.removeEventListener("dispose",I),V(C),C.isVideoTexture&&g.delete(C)}function F(B){const C=B.target;C.removeEventListener("dispose",F),L(C)}function V(B){const C=a.get(B);if(C.__webglInit===void 0)return;const J=B.source,de=x.get(J);
vendor: 5,697 bytes, line 3862
3862if(de){const fe=de[C.__cacheKey];fe.usedTimes--,fe.usedTimes===0&&U(B),Object.keys(de).length===0&&x.delete(J)}a.remove(B)}function U(B){const C=a.get(B);n.deleteTexture(C.__webglTexture);const J=B.source,de=x.get(J);delete de[C.__cacheKey],u.memory.textures--}function L(B){const C=a.get(B);if(B.depthTexture&&(B.depthTexture.dispose(),a.remove(B.depthTexture)),B.isWebGLCubeRenderTarget)for(let de=0;de<6;de++){if(Array.isArray(C.__webglFramebuffer[de]))for(let fe=0;fe<C.__webglFramebuffer[de].length;fe++)n.deleteFramebuffer(C.__webglFramebuffer[de][fe]);else n.deleteFramebuffer(C.__webglFramebuffer[de]);C.__webglDepthbuffer&&n.deleteRenderbuffer(C.__webglDepthbuffer[de])}else{if(Array.isArray(C.__webglFramebuffer))for(let de=0;de<C.__webglFramebuffer.length;de++)n.deleteFramebuffer(C.__webglFramebuffer[de]);else n.deleteFramebuffer(C.__webglFramebuffer);if(C.__webglDepthbuffer&&n.deleteRenderbuffer(C.__webglDepthbuffer),C.__webglMultisampledFramebuffer&&n.deleteFramebuffer(C.__webglMultisampledFramebuffer),C.__webglColorRenderbuffer)for(let de=0;de<C.__webglColorRenderbuffer.length;de++)C.__webglColorRenderbuffer[de]&&n.deleteRenderbuffer(C.__webglColorRenderbuffer[de]);C.__webglDepthRenderbuffer&&n.deleteRenderbuffer(C.__webglDepthRenderbuffer)}const J=B.textures;for(let de=0,fe=J.length;de<fe;de++){const q=a.get(J[de]);q.__webglTexture&&(n.deleteTexture(q.__webglTexture),u.memory.textures--),a.remove(J[de])}a.remove(B)}let z=0;function ce(){z=0}function ue(){const B=z;return B>=o.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+B+" texture units while this GPU supports only "+o.maxTextures),z+=1,B}function ge(B){const C=[];return C.push(B.wrapS),C.push(B.wrapT),C.push(B.wrapR||0),C.push(B.magFilter),C.push(B.minFilter),C.push(B.anisotropy),C.push(B.internalFormat),C.push(B.format),C.push(B.type),C.push(B.generateMipmaps),C.push(B.premultiplyAlpha),C.push(B.flipY),C.push(B.unpackAlignment),C.push(B.colorSpace),C.join()}function me(B,C){const J=a.get(B);if(B.isVideoTexture&&Ke(B),B.isRenderTargetTexture===!1&&B.version>0&&J.__version!==B.version){const de=B.image;if(de===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(de.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Ee(J,B,C);return}}t.bindTexture(n.TEXTURE_2D,J.__webglTexture,n.TEXTURE0+C)}function j(B,C){const J=a.get(B);if(B.version>0&&J.__version!==B.version){Ee(J,B,C);return}t.bindTexture(n.TEXTURE_2D_ARRAY,J.__webglTexture,n.TEXTURE0+C)}function Z(B,C){const J=a.get(B);if(B.version>0&&J.__version!==B.version){Ee(J,B,C);return}t.bindTexture(n.TEXTURE_3D,J.__webglTexture,n.TEXTURE0+C)}function Y(B,C){const J=a.get(B);if(B.version>0&&J.__version!==B.version){Te(J,B,C);return}t.bindTexture(n.TEXTURE_CUBE_MAP,J.__webglTexture,n.TEXTURE0+C)}const he={[sp]:n.REPEAT,[mr]:n.CLAMP_TO_EDGE,[ap]:n.MIRRORED_REPEAT},O={[Ii]:n.NEAREST,[hb]:n.NEAREST_MIPMAP_NEAREST,[Fu]:n.NEAREST_MIPMAP_LINEAR,[Xi]:n.LINEAR,[Qh]:n.LINEAR_MIPMAP_NEAREST,[gr]:n.LINEAR_MIPMAP_LINEAR},ee={[xb]:n.NEVER,[Eb]:n.ALWAYS,[_b]:n.LESS,[L_]:n.LEQUAL,[yb]:n.EQUAL,[bb]:n.GEQUAL,[Sb]:n.GREATER,[Mb]:n.NOTEQUAL};function Me(B,C){if(C.type===As&&e.has("OES_texture_float_linear")===!1&&(C.magFilter===Xi||C.magFilter===Qh||C.magFilter===Fu||C.magFilter===gr||C.minFilter===Xi||C.minFilter===Qh||C.minFilter===Fu||C.minFilter===gr)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(B,n.TEXTURE_WRAP_S,he[C.wrapS]),n.texParameteri(B,n.TEXTURE_WRAP_T,he[C.wrapT]),(B===n.TEXTURE_3D||B===n.TEXTURE_2D_ARRAY)&&n.texParameteri(B,n.TEXTURE_WRAP_R,he[C.wrapR]),n.texParameteri(B,n.TEXTURE_MAG_FILTER,O[C.magFilter]),n.texParameteri(B,n.TEXTURE_MIN_FILTER,O[C.minFilter]),C.compareFunction&&(n.texParameteri(B,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(B,n.TEXTURE_COMPARE_FUNC,ee[C.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(C.magFilter===Ii||C.minFilter!==Fu&&C.minFilter!==gr||C.type===As&&e.has("OES_texture_float_linear")===!1)return;if(C.anisotropy>1||a.get(C).__currentAnisotropy){const J=e.get("EXT_texture_filter_anisotropic");n.texParameterf(B,J.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(C.anisotropy,o.getMaxAnisotropy())),a.get(C).__currentAnisotropy=C.anisotropy}}}function be(B,C){let J=!1;B.__webglInit===void 0&&(B.__webglInit=!0,C.addEventListener("dispose",I));const de=C.source;let fe=x.get(de);fe===void 0&&(fe={},x.set(de,fe));const q=ge(C);if(q!==B.__cacheKey){fe[q]===void 0&&(fe[q]={texture:n.createTexture(),usedTimes:0},u.memory.textures++,J=!0),fe[q].usedTimes++;const Ae=fe[B.__cacheKey];Ae!==void 0&&(fe[B.__cacheKey].usedTimes--,Ae.usedTimes===0&&U(C)),B.__cacheKey=q,B.__webglTexture=fe[q].texture}return J}function te(B,C,J){return Math.floor(Math.floor(B/J)/C)}function xe(B,C,J,de){const q=B.updateRanges;if(q.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,C.width,C.height,J,de,C.data);else{q.sort((_e,Re)=>_e.start-Re.start);let Ae=0;for(let _e=1;_e<q.length;_e++){const Re=q[Ae],Be=q[_e],We=Re.start+Re.count,De=te(Be.start,C.width,4),tt=te(Re.start,C.width,4);Be.start<=We+1&&De===tt&&te(Be.start+Be.count-1,C.width,4)===De?Re.count=Math.max(Re.count,Be.start+Be.count-Re.start):(++Ae,q[Ae]=Be)}q.length=Ae+1;const Le=n.getParameter(n.UNPACK_ROW_LENGTH),ze=n.getParameter(n.UNPACK_SKIP_PIXELS),Ge=n.getParameter(n.UNPACK_SKIP_ROWS);n.pixelStorei(n.UNPACK_ROW_LENGTH,C.width);for(let _e=0,Re=q.length;_e<Re;_e++){const Be=q[_e],We=Math.floor(Be.start/4),De=Math.ceil(Be.count/4),tt=We%C.width,W=Math.floor(We/C.width),Pe=
vendor: 22,656 bytes, line 3862
3862De,we=1;n.pixelStorei(n.UNPACK_SKIP_PIXELS,tt),n.pixelStorei(n.UNPACK_SKIP_ROWS,W),t.texSubImage2D(n.TEXTURE_2D,0,tt,W,Pe,we,J,de,C.data)}B.clearUpdateRanges(),n.pixelStorei(n.UNPACK_ROW_LENGTH,Le),n.pixelStorei(n.UNPACK_SKIP_PIXELS,ze),n.pixelStorei(n.UNPACK_SKIP_ROWS,Ge)}}function Ee(B,C,J){let de=n.TEXTURE_2D;(C.isDataArrayTexture||C.isCompressedArrayTexture)&&(de=n.TEXTURE_2D_ARRAY),C.isData3DTexture&&(de=n.TEXTURE_3D);const fe=be(B,C),q=C.source;t.bindTexture(de,B.__webglTexture,n.TEXTURE0+J);const Ae=a.get(q);if(q.version!==Ae.__version||fe===!0){t.activeTexture(n.TEXTURE0+J);const Le=Lt.getPrimaries(Lt.workingColorSpace),ze=C.colorSpace===Ca?null:Lt.getPrimaries(C.colorSpace),Ge=C.colorSpace===Ca||Le===ze?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,C.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,C.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,C.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,Ge);let _e=w(C.image,!1,o.maxTextureSize);_e=ot(C,_e);const Re=l.convert(C.format,C.colorSpace),Be=l.convert(C.type);let We=T(C.internalFormat,Re,Be,C.colorSpace,C.isVideoTexture);Me(de,C);let De;const tt=C.mipmaps,W=C.isVideoTexture!==!0,Pe=Ae.__version===void 0||fe===!0,we=q.dataReady,Ve=P(C,_e);if(C.isDepthTexture)We=R(C.format===oc,C.type),Pe&&(W?t.texStorage2D(n.TEXTURE_2D,1,We,_e.width,_e.height):t.texImage2D(n.TEXTURE_2D,0,We,_e.width,_e.height,0,Re,Be,null));else if(C.isDataTexture)if(tt.length>0){W&&Pe&&t.texStorage2D(n.TEXTURE_2D,Ve,We,tt[0].width,tt[0].height);for(let Ce=0,Se=tt.length;Ce<Se;Ce++)De=tt[Ce],W?we&&t.texSubImage2D(n.TEXTURE_2D,Ce,0,0,De.width,De.height,Re,Be,De.data):t.texImage2D(n.TEXTURE_2D,Ce,We,De.width,De.height,0,Re,Be,De.data);C.generateMipmaps=!1}else W?(Pe&&t.texStorage2D(n.TEXTURE_2D,Ve,We,_e.width,_e.height),we&&xe(C,_e,Re,Be)):t.texImage2D(n.TEXTURE_2D,0,We,_e.width,_e.height,0,Re,Be,_e.data);else if(C.isCompressedTexture)if(C.isCompressedArrayTexture){W&&Pe&&t.texStorage3D(n.TEXTURE_2D_ARRAY,Ve,We,tt[0].width,tt[0].height,_e.depth);for(let Ce=0,Se=tt.length;Ce<Se;Ce++)if(De=tt[Ce],C.format!==Oi)if(Re!==null)if(W){if(we)if(C.layerUpdates.size>0){const Xe=f3(De.width,De.height,C.format,C.type);for(const lt of C.layerUpdates){const It=De.data.subarray(lt*Xe/De.data.BYTES_PER_ELEMENT,(lt+1)*Xe/De.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,lt,De.width,De.height,1,Re,It)}C.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,0,De.width,De.height,_e.depth,Re,De.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Ce,We,De.width,De.height,_e.depth,0,De.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else W?we&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,0,De.width,De.height,_e.depth,Re,Be,De.data):t.texImage3D(n.TEXTURE_2D_ARRAY,Ce,We,De.width,De.height,_e.depth,0,Re,Be,De.data)}else{W&&Pe&&t.texStorage2D(n.TEXTURE_2D,Ve,We,tt[0].width,tt[0].height);for(let Ce=0,Se=tt.length;Ce<Se;Ce++)De=tt[Ce],C.format!==Oi?Re!==null?W?we&&t.compressedTexSubImage2D(n.TEXTURE_2D,Ce,0,0,De.width,De.height,Re,De.data):t.compressedTexImage2D(n.TEXTURE_2D,Ce,We,De.width,De.height,0,De.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):W?we&&t.texSubImage2D(n.TEXTURE_2D,Ce,0,0,De.width,De.height,Re,Be,De.data):t.texImage2D(n.TEXTURE_2D,Ce,We,De.width,De.height,0,Re,Be,De.data)}else if(C.isDataArrayTexture)if(W){if(Pe&&t.texStorage3D(n.TEXTURE_2D_ARRAY,Ve,We,_e.width,_e.height,_e.depth),we)if(C.layerUpdates.size>0){const Ce=f3(_e.width,_e.height,C.format,C.type);for(const Se of C.layerUpdates){const Xe=_e.data.subarray(Se*Ce/_e.data.BYTES_PER_ELEMENT,(Se+1)*Ce/_e.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,Se,_e.width,_e.height,1,Re,Be,Xe)}C.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,_e.width,_e.height,_e.depth,Re,Be,_e.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,We,_e.width,_e.height,_e.depth,0,Re,Be,_e.data);else if(C.isData3DTexture)W?(Pe&&t.texStorage3D(n.TEXTURE_3D,Ve,We,_e.width,_e.height,_e.depth),we&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,_e.width,_e.height,_e.depth,Re,Be,_e.data)):t.texImage3D(n.TEXTURE_3D,0,We,_e.width,_e.height,_e.depth,0,Re,Be,_e.data);else if(C.isFramebufferTexture){if(Pe)if(W)t.texStorage2D(n.TEXTURE_2D,Ve,We,_e.width,_e.height);else{let Ce=_e.width,Se=_e.height;for(let Xe=0;Xe<Ve;Xe++)t.texImage2D(n.TEXTURE_2D,Xe,We,Ce,Se,0,Re,Be,null),Ce>>=1,Se>>=1}}else if(tt.length>0){if(W&&Pe){const Ce=$t(tt[0]);t.texStorage2D(n.TEXTURE_2D,Ve,We,Ce.width,Ce.height)}for(let Ce=0,Se=tt.length;Ce<Se;Ce++)De=tt[Ce],W?we&&t.texSubImage2D(n.TEXTURE_2D,Ce,0,0,Re,Be,De):t.texImage2D(n.TEXTURE_2D,Ce,We,Re,Be,De);C.generateMipmaps=!1}else if(W){if(Pe){const Ce=$t(_e);t.texStorage2D(n.TEXTURE_2D,Ve,We,Ce.width,Ce.height)}we&&t.texSubImage2D(n.TEXTURE_2D,0,0,0,Re,Be,_e)}else t.texImage2D(n.TEXTURE_2D,0,We,Re,Be,_e);M(C)&&S(de),Ae.__version=q.version,C.onUpdate&&C.onUpdate(C)}B.__version=C.version}function Te(B,C,J){if(C.image.length!==6)return;const de=be(B,C),fe=C.source;t.bindTexture(n.TEXTURE_CUBE_MAP,B.__webglTexture,n.TEXTURE0+J);const q=a.get(fe);if(fe.version!==q.__version||de===!0){t.activeTexture(n.TEXTURE0+J);const Ae=Lt.getPrimaries(Lt.workingColorSpace),Le=C.colorSpace===Ca?null:Lt.getPrimaries(C.colorSpace),ze=C.colorSpace===Ca||Ae===Le?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,C.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,C.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,C.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,ze);const Ge=C.isCompressedTexture||C.image[0].isCompressedTexture,_e=C.image[0]&&C.image[0].isDataTexture,Re=[];for(let Se=0;Se<6;Se++)!Ge&&!_e?Re[Se]=w(C.image[Se],!0,o.maxCubemapSize):Re[Se]=_e?C.image[Se].image:C.image[Se],Re[Se]=ot(C,Re[Se]);const Be=Re[0],We=l.convert(C.format,C.colorSpace),De=l.convert(C.type),tt=T(C.internalFormat,We,De,C.colorSpace),W=C.isVideoTexture!==!0,Pe=q.__version===void 0||de===!0,we=fe.dataReady;let Ve=P(C,Be);Me(n.TEXTURE_CUBE_MAP,C);let Ce;if(Ge){W&&Pe&&t.texStorage2D(n.TEXTURE_CUBE_MAP,Ve,tt,Be.width,Be.height);for(let Se=0;Se<6;Se++){Ce=Re[Se].mipmaps;for(let Xe=0;Xe<Ce.length;Xe++){const lt=Ce[Xe];C.format!==Oi?We!==null?W?we&&t.compressedTexSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,Xe,0,0,lt.width,lt.height,We,lt.data):t.compressedTexImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,Xe,tt,lt.width,lt.height,0,lt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):W?we&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,Xe,0,0,lt.width,lt.height,We,De,lt.data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,Xe,tt,lt.width,lt.height,0,We,De,lt.data)}}}else{if(Ce=C.mipmaps,W&&Pe){Ce.length>0&&Ve++;const Se=$t(Re[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,Ve,tt,Se.width,Se.height)}for(let Se=0;Se<6;Se++)if(_e){W?we&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,0,0,0,Re[Se].width,Re[Se].height,We,De,Re[Se].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,0,tt,Re[Se].width,Re[Se].height,0,We,De,Re[Se].data);for(let Xe=0;Xe<Ce.length;Xe++){const It=Ce[Xe].image[Se].image;W?we&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,Xe+1,0,0,It.width,It.height,We,De,It.data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,Xe+1,tt,It.width,It.height,0,We,De,It.data)}}else{W?we&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,0,0,0,We,De,Re[Se]):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,0,tt,We,De,Re[Se]);for(let Xe=0;Xe<Ce.length;Xe++){const lt=Ce[Xe];W?we&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,Xe+1,0,0,We,De,lt.image[Se]):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Se,Xe+1,tt,We,De,lt.image[Se])}}}M(C)&&S(n.TEXTURE_CUBE_MAP),q.__version=fe.version,C.onUpdate&&C.onUpdate(C)}B.__version=C.version}function Ue(B,C,J,de,fe,q){const Ae=l.convert(J.format,J.colorSpace),Le=l.convert(J.type),ze=T(J.internalFormat,Ae,Le,J.colorSpace),Ge=a.get(C),_e=a.get(J);if(_e.__renderTarget=C,!Ge.__hasExternalTextures){const Re=Math.max(1,C.width>>q),Be=Math.max(1,C.height>>q);fe===n.TEXTURE_3D||fe===n.TEXTURE_2D_ARRAY?t.texImage3D(fe,q,ze,Re,Be,C.depth,0,Ae,Le,null):t.texImage2D(fe,q,ze,Re,Be,0,Ae,Le,null)}t.bindFramebuffer(n.FRAMEBUFFER,B),vt(C)?f.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,de,fe,_e.__webglTexture,0,He(C)):(fe===n.TEXTURE_2D||fe>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&fe<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,de,fe,_e.__webglTexture,q),t.bindFramebuffer(n.FRAMEBUFFER,null)}function ut(B,C,J){if(n.bindRenderbuffer(n.RENDERBUFFER,B),C.depthBuffer){const de=C.depthTexture,fe=de&&de.isDepthTexture?de.type:null,q=R(C.stencilBuffer,fe),Ae=C.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Le=He(C);vt(C)?f.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Le,q,C.width,C.height):J?n.renderbufferStorageMultisample(n.RENDERBUFFER,Le,q,C.width,C.height):n.renderbufferStorage(n.RENDERBUFFER,q,C.width,C.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ae,n.RENDERBUFFER,B)}else{const de=C.textures;for(let fe=0;fe<de.length;fe++){const q=de[fe],Ae=l.convert(q.format,q.colorSpace),Le=l.convert(q.type),ze=T(q.internalFormat,Ae,Le,q.colorSpace),Ge=He(C);J&&vt(C)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,Ge,ze,C.width,C.height):vt(C)?f.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Ge,ze,C.width,C.height):n.renderbufferStorage(n.RENDERBUFFER,ze,C.width,C.height)}}n.bindRenderbuffer(n.RENDERBUFFER,null)}function Qe(B,C){if(C&&C.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(n.FRAMEBUFFER,B),!(C.depthTexture&&C.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const de=a.get(C.depthTexture);de.__renderTarget=C,(!de.__webglTexture||C.depthTexture.image.width!==C.width||C.depthTexture.image.height!==C.height)&&(C.depthTexture.image.width=C.width,C.depthTexture.image.height=C.height,C.depthTexture.needsUpdate=!0),me(C.depthTexture,0);const fe=de.__webglTexture,q=He(C);if(C.depthTexture.format===rc)vt(C)?f.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,fe,0,q):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,fe,0);else if(C.depthTexture.format===oc)vt(C)?f.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,fe,0,q):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,fe,0);else throw new Error("Unknown depthTexture format")}function Et(B){const C=a.get(B),J=B.isWebGLCubeRenderTarget===!0;if(C.__boundDepthTexture!==B.depthTexture){const de=B.depthTexture;if(C.__depthDisposeCallback&&C.__depthDisposeCallback(),de){const fe=()=>{delete C.__boundDepthTexture,delete C.__depthDisposeCallback,de.removeEventListener("dispose",fe)};de.addEventListener("dispose",fe),C.__depthDisposeCallback=fe}C.__boundDepthTexture=de}if(B.depthTexture&&!C.__autoAllocateDepthBuffer){if(J)throw new Error("target.depthTexture not supported in Cube render targets");const de=B.texture.mipmaps;de&&de.length>0?Qe(C.__webglFramebuffer[0],B):Qe(C.__webglFramebuffer,B)}else if(J){C.__webglDepthbuffer=[];for(let de=0;de<6;de++)if(t.bindFramebuffer(n.FRAMEBUFFER,C.__webglFramebuffer[de]),C.__webglDepthbuffer[de]===void 0)C.__webglDepthbuffer[de]=n.createRenderbuffer(),ut(C.__webglDepthbuffer[de],B,!1);else{const fe=B.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,q=C.__webglDepthbuffer[de];n.bindRenderbuffer(n.RENDERBUFFER,q),n.framebufferRenderbuffer(n.FRAMEBUFFER,fe,n.RENDERBUFFER,q)}}else{const de=B.texture.mipmaps;if(de&&de.length>0?t.bindFramebuffer(n.FRAMEBUFFER,C.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,C.__webglFramebuffer),C.__webglDepthbuffer===void 0)C.__webglDepthbuffer=n.createRenderbuffer(),ut(C.__webglDepthbuffer,B,!1);else{const fe=B.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,q=C.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,q),n.framebufferRenderbuffer(n.FRAMEBUFFER,fe,n.RENDERBUFFER,q)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function Ut(B,C,J){const de=a.get(B);C!==void 0&&Ue(de.__webglFramebuffer,B,B.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),J!==void 0&&Et(B)}function gt(B){const C=B.texture,J=a.get(B),de=a.get(C);B.addEventListener("dispose",F);const fe=B.textures,q=B.isWebGLCubeRenderTarget===!0,Ae=fe.length>1;if(Ae||(de.__webglTexture===void 0&&(de.__webglTexture=n.createTexture()),de.__version=C.version,u.memory.textures++),q){J.__webglFramebuffer=[];for(let Le=0;Le<6;Le++)if(C.mipmaps&&C.mipmaps.length>0){J.__webglFramebuffer[Le]=[];for(let ze=0;ze<C.mipmaps.length;ze++)J.__webglFramebuffer[Le][ze]=n.createFramebuffer()}else J.__webglFramebuffer[Le]=n.createFramebuffer()}else{if(C.mipmaps&&C.mipmaps.length>0){J.__webglFramebuffer=[];for(let Le=0;Le<C.mipmaps.length;Le++)J.__webglFramebuffer[Le]=n.createFramebuffer()}else J.__webglFramebuffer=n.createFramebuffer();if(Ae)for(let Le=0,ze=fe.length;Le<ze;Le++){const Ge=a.get(fe[Le]);Ge.__webglTexture===void 0&&(Ge.__webglTexture=n.createTexture(),u.memory.textures++)}if(B.samples>0&&vt(B)===!1){J.__webglMultisampledFramebuffer=n.createFramebuffer(),J.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,J.__webglMultisampledFramebuffer);for(let Le=0;Le<fe.length;Le++){const ze=fe[Le];J.__webglColorRenderbuffer[Le]=n.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,J.__webglColorRenderbuffer[Le]);const Ge=l.convert(ze.format,ze.colorSpace),_e=l.convert(ze.type),Re=T(ze.internalFormat,Ge,_e,ze.colorSpace,B.isXRRenderTarget===!0),Be=He(B);n.renderbufferStorageMultisample(n.RENDERBUFFER,Be,Re,B.width,B.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+Le,n.RENDERBUFFER,J.__webglColorRenderbuffer[Le])}n.bindRenderbuffer(n.RENDERBUFFER,null),B.depthBuffer&&(J.__webglDepthRenderbuffer=n.createRenderbuffer(),ut(J.__webglDepthRenderbuffer,B,!0)),t.bindFramebuffer(n.FRAMEBUFFER,null)}}if(q){t.bindTexture(n.TEXTURE_CUBE_MAP,de.__webglTexture),Me(n.TEXTURE_CUBE_MAP,C);for(let Le=0;Le<6;Le++)if(C.mipmaps&&C.mipmaps.length>0)for(let ze=0;ze<C.mipmaps.length;ze++)Ue(J.__webglFramebuffer[Le][ze],B,C,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+Le,ze);else Ue(J.__webglFramebuffer[Le],B,C,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+Le,0);M(C)&&S(n.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(Ae){for(let Le=0,ze=fe.length;Le<ze;Le++){const Ge=fe[Le],_e=a.get(Ge);t.bindTexture(n.TEXTURE_2D,_e.__webglTexture),Me(n.TEXTURE_2D,Ge),Ue(J.__webglFramebuffer,B,Ge,n.COLOR_ATTACHMENT0+Le,n.TEXTURE_2D,0),M(Ge)&&S(n.TEXTURE_2D)}t.unbindTexture()}else{let Le=n.TEXTURE_2D;if((B.isWebGL3DRenderTarget||B.isWebGLArrayRenderTarget)&&(Le=B.isWebGL3DRenderTarget?n.TEXTURE_3D:n.TEXTURE_2D_ARRAY),t.bindTexture(Le,de.__webglTexture),Me(Le,C),C.mipmaps&&C.mipmaps.length>0)for(let ze=0;ze<C.mipmaps.length;ze++)Ue(J.__webglFramebuffer[ze],B,C,n.COLOR_ATTACHMENT0,Le,ze);else Ue(J.__webglFramebuffer,B,C,n.COLOR_ATTACHMENT0,Le,0);M(C)&&S(Le),t.unbindTexture()}B.depthBuffer&&Et(B)}function k(B){const C=B.textures;for(let J=0,de=C.length;J<de;J++){const fe=C[J];if(M(fe)){const q=N(B),Ae=a.get(fe).__webglTexture;t.bindTexture(q,Ae),S(q),t.unbindTexture()}}}const Xt=[],ft=[];function rt(B){if(B.samples>0){if(vt(B)===!1){const C=B.textures,J=B.width,de=B.height;let fe=n.COLOR_BUFFER_BIT;const q=B.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Ae=a.get(B),Le=C.length>1;if(Le)for(let Ge=0;Ge<C.length;Ge++)t.bindFramebuffer(n.FRAMEBUFFER,Ae.__webglMultisampledFramebuffer),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+Ge,n.RENDERBUFFER,null),t.bindFramebuffer(n.FRAMEBUFFER,Ae.__webglFramebuffer),n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0+Ge,n.TEXTURE_2D,null,0);t.bindFramebuffer(n.READ_FRAMEBUFFER,Ae.__webglMultisampledFramebuffer);const ze=B.texture.mipmaps;ze&&ze.length>0?t.bindFramebuffer(n.DRAW_FRAMEBUFFER,Ae.__webglFramebuffer[0]):t.bindFramebuffer(n.DRAW_FRAMEBUFFER,Ae.__webglFramebuffer);for(let Ge=0;Ge<C.length;Ge++){if(B.resolveDepthBuffer&&(B.depthBuffer&&(fe|=n.DEPTH_BUFFER_BIT),B.stencilBuffer&&B.resolveStencilBuffer&&(fe|=n.STENCIL_BUFFER_BIT)),Le){n.framebufferRenderbuffer(n.READ_FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.RENDERBUFFER,Ae.__webglColorRenderbuffer[Ge]);const _e=a.get(C[Ge]).__webglTexture;n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,_e,0)}n.blitFramebuffer(0,0,J,de,0,0,J,de,fe,n.NEAREST),d===!0&&(Xt.length=0,ft.length=0,Xt.push(n.COLOR_ATTACHMENT0+Ge),B.depthBuffer&&B.resolveDepthBuffer===!1&&(Xt.push(q),ft.push(q),n.invalidateFramebuffer(n.DRAW_FRAMEBUFFER,ft)),n.invalidateFramebuffer(n.READ_FRAMEBUFFER,Xt))}if(t.bindFramebuffer(n.READ_FRAMEBUFFER,null),t.bindFramebuffer(n.DRAW_FRAMEBUFFER,null),Le)for(let Ge=0;Ge<C.length;Ge++){t.bindFramebuffer(n.FRAMEBUFFER,Ae.__webglMultisampledFramebuffer),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+Ge,n.RENDERBUFFER,Ae.__webglColorRenderbuffer[Ge]);const _e=a.get(C[Ge]).__webglTexture;t.bindFramebuffer(n.FRAMEBUFFER,Ae.__webglFramebuffer),n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0+Ge,n.TEXTURE_2D,_e,0)}t.bindFramebuffer(n.DRAW_FRAMEBUFFER,Ae.__webglMultisampledFramebuffer)}else if(B.depthBuffer&&B.resolveDepthBuffer===!1&&d){const C=B.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;n.invalidateFramebuffer(n.DRAW_FRAMEBUFFER,[C])}}}function He(B){return Math.min(o.maxSamples,B.samples)}function vt(B){const C=a.get(B);return B.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&C.__useRenderToTexture!==!1}function Ke(B){const C=u.render.frame;g.get(B)!==C&&(g.set(B,C),B.update())}function ot(B,C){const J=B.colorSpace,de=B.format,fe=B.type;return B.isCompressedTexture===!0||B.isVideoTexture===!0||J!==Ro&&J!==Ca&&(Lt.getTransfer(J)===kt?(de!==Oi||fe!==Us)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",J)),C}function $t(B){return typeof HTMLImageElement<"u"&&B instanceof HTMLImageElement?(h.width=B.naturalWidth||B.width,h.height=B.naturalHeight||B.height):typeof VideoFrame<"u"&&B instanceof VideoFrame?(h.width=B.displayWidth,h.height=B.displayHeight):(h.width=B.width,h.height=B.height),h}this.allocateTextureUnit=ue,this.resetTextureUnits=ce,this.setTexture2D=me,this.setTexture2DArray=j,this.setTexture3D=Z,this.setTextureCube=Y,this.rebindTextures=Ut,this.setupRenderTarget=gt,this.updateRenderTargetMipmap=k,this.updateMultisampleRenderTarget=rt,this.setupDepthRenderbuffer=Et,this.setupFrameBufferTexture=Ue,this.useMultisampledRTT=vt}function z7(n,e){function t(a,o=Ca){let l;const u=Lt.getTransfer(o);if(a===Us)return n.UNSIGNED_BYTE;if(a===hm)return n.UNSIGNED_SHORT_4_4_4_4;if(a===pm)return n.UNSIGNED_SHORT_5_5_5_1;if(a===w_)return n.UNSIGNED_INT_5_9_9_9_REV;if(a===b_)return n.BYTE;if(a===E_)return n.SHORT;if(a===sc)return n.UNSIGNED_SHORT;if(a===dm)return n.INT;if(a===Sr)return n.UNSIGNED_INT;if(a===As)return n.FLOAT;if(a===xc)return n.HALF_FLOAT;if(a===T_)return n.ALPHA;if(a===C_)return n.RGB;if(a===Oi)return n.RGBA;if(a===rc)return n.DEPTH_COMPONENT;if(a===oc)return n.DEPTH_STENCIL;if(a===A_)return n.RED;if(a===mm)return n.RED_INTEGER;if(a===R_)return n.RG;if(a===gm)return n.RG_INTEGER;if(a===vm)return n.RGBA_INTEGER;if(a===df||a===hf||a===pf||a===mf)if(u===kt)if(l=e.get("WEBGL_compressed_texture_s3tc_srgb"),l!==null){if(a===df)return l.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(a===hf)return l.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(a===pf)return l.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(a===mf)return l.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(l=e.get("WEBGL_compressed_texture_s3tc"),l!==null){if(a===df)return l.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===hf)return l.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===pf)return l.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===mf)return l.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(a===rp||a===op||a===lp||a===cp)if(l=e.get("WEBGL_compressed_texture_pvrtc"),l!==null){if(a===rp)return l.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===op)return l.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===lp)return l.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===cp)return l.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(a===up||a===fp||a===dp)if(l=e.get("WEBGL_compressed_texture_etc"),l!==null){if(a===up||a===fp)return u===kt?l.COMPRESSED_SRGB8_ETC2:l.COMPRESSED_RGB8_ETC2;if(a===dp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:l.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(a===hp||a===pp||a===mp||a===gp||a===vp||a===xp||a===_p||a===yp||a===Sp||a===Mp||a===bp||a===Ep||a===wp||a===Tp)if(l=e.get("WEBGL_compressed_texture_astc"),l!==null){if(a===hp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:l.COMPRESSED_RGBA_ASTC_4x4_KHR;if(a===pp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:l.COMPRESSED_RGBA_ASTC_5x4_KHR;if(a===mp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:l.COMPRESSED_RGBA_ASTC_5x5_KHR;if(a===gp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:l.COMPRESSED_RGBA_ASTC_6x5_KHR;if(a===vp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:l.COMPRESSED_RGBA_ASTC_6x6_KHR;if(a===xp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:l.COMPRESSED_RGBA_ASTC_8x5_KHR;if(a===_p)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:l.COMPRESSED_RGBA_ASTC_8x6_KHR;if(a===yp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:l.COMPRESSED_RGBA_ASTC_8x8_KHR;if(a===Sp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:l.COMPRESSED_RGBA_ASTC_10x5_KHR;if(a===Mp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:l.COMPRESSED_RGBA_ASTC_10x6_KHR;if(a===bp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:l.COMPRESSED_RGBA_ASTC_10x8_KHR;if(a===Ep)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:l.COMPRESSED_RGBA_ASTC_10x10_KHR;if(a===wp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:l.COMPRESSED_RGBA_ASTC_12x10_KHR;if(a===Tp)return u===kt?l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:l.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(a===gf||a===Cp||a===Ap)if(l=e.get("EXT_texture_compression_bptc"),l!==null){if(a===gf)return u===kt?l.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:l.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(a===Cp)return l.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(a===Ap)return l.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(a===N_||a===Rp||a===Np||a===Lp)if(l=e.get("EXT_texture_compression_rgtc"),l!==null){if(a===gf)return l.COMPRESSED_RED_RGT
vendor: 7,447 bytes, lines 3862-3886
3862C1_EXT;if(a===Rp)return l.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(a===Np)return l.COMPRESSED_RED_GREEN_RGTC2_EXT;if(a===Lp)return l.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return a===ac?n.UNSIGNED_INT_24_8:n[a]!==void 0?n[a]:null}return{convert:t}}const V7=` 3863void main() { 3864 3865 gl_Position = vec4( position, 1.0 ); 3866 3867}`,j7=` 3868uniform sampler2DArray depthColor; 3869uniform float depthWidth; 3870uniform float depthHeight; 3871 3872void main() { 3873 3874 vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); 3875 3876 if ( coord.x >= 1.0 ) { 3877 3878 gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; 3879 3880 } else { 3881 3882 gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; 3883 3884 } 3885 3886}`;class H7{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,a){if(this.texture===null){const o=new Wn,l=e.properties.get(o);l.__webglTexture=t.texture,(t.depthNear!==a.depthNear||t.depthFar!==a.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=o}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,a=new Bi({vertexShader:V7,fragmentShader:j7,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new pi(new Bo(20,20),a)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class k7 extends Io{constructor(e,t){super();const a=this;let o=null,l=1,u=null,f="local-floor",d=1,h=null,g=null,v=null,x=null,y=null,b=null;const w=new H7,M=t.getContextAttributes();let S=null,N=null;const T=[],R=[],P=new St;let I=null;const F=new mn;F.viewport=new cn;const V=new mn;V.viewport=new cn;const U=[F,V],L=new uE;let z=null,ce=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(te){let xe=T[te];return xe===void 0&&(xe=new y0,T[te]=xe),xe.getTargetRaySpace()},this.getControllerGrip=function(te){let xe=T[te];return xe===void 0&&(xe=new y0,T[te]=xe),xe.getGripSpace()},this.getHand=function(te){let xe=T[te];return xe===void 0&&(xe=new y0,T[te]=xe),xe.getHandSpace()};function ue(te){const xe=R.indexOf(te.inputSource);if(xe===-1)return;const Ee=T[xe];Ee!==void 0&&(Ee.update(te.inputSource,te.frame,h||u),Ee.dispatchEvent({type:te.type,data:te.inputSource}))}function ge(){o.removeEventListener("select",ue),o.removeEventListener("selectstart",ue),o.removeEventListener("selectend",ue),o.removeEventListener("squeeze",ue),o.removeEventListener("squeezestart",ue),o.removeEventListener("squeezeend",ue),o.removeEventListener("end",ge),o.removeEventListener("inputsourceschange",me);for(let te=0;te<T.length;te++){const xe=R[te];xe!==null&&(R[te]=null,T[te].disconnect(xe))}z=null,ce=null,w.reset(),e.setRenderTarget(S),y=null,x=null,v=null,o=null,N=null,be.stop(),a.isPresenting=!1,e.setPixelRatio(I),e.setSize(P.width,P.height,!1),a.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(te){l=te,a.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(te){f=te,a.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return h||u},this.setReferenceSpace=function(te){h=te},this.getBaseLayer=function(){return x!==null?x:y},this.getBinding=function(){return v},this.getFrame=function(){return b},this.getSession=function(){return o},this.setSession=async function(te){if(o=te,o!==null){if(S=e.getRenderTarget(),o.addEventListener("select",ue),o.addEventListener("selectstart",ue),o.addEventListener("selectend",ue),o.addEventListener("squeeze",ue),o.addEventListener("squeezestart",ue),o.addEventListener("squeezeend",ue),o.addEventListener("end",ge),o.addEventListener("inputsourceschange",me),M.xrCompatible!==!0&&await t.makeXRCompatible(),I=e.getPixelRatio(),e.getSize(P),typeof XRWebGLBinding<"u"&&"createProjectionLayer"in XRWebGLBinding.prototype){let Ee=null,Te=null,Ue=null;M.depth&&(Ue=M.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,Ee=M.stencil?oc:rc,Te=M.stencil?ac:Sr);const ut={colorFormat:t.RGBA8,depthFormat:Ue,scaleFactor:l};v=new XRWebGLBinding(o,t),x=v.createProjectionLayer(ut),o.updateRenderState({layers:[x]}),e.setPixelRatio(1),e.setSize(x.textureWidth,x.textureHeight,!1),N=new Mr(x.textureWidth,x.textureHeight,{format:Oi,type:Us,depthTexture:new j_(x.textureWidth,x.textureHeight,Te,void 0,void 0,void 0,void 0,void 0,void 0,Ee),stencilBuffer:M.stencil,colorSpace:e.outputColorSpace,samples:M.antialias?4:0,resolveDepthBuffer:x.ignoreDepthValues===!1,resolveStencilBuffer:x.ignoreDepthValues===!1})}else{const Ee={antialias:M.antialias,alpha:!0,depth:M.depth,stencil:M.stencil,framebufferScaleFactor:l};y=new XRWebGLLayer(o,t,Ee),o.updateRenderState({baseLayer:y}),e.setPixelRatio(1),e.setSize(y.framebufferWidth,y.framebufferHeight,!1),N=new Mr(y.framebufferWidth,y.framebufferHeight,{format:Oi,type:Us,colorSpace:e.outputColorSpace,stencilBuffer:M.stencil,resolveDepthBuffer:y.ignoreDepthValues===!1,resolveStencilBuffer:y.ignoreDepthValues===!1})}N.isXRRenderTarget=!0,this.setFoveation(d),h=null,u=await o.requestReferenceSpace(f),be.setContext(o),be.start(),a.isPresenting=!0,a.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(o!==null)return o.environmentBlendMode},this.getDepthTexture=function(){return w.getDepthTexture()};function me(te){for(let xe=0;xe<te.removed.length;xe++){const Ee=te.removed[xe],Te=R.indexOf(Ee);Te>=0&&(R[Te]=null,T[Te].disconnect(Ee))}for(let xe=0;xe<te.added.length;xe++){const Ee=te.added[xe];let Te=R.indexOf(Ee);if(Te===-1){for(let ut=0;ut<T.length;ut++)if(ut>=R.length){R.push(Ee),Te=ut;break}else if(R[ut]===null){R[ut]=Ee,Te=ut;break}if(Te===-1)break}const Ue=T[Te];Ue&&Ue.connect(Ee)}}const j=new le,Z=new le;function Y(te,xe,Ee){j.setFromMatrixPosition(xe.matrixWorld),Z.setFromMatrixPosition(Ee.matrixWorld);const Te=j.distanceTo(Z),Ue=xe.projectionMatrix.elements,ut=Ee.projectionMatrix.elements,Qe=Ue[14]/(Ue[10]-1),Et=Ue[14]/(Ue[10]+1),Ut=(Ue[9]+1)/Ue[5],gt=(Ue[9]-1)/Ue[5],k=(Ue[8]-1)/Ue[0],Xt=(ut[8]+1)/ut[0],ft=Qe*k,rt=Qe*Xt,He=Te/(-k+Xt),vt=He*-k;if(xe.matrixWorld.decompose(te.position,te.quaternion,te.scale),te.translateX(vt),te.translateZ(He),te.matrixWorld.compose(te.position,te.quaternion,te.scale),te.matrixWorldInverse.copy(te.matrixWorld).invert(),Ue[10]===-1)te.projectionMatrix.copy(xe.projectionMatrix),te.projectionMatrixInverse.copy(xe.projectionMatrixInverse);else{const Ke=Qe+He,ot=Et+He,$t=ft-vt,B=rt+(Te-vt),C=Ut*Et/ot*Ke,J=gt*Et/ot*Ke;te.projectionMatrix.makePerspective($t,B,C,J,Ke,ot),te.projectionMatrixInverse.copy(te.projectionMatrix).invert()}}function he(te,xe){xe===null?te.matrixWorld.copy(te.matrix):te.matrixWorld.multiplyMatrices(xe.matrixWorld,te.matrix),te.matrixWorldInverse.copy(te.matrixWorld).invert()}this.updateCamera=function(te){if(o===null)return;let xe=te.near,Ee=te.far;w.texture!==null&&(w.depthNear>0&&(xe=w.depthNear),w.depthFar>0&&(Ee=w.depthFar)),L.near=V.near=F.near=xe,L.far=V.far=F.far=Ee,(z!==L.near||ce!==L.far)&&(o.updateRenderState({depthNear:L.near,depthFar:L.far}),z=L.near,ce=L.far),F.layers.mask=te.layers.mask|2,V.layers.mask=te.layers.mask|4,L.layers.mask=F.layers.mask|V.layers.mask;const Te=te.parent,Ue=L.cameras;he(L,Te);for(let ut=0;ut<Ue.length;ut++)he(Ue[ut],Te);Ue.length===2?Y(L,F,V):L.projectionMatrix.copy(F.projectionMatrix),O(te,
vendor: 1,108 bytes, line 3886
3886L,Te)};function O(te,xe,Ee){Ee===null?te.matrix.copy(xe.matrixWorld):(te.matrix.copy(Ee.matrixWorld),te.matrix.invert(),te.matrix.multiply(xe.matrixWorld)),te.matrix.decompose(te.position,te.quaternion,te.scale),te.updateMatrixWorld(!0),te.projectionMatrix.copy(xe.projectionMatrix),te.projectionMatrixInverse.copy(xe.projectionMatrixInverse),te.isPerspectiveCamera&&(te.fov=Dp*2*Math.atan(1/te.projectionMatrix.elements[5]),te.zoom=1)}this.getCamera=function(){return L},this.getFoveation=function(){if(!(x===null&&y===null))return d},this.setFoveation=function(te){d=te,x!==null&&(x.fixedFoveation=te),y!==null&&y.fixedFoveation!==void 0&&(y.fixedFoveation=te)},this.hasDepthSensing=function(){return w.texture!==null},this.getDepthSensingMesh=function(){return w.getMesh(L)};let ee=null;function Me(te,xe){if(g=xe.getViewerPose(h||u),b=xe,g!==null){const Ee=g.views;y!==null&&(e.setRenderTargetFramebuffer(N,y.framebuffer),e.setRenderTarget(N));let Te=!1;Ee.length!==L.cameras.length&&(L.cameras.length=0,Te=!0);for(let Qe=0;Qe<Ee.length;Qe++){const Et=Ee[Qe];let Ut=null;if(y!==null)Ut=y.getViewport(Et);
vendor: 4,114 bytes, line 3886
3886else{const k=v.getViewSubImage(x,Et);Ut=k.viewport,Qe===0&&(e.setRenderTargetTextures(N,k.colorTexture,k.depthStencilTexture),e.setRenderTarget(N))}let gt=U[Qe];gt===void 0&&(gt=new mn,gt.layers.enable(Qe),gt.viewport=new cn,U[Qe]=gt),gt.matrix.fromArray(Et.transform.matrix),gt.matrix.decompose(gt.position,gt.quaternion,gt.scale),gt.projectionMatrix.fromArray(Et.projectionMatrix),gt.projectionMatrixInverse.copy(gt.projectionMatrix).invert(),gt.viewport.set(Ut.x,Ut.y,Ut.width,Ut.height),Qe===0&&(L.matrix.copy(gt.matrix),L.matrix.decompose(L.position,L.quaternion,L.scale)),Te===!0&&L.cameras.push(gt)}const Ue=o.enabledFeatures;if(Ue&&Ue.includes("depth-sensing")&&o.depthUsage=="gpu-optimized"&&v){const Qe=v.getDepthInformation(Ee[0]);Qe&&Qe.isValid&&Qe.texture&&w.init(e,Qe,o.renderState)}}for(let Ee=0;Ee<T.length;Ee++){const Te=R[Ee],Ue=T[Ee];Te!==null&&Ue!==void 0&&Ue.update(Te,xe,h||u)}ee&&ee(te,xe),xe.detectedPlanes&&a.dispatchEvent({type:"planesdetected",data:xe}),b=null}const be=new k_;be.setAnimationLoop(Me),this.setAnimationLoop=function(te){ee=te},this.dispose=function(){}}}const rr=new Ps,G7=new gn;function W7(n,e){function t(M,S){M.matrixAutoUpdate===!0&&M.updateMatrix(),S.value.copy(M.matrix)}function a(M,S){S.color.getRGB(M.fogColor.value,F_(n)),S.isFog?(M.fogNear.value=S.near,M.fogFar.value=S.far):S.isFogExp2&&(M.fogDensity.value=S.density)}function o(M,S,N,T,R){S.isMeshBasicMaterial||S.isMeshLambertMaterial?l(M,S):S.isMeshToonMaterial?(l(M,S),v(M,S)):S.isMeshPhongMaterial?(l(M,S),g(M,S)):S.isMeshStandardMaterial?(l(M,S),x(M,S),S.isMeshPhysicalMaterial&&y(M,S,R)):S.isMeshMatcapMaterial?(l(M,S),b(M,S)):S.isMeshDepthMaterial?l(M,S):S.isMeshDistanceMaterial?(l(M,S),w(M,S)):S.isMeshNormalMaterial?l(M,S):S.isLineBasicMaterial?(u(M,S),S.isLineDashedMaterial&&f(M,S)):S.isPointsMaterial?d(M,S,N,T):S.isSpriteMaterial?h(M,S):S.isShadowMaterial?(M.color.value.copy(S.color),M.opacity.value=S.opacity):S.isShaderMaterial&&(S.uniformsNeedUpdate=!1)}function l(M,S){M.opacity.value=S.opacity,S.color&&M.diffuse.value.copy(S.color),S.emissive&&M.emissive.value.copy(S.emissive).multiplyScalar(S.emissiveIntensity),S.map&&(M.map.value=S.map,t(S.map,M.mapTransform)),S.alphaMap&&(M.alphaMap.value=S.alphaMap,t(S.alphaMap,M.alphaMapTransform)),S.bumpMap&&(M.bumpMap.value=S.bumpMap,t(S.bumpMap,M.bumpMapTransform),M.bumpScale.value=S.bumpScale,S.side===ei&&(M.bumpScale.value*=-1)),S.normalMap&&(M.normalMap.value=S.normalMap,t(S.normalMap,M.normalMapTransform),M.normalScale.value.copy(S.normalScale),S.side===ei&&M.normalScale.value.negate()),S.displacementMap&&(M.displacementMap.value=S.displacementMap,t(S.displacementMap,M.displacementMapTransform),M.displacementScale.value=S.displacementScale,M.displacementBias.value=S.displacementBias),S.emissiveMap&&(M.emissiveMap.value=S.emissiveMap,t(S.emissiveMap,M.emissiveMapTransform)),S.specularMap&&(M.specularMap.value=S.specularMap,t(S.specularMap,M.specularMapTransform)),S.alphaTest>0&&(M.alphaTest.value=S.alphaTest);const N=e.get(S),T=N.envMap,R=N.envMapRotation;T&&(M.envMap.value=T,rr.copy(R),rr.x*=-1,rr.y*=-1,rr.z*=-1,T.isCubeTexture&&T.isRenderTargetTexture===!1&&(rr.y*=-1,rr.z*=-1),M.envMapRotation.value.setFromMatrix4(G7.makeRotationFromEuler(rr)),M.flipEnvMap.value=T.isCubeTexture&&T.isRenderTargetTexture===!1?-1:1,M.reflectivity.value=S.reflectivity,M.ior.value=S.ior,M.refractionRatio.value=S.refractionRatio),S.lightMap&&(M.lightMap.value=S.lightMap,M.lightMapIntensity.value=S.lightMapIntensity,t(S.lightMap,M.lightMapTransform)),S.aoMap&&(M.aoMap.value=S.aoMap,M.aoMapIntensity.value=S.aoMapIntensity,t(S.aoMap,M.aoMapTransform))}function u(M,S){M.diffuse.value.copy(S.color),M.opacity.value=S.opacity,S.map&&(M.map.value=S.map,t(S.map,M.mapTransform))}function f(M,S){M.dashSize.value=S.dashSize,M.totalSize.value=S.dashSize+S.gapSize,M.scale.value=S.scale}function d(M,S,N,T){M.diffuse.value.copy(S.color),M.opacity.value=S.opacity,M.size.value=S.size*N,M.scale.value=T*.5,S.map&&(M.map.value=S.map,t(S.map,M.uvTransform)),S.alphaMap&&(M.alphaMap.value=S.alphaMap,t(S.alphaMap,M.alphaMapTransform)),S.alphaTest>
vendor: 10,767 bytes, line 3886
38860&&(M.alphaTest.value=S.alphaTest)}function h(M,S){M.diffuse.value.copy(S.color),M.opacity.value=S.opacity,M.rotation.value=S.rotation,S.map&&(M.map.value=S.map,t(S.map,M.mapTransform)),S.alphaMap&&(M.alphaMap.value=S.alphaMap,t(S.alphaMap,M.alphaMapTransform)),S.alphaTest>0&&(M.alphaTest.value=S.alphaTest)}function g(M,S){M.specular.value.copy(S.specular),M.shininess.value=Math.max(S.shininess,1e-4)}function v(M,S){S.gradientMap&&(M.gradientMap.value=S.gradientMap)}function x(M,S){M.metalness.value=S.metalness,S.metalnessMap&&(M.metalnessMap.value=S.metalnessMap,t(S.metalnessMap,M.metalnessMapTransform)),M.roughness.value=S.roughness,S.roughnessMap&&(M.roughnessMap.value=S.roughnessMap,t(S.roughnessMap,M.roughnessMapTransform)),S.envMap&&(M.envMapIntensity.value=S.envMapIntensity)}function y(M,S,N){M.ior.value=S.ior,S.sheen>0&&(M.sheenColor.value.copy(S.sheenColor).multiplyScalar(S.sheen),M.sheenRoughness.value=S.sheenRoughness,S.sheenColorMap&&(M.sheenColorMap.value=S.sheenColorMap,t(S.sheenColorMap,M.sheenColorMapTransform)),S.sheenRoughnessMap&&(M.sheenRoughnessMap.value=S.sheenRoughnessMap,t(S.sheenRoughnessMap,M.sheenRoughnessMapTransform))),S.clearcoat>0&&(M.clearcoat.value=S.clearcoat,M.clearcoatRoughness.value=S.clearcoatRoughness,S.clearcoatMap&&(M.clearcoatMap.value=S.clearcoatMap,t(S.clearcoatMap,M.clearcoatMapTransform)),S.clearcoatRoughnessMap&&(M.clearcoatRoughnessMap.value=S.clearcoatRoughnessMap,t(S.clearcoatRoughnessMap,M.clearcoatRoughnessMapTransform)),S.clearcoatNormalMap&&(M.clearcoatNormalMap.value=S.clearcoatNormalMap,t(S.clearcoatNormalMap,M.clearcoatNormalMapTransform),M.clearcoatNormalScale.value.copy(S.clearcoatNormalScale),S.side===ei&&M.clearcoatNormalScale.value.negate())),S.dispersion>0&&(M.dispersion.value=S.dispersion),S.iridescence>0&&(M.iridescence.value=S.iridescence,M.iridescenceIOR.value=S.iridescenceIOR,M.iridescenceThicknessMinimum.value=S.iridescenceThicknessRange[0],M.iridescenceThicknessMaximum.value=S.iridescenceThicknessRange[1],S.iridescenceMap&&(M.iridescenceMap.value=S.iridescenceMap,t(S.iridescenceMap,M.iridescenceMapTransform)),S.iridescenceThicknessMap&&(M.iridescenceThicknessMap.value=S.iridescenceThicknessMap,t(S.iridescenceThicknessMap,M.iridescenceThicknessMapTransform))),S.transmission>0&&(M.transmission.value=S.transmission,M.transmissionSamplerMap.value=N.texture,M.transmissionSamplerSize.value.set(N.width,N.height),S.transmissionMap&&(M.transmissionMap.value=S.transmissionMap,t(S.transmissionMap,M.transmissionMapTransform)),M.thickness.value=S.thickness,S.thicknessMap&&(M.thicknessMap.value=S.thicknessMap,t(S.thicknessMap,M.thicknessMapTransform)),M.attenuationDistance.value=S.attenuationDistance,M.attenuationColor.value.copy(S.attenuationColor)),S.anisotropy>0&&(M.anisotropyVector.value.set(S.anisotropy*Math.cos(S.anisotropyRotation),S.anisotropy*Math.sin(S.anisotropyRotation)),S.anisotropyMap&&(M.anisotropyMap.value=S.anisotropyMap,t(S.anisotropyMap,M.anisotropyMapTransform))),M.specularIntensity.value=S.specularIntensity,M.specularColor.value.copy(S.specularColor),S.specularColorMap&&(M.specularColorMap.value=S.specularColorMap,t(S.specularColorMap,M.specularColorMapTransform)),S.specularIntensityMap&&(M.specularIntensityMap.value=S.specularIntensityMap,t(S.specularIntensityMap,M.specularIntensityMapTransform))}function b(M,S){S.matcap&&(M.matcap.value=S.matcap)}function w(M,S){const N=e.get(S).light;M.referencePosition.value.setFromMatrixPosition(N.matrixWorld),M.nearDistance.value=N.shadow.camera.near,M.farDistance.value=N.shadow.camera.far}return{refreshFogUniforms:a,refreshMaterialUniforms:o}}function X7(n,e,t,a){let o={},l={},u=[];const f=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function d(N,T){const R=T.program;a.uniformBlockBinding(N,R)}function h(N,T){let R=o[N.id];R===void 0&&(b(N),R=g(N),o[N.id]=R,N.addEventListener("dispose",M));const P=T.program;a.updateUBOMapping(N,P);const I=e.render.frame;l[N.id]!==I&&(x(N),l[N.id]=I)}function g(N){const T=v();N.__bindingPointIndex=T;const R=n.createBuffer(),P=N.__size,I=N.usage;return n.bindBuffer(n.UNIFORM_BUFFER,R),n.bufferData(n.UNIFORM_BUFFER,P,I),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,T,R),R}function v(){for(let N=0;N<f;N++)if(u.indexOf(N)===-1)return u.push(N),N;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function x(N){const T=o[N.id],R=N.uniforms,P=N.__cache;n.bindBuffer(n.UNIFORM_BUFFER,T);for(let I=0,F=R.length;I<F;I++){const V=Array.isArray(R[I])?R[I]:[R[I]];for(let U=0,L=V.length;U<L;U++){const z=V[U];if(y(z,I,U,P)===!0){const ce=z.__offset,ue=Array.isArray(z.value)?z.value:[z.value];let ge=0;for(let me=0;me<ue.length;me++){const j=ue[me],Z=w(j);typeof j=="number"||typeof j=="boolean"?(z.__data[0]=j,n.bufferSubData(n.UNIFORM_BUFFER,ce+ge,z.__data)):j.isMatrix3?(z.__data[0]=j.elements[0],z.__data[1]=j.elements[1],z.__data[2]=j.elements[2],z.__data[3]=0,z.__data[4]=j.elements[3],z.__data[5]=j.elements[4],z.__data[6]=j.elements[5],z.__data[7]=0,z.__data[8]=j.elements[6],z.__data[9]=j.elements[7],z.__data[10]=j.elements[8],z.__data[11]=0):(j.toArray(z.__data,ge),ge+=Z.storage/Float32Array.BYTES_PER_ELEMENT)}n.bufferSubData(n.UNIFORM_BUFFER,ce,z.__data)}}}n.bindBuffer(n.UNIFORM_BUFFER,null)}function y(N,T,R,P){const I=N.value,F=T+"_"+R;if(P[F]===void 0)return typeof I=="number"||typeof I=="boolean"?P[F]=I:P[F]=I.clone(),!0;{const V=P[F];if(typeof I=="number"||typeof I=="boolean"){if(V!==I)return P[F]=I,!0}else if(V.equals(I)===!1)return V.copy(I),!0}return!1}function b(N){const T=N.uniforms;let R=0;const P=16;for(let F=0,V=T.length;F<V;F++){const U=Array.isArray(T[F])?T[F]:[T[F]];for(let L=0,z=U.length;L<z;L++){const ce=U[L],ue=Array.isArray(ce.value)?ce.value:[ce.value];for(let ge=0,me=ue.length;ge<me;ge++){const j=ue[ge],Z=w(j),Y=R%P,he=Y%Z.boundary,O=Y+he;R+=he,O!==0&&P-O<Z.storage&&(R+=P-O),ce.__data=new Float32Array(Z.storage/Float32Array.BYTES_PER_ELEMENT),ce.__offset=R,R+=Z.storage}}}const I=R%P;return I>0&&(R+=P-I),N.__size=R,N.__cache={},this}function w(N){const T={boundary:0,storage:0};return typeof N=="number"||typeof N=="boolean"?(T.boundary=4,T.storage=4):N.isVector2?(T.boundary=8,T.storage=8):N.isVector3||N.isColor?(T.boundary=16,T.storage=12):N.isVector4?(T.boundary=16,T.storage=16):N.isMatrix3?(T.boundary=48,T.storage=48):N.isMatrix4?(T.boundary=64,T.storage=64):N.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",N),T}function M(N){const T=N.target;T.removeEventListener("dispose",M);const R=u.indexOf(T.__bindingPointIndex);u.splice(R,1),n.deleteBuffer(o[T.id]),delete o[T.id],delete l[T.id]}function S(){for(const N in o)n.deleteBuffer(o[N]);u=[],o={},l={}}return{bind:d,update:h,dispose:S}}class Gs{constructor(e={}){const{canvas:t=Tb(),context:a=null,depth:o=!0,stencil:l=!1,alpha:u=!1,antialias:f=!1,premultipliedAlpha:d=!0,preserveDrawingBuffer:h=!1,powerPreference:g="default",failIfMajorPerformanceCaveat:v=!1,reverseDepthBuffer:x=!1}=e;this.isWebGLRenderer=!0;let y;if(a!==null){if(typeof WebGLRenderingContext<"u"&&a instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");y=a.getContextAttributes().alpha}else y=u;const b=new Uint32Array(4),w=new Int32Array(4);let M=null,S=null;const N=[],T=[];this.domElement=t,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.toneMapping=Ra,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const R=this;let P=!1;this._outputColorSpace=hi;let I=0,F=0,V=null,U=-1,L=null;const z=new cn,ce=new cn;let ue=null;const ge=new Fe(0);let me=0,j=t.width,Z=t.height,Y=1,he=null,O=null;const ee=new cn(0,0,j,Z),Me=new cn(0,0,j,Z);let be=!1;const te=new V_;let xe=!1,Ee=!1;const Te=new gn,Ue=new gn,ut=new le,Qe=new cn,Et={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Ut=!1;function gt(){return V===null?Y:1}let k=a;function Xt(D,Q){return t.getContext(D,Q)}try{const D={alpha:!0,depth:o,stencil:l,antialias:f,premultipliedAlpha:d,preserveDrawingBuffer:h,powerPreference:g,failIfMajorPerformanceCaveat:v};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${fm}`),t.addEventListener("webglcontextlost",Ve,!1),t.addEventListener("webglcontextrestored",Ce,!1),t.addEventListener("webglcontextcreationerror",Se,!1),k===null){const Q="webgl2";if(k=Xt(Q,D),k===null)throw Xt(Q)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(D){throw console.error("THREE.WebGLRenderer: "+D.message),D}let ft,rt,He,vt,Ke,ot,$t,B,C,J,de,fe,q,Ae,Le,ze,Ge,_e,Re,Be,We,De,tt,W;function Pe(){ft=new iT(k),ft.init(),De=new z7(k,ft),rt=new K8(k,ft,e,De),He=new B7(k,ft),rt.reverseDepthBuffer&&x&&He.buffers.depth.setReversed(!0),vt=new rT(k),Ke=new E7,ot=new F7(k,ft,He,Ke,rt,De,vt),$t=new $8(R),B=new nT(R),C=new dE(k),tt=new Y8(k,C),J=new sT(k,C,vt,tt),de=new lT(k,J,C,vt),Re=new oT(k,rt,ot),ze=new Q8(Ke),fe=new b7(R,$t,B,ft,rt,tt,ze),q=new W7(R,Ke),Ae=new T7,Le=new D7(ft),_e=new q8(R,$t,B,He,de,y,d),Ge=new O7(R,de,rt),W=new X7(k,vt,rt,He),Be=new Z8(k,ft,vt),We=new aT(k,ft,vt),vt.programs=fe.programs,R.capabilities=rt,R.extensions=ft,R.properties=Ke,R.renderLists=Ae,R.shadowMap=Ge,R.state=He,R.info=vt}Pe();const we=new k7(R,k);this.xr=we,this.getContext=function(){return k},this.getContextAttributes=function(){return k.getContextAttributes()},this.forceContextLoss=function(){const D=ft.get("WEBGL_lose_context");D&&D.loseContext()},this.forceContextRestore=function(){const D=ft.get("WEBGL_lose_context");D&&D.restoreContext()},this.getPixelRatio=function(){return Y},this.setPixelRatio=function(D){D!==void 0&&(Y=D,this.setSize(j,Z,!1))},this.getSize=function(D){return D.set(j,Z)},this.setSize=function(D,Q,re=!0){if(we.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}j=D,Z=Q,t.width=Math.floor(D*Y),t.height=Math.floor(Q*Y),re===!0&&(t.style.width=D+"px",t.style.height=Q+"px"),this.setViewport(0,0,D,Q)},this.getDrawingBufferSize=function(D){return D.set(j*Y,Z*Y).floor()},this.setDrawingBufferSize=function(D,Q,re){j=D,Z=Q,Y=re,t.width=Math.floor(D*re),t.height=Math.floor(Q*re),this.setViewport(0,0,D,Q)},this.getCurrentViewport=function(D){return D.copy(z)},this.getViewport=function(D){return D.copy(ee)},this.setViewport=function(D,Q,re,oe){D.isVector4?ee.set(D.x,D.y,D.z,D.w):ee.set(D,Q,re,oe),He.viewport(z.copy(ee).multiplyScalar(Y).round())}
vendor: 8,305 bytes, line 3886
3886,this.getScissor=function(D){return D.copy(Me)},this.setScissor=function(D,Q,re,oe){D.isVector4?Me.set(D.x,D.y,D.z,D.w):Me.set(D,Q,re,oe),He.scissor(ce.copy(Me).multiplyScalar(Y).round())},this.getScissorTest=function(){return be},this.setScissorTest=function(D){He.setScissorTest(be=D)},this.setOpaqueSort=function(D){he=D},this.setTransparentSort=function(D){O=D},this.getClearColor=function(D){return D.copy(_e.getClearColor())},this.setClearColor=function(){_e.setClearColor(...arguments)},this.getClearAlpha=function(){return _e.getClearAlpha()},this.setClearAlpha=function(){_e.setClearAlpha(...arguments)},this.clear=function(D=!0,Q=!0,re=!0){let oe=0;if(D){let $=!1;if(V!==null){const Ne=V.texture.format;$=Ne===vm||Ne===gm||Ne===mm}if($){const Ne=V.texture.type,Oe=Ne===Us||Ne===Sr||Ne===sc||Ne===ac||Ne===hm||Ne===pm,je=_e.getClearColor(),ke=_e.getClearAlpha(),it=je.r,Je=je.g,Ye=je.b;Oe?(b[0]=it,b[1]=Je,b[2]=Ye,b[3]=ke,k.clearBufferuiv(k.COLOR,0,b)):(w[0]=it,w[1]=Je,w[2]=Ye,w[3]=ke,k.clearBufferiv(k.COLOR,0,w))}else oe|=k.COLOR_BUFFER_BIT}Q&&(oe|=k.DEPTH_BUFFER_BIT),re&&(oe|=k.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),k.clear(oe)},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(){t.removeEventListener("webglcontextlost",Ve,!1),t.removeEventListener("webglcontextrestored",Ce,!1),t.removeEventListener("webglcontextcreationerror",Se,!1),_e.dispose(),Ae.dispose(),Le.dispose(),Ke.dispose(),$t.dispose(),B.dispose(),de.dispose(),tt.dispose(),W.dispose(),fe.dispose(),we.dispose(),we.removeEventListener("sessionstart",vn),we.removeEventListener("sessionend",Nn),Xn.stop()};function Ve(D){D.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),P=!0}function Ce(){console.log("THREE.WebGLRenderer: Context Restored."),P=!1;const D=vt.autoReset,Q=Ge.enabled,re=Ge.autoUpdate,oe=Ge.needsUpdate,$=Ge.type;Pe(),vt.autoReset=D,Ge.enabled=Q,Ge.autoUpdate=re,Ge.needsUpdate=oe,Ge.type=$}function Se(D){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",D.statusMessage)}function Xe(D){const Q=D.target;Q.removeEventListener("dispose",Xe),lt(Q)}function lt(D){It(D),Ke.remove(D)}function It(D){const Q=Ke.get(D).programs;Q!==void 0&&(Q.forEach(function(re){fe.releaseProgram(re)}),D.isShaderMaterial&&fe.releaseShaderCache(D))}this.renderBufferDirect=function(D,Q,re,oe,$,Ne){Q===null&&(Q=Et);const Oe=$.isMesh&&$.matrixWorld.determinant()<0,je=Fa(D,Q,re,oe,$);He.setMaterial(oe,Oe);let ke=re.index,it=1;if(oe.wireframe===!0){if(ke=J.getWireframeAttribute(re),ke===void 0)return;it=2}const Je=re.drawRange,Ye=re.attributes.position;let pt=Je.start*it,Pt=(Je.start+Je.count)*it;Ne!==null&&(pt=Math.max(pt,Ne.start*it),Pt=Math.min(Pt,(Ne.start+Ne.count)*it)),ke!==null?(pt=Math.max(pt,0),Pt=Math.min(Pt,ke.count)):Ye!=null&&(pt=Math.max(pt,0),Pt=Math.min(Pt,Ye.count));const Zt=Pt-pt;if(Zt<0||Zt===1/0)return;tt.setup($,oe,je,re,ke);let _t,Ot=Be;if(ke!==null&&(_t=C.get(ke),Ot=We,Ot.setIndex(_t)),$.isMesh)oe.wireframe===!0?(He.setLineWidth(oe.wireframeLinewidth*gt()),Ot.setMode(k.LINES)):Ot.setMode(k.TRIANGLES);else if($.isLine){let $e=oe.linewidth;$e===void 0&&($e=1),He.setLineWidth($e*gt()),$.isLineSegments?Ot.setMode(k.LINES):$.isLineLoop?Ot.setMode(k.LINE_LOOP):Ot.setMode(k.LINE_STRIP)}else $.isPoints?Ot.setMode(k.POINTS):$.isSprite&&Ot.setMode(k.TRIANGLES);if($.isBatchedMesh)if($._multiDrawInstances!==null)bo("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Ot.renderMultiDrawInstances($._multiDrawStarts,$._multiDrawCounts,$._multiDrawCount,$._multiDrawInstances);else if(ft.get("WEBGL_multi_draw"))Ot.renderMultiDraw($._multiDrawStarts,$._multiDrawCounts,$._multiDrawCount);else{const $e=$._multiDrawStarts,zt=$._multiDrawCounts,wt=$._multiDrawCount,En=ke?C.get(ke).bytesPerElement:1,Ks=Ke.get(oe).currentProgram.getUniforms();for(let qt=0;qt<wt;qt++)Ks.setValue(k,"_gl_DrawID",qt),Ot.render($e[qt]/En,zt[qt])}else if($.isInstancedMesh)Ot.renderInstances(pt,Zt,$.count);else if(re.isInstancedBufferGeometry){const $e=re._maxInstanceCount!==void 0?re._maxInstanceCount:1/0,zt=Math.min(re.instanceCount,$e);Ot.renderInstances(pt,Zt,zt)}else Ot.render(pt,Zt)};function Rt(D,Q,re){D.transparent===!0&&D.side===Ui&&D.forceSinglePass===!1?(D.side=ei,D.needsUpdate=!0,Ys(D,Q,re),D.side=Na,D.needsUpdate=!0,Ys(D,Q,re),D.side=Ui):Ys(D,Q,re)}this.compile=function(D,Q,re=null){re===null&&(re=D),S=Le.get(re),S.init(Q),T.push(S),re.traverseVisible(function($){$.isLight&&$.layers.test(Q.layers)&&(S.pushLight($),$.castShadow&&S.pushShadow($))}),D!==re&&D.traverseVisible(function($){$.isLight&&$.layers.test(Q.layers)&&(S.pushLight($),$.castShadow&&S.pushShadow($))}),S.setupLights();const oe=new Set;return D.traverse(function($){if(!($.isMesh||$.isPoints||$.isLine||$.isSprite))return;const Ne=$.material;if(Ne)if(Array.isArray(Ne))for(let Oe=0;Oe<Ne.length;Oe++){const je=Ne[Oe];Rt(je,re,$),oe.add(je)}else Rt(Ne,re,$),oe.add(Ne)}),S=T.pop(),oe},this.compileAsync=function(D,Q,re=null){const oe=this.compile(D,Q,re);return new Promise($=>{function Ne(){if(oe.forEach(function(Oe){Ke.get(Oe).currentProgram.isReady()&&oe.delete(Oe)}),oe.size===0){$(D);return}setTimeout(Ne,10)}ft.get("KHR_parallel_shader_compile")!==null?Ne():setTimeout(Ne,10)})};let ni=null;function bn(D){ni&&ni(D)}function vn(){Xn.stop()}function Nn(){Xn.start()}const Xn=new k_;Xn.setAnimationLoop(bn),typeof self<"u"&&Xn.setContext(self),this.setAnimationLoop=function(D){ni=D,we.setAnimationLoop(D),D===null?Xn.stop():Xn.start()},we.addEventListener("sessionstart",vn),we.addEventListener("sessionend",Nn),this.render=function(D,Q){if(Q!==void 0&&Q.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(P===!0)return;if(D.matrixWorldAutoUpdate===!0&&D.updateMatrixWorld(),Q.parent===null&&Q.matrixWorldAutoUpdate===!0&&Q.updateMatrixWorld(),we.enabled===!0&&we.isPresenting===!0&&(we.cameraAutoUpdate===!0&&we.updateCamera(Q),Q=we.getCamera()),D.isScene===!0&&D.onBeforeRender(R,D,Q,V),S=Le.get(D,T.length),S.init(Q),T.push(S),Ue.multiplyMatrices(Q.projectionMatrix,Q.matrixWorldInverse),te.setFromProjectionMatrix(Ue),Ee=this.localClippingEnabled,xe=ze.init(this.clippingPlanes,Ee),M=Ae.get(D,N.length),M.init(),N.push(M),we.enabled===!0&&we.isPresenting===!0){const Ne=R.xr.getDepthSensingMesh();Ne!==null&&Ia(Ne,Q,-1/0,R.sortObjects)}Ia(D,Q,0,R.sortObjects),M.finish(),R.sortObjects===!0&&M.sort(he,O),Ut=we.enabled===!1||we.isPresenting===!1||we.hasDepthSensing()===!1,Ut&&_e.addToRenderList(M,D),this.info.render.frame++,xe===!0&&ze.beginShadows();const re=S.state.shadowsArray;Ge.render(re,D,Q),xe===!0&&ze.endShadows(),this.info.autoReset===!0&&this.info.reset();const oe=M.opaque,$=M.transmissive;if(S.setupLights(),Q.isArrayCamera){const Ne=Q.cameras;if($.length>0)for(let Oe=0,je=Ne.length;Oe<je;Oe++){const ke=Ne[Oe];Ac(oe,$,D,ke)}Ut&&_e.render(D);for(let Oe=0,je=Ne.length;Oe<je;Oe++){const ke=Ne[Oe];Cc(M,D,ke,ke.viewport)}}else $.length>0&&Ac(oe,$,D,Q),Ut&&_e.render(D),Cc(M,D,Q);V!==null&&F===0&&(ot.updateMultisampleRenderTarget(V),ot.updateRenderTargetMipmap(V)),D.isScene===!0&&D.onAfterRender(R,D,Q),tt.resetDefaultState(),U=-1,L=null,T.pop(),T.length>0?(S=T[T.length-1],xe===!0&&ze.setGlobalState(R.clippingPlanes,S.state.camera)):S=null,N.pop(),N.length>0?M=N[N.length-1]:M=null};function Ia(D,Q,re,oe){if(D.visible===!1)return;if(D.layers.test(Q.layers)){if(D.isGroup)re=D.renderOrder;else if(D.isLOD)D.autoUpdate===!0&&D.update(Q);else if(D.isLight)S.pushLight(D),D.castShadow&&S.pushShadow(D);else if(D.isSprite){if(!D.frustumCulled||te.intersectsSprite(D)){oe&&Qe.setFromMatrixPosition(D.matrixWorld).applyMatrix4(Ue);const Oe=de.update(D),je=D.material;je.visible&&M.push(D,Oe,je,re,Qe.z,null)}}else if((D.isMesh||D.isLine||D.isPoints)&&(!D.frustumCulled||te.intersectsObject(D))){const Oe=de.update(D),je=D.material;if(oe&&(D.boundingSphere!==void 0?(D.boundingSphere===null&&D.computeBoundingSphere(),Qe.copy(D.boundingSphere.center)):(Oe.boundingSphere===null&&Oe.computeBoundingSphere(),Qe.copy(Oe.boundingSphere.center)),Qe.applyM
vendor: 11,310 bytes, line 3886
3886atrix4(D.matrixWorld).applyMatrix4(Ue)),Array.isArray(je)){const ke=Oe.groups;for(let it=0,Je=ke.length;it<Je;it++){const Ye=ke[it],pt=je[Ye.materialIndex];pt&&pt.visible&&M.push(D,Oe,pt,re,Qe.z,Ye)}}else je.visible&&M.push(D,Oe,je,re,Qe.z,null)}}const Ne=D.children;for(let Oe=0,je=Ne.length;Oe<je;Oe++)Ia(Ne[Oe],Q,re,oe)}function Cc(D,Q,re,oe){const $=D.opaque,Ne=D.transmissive,Oe=D.transparent;S.setupLightsView(re),xe===!0&&ze.setGlobalState(R.clippingPlanes,re),oe&&He.viewport(z.copy(oe)),$.length>0&&Ba($,Q,re),Ne.length>0&&Ba(Ne,Q,re),Oe.length>0&&Ba(Oe,Q,re),He.buffers.depth.setTest(!0),He.buffers.depth.setMask(!0),He.buffers.color.setMask(!0),He.setPolygonOffset(!1)}function Ac(D,Q,re,oe){if((re.isScene===!0?re.overrideMaterial:null)!==null)return;S.state.transmissionRenderTarget[oe.id]===void 0&&(S.state.transmissionRenderTarget[oe.id]=new Mr(1,1,{generateMipmaps:!0,type:ft.has("EXT_color_buffer_half_float")||ft.has("EXT_color_buffer_float")?xc:Us,minFilter:gr,samples:4,stencilBuffer:l,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Lt.workingColorSpace}));const Ne=S.state.transmissionRenderTarget[oe.id],Oe=oe.viewport||z;Ne.setSize(Oe.z*R.transmissionResolutionScale,Oe.w*R.transmissionResolutionScale);const je=R.getRenderTarget(),ke=R.getActiveCubeFace(),it=R.getActiveMipmapLevel();R.setRenderTarget(Ne),R.getClearColor(ge),me=R.getClearAlpha(),me<1&&R.setClearColor(16777215,.5),R.clear(),Ut&&_e.render(re);const Je=R.toneMapping;R.toneMapping=Ra;const Ye=oe.viewport;if(oe.viewport!==void 0&&(oe.viewport=void 0),S.setupLightsView(oe),xe===!0&&ze.setGlobalState(R.clippingPlanes,oe),Ba(D,re,oe),ot.updateMultisampleRenderTarget(Ne),ot.updateRenderTargetMipmap(Ne),ft.has("WEBGL_multisampled_render_to_texture")===!1){let pt=!1;for(let Pt=0,Zt=Q.length;Pt<Zt;Pt++){const _t=Q[Pt],Ot=_t.object,$e=_t.geometry,zt=_t.material,wt=_t.group;if(zt.side===Ui&&Ot.layers.test(oe.layers)){const En=zt.side;zt.side=ei,zt.needsUpdate=!0,qs(Ot,re,oe,$e,zt,wt),zt.side=En,zt.needsUpdate=!0,pt=!0}}pt===!0&&(ot.updateMultisampleRenderTarget(Ne),ot.updateRenderTargetMipmap(Ne))}R.setRenderTarget(je,ke,it),R.setClearColor(ge,me),Ye!==void 0&&(oe.viewport=Ye),R.toneMapping=Je}function Ba(D,Q,re){const oe=Q.isScene===!0?Q.overrideMaterial:null;for(let $=0,Ne=D.length;$<Ne;$++){const Oe=D[$],je=Oe.object,ke=Oe.geometry,it=Oe.group;let Je=Oe.material;Je.allowOverride===!0&&oe!==null&&(Je=oe),je.layers.test(re.layers)&&qs(je,Q,re,ke,Je,it)}}function qs(D,Q,re,oe,$,Ne){D.onBeforeRender(R,Q,re,oe,$,Ne),D.modelViewMatrix.multiplyMatrices(re.matrixWorldInverse,D.matrixWorld),D.normalMatrix.getNormalMatrix(D.modelViewMatrix),$.onBeforeRender(R,Q,re,oe,D,Ne),$.transparent===!0&&$.side===Ui&&$.forceSinglePass===!1?($.side=ei,$.needsUpdate=!0,R.renderBufferDirect(re,Q,oe,$,D,Ne),$.side=Na,$.needsUpdate=!0,R.renderBufferDirect(re,Q,oe,$,D,Ne),$.side=Ui):R.renderBufferDirect(re,Q,oe,$,D,Ne),D.onAfterRender(R,Q,re,oe,$,Ne)}function Ys(D,Q,re){Q.isScene!==!0&&(Q=Et);const oe=Ke.get(D),$=S.state.lights,Ne=S.state.shadowsArray,Oe=$.state.version,je=fe.getParameters(D,$.state,Ne,Q,re),ke=fe.getProgramCacheKey(je);let it=oe.programs;oe.environment=D.isMeshStandardMaterial?Q.environment:null,oe.fog=Q.fog,oe.envMap=(D.isMeshStandardMaterial?B:$t).get(D.envMap||oe.environment),oe.envMapRotation=oe.environment!==null&&D.envMap===null?Q.environmentRotation:D.envMapRotation,it===void 0&&(D.addEventListener("dispose",Xe),it=new Map,oe.programs=it);let Je=it.get(ke);if(Je!==void 0){if(oe.currentProgram===Je&&oe.lightsStateVersion===Oe)return is(D,je),Je}else je.uniforms=fe.getUniforms(D),D.onBeforeCompile(je,R),Je=fe.acquireProgram(je,ke),it.set(ke,Je),oe.uniforms=je.uniforms;const Ye=oe.uniforms;return(!D.isShaderMaterial&&!D.isRawShaderMaterial||D.clipping===!0)&&(Ye.clippingPlanes=ze.uniform),is(D,je),oe.needsLights=un(D),oe.lightsStateVersion=Oe,oe.needsLights&&(Ye.ambientLightColor.value=$.state.ambient,Ye.lightProbe.value=$.state.probe,Ye.directionalLights.value=$.state.directional,Ye.directionalLightShadows.value=$.state.directionalShadow,Ye.spotLights.value=$.state.spot,Ye.spotLightShadows.value=$.state.spotShadow,Ye.rectAreaLights.value=$.state.rectArea,Ye.ltc_1.value=$.state.rectAreaLTC1,Ye.ltc_2.value=$.state.rectAreaLTC2,Ye.pointLights.value=$.state.point,Ye.pointLightShadows.value=$.state.pointShadow,Ye.hemisphereLights.value=$.state.hemi,Ye.directionalShadowMap.value=$.state.directionalShadowMap,Ye.directionalShadowMatrix.value=$.state.directionalShadowMatrix,Ye.spotShadowMap.value=$.state.spotShadowMap,Ye.spotLightMatrix.value=$.state.spotLightMatrix,Ye.spotLightMap.value=$.state.spotLightMap,Ye.pointShadowMap.value=$.state.pointShadowMap,Ye.pointShadowMatrix.value=$.state.pointShadowMatrix),oe.currentProgram=Je,oe.uniformsList=null,Je}function ns(D){if(D.uniformsList===null){const Q=D.currentProgram.getUniforms();D.uniformsList=vf.seqWithValue(Q.seq,D.uniforms)}return D.uniformsList}function is(D,Q){const re=Ke.get(D);re.outputColorSpace=Q.outputColorSpace,re.batching=Q.batching,re.batchingColor=Q.batchingColor,re.instancing=Q.instancing,re.instancingColor=Q.instancingColor,re.instancingMorph=Q.instancingMorph,re.skinning=Q.skinning,re.morphTargets=Q.morphTargets,re.morphNormals=Q.morphNormals,re.morphColors=Q.morphColors,re.morphTargetsCount=Q.morphTargetsCount,re.numClippingPlanes=Q.numClippingPlanes,re.numIntersection=Q.numClipIntersection,re.vertexAlphas=Q.vertexAlphas,re.vertexTangents=Q.vertexTangents,re.toneMapping=Q.toneMapping}function Fa(D,Q,re,oe,$){Q.isScene!==!0&&(Q=Et),ot.resetTextureUnits();const Ne=Q.fog,Oe=oe.isMeshStandardMaterial?Q.environment:null,je=V===null?R.outputColorSpace:V.isXRRenderTarget===!0?V.texture.colorSpace:Ro,ke=(oe.isMeshStandardMaterial?B:$t).get(oe.envMap||Oe),it=oe.vertexColors===!0&&!!re.attributes.color&&re.attributes.color.itemSize===4,Je=!!re.attributes.tangent&&(!!oe.normalMap||oe.anisotropy>0),Ye=!!re.morphAttributes.position,pt=!!re.morphAttributes.normal,Pt=!!re.morphAttributes.color;let Zt=Ra;oe.toneMapped&&(V===null||V.isXRRenderTarget===!0)&&(Zt=R.toneMapping);const _t=re.morphAttributes.position||re.morphAttributes.normal||re.morphAttributes.color,Ot=_t!==void 0?_t.length:0,$e=Ke.get(oe),zt=S.state.lights;if(xe===!0&&(Ee===!0||D!==L)){const wn=D===L&&oe.id===U;ze.setState(oe,D,wn)}let wt=!1;oe.version===$e.__version?($e.needsLights&&$e.lightsStateVersion!==zt.state.version||$e.outputColorSpace!==je||$.isBatchedMesh&&$e.batching===!1||!$.isBatchedMesh&&$e.batching===!0||$.isBatchedMesh&&$e.batchingColor===!0&&$.colorTexture===null||$.isBatchedMesh&&$e.batchingColor===!1&&$.colorTexture!==null||$.isInstancedMesh&&$e.instancing===!1||!$.isInstancedMesh&&$e.instancing===!0||$.isSkinnedMesh&&$e.skinning===!1||!$.isSkinnedMesh&&$e.skinning===!0||$.isInstancedMesh&&$e.instancingColor===!0&&$.instanceColor===null||$.isInstancedMesh&&$e.instancingColor===!1&&$.instanceColor!==null||$.isInstancedMesh&&$e.instancingMorph===!0&&$.morphTexture===null||$.isInstancedMesh&&$e.instancingMorph===!1&&$.morphTexture!==null||$e.envMap!==ke||oe.fog===!0&&$e.fog!==Ne||$e.numClippingPlanes!==void 0&&($e.numClippingPlanes!==ze.numPlanes||$e.numIntersection!==ze.numIntersection)||$e.vertexAlphas!==it||$e.vertexTangents!==Je||$e.morphTargets!==Ye||$e.morphNormals!==pt||$e.morphColors!==Pt||$e.toneMapping!==Zt||$e.morphTargetsCount!==Ot)&&(wt=!0):(wt=!0,$e.__version=oe.version);let En=$e.currentProgram;wt===!0&&(En=Ys(oe,Q,$));let Ks=!1,qt=!1,as=!1;const Gt=En.getUniforms(),In=$e.uniforms;if(He.useProgram(En.program)&&(Ks=!0,qt=!0,as=!0),oe.id!==U&&(U=oe.id,qt=!0),Ks||L!==D){He.buffers.depth.getReversed()?(Te.copy(D.projectionMatrix),Ab(Te),Rb(Te),Gt.setValue(k,"projectionMatrix",Te)):Gt.setValue(k,"projectionMatrix",D.projectionMatrix),Gt.setValue(k,"viewMatrix",D.matrixWorldInverse);const Ln=Gt.map.cameraPosition;Ln!==void 0&&Ln.setValue(k,ut.setFromMatrixPosition(D.matrixWorld)),rt.logarithmicDepthBuffer&&Gt.setValue(k,"logDepthBufFC",2/(Math.log(D.far+1)/Math.LN2)),(oe.isMeshPhongMaterial||oe.isMeshToonMaterial||oe.isMeshLambertMaterial||oe.isMeshBasicMaterial||oe.isMeshStandardMaterial||oe.isShaderMaterial)&&Gt.setValue(k,"isOrthographic",D.isOrthographicCamera===!0),L!==D&&(L=D,qt=!0,as=!0)}if($.isSkinnedMesh){Gt.setOptional(k,$,"bindMatrix"),Gt.setOptional(k,$,"bindMatrixInverse");const wn=$.skeleton;wn&&(wn.boneTexture===null&&wn.computeBoneTexture(),Gt.setValue(k,"boneTexture",wn.boneTexture,ot))}$.isBatchedMesh&&(Gt.setOptional(k,$,"batchingTexture"),Gt.setValue(k,"batchingTexture",$._matricesTexture,ot),Gt.setOptional(k,$,"batchingIdTexture"),Gt.setValue(k,"batchingIdTexture",$._indirectTexture,ot),Gt.setOptional(k,$,"batchingColorTexture"),$._colorsTexture!==null&&Gt.setValue(k,"batchingColorTexture",$._colorsTexture,ot));const xn=re.morphAttributes;if((xn.position!==void 0||xn.normal!==void 0||xn.color!==void 0)&&Re.update($,re,En),(qt||$e.receiveShadow!==$.receiveShadow)&&($e.receiveShadow=$.receiveShadow,Gt.setValue(k,"receiveShadow",$.receiveShadow)),oe.isMeshGouraudMaterial&&oe.envMap!==null&&(In.envMap.value=ke,In.flipEnvMap.value=ke.isCubeTexture&&ke.isRenderTargetTexture===!1?-1:1),oe.isMeshStandardMaterial&&oe.envMap===null&&Q.environment!==null&&(In.envMapIntensity.value=Q.environmentIntensity),qt&&(Gt.setValue(k,"toneMappingExposure",R.toneMappingExposure),$e.needsLights&&Zs(In,as),Ne&&oe.fog===!0&&q.refreshFogUniforms(In,Ne),q.refreshMaterialUniforms(In,oe,Y,Z,S.state.transmissionRenderTarget[D.id]),vf.upload(k,ns($e),In,ot)),oe.isShaderMaterial&&oe.uniformsNeedUpdate===!0&&(vf.upload(k,ns($e),In,ot),oe.uniformsNeedUpdate=!1),oe.isSpriteMaterial&&Gt.setValue(k,"center",$.center),Gt.setValue(k,"modelViewMatrix",$.modelViewMatrix),Gt.setValue(k,"normalMatrix",$.normalMatrix),Gt.setValue(k,"modelMatrix",$.matrixWorld),oe.isShaderMaterial||oe.isRawShaderMaterial){const wn=oe.uniformsGroups;for(let Ln=0,Fi=wn.length;Ln<Fi;Ln++){const rs=wn[Ln];W.update(rs,En),W.bind(rs,En)}}return En}function Zs(D,Q){D.ambientLightColor.needsUpdate=Q,D.lightProbe.needsUpdate=Q,D.directionalLights.needsUpdate=Q,D.directionalLightShadows.needsUpdate=Q,D.pointLights.needsUpdate=Q,D.pointLightShadows.needsUpdate=Q,D.spotLights.needsUpdate=Q,D.spotLightShadows.needsUpdate=Q,D.rectAreaLights.needsUpdate=Q,D.hemisphereLights.needsUpdate=Q}function un(D){return D.isMeshLambertMaterial||D.isMeshToonMaterial||D.isMeshPhongMaterial||D.isMeshStandardMaterial||D.isShadowMaterial||D.isShaderMaterial&&D.lights===!0}this.getActiveCubeFace=function(){return I},this.getActiveMipmapLevel=function(){return F},this.getRenderTarget=function(){return V},this.setRenderTargetTextures=function(D,Q,re){const oe=Ke.get(D);oe.__autoAllocateDepthBuffer=D.resolveDepthBuffer===!1,oe.__autoAllocateDepthBuffer===!1&&(oe.__useRenderToTexture=!1),Ke.get(D.texture).__webglTexture=Q,Ke.get(D.depthTexture).__webglTexture=oe.__autoAllocateDepthBuffer?void 0:re,oe.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(D,Q){const re=Ke.get(D);re.__webglFramebuffer=Q,re.__useDefaultFramebuffer=Q===void 0};const Rc=k.createFramebuffer();this.setRenderTarget=function(D,Q=0,re=0){V=D,I=Q,F=re;let oe=!0,$=null,Ne=!1,Oe=!1;if(D){const ke=Ke.get(D);if(ke.__useDefaultFramebuffer!==void 0)He.bindFramebuffer(k.FRAMEBUFFER,null),oe=!1;
vendor: 4,536 bytes, line 3886
3886else if(ke.__webglFramebuffer===void 0)ot.setupRenderTarget(D);else if(ke.__hasExternalTextures)ot.rebindTextures(D,Ke.get(D.texture).__webglTexture,Ke.get(D.depthTexture).__webglTexture);else if(D.depthBuffer){const Ye=D.depthTexture;if(ke.__boundDepthTexture!==Ye){if(Ye!==null&&Ke.has(Ye)&&(D.width!==Ye.image.width||D.height!==Ye.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");ot.setupDepthRenderbuffer(D)}}const it=D.texture;(it.isData3DTexture||it.isDataArrayTexture||it.isCompressedArrayTexture)&&(Oe=!0);const Je=Ke.get(D).__webglFramebuffer;D.isWebGLCubeRenderTarget?(Array.isArray(Je[Q])?$=Je[Q][re]:$=Je[Q],Ne=!0):D.samples>0&&ot.useMultisampledRTT(D)===!1?$=Ke.get(D).__webglMultisampledFramebuffer:Array.isArray(Je)?$=Je[re]:$=Je,z.copy(D.viewport),ce.copy(D.scissor),ue=D.scissorTest}else z.copy(ee).multiplyScalar(Y).floor(),ce.copy(Me).multiplyScalar(Y).floor(),ue=be;if(re!==0&&($=Rc),He.bindFramebuffer(k.FRAMEBUFFER,$)&&oe&&He.drawBuffers(D,$),He.viewport(z),He.scissor(ce),He.setScissorTest(ue),Ne){const ke=Ke.get(D.texture);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_CUBE_MAP_POSITIVE_X+Q,ke.__webglTexture,re)}else if(Oe){const ke=Ke.get(D.texture),it=Q;k.framebufferTextureLayer(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,ke.__webglTexture,re,it)}else if(D!==null&&re!==0){const ke=Ke.get(D.texture);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,ke.__webglTexture,re)}U=-1},this.readRenderTargetPixels=function(D,Q,re,oe,$,Ne,Oe,je=0){if(!(D&&D.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ke=Ke.get(D).__webglFramebuffer;if(D.isWebGLCubeRenderTarget&&Oe!==void 0&&(ke=ke[Oe]),ke){He.bindFramebuffer(k.FRAMEBUFFER,ke);try{const it=D.textures[je],Je=it.format,Ye=it.type;if(!rt.textureFormatReadable(Je)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!rt.textureTypeReadable(Ye)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}Q>=0&&Q<=D.width-oe&&re>=0&&re<=D.height-$&&(D.textures.length>1&&k.readBuffer(k.COLOR_ATTACHMENT0+je),k.readPixels(Q,re,oe,$,De.convert(Je),De.convert(Ye),Ne))}finally{const it=V!==null?Ke.get(V).__webglFramebuffer:null;He.bindFramebuffer(k.FRAMEBUFFER,it)}}},this.readRenderTargetPixelsAsync=async function(D,Q,re,oe,$,Ne,Oe,je=0){if(!(D&&D.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let ke=Ke.get(D).__webglFramebuffer;if(D.isWebGLCubeRenderTarget&&Oe!==void 0&&(ke=ke[Oe]),ke)if(Q>=0&&Q<=D.width-oe&&re>=0&&re<=D.height-$){He.bindFramebuffer(k.FRAMEBUFFER,ke);const it=D.textures[je],Je=it.format,Ye=it.type;if(!rt.textureFormatReadable(Je))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!rt.textureTypeReadable(Ye))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const pt=k.createBuffer();k.bindBuffer(k.PIXEL_PACK_BUFFER,pt),k.bufferData(k.PIXEL_PACK_BUFFER,Ne.byteLength,k.STREAM_READ),D.textures.length>1&&k.readBuffer(k.COLOR_ATTACHMENT0+je),k.readPixels(Q,re,oe,$,De.convert(Je),De.convert(Ye),0);const Pt=V!==null?Ke.get(V).__webglFramebuffer:null;He.bindFramebuffer(k.FRAMEBUFFER,Pt);const Zt=k.fenceSync(k.SYNC_GPU_COMMANDS_COMPLETE,0);return k.flush(),await Cb(k,Zt,4),k.bindBuffer(k.PIXEL_PACK_BUFFER,pt),k.getBufferSubData(k.PIXEL_PACK_BUFFER,0,Ne),k.deleteBuffer(pt),k.deleteSync(Zt),Ne}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(D,Q=null,re=0){const oe=Math.pow(2,-re),$=Math.floor(D.image.width*oe),Ne=Math.floor(D.image.height*oe),Oe=Q!==null?Q.x:0,je=Q!==null?Q.y:0;ot.setTexture2D(D,0),k.copyTexSubImage2D(k.TEXTURE_2D,re,0,0,Oe,je,$,Ne),He.unbindTexture()};const Nc=k.createFramebuffer(),ss=k.createFramebuffer();this.copyTextureToTexture=function(D,Q,re=null,oe=null,$=0,Ne=null){Ne===null&&($!==0?(bo("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Ne=$,$=0):Ne=0);let Oe,je,ke,it,Je,Ye,pt,Pt,Zt;const _t=D.isCompressedTexture?D.mipmaps[Ne]:D.image;
vendor: 4,278 bytes, line 3886
3886if(re!==null)Oe=re.max.x-re.min.x,je=re.max.y-re.min.y,ke=re.isBox3?re.max.z-re.min.z:1,it=re.min.x,Je=re.min.y,Ye=re.isBox3?re.min.z:0;else{const xn=Math.pow(2,-$);Oe=Math.floor(_t.width*xn),je=Math.floor(_t.height*xn),D.isDataArrayTexture?ke=_t.depth:D.isData3DTexture?ke=Math.floor(_t.depth*xn):ke=1,it=0,Je=0,Ye=0}oe!==null?(pt=oe.x,Pt=oe.y,Zt=oe.z):(pt=0,Pt=0,Zt=0);const Ot=De.convert(Q.format),$e=De.convert(Q.type);let zt;Q.isData3DTexture?(ot.setTexture3D(Q,0),zt=k.TEXTURE_3D):Q.isDataArrayTexture||Q.isCompressedArrayTexture?(ot.setTexture2DArray(Q,0),zt=k.TEXTURE_2D_ARRAY):(ot.setTexture2D(Q,0),zt=k.TEXTURE_2D),k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,Q.flipY),k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Q.premultiplyAlpha),k.pixelStorei(k.UNPACK_ALIGNMENT,Q.unpackAlignment);const wt=k.getParameter(k.UNPACK_ROW_LENGTH),En=k.getParameter(k.UNPACK_IMAGE_HEIGHT),Ks=k.getParameter(k.UNPACK_SKIP_PIXELS),qt=k.getParameter(k.UNPACK_SKIP_ROWS),as=k.getParameter(k.UNPACK_SKIP_IMAGES);k.pixelStorei(k.UNPACK_ROW_LENGTH,_t.width),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,_t.height),k.pixelStorei(k.UNPACK_SKIP_PIXELS,it),k.pixelStorei(k.UNPACK_SKIP_ROWS,Je),k.pixelStorei(k.UNPACK_SKIP_IMAGES,Ye);const Gt=D.isDataArrayTexture||D.isData3DTexture,In=Q.isDataArrayTexture||Q.isData3DTexture;if(D.isDepthTexture){const xn=Ke.get(D),wn=Ke.get(Q),Ln=Ke.get(xn.__renderTarget),Fi=Ke.get(wn.__renderTarget);He.bindFramebuffer(k.READ_FRAMEBUFFER,Ln.__webglFramebuffer),He.bindFramebuffer(k.DRAW_FRAMEBUFFER,Fi.__webglFramebuffer);for(let rs=0;rs<ke;rs++)Gt&&(k.framebufferTextureLayer(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,Ke.get(D).__webglTexture,$,Ye+rs),k.framebufferTextureLayer(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,Ke.get(Q).__webglTexture,Ne,Zt+rs)),k.blitFramebuffer(it,Je,Oe,je,pt,Pt,Oe,je,k.DEPTH_BUFFER_BIT,k.NEAREST);He.bindFramebuffer(k.READ_FRAMEBUFFER,null),He.bindFramebuffer(k.DRAW_FRAMEBUFFER,null)}else if($!==0||D.isRenderTargetTexture||Ke.has(D)){const xn=Ke.get(D),wn=Ke.get(Q);He.bindFramebuffer(k.READ_FRAMEBUFFER,Nc),He.bindFramebuffer(k.DRAW_FRAMEBUFFER,ss);for(let Ln=0;Ln<ke;Ln++)Gt?k.framebufferTextureLayer(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,xn.__webglTexture,$,Ye+Ln):k.framebufferTexture2D(k.READ_FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,xn.__webglTexture,$),In?k.framebufferTextureLayer(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,wn.__webglTexture,Ne,Zt+Ln):k.framebufferTexture2D(k.DRAW_FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,wn.__webglTexture,Ne),$!==0?k.blitFramebuffer(it,Je,Oe,je,pt,Pt,Oe,je,k.COLOR_BUFFER_BIT,k.NEAREST):In?k.copyTexSubImage3D(zt,Ne,pt,Pt,Zt+Ln,it,Je,Oe,je):k.copyTexSubImage2D(zt,Ne,pt,Pt,it,Je,Oe,je);He.bindFramebuffer(k.READ_FRAMEBUFFER,null),He.bindFramebuffer(k.DRAW_FRAMEBUFFER,null)}else In?D.isDataTexture||D.isData3DTexture?k.texSubImage3D(zt,Ne,pt,Pt,Zt,Oe,je,ke,Ot,$e,_t.data):Q.isCompressedArrayTexture?k.compressedTexSubImage3D(zt,Ne,pt,Pt,Zt,Oe,je,ke,Ot,_t.data):k.texSubImage3D(zt,Ne,pt,Pt,Zt,Oe,je,ke,Ot,$e,_t):D.isDataTexture?k.texSubImage2D(k.TEXTURE_2D,Ne,pt,Pt,Oe,je,Ot,$e,_t.data):D.isCompressedTexture?k.compressedTexSubImage2D(k.TEXTURE_2D,Ne,pt,Pt,_t.width,_t.height,Ot,_t.data):k.texSubImage2D(k.TEXTURE_2D,Ne,pt,Pt,Oe,je,Ot,$e,_t);k.pixelStorei(k.UNPACK_ROW_LENGTH,wt),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,En),k.pixelStorei(k.UNPACK_SKIP_PIXELS,Ks),k.pixelStorei(k.UNPACK_SKIP_ROWS,qt),k.pixelStorei(k.UNPACK_SKIP_IMAGES,as),Ne===0&&Q.generateMipmaps&&k.generateMipmap(zt),He.unbindTexture()},this.copyTextureToTexture3D=function(D,Q,re=null,oe=null,$=0){return bo('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(D,Q,re,oe,$)},this.initRenderTarget=function(D){Ke.get(D).__webglFramebuffer===void 0&&ot.setupRenderTarget(D)},this.initTexture=function(D){D.isCubeTexture?ot.setTextureCube(D,0):D.isData3DTexture?ot.setTexture3D(D,0):D.isDataArrayTexture||D.isCompressedArrayTexture?ot.setTexture2DArray(D,0):ot.setTexture2D(D,0),He.unbindTexture()},this.resetState=function(){I=0,F=0,V=null,He.reset(),tt.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Rs}get outputColorSpace(){return this._outputColorSpace}
3886set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=Lt._getDrawingBufferColorSpace(e),t.unpackColorSpace=Lt._getUnpackColorSpace()}}const q7=`precision highp float; 3887 3888uniform float uTime; 3889 3890uniform float uWavesAmplitude; 3891uniform float uWavesSpeed; 3892uniform float uWavesFrequency; 3893uniform float uWavesPersistence; 3894uniform float uWavesLacunarity; 3895uniform float uWavesIterations; 3896 3897varying vec3 vNormal; 3898varying vec3 vWorldPosition; 3899 3900// Simplex 3D Noise 3901// by Ian McEwan, Stefan Gustavson (https://github.com/stegu/webgl-noise) 3902// 3903vec4 permute(vec4 x) { 3904 return mod(((x * 34.0) + 1.0) * x, 289.0); 3905} 3906vec4 taylorInvSqrt(vec4 r) { 3907 return 1.79284291400159 - 0.85373472095314 * r; 3908} 3909 3910// Simplex 2D noise 3911// 3912vec3 permute(vec3 x) { 3913 return mod(((x * 34.0) + 1.0) * x, 289.0); 3914} 3915 3916float snoise(vec2 v) { 3917 const vec4 C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439); 3918 vec2 i = floor(v + dot(v, C.yy)); 3919 vec2 x0 = v - i + dot(i, C.xx); 3920 vec2 i1; 3921 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); 3922 vec4 x12 = x0.xyxy + C.xxzz; 3923 x12.xy -= i1; 3924 i = mod(i, 289.0); 3925 vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0)); 3926 vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.0); 3927 m = m * m; 3928 m = m * m; 3929 vec3 x = 2.0 * fract(p * C.www) - 1.0; 3930 vec3 h = abs(x) - 0.5; 3931 vec3 ox = floor(x + 0.5); 3932 vec3 a0 = x - ox; 3933 m *= 1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h); 3934 vec3 g; 3935 g.x = a0.x * x0.x + h.x * x0.y; 3936 g.yz = a0.yz * x12.xz + h.yz * x12.yw; 3937 return 130.0 * dot(m, g); 3938} 3939 3940// Helper function to calculate elevation at any point 3941float getElevation(float x, float z) { 3942 vec2 pos = vec2(x, z); 3943 3944 float elevation = 0.0; 3945 float amplitude = 1.0; 3946 float frequency = uWavesFrequency; 3947 vec2 p = pos.xy; 3948 3949 for(float i = 0.0; i < uWavesIterations; i++) { 3950 float noiseValue = snoise(p * frequency + uTime * uWavesSpeed); 3951 elevation += amplitude * noiseValue; 3952 amplitude *= uWavesPersistence; 3953 frequency *= uWavesLacunarity; 3954 } 3955 3956 elevation *= uWavesAmplitude; 3957 3958 return elevation; 3959} 3960 3961void main() { 3962 vec4 modelPosition = modelMatrix * vec4(position, 1.0); 3963 3964 float elevation = getElevation(modelPosition.x, modelPosition.z); 3965 modelPosition.y += elevation; 3966 3967 // Calculate normal using partial derivatives 3968 float eps = 0.001; 3969 vec3 tangent = normalize(vec3(eps, getElevation(modelPosition.x - eps, modelPosition.z) - elevation, 0.0)); 3970 vec3 bitangent = normalize(vec3(0.0, getElevation(modelPosition.x, modelPosition.z - eps) - elevation, eps)); 3971 vec3 objectNormal = normalize(cross(tangent, bitangent)); 3972 3973 vNormal = objectNormal; 3974 vWorldPosition = modelPosition.xyz; 3975 3976 gl_Position = projectionMatrix * viewMatrix * modelPosition; 3977}`,Y7=`precision highp float; 3978 3979uniform float uOpacity; 3980 3981uniform vec3 uTroughColor; 3982uniform vec3 uSurfaceColor; 3983uniform vec3 uPeakColor; 3984 3985uniform float uPeakThreshold; 3986uniform float uPeakTransition; 3987uniform float uTroughThreshold; 3988uniform float uTroughTransition; 3989 3990uniform float uFresnelScale; 3991uniform float uFresnelPower; 3992 3993varying vec3 vNormal; 3994varying vec3 vWorldPosition; 3995 3996uniform samplerCube uEnvironmentMap; 3997 3998void main() { 3999 // Calculate vector from camera to the vertex 4000 vec3 viewDirection = normalize(vWorldPosition - cameraPosition); 4001 vec3 reflectedDirection = reflect(viewDirection, vNormal); 4002 reflectedDirection.x = -reflectedDirection.x; 4003 4004 // Sample environment map to get the reflected color 4005 vec4 reflectionColor = textureCube(uEnvironmentMap, reflectedDirection); 4006 4007 // Calculate fresnel effect 4008 float fresnel = uFresnelScale * pow(1.0 - clamp(dot(viewDirection, vNormal), 0.0, 1.0), uFresnelPower); 4009 4010 // Calculate elevation-based color 4011 float elevation = vWorldPosition.y; 4012 4013 // Calculate transition factors using smoothstep 4014 float peakFactor = smoothstep(uPeakThreshold - uPeakTransition, uPeakThreshold + uPeakTransition, elevation); 4015 float troughFactor = smoothstep(uTroughThreshold - uTroughTransition, uTroughThreshold + uTroughTransition, elevation); 4016 4017 // Mix between trough and surface colors based on trough transition
4018 vec3 mixedColor1 = mix(uTroughColor, uSurfaceColor, troughFactor); 4019 4020 // Mix between surface and peak colors based on peak transition 4021 vec3 mixedColor2 = mix(mixedColor1, uPeakColor, peakFactor); 4022 4023 // Mix the final color with the reflection color 4024 vec3 finalColor = mix(mixedColor2, reflectionColor.rgb, fresnel); 4025 4026 gl_FragColor = vec4(finalColor, uOpacity); 4027} 4028`;class Ws extends pi{constructor(e={}){super(),this.material=new Bi({vertexShader:q7,fragmentShader:Y7,uniforms:{uTime:{value:0},uOpacity:{value:.8},uEnvironmentMap:{value:e.environmentMap},uWavesAmplitude:{value:.025},uWavesFrequency:{value:1.07},uWavesPersistence:{value:.3},uWavesLacunarity:{value:2.18},uWavesIterations:{value:8},uWavesSpeed:{value:.4},uTroughColor:{value:new Fe("#186691")},uSurfaceColor:{value:new Fe("#9bd8c0")},uPeakColor:{value:new Fe("#bbd8e0")},uPeakThreshold:{value:.08},uPeakTransition:{value:.05},uTroughThreshold:{value:-.01},uTroughTransition:{value:.15},uFresnelScale:{value:.8},uFresnelPower:{value:.5}},transparent:!0,depthTest:!0,side:Ui}),this.geometry=new Bo(6,6,e.resolution||512,e.resolution||512),this.rotation.x=Math.PI*.5,this.position.y=0}update(e){this.material.uniforms.uTime.value=e}}const Z7=`varying vec2 vUv; 4029 4030void main() { 4031 vUv = uv; 4032 gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); 4033}`,K7=`uniform float uTime; 4034uniform sampler2D uTexture; 4035uniform vec3 uCausticsColor; 4036uniform float uCausticsIntensity; 4037uniform float uCausticsOffset; 4038uniform float uCausticsScale; 4039uniform float uCausticsSpeed; 4040uniform float uCausticsThickness; 4041 4042varying vec2 vUv; 4043 4044// Simplex 3D Noise 4045// by Ian McEwan, Stefan Gustavson (https://github.com/stegu/webgl-noise) 4046// 4047vec4 permute(vec4 x) { 4048 return mod(((x * 34.0) + 1.0) * x, 289.0); 4049} 4050vec4 taylorInvSqrt(vec4 r) { 4051 return 1.79284291400159 - 0.85373472095314 * r; 4052} 4053 4054float snoise(vec3 v) { 4055 const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0); 4056 const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); 4057 4058// First corner 4059 vec3 i = floor(v + dot(v, C.yyy)); 4060 vec3 x0 = v - i + dot(i, C.xxx); 4061 4062// Other corners 4063 vec3 g = step(x0.yzx, x0.xyz); 4064 vec3 l = 1.0 - g; 4065 vec3 i1 = min(g.xyz, l.zxy); 4066 vec3 i2 = max(g.xyz, l.zxy); 4067 4068 // x0 = x0 - 0. + 0.0 * C 4069 vec3 x1 = x0 - i1 + 1.0 * C.xxx; 4070 vec3 x2 = x0 - i2 + 2.0 * C.xxx; 4071 vec3 x3 = x0 - 1. + 3.0 * C.xxx; 4072 4073// Permutations 4074 i = mod(i, 289.0); 4075 vec4 p = permute(permute(permute(i.z + vec4(0.0, i1.z, i2.z, 1.0)) + i.y + vec4(0.0, i1.y, i2.y, 1.0)) + i.x + vec4(0.0, i1.x, i2.x, 1.0)); 4076 4077// Gradients 4078// ( N*N points uniformly over a square, mapped onto an octahedron.) 4079 float n_ = 1.0 / 7.0; // N=7 4080 vec3 ns = n_ * D.wyz - D.xzx; 4081 4082 vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,N*N) 4083 4084 vec4 x_ = floor(j * ns.z); 4085 vec4 y_ = floor(j - 7.0 * x_); // mod(j,N) 4086 4087 vec4 x = x_ * ns.x + ns.yyyy; 4088 vec4 y = y_ * ns.x + ns.yyyy; 4089 vec4 h = 1.0 - abs(x) - abs(y); 4090 4091 vec4 b0 = vec4(x.xy, y.xy); 4092 vec4 b1 = vec4(x.zw, y.zw); 4093 4094 vec4 s0 = floor(b0) * 2.0 + 1.0; 4095 vec4 s1 = floor(b1) * 2.0 + 1.0; 4096 vec4 sh = -step(h, vec4(0.0)); 4097 4098 vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy; 4099 vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww; 4100 4101 vec3 p0 = vec3(a0.xy, h.x); 4102 vec3 p1 = vec3(a0.zw, h.y); 4103 vec3 p2 = vec3(a1.xy, h.z); 4104 vec3 p3 = vec3(a1.zw, h.w); 4105 4106//Normalise gradients 4107 vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3))); 4108 p0 *= norm.x; 4109 p1 *= norm.y; 4110 p2 *= norm.z; 4111 p3 *= norm.w; 4112 4113// Mix final noise value 4114 vec4 m = max(0.6 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0); 4115 m = m * m; 4116 return 42.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3))); 4117} 4118 4119void main() { 4120 vec4 texColor = texture2D(uTexture, vUv); 4121 4122 float caustics = 0.0; 4123 4124 // Layer multiple caustic patterns 4125 caustics += uCausticsIntensity * (uCausticsOffset - abs(snoise(vec3(vUv.xy * uCausticsScale, uTime * uCausticsSpeed)))); 4126 caustics += uCausticsIntensity * (uCausticsOffset - abs(snoise(vec3(vUv.yx * uCausticsScale, -uTime * uCausticsSpeed)))); 4127 4128 // Shape the caustics 4129 caustics = smoothstep(0.5 - uCausticsThickness, 0.5 + uCausticsThickness, caustics); 4130 4131 vec3 finalColor = texColor.rgb + caustics * uCausticsColor; 4132 4133 gl_FragColor = vec4(finalColor, 1.0); 4134}`;class Xs extends pi{constructor(e={}){super(),this.material=new Bi({vertexShader:Z7,fragmentShader:K7,uniforms:{uTexture:{value:e.texture},uTime:{value:0},uCausticsColor:{value:new Fe("#ffffff")},uCausticsIntensity:{value:.2},uCausticsScale:{value:20},uCausticsSpeed:{value:1},uCausticsThickness:{value:.4},uCausticsOffset:{value:.75}}}),this.geometry=new Bo(7,7),this.rotation.x=-Math.PI*.5,this.position.y=-.12}update(e){this.material.uniforms.uTime.value=e}}class Q7 extends Bi{constructor(e={}){super(),this.vertexShader=` 4135 varying vec3 vPosition; 4136 varying vec3 vNormal; 4137 4138 void main() {
4139 vec4 modelPosition = modelMatrix * vec4(position, 1.0); 4140 gl_Position = projectionMatrix * viewMatrix * modelPosition; 4141 vec4 modelNormal = modelMatrix * vec4(normal, 0.0); 4142 vPosition = modelPosition.xyz; 4143 vNormal = modelNormal.xyz; 4144 4145 } 4146 `,this.fragmentShader=` 4147 uniform vec3 glowColor; 4148 uniform float falloff; 4149 uniform float glowSharpness; 4150 uniform float glowInternalRadius; 4151 uniform float opacity; 4152 4153 varying vec3 vPosition; 4154 varying vec3 vNormal; 4155 4156 void main() 4157 { 4158 // Normal 4159 vec3 normal = normalize(vNormal); 4160 if(!gl_FrontFacing) 4161 normal *= - 1.0; 4162 vec3 viewDirection = normalize(cameraPosition - vPosition); 4163 float fresnel = dot(viewDirection, normal); 4164 fresnel = pow(fresnel, glowInternalRadius + 0.1); 4165 float falloff = smoothstep(0., falloff, fresnel); 4166 float fakeGlow = fresnel; 4167 fakeGlow += fresnel * glowSharpness; 4168 fakeGlow *= falloff; 4169 gl_FragColor = vec4(clamp(glowColor * fresnel, 0., 1.0), clamp(fakeGlow, 0., opacity)); 4170 4171 #include <tonemapping_fragment> 4172 #include <colorspace_fragment> 4173 } 4174 `,this.uniforms={opacity:new hr(e.opacity!==void 0?e.opacity:1),glowInternalRadius:new hr(e.glowInternalRadius!==void 0?e.glowInternalRadius:6),glowSharpness:new hr(e.glowSharpness!==void 0?e.glowSharpness:.5),falloff:new hr(e.falloff!==void 0?e.falloff:.1),glowColor:new hr(e.glowColor!==void 0?new Fe(e.glowColor):new Fe("#00d5ff"))},this.setValues(e),this.depthTest=e.depthTest!==void 0?e.depthTest:!1,this.blending=e.blendMode!==void 0?e.blendMode:X0,this.transparent=!0,this.side=e.side!==void 0?e.side:Ui}}const Pp="/assets/homepage-D44vaZmS.png",Op="/assets/homepage-DT1KF3WZ.png",Ip="/assets/start-6P8hs6yG.png",Y_="/assets/Resume-ChMNJ77_.pdf",Z_=G.createContext({});function $7(n){const e=G.useRef(null);return e.current===null&&(e.current=n()),e.current}const bm=typeof window<"u",J7=bm?G.useLayoutEffect:G.useEffect,Em=G.createContext(null);function wm(n,e){n.indexOf(e)===-1&&n.push(e)}function Tm(n,e){const t=n.indexOf(e);t>-1&&n.splice(t,1)}const Os=(n,e,t)=>t>e?e:t<n?n:t;let Cm=()=>{};const Is={},K_=n=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(n);function Q_(n){return typeof n=="object"&&n!==null}const $_=n=>/^0[^.\s]+$/u.test(n);function Am(n){let e;return()=>(e===void 0&&(e=n()),e)}const wi=n=>n,eC=(n,e)=>t=>e(n(t)),bc=(...n)=>n.reduce(eC),cc=(n,e,t)=>{const a=e-n;return a===0?1:(t-n)/a};class Rm{constructor(){this.subscriptions=[]}add(e){return wm(this.subscriptions,e),()=>Tm(this.subscriptions,e)}notify(e,t,a){const o=this.subscriptions.length;if(o)if(o===1)this.subscriptions[0](e,t,a);else for(let l=0;l<o;l++){const u=this.subscriptions[l];u&&u(e,t,a)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const Zi=n=>n*1e3,Ki=n=>n/1e3;function J_(n,e){return e?n*(1e3/e):0}const e4=(n,e,t)=>(((1-3*t+3*e)*n+(3*t-6*e))*n+3*e)*n,tC=1e-7,nC=12;function iC(n,e,t,a,o){let l,u,f=0;do u=e+(t-e)/2,l=e4(u,a,o)-n,l>0?t=u:e=u;while(Math.abs(l)>tC&&++f<nC);return u}function Ec(n,e,t,a){if(n===e&&t===a)return wi;const o=l=>iC(l,0,1,n,t);return l=>l===0||l===1?l:e4(o(l),e,a)}const t4=n=>e=>e<=.5?n(2*e)/2:(2-n(2*(1-e)))/2,n4=n=>e=>1-n(1-e),i4=Ec(.33,1.53,.69,.99),Nm=n4(i4),s4=t4(Nm),a4=n=>(n*=2)<1?.5*Nm(n):.5*(2-Math.pow(2,-10*(n-1))),Lm=n=>1-Math.sin(Math.acos(n)),r4=n4(Lm),o4=t4(Lm),sC=Ec(.42,0,1,1),aC=Ec(0,0,.58,1),l4=Ec(.42,0,.58,1),rC=n=>Array.isArray(n)&&typeof n[0]!="number",c4=n=>Array.isArray(n)&&typeof n[0]=="number",oC={linear:wi,easeIn:sC,easeInOut:l4,easeOut:aC,circIn:Lm,circInOut:o4,circOut:r4,backIn:Nm,backInOut:s4,backOut:i4,anticipate:a4},lC=n=>typeof n=="string",I3=n=>{if(c4(n)){Cm(n.length===4);const[e,t,a,o]=n;return Ec(e,t,a,o)}else if(lC(n))return oC[n];return n},rf=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function cC(n,e){let t=new Set,a=new Set,o=!1,l=!1;const u=new WeakSet;let f={delta:0,timestamp:0,isProcessing:!1};function d(g){u.has(g)&&(h.schedule(g),n()),g(f)}const h={schedule:(g,v=!1,x=!1)=>{const b=x&&o?t:a;return v&&u.add(g),b.has(g)||b.add(g),g},cancel:g=>{a.delete(g),u.delete(g)},process:g=>{if(f=g,o){l=!0;return}o=!0,[t,a]=[a,t],t.forEach(d),t.clear(),o=!1,l&&(l=!1,h.process(g))}};return h}const uC=40;function u4(n,e){let t=!1,a=!0;const o={delta:0,timestamp:0,isProcessing:!1},l=()=>t=!0,u=rf.reduce((T,R)=>(T[R]=cC(l),T),{}),{setup:f,read:d,resolveKeyframes:h,preUpdate:g,update:v,preRender:x,render:y,postRender:b}=u,w=()=>{const T=Is.useManualTiming?o.timestamp:performance.now();t=!1,Is.useManualTiming||(o.delta=a?1e3/60:Math.max(Math.min(T-o.timestamp,uC),1)),o.timestamp=T,o.isProcessing=!0,f.process(o),d.process(o),h.process(o),g.process(o),v.process(o),x.process(o),y.process(o),b.process(o),o.isProcessing=!1,t&&e&&(a=!1,n(w))},M=()=>{t=!0,a=!0,o.isProcessing||n(w)};return{schedule:rf.reduce((T,R)=>{const P=u[R];return T[R]=(I,F=!1,V=!1)=>(t||M(),P.schedule(I,F,V)),T},{}),cancel:T=>{for(let R=0;R<rf.length;R++)u[rf[R]].cancel(T)},state:o,steps:u}}const{schedule:Qt,cancel:La,state:On,steps:R0}=u4(typeof requestAnimationFrame<"u"?requestAnimationFrame:wi,!0);let xf;function fC(){xf=void 0}const Jn={now:()=>
vendor: 33,859 bytes, line 4174
4174(xf===void 0&&Jn.set(On.isProcessing||Is.useManualTiming?On.timestamp:performance.now()),xf),set:n=>{xf=n,queueMicrotask(fC)}},f4=n=>e=>typeof e=="string"&&e.startsWith(n),Dm=f4("--"),dC=f4("var(--"),Um=n=>dC(n)?hC.test(n.split("/*")[0].trim()):!1,hC=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,zo={test:n=>typeof n=="number",parse:parseFloat,transform:n=>n},uc={...zo,transform:n=>Os(0,1,n)},of={...zo,default:1},Ql=n=>Math.round(n*1e5)/1e5,Pm=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function pC(n){return n==null}const mC=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,Om=(n,e)=>t=>!!(typeof t=="string"&&mC.test(t)&&t.startsWith(n)||e&&!pC(t)&&Object.prototype.hasOwnProperty.call(t,e)),d4=(n,e,t)=>a=>{if(typeof a!="string")return a;const[o,l,u,f]=a.match(Pm);return{[n]:parseFloat(o),[e]:parseFloat(l),[t]:parseFloat(u),alpha:f!==void 0?parseFloat(f):1}},gC=n=>Os(0,255,n),N0={...zo,transform:n=>Math.round(gC(n))},vr={test:Om("rgb","red"),parse:d4("red","green","blue"),transform:({red:n,green:e,blue:t,alpha:a=1})=>"rgba("+N0.transform(n)+", "+N0.transform(e)+", "+N0.transform(t)+", "+Ql(uc.transform(a))+")"};function vC(n){let e="",t="",a="",o="";return n.length>5?(e=n.substring(1,3),t=n.substring(3,5),a=n.substring(5,7),o=n.substring(7,9)):(e=n.substring(1,2),t=n.substring(2,3),a=n.substring(3,4),o=n.substring(4,5),e+=e,t+=t,a+=a,o+=o),{red:parseInt(e,16),green:parseInt(t,16),blue:parseInt(a,16),alpha:o?parseInt(o,16)/255:1}}const Bp={test:Om("#"),parse:vC,transform:vr.transform},wc=n=>({test:e=>typeof e=="string"&&e.endsWith(n)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${n}`}),Ta=wc("deg"),Qi=wc("%"),at=wc("px"),xC=wc("vh"),_C=wc("vw"),B3={...Qi,parse:n=>Qi.parse(n)/100,transform:n=>Qi.transform(n*100)},vo={test:Om("hsl","hue"),parse:d4("hue","saturation","lightness"),transform:({hue:n,saturation:e,lightness:t,alpha:a=1})=>"hsla("+Math.round(n)+", "+Qi.transform(Ql(e))+", "+Qi.transform(Ql(t))+", "+Ql(uc.transform(a))+")"},pn={test:n=>vr.test(n)||Bp.test(n)||vo.test(n),parse:n=>vr.test(n)?vr.parse(n):vo.test(n)?vo.parse(n):Bp.parse(n),transform:n=>typeof n=="string"?n:n.hasOwnProperty("red")?vr.transform(n):vo.transform(n),getAnimatableNone:n=>{const e=pn.parse(n);return e.alpha=0,pn.transform(e)}},yC=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function SC(n){return isNaN(n)&&typeof n=="string"&&(n.match(Pm)?.length||0)+(n.match(yC)?.length||0)>0}const h4="number",p4="color",MC="var",bC="var(",F3="${}",EC=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function fc(n){const e=n.toString(),t=[],a={color:[],number:[],var:[]},o=[];let l=0;const f=e.replace(EC,d=>(pn.test(d)?(a.color.push(l),o.push(p4),t.push(pn.parse(d))):d.startsWith(bC)?(a.var.push(l),o.push(MC),t.push(d)):(a.number.push(l),o.push(h4),t.push(parseFloat(d))),++l,F3)).split(F3);return{values:t,split:f,indexes:a,types:o}}function m4(n){return fc(n).values}function g4(n){const{split:e,types:t}=fc(n),a=e.length;return o=>{let l="";for(let u=0;u<a;u++)if(l+=e[u],o[u]!==void 0){const f=t[u];f===h4?l+=Ql(o[u]):f===p4?l+=pn.transform(o[u]):l+=o[u]}return l}}const wC=n=>typeof n=="number"?0:pn.test(n)?pn.getAnimatableNone(n):n;function TC(n){const e=m4(n);return g4(n)(e.map(wC))}const Da={test:SC,parse:m4,createTransformer:g4,getAnimatableNone:TC};function L0(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*(2/3-t)*6:n}function CC({hue:n,saturation:e,lightness:t,alpha:a}){n/=360,e/=100,t/=100;let o=0,l=0,u=0;if(!e)o=l=u=t;else{const f=t<.5?t*(1+e):t+e-t*e,d=2*t-f;o=L0(d,f,n+1/3),l=L0(d,f,n),u=L0(d,f,n-1/3)}return{red:Math.round(o*255),green:Math.round(l*255),blue:Math.round(u*255),alpha:a}}function Tf(n,e){return t=>t>0?e:n}const en=(n,e,t)=>n+(e-n)*t,D0=(n,e,t)=>{const a=n*n,o=t*(e*e-a)+a;return o<0?0:Math.sqrt(o)},AC=[Bp,vr,vo],RC=n=>AC.find(e=>e.test(n));function z3(n){const e=RC(n);if(!e)return!1;let t=e.parse(n);return e===vo&&(t=CC(t)),t}const V3=(n,e)=>{const t=z3(n),a=z3(e);if(!t||!a)return Tf(n,e);const o={...t};return l=>(o.red=D0(t.red,a.red,l),o.green=D0(t.green,a.green,l),o.blue=D0(t.blue,a.blue,l),o.alpha=en(t.alpha,a.alpha,l),vr.transform(o))},Fp=new Set(["none","hidden"]);function NC(n,e){return Fp.has(n)?t=>t<=0?n:e:t=>t>=1?e:n}function LC(n,e){return t=>en(n,e,t)}function Im(n){return typeof n=="number"?LC:typeof n=="string"?Um(n)?Tf:pn.test(n)?V3:PC:Array.isArray(n)?v4:typeof n=="object"?pn.test(n)?V3:DC:Tf}function v4(n,e){const t=[...n],a=t.length,o=n.map((l,u)=>Im(l)(l,e[u]));return l=>{for(let u=0;u<a;u++)t[u]=o[u](l);return t}}function DC(n,e){const t={...n,...e},a={};for(const o in t)n[o]!==void 0&&e[o]!==void 0&&(a[o]=Im(n[o])(n[o],e[o]));return o=>{for(const l in a)t[l]=a[l](o);return t}}function UC(n,e){const t=[],a={color:0,var:0,number:0};for(let o=0;o<e.values.length;o++){const l=e.types[o],u=n.indexes[l][a[l]],f=n.values[u]??0;t[o]=f,a[l]++}return t}const PC=(n,e)=>{const t=Da.createTransformer(e),a=fc(n),o=fc(e);return a.indexes.var.length===o.indexes.var.length&&a.indexes.color.length===o.indexes.color.length&&a.indexes.number.length>=o.indexes.number.length?Fp.has(n)&&!o.values.length||Fp.has(e)&&!a.values.length?NC(n,e):bc(v4(UC(a,o),o.values),t):Tf(n,e)};function x4(n,e,t){return typeof n=="number"&&typeof e=="number"&&typeof t=="number"?en(n,e,t):Im(n)(n,e)}const OC=n=>{const e=({timestamp:t})=>n(t);return{start:(t=!0)=>Qt.update(e,t),stop:()=>La(e),now:()=>On.isProcessing?On.timestamp:Jn.now()}},_4=(n,e,t=10)=>{let a="";const o=Math.max(Math.round(e/t),2);for(let l=0;l<o;l++)a+=Math.round(n(l/(o-1))*1e4)/1e4+", ";return`linear(${a.substring(0,a.length-2)})`},Cf=2e4;function Bm(n){let e=0;const t=50;let a=n.next(e);for(;!a.done&&e<Cf;)e+=t,a=n.next(e);return e>=Cf?1/0:e}function IC(n,e=100,t){const a=t({...n,keyframes:[0,e]}),o=Math.min(Bm(a),Cf);return{type:"keyframes",ease:l=>a.next(o*l).value/e,duration:Ki(o)}}const BC=5;function y4(n,e,t){const a=Math.max(e-BC,0);return J_(t-n(a),e-a)}const an={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},U0=.001;function FC({duration:n=an.duration,bounce:e=an.bounce,velocity:t=an.velocity,mass:a=an.mass}){let o,l,u=1-e;u=Os(an.minDamping,an.maxDamping,u),n=Os(an.minDuration,an.maxDuration,Ki(n)),u<1?(o=h=>{const g=h*u,v=g*n,x=g-t,y=zp(h,u),b=Math.exp(-v);return U0-x/y*b},l=h=>{const v=h*u*n,x=v*t+t,y=Math.pow(u,2)*Math.pow(h,2)*n,b=Math.exp(-v),w=zp(Math.pow(h,2),u);return(-o(h)+U0>0?-1:1)*((x-y)*b)/w}):(o=h=>{const g=Math.exp(-h*n),v=(h-t)*n+1;return-U0+g*v},l=h=>{const g=Math.exp(-h*n),v=(t-h)*(n*n);return g*v});const f=5/n,d=VC(o,l,f);if(n=Zi(n),isNaN(d))return{stiffness:an.stiffness,damping:an.damping,duration:n};{const h=Math.pow(d,2)*a;return{stiffness:h,damping:u*2*Math.sqrt(a*h),duration:n}}}const zC=12;function VC(n,e,t){let a=t;for(let o=1;o<zC;o++)a=a-n(a)/e(a);return a}function zp(n,e){return n*Math.sqrt(1-e*e)}const jC=["duration","bounce"],HC=["stiffness","damping","mass"];function j3(n,e){return e.some(t=>n[t]!==void 0)}function kC(n){let e={velocity:an.velocity,stiffness:an.stiffness,damping:an.damping,mass:an.mass,isResolvedFromDuration:!1,...n};if(!j3(n,HC)&&j3(n,jC))if(n.visualDuration){const t=n.visualDuration,a=2*Math.PI/(t*1.2),o=a*a,l=2*Os(.05,1,1-(n.bounce||0))*Math.sqrt(o);e={...e,mass:an.mass,stiffness:o,damping:l}}else{const t=FC(n);e={...e,...t,mass:an.mass},e.isResolvedFromDuration=!0}return e}function Af(n=an.visualDuration,e=an.bounce){const t=typeof n!="object"?{visualDuration:n,keyframes:[0,1],bounce:e}:n;let{restSpeed:a,restDelta:o}=t;const l=t.keyframes[0],u=t.keyframes[t.keyframes.length-1],f={done:!1,value:l},{stiffness:d,damping:h,mass:g,duration:v,velocity:x,isResolvedFromDuration:y}=kC({...t,velocity:-Ki(t.velocity||0)}),b=x||0,w=h/(2*Math.sqrt(d*g)),M=u-l,S=Ki(Math.sqrt(d/g)),N=Math.abs(M)<5;a||(a=N?an.restSpeed.granular:an.restSpeed.default),o||(o=N?an.restDelta.granular:an.restDelta.default);let T;if(w<1){const P=zp(S,w);T=I=>{const F=Math.exp(-w*S*I);return u-F*((b+w*S*M)/P*Math.sin(P*I)+M*Math.cos(P*I))}}else if(w===1)T=P=>u-Math.exp(-S*P)*(M+(b+S*M)*P);else{const P=S*Math.sqrt(w*w-1);T=I=>{const F=Math.exp(-w*S*I),V=Math.min(P*I,300);return u-F*((b+w*S*M)*Math.sinh(V)+P*M*Math.cosh(V))/P}}const R={calculatedDuration:y&&v||null,next:P=>{const I=T(P);if(y)f.done=P>=v;else{let F=P===0?b:0;w<1&&(F=P===0?Zi(b):y4(T,P,I));const V=Math.abs(F)<=a,U=Math.abs(u-I)<=o;f.done=V&&U}return f.value=f.done?u:I,f},toString:()=>{const P=Math.min(Bm(R),Cf),I=_4(F=>R.next(P*F).value,P,30);return P+"ms "+I},toTransition:()=>{}};return R}Af.applyToOptions=n=>{const e=IC(n,100,Af);return n.ease=e.ease,n.duration=Zi(e.duration),n.type="keyframes",n};function Vp({keyframes:n,velocity:e=0,power:t=.8,timeConstant:a=325,bounceDamping:o=10,bounceStiffness:l=500,modifyTarget:u,min:f,max:d,restDelta:h=.5,restSpeed:g}){const v=n[0],x={done:!1,value:v},y=V=>f!==void 0&&V<f||d!==void 0&&V>d,b=V=>f===void 0?d:d===void 0||Math.abs(f-V)<Math.abs(d-V)?f:d;let w=t*e;const M=v+w,S=u===void 0?M:u(M);S!==M&&(w=S-v);const N=V=>-w*Math.exp(-V/a),T=V=>S+N(V),R=V=>{const U=N(V),L=T(V);x.done=Math.abs(U)<=h,x.value=x.done?S:L};let P,I;const F=V=>{y(x.value)&&(P=V,I=Af({keyframes:[x.value,b(x.value)],velocity:y4(T,V,x.value),damping:o,stiffness:l,restDelta:h,restSpeed:g}))};return F(0),{calculatedDuration:null,next:V=>{let U=!1;return!I&&P===void 0&&(U=!0,R(V),F(V)),P!==void 0&&V>=P?I.next(V-P):(!U&&R(V),x)}}}function GC(n,e,t){const a=[],o=t||Is.mix||x4,l=n.length-1;for(let u=0;u<l;u++){let f=o(n[u],n[u+1]);if(e){const d=Array.isArray(e)?e[u]||wi:e;f=bc(d,f)}a.push(f)}return a}function WC(n,e,{clamp:t=!0,ease:a,mixer:o}={}){const l=n.length;if(Cm(l===e.length),l===1)return()=>e[0];if(l===2&&e[0]===e[1])return()=>e[1];const u=n[0]===n[1];n[0]>n[l-1]&&(n=[...n].reverse(),e=[...e].reverse());const f=GC(e,a,o),d=f.length,h=g=>{if(u&&g<n[0])return e[0];let v=0;if(d>1)for(;v<n.length-2&&!(g<n[v+1]);v++);const x=cc(n[v],n[v+1],g);return f[v](x)};return t?g=>h(Os(n[0],n[l-1],g)):h}function XC(n,e){const t=n[n.length-1];for(let a=1;a<=e;a++){const o=cc(0,e,a);n.push(en(t,1,o))}}function qC(n){const e=[0];return XC(e,n.length-1),e}function YC(n,e){return n.map(t=>t*e)}function ZC(n,e){return n.map(()=>e||l4).splice(0,n.length-1)}function $l({duration:n=300,keyframes:e,times:t,ease:a="easeInOut"}){const o=rC(a)?a.map(I3):I3(a),l={done:!1,value:e[0]},u=YC(t&&t.length===e.length?t:qC(e),n),f=WC(u,e,{ease:Array.isArray(o)?o:ZC(e,o)});return{calculatedDuration:n,next:d=>(l.value=f(d),l.done=d>=n,l)}}const KC=n=>n!==null;function Fm(n,{repeat:e,repeatType:t="loop"},a,o=1){const l=n.filter(KC),f=o<0||e&&t!=="loop"&&e%2===1?0:l.length-1;return!f||a===void 0?l[f]:a}const QC={decay:Vp,inertia:Vp,tween:$l,keyframes:$l,spring:Af};function S4(n){typeof n.type=="string"&&(n.type=QC[n.type])}class zm{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(e=>{this.resolve=e})}notifyFinished(){this.resolve()}then(e,t){return this.finished.then(e,t)}}const $C=n=>n/100;class Vm extends zm{constructor(e){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.stop=()=>{const{motionValue:t}=this.options;t&&t.updatedAt!==Jn.now()&&this.tick(Jn.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=e,this.initAnimation(),this.play(),e.autoplay===!1&&this.pause()}initAnimation(){const{options:e}=this;S4(e);const{type:t=$l,repeat:a=0,repeatDelay:o=0,repeatType:l,velocity:u=0}=e;let{keyframes:f}=e;const d=t||$l;d!==$l&&typeof f[0]!="number"&&(this.mixKeyframes=bc($C,x4(f[0],f[1])),f=[0,100]);const h=d({...e,keyframes:f});l==="mirror"&&(this.mirroredGenerator=d({...e,keyframes:[...f].reverse(),velocity:-u})),h.calculatedDuration===null&&(h.calculatedDuration=Bm(h));const{calculatedDuration:g}=h;this.calculatedDuration=g,this.resolvedDuration=g+o,this.totalDuration=this.resolvedDuration*(a+1)-o,this.generator=h}updateTime(e){const t=Math.round(e-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=t}tick(e,t=!1){const{generator:a,totalDuration:o,mixKeyframes:l,mirroredGenerator:u,resolvedDuration:f,calculatedDuration:d}=this;if(this.startTime===null)return a.next(0);const{delay:h=0,keyframes:g,repeat:v,repeatType:x,repeatDelay:y,type:b,onUpdate:w,finalKeyframe:M}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,e):this.speed<0&&(this.startTime=Math.min(e-o/this.speed,this.startTime)),t?this.currentTime=e:this.updateTime(e);const S=this.currentTime-h*(this.playbackSpeed>=0?1:-1),N=this.playbackSpeed>=0?S<0:S>o;this.currentTime=Math.max(S,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=o);let T=this.currentTime,R=a;if(v){const V=Math.min(this.currentTime,o)/f;let U=Math.floor(V),L=V%1;!L&&V>=1&&(L=1),L===1&&U--,U=Math.min(U,v+1),!!(U%2)&&(x==="reverse"?(L=1-L,y&&(L-=y/f)):x==="mirror"&&(R=u)),T=Os(0,1,L)*f}const P=N?{done:!1,value:g[0]}:R.next(T);l&&(P.value=l(P.value));let{done:I}=P;!N&&d!==null&&(I=this.playbackSpeed>=0?this.currentTime>=o:this.currentTime<=0);const F=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&I);return F&&b!==Vp&&(P.value=Fm(g,this.options,M,this.speed)),w&&w(P.value),F&&this.finish(),P}then(e,t){return this.finished.then(e,t)}get duration(){return Ki(this.calculatedDuration)}get time(){return Ki(this.currentTime)}set time(e){e=Zi(e),this.currentTime=e,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=e:this.driver&&(this.startTime=this.driver.now()-e/this.playbackSpeed),this.driver?.start(!1)}get speed(){return this.playbackSpeed}set speed(e){this.updateTime(Jn.now());const t=this.playbackSpeed!==e;this.playbackSpeed=e,t&&(this.time=Ki(this.currentTime))}play(){if(this.isStopped)return;const{driver:e=OC,startTime:t}=this.options;this.driver||(this.driver=e(o=>this.tick(o))),this.options.onPlay?.();const a=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=a):this.holdTime!==null?this.startTime=a-this.holdTime:this.startTime||(this.startTime=t??a),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(Jn.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(e){return this.startTime=0,this.tick(e,!0)}attachTimeline(e){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),e.observe(this)}}function JC(n){for(let e=1;e<n.length;e++)n[e]??(n[e]=n[e-1])}const xr=n=>n*180/Math.PI,jp=n=>{const e=xr(Math.atan2(n[1],n[0]));return Hp(e)},e9={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:n=>(Math.abs(n[0])+Math.abs(n[3]))/2,rotate:jp,rotateZ:jp,skewX:n=>xr(Math.atan(n[1])),skewY:n=>xr(Math.atan(n[2])),skew:n=>(Math.abs(n[1])+Math.abs(n[2]))/2},Hp=n=>(n=n%360,n<0&&(n+=360),n),H3=jp,k3=n=>Math.sqrt(n[0]*n[0]+n[1]*n[1]),G3=n=>Math.sqrt(n[4]*n[4]+n[5]*n[5]),t9={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:k3,scaleY:G3,scale:n=>(k3(n)+G3(n))/2,rotateX:n=>Hp(xr(Math.atan2(n[6],n[5]))),rotateY:n=>Hp(xr(Math.atan2(-n[2],n[0]))),rotateZ:H3,rotate:H3,skewX:n=>xr(Math.atan(n[4])),skewY:n=>xr(Math.atan(n[1])),skew:n=>(Math.abs(n[1])+Math.abs(n[4]))/2};function kp(n){return n.includes("scale")?1:0}function Gp(n,e){if(!n||n==="none")return kp(e);const t=n.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let a,o;if(t)a=t9,o=t;else{const f=n.match(/^matrix\(([-\d.e\s,]+)\)$/u);a=e9,o=f}if(!o)return kp(e);const l=a[e],u=o[1].split(",").map(i9);return typeof l=="function"?l(u):u[l]}const n9=(n,e)=>{const{transform:t="none"}=getComputedStyle(n);return Gp(t,e)};function i9(n){return parseFloat(n.trim())}const Vo=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],jo=new Set(Vo),W3=n=>n===zo||n===at,s9=new Set(["x","y","z"]),a9=Vo.filter(n=>!s9.has(n));function r9(n){const e=[];return a9.forEach(t=>{const a=n.getValue(t);a!==void 0&&(e.push([t,a.get()]),a.set(t.startsWith("scale")?1:0))}),e}const _r={width:({x:n},{paddingLeft:e="0",paddingRight:t="0"})=>n.max-n.min-parseFloat(e)-parseFloat(t),height:({y:n},{paddingTop:e="0",paddingBottom:t="0"})=>n.max-n.min-parseFloat(e)-parseFloat(t),top:(n,{top:e})=>parseFloat(e),left:(n,{left:e})=>parseFloat(e),bottom:({y:n},{top:e})=>parseFloat(e)+(n.max-n.min),right:({x:n},{left:e})=>parseFloat(e)+(n.max-n.min),x:(n,{transform:e})=>Gp(e,"x"),y:(n,{transform:e})=>Gp(e,"y")};_r.translateX=_r.x;_r.translateY=_r.y;const yr=new Set;let Wp=!1,Xp=!1,qp=!1;function M4(){if(Xp){const n=Array.from(yr).filter(a=>a.needsMeasurement),e=new Set(n.map(a=>a.element)),t=new Map;e.forEach(a=>{const o=r9(a);o.length&&(t.set(a,o),a.render())}),n.forEach(a=>a.measureInitialState()),e.forEach(a=>{a.render();const o=t.get(a);o&&o.forEach(([l,u])=>{a.getValue(l)?.set(u)})}),n.forEach(a=>a.measureEndState()),n.forEach(a=>{a.suspendedScrollY!==void 0&&window.scrollTo(0,a.suspendedScrollY)})}Xp=!1,Wp=!1,yr.forEach(n=>n.complete(qp)),yr.clear()}function b4(){yr.forEach(n=>{n.readKeyframes(),n.needsMeasurement&&(Xp=!0)})}function o9(){qp=!0,b4(),M4(),qp=!1}class jm{constructor(e,t,a,o,l,u=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...e],this.onComplete=t,this.name=a,this.motionValue=o,this.element=l,this.isAsync=u}scheduleResolve(){this.state="scheduled",this.isAsync?(yr.add(this),Wp||(Wp=!0,Qt.read(b4),Qt.resolveKeyframes(M4))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:e,name:t,element:a,motionValue:o}=this;if(e[0]===null){const l=o?.get(),u=e[e.length-1];if(l!==void 0)e[0]=l;else if(a&&t){const f=a.readValue(t,u);f!=null&&(e[0]=f)}e[0]===void 0&&(e[0]=u),o&&l===void 0&&o.set(e[0])}JC(e)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(e=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,e),yr.delete(this)}cancel(){this.state==="scheduled"&&(yr.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const l9=n=>n.startsWith("--");function c9(n,e,t){l9(e)?n.style.setProperty(e,t):n.style[e]=t}const u9=Am(()=>window.ScrollTimeline!==void 0),f9={};function d9(n,e){const t=Am(n);return()=>f9[e]??t()}const E4=d9(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Kl=([n,e,t,a])=>`cubic-bezier(${n}, ${e}, ${t}, ${a})`,X3={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Kl([0,.65,.55,1]),circOut:Kl([.55,0,1,.45]),backIn:Kl([.31,.01,.66,-.59]),backOut:Kl([.33,1.53,.69,.99])};function w4(n,e){if(n)return typeof n=="function"?E4()?_4(n,e):"ease-out":c4(n)?Kl(n):Array.isArray(n)?n.map(t=>w4(t,e)||X3.easeOut):X3[n]}function h9(n,e,t,{delay:a=0,duration:o=300,repeat:l=0,repeatType:u="loop",ease:f="easeOut",times:d}={},h=void 0){const g={[e]:t};d&&(g.offset=d);const v=w4(f,o);Array.isArray(v)&&(g.easing=v);const x={delay:a,duration:o,easing:Array.isArray(v)?"linear":v,fill:"both",iterations:l+1,direction:u==="reverse"?"alternate":"normal"};return h&&(x.pseudoElement=h),n.animate(g,x)}function T4(n){return typeof n=="function"&&"applyToOptions"in n}function p9({type:n,...e}){return T4(n)&&E4()?n.applyToOptions(e):(e.duration??(e.duration=300),e.ease??(e.ease="easeOut"),e)}class m9 extends zm{constructor(e){if(super(),this.finishedTime=null,this.isStopped=!1,!e)return;const{element:t,name:a,keyframes:o,pseudoElement:l,allowFlatten:u=!1,finalKeyframe:f,onComplete:d}=e;this.isPseudoElement=!!l,this.allowFlatten=u,this.options=e,Cm(typeof e.type!="string");const h=p9(e);this.animation=h9(t,a,o,h,l),h.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!l){const g=Fm(o,this.options,f,this.speed);this.updateMotionValue?this.updateMotionValue(g):c9(t,a,g),this.animation.cancel()}d?.(),this.notifyFinished()}}play(){this.isStopped||(this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:e}=this;e==="idle"||e==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){this.isPseudoElement||this.animation.commitStyles?.()}get duration(){const e=this.animation.effect?.getComputedTiming?.().duration||0;return Ki(Number(e))}get time(){return Ki(Number(this.animation.currentTime)||0)}set time(e){this.finishedTime=null,this.animation.currentTime=Zi(e)}get speed(){return this.animation.playbackRate}set speed(e){e<0&&(this.finishedTime=null),this.animation.playbackRate=e}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return Number(this.animation.startTime)}set startTime(e){this.animation.startTime=e}attachTimeline({timeline:e,observe:t}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,e&&u9()?(this.animation.timeline=e,wi):t(this)}}const C4={anticipate:a4,backInOut:s4,circInOut:o4};function g9(n){return n in C4}function v9(n){typeof n.ease=="string"&&g9(n.ease)&&(n.ease=C4[n.ease])}const q3=10;class x9 extends m9{constructor(e){v9(e),S4(e),super(e),e.startTime&&(this.startTime=e.startTime),this.options=e}updateMotionValue(e){const{motionValue:t,onUpdate:a,onComplete:o,element:l,...u}=this.options;if(!t)return;if(e!==void 0){t.set(e);return}const f=new Vm({...u,autoplay:!1}),d=Zi(this.finishedTime??this.time);t.setWithVelocity(f.sample(d-q3).value,f.sample(d).value,q3),f.stop()}}const Y3=(n,e)=>e==="zIndex"?!1:!!(typeof n=="number"||Array.isArray(n)||typeof n=="string"&&(Da.test(n)||n==="0")&&!n.startsWith("url("));function _9(n){const e=n[0];if(n.length===1)return!0;for(let t=0;t<n.length;t++)if(n[t]!==e)return!0}function y9(n,e,t,a){const o=n[0];if(o===null)return!1;if(e==="display"||e==="visibility")return!0;const l=n[n.length-1],u=Y3(o,e),f=Y3(l,e);return!u||!f?!1:_9(n)||(t==="spring"||T4(t))&&a}function Yp(n){n.duration=0,n.type}const S9=new Set(["opacity","clipPath","filter","transform"]),M9=Am(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function b9(n){const{motionValue:e,name:t,repeatDelay:a,repeatType:o,damping:l,type:u}=n;if(!(e?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:d,transformTemplate:h}=e.owner.getProps();return M9()&&t&&S9.has(t)&&(t!=="transform"||!h)&&!d&&!a&&o!=="mirror"&&l!==0&&u!=="inertia"}const E9=40;class w9 extends zm{constructor({autoplay:e=!0,delay:t=0,type:a="keyframes",repeat:o=0,repeatDelay:l=0,repeatType:u="loop",keyframes:f,name:d,motionValue:h,element:g,...v}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=Jn.now();const x={autoplay:e,delay:t,type:a,repeat:o,repeatDelay:l,repeatType:u,name:d,motionValue:h,element:g,...v},y=g?.KeyframeResolver||jm;this.keyframeResolver=new y(f,(b,w,M)=>this.onKeyframesResolved(b,w,x,!M),d,h,g),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(e,t,a,o){this.keyframeResolver=void 0;const{name:l,type:u,velocity:f,delay:d,isHandoff:h,onUpdate:g}=a;this.resolvedAt=Jn.now(),y9(e,l,u,f)||((Is.instantAnimations||!d)&&g?.(Fm(e,a,t)),e[0]=e[e.length-1],Yp(a),a.repeat=0);const x={startTime:o?this.resolvedAt?this.resolvedAt-this.createdAt>E9?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:t,...a,keyframes:e},y=!h&&b9(x)?new x9({...x,element:x.motionValue.owner.current}):new Vm(x);y.finished.then(()=>this.notifyFinished()).catch(wi),this.pendingTimeline&&(this.stopTimeline=y.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=y}get finished(){return this._animation?this.animation.finished:this._finished}then(e,t){return this.finished.finally(e).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),o9()),this._animation}get duration(){return this.animation.duration}get time(){return this.animation.time}set time(e){this.animation.time=e}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(e){this.animation.speed=e}get startTime(){return this.animation.startTime}attachTimeline(e){return this._animation?this.stopTimeline=this.animation.attachTimeline(e):this.pendingTimeline=e,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}const T9=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function C9(n){const e=T9.exec(n);if(!e)return[,];const[,t,a,o]=e;return[`--${t??a}`,o]}function A4(n,e,t=1){const[a,o]=C9(n);if(!a)return;const l=window.getComputedStyle(e).getPropertyValue(a);if(l){const u=l.trim();return K_(u)?parseFloat(u):u}return Um(o)?A4(o,e,t+1):o}function Hm(n,e){return n?.[e]??n?.default??n}const R4=new Set(["width","height","top","left","right","bottom",...Vo]),A9={test:n=>n==="auto",parse:n=>n},N4=n=>e=>e.test(n),L4=[zo,at,Qi,Ta,_C,xC,A9],Z3=n=>L4.find(N4(n));function R9(n){return typeof n=="number"?n===0:n!==null?n==="none"||n==="0"||$_(n):!0}const N9=new Set(["brightness","contrast","saturate","opacity"]);function L9(n){const[e,t]=n.slice(0,-1).split("(");if(e==="drop-shadow")return n;const[a]=t.match(Pm)||[];if(!a)return n;const o=t.replace(a,"");let l=N9.has(e)?1:0;return a!==t&&(l*=100),e+"("+l+o+")"}const D9=/\b([a-z-]*)\(.*?\)/gu,Zp={...Da,getAnimatableNone:n=>{const e=n.match(D9);return e?e.map(L9).join(" "):n}},K3={...zo,transform:Math.round},U9={rotate:Ta,rotateX:Ta,rotateY:Ta,rotateZ:Ta,scale:of,scaleX:of,scaleY:of,scaleZ:of,skew:Ta,skewX:Ta,skewY:Ta,distance:at,translateX:at,translateY:at,translateZ:at,x:at,y:at,z:at,perspective:at,transformPerspective:at,opacity:uc,originX:B3,originY:B3,originZ:at},km={borderWidth:at,borderTopWidth:at,borderRightWidth:at,borderBottomWidth:at,borderLeftWidth:at,borderRadius:at,radius:at,borderTopLeftRadius:at,borderTopRightRadius:at,borderBottomRightRadius:at,borderBottomLeftRadius:at,width:at,maxWidth:at,height:at,maxHeight:at,top:at,right:at,bottom:at,left:at,padding:at,paddingTop:at,paddingRight:at,paddingBottom:at,paddingLeft:at,margin:at,marginTop:at,marginRight:at,marginBottom:at,marginLeft:at,backgroundPositionX:at,backgroundPositionY:at,...U9,zIndex:K3,fillOpacity:uc,strokeOpacity:uc,numOctaves:K3},P9={...km,color:pn,backgroundColor:pn,outlineColor:pn,fill:pn,stroke:pn,borderColor:pn,borderTopColor:pn,borderRightColor:pn,borderBottomColor:pn,borderLeftColor:pn,filter:Zp,WebkitFilter:Zp},D4=n=>P9[n];function U4(n,e){let t=D4(n);return t!==Zp&&(t=Da),t.getAnimatableNone?t.getAnimatableNone(e):void 0}const O9=new Set(["auto","none","0"]);function I9(n,e,t){let a=0,o;for(;a<n.length&&!o;){const l=n[a];typeof l=="string"&&!O9.has(l)&&fc(l).values.length&&(o=n[a]),a++}if(o&&t)for(const l of e)n[l]=U4(t,o)}class B9 extends jm{constructor(e,t,a,o,l){super(e,t,a,o,l,!0)}readKeyframes(){const{unresolvedKeyframes:e,element:t,name:a}=this;if(!t||!t.current)return;super.readKeyframes();for(let d=0;d<e.length;d++){let h=e[d];if(typeof h=="string"&&(h=h.trim(),Um(h))){const g=A4(h,t.current);g!==void 0&&(e[d]=g),d===e.length-1&&(this.finalKeyframe=h)}}if(this.resolveNoneKeyframes(),!R4.has(a)||e.length!==2)return;const[o,l]=e,u=Z3(o),f=Z3(l);if(u!==f)if(W3(u)&&W3(f))for(let d=0;d<e.length;d++){const h=e[d];typeof h=="string"&&(e[d]=parseFloat(h))}else _r[a]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:e,name:t}=this,a=[];for(let o=0;o<e.length;o++)(e[o]===null||R9(e[o]))&&a.push(o);a.length&&I9(e,a,t)}measureInitialState(){const{element:e,unresolvedKeyframes:t,name:a}=this;if(!e||!e.current)return;a==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=_r[a](e.measureViewportBox(),window.getComputedStyle(e.current)),t[0]=this.measuredOrigin;const o=t[t.length-1];o!==void 0&&e.getValue(a,o).jump(o,!1)}measureEndState(){const{element:e,name:t,unresolvedKeyframes:a}=this;if(!e||!e.current)return;const o=e.getValue(t);o&&o.jump(this.measuredOrigin,!1);const l=a.length-1,u=a[l];a[l]=_r[t](e.measureViewportBox(),window.getComputedStyle(e.current)),u!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=u),this.removedTransforms?.length&&this.removedTransforms.forEach(([f,d])=>{e.getValue(f).set(d)}),this.resolveNoneKeyframes()}}function P4(n,e,t){if(n instanceof EventTarget)return[n];if(typeof n=="string"){const o=document.querySelectorAll(n);return o?Array.from(o):[]}return Array.from(n)}const O4=(n,e)=>e&&typeof n=="number"?e.transform(n):n;function F9(n){return Q_(n)&&"offsetHeight"in n}const Q3=30,z9=n=>!isNaN(parseFloat(n));class V9{constructor(e,t={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=a=>{const o=Jn.now();if(this.updatedAt!==o&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(a),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const l of this.dependents)l.dirty()},this.hasAnimated=!1,this.setCurrent(e),this.owner=t.owner}setCurrent(e){this.current=e,this.updatedAt=Jn.now(),this.canTrackVelocity===null&&e!==void 0&&(this.canTrackVelocity=z9(this.current))}setPrevFrameValue(e=this.current){this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt}onChange(e){return this.on("change",e)}on(e,t){this.events[e]||(this.events[e]=new Rm);const a=this.events[e].add(t);return e==="change"?()=>{a(),Qt.read(()=>{this.events.change.getSize()||this.stop()})}:a}clearListeners(){for(const e in this.events)this.events[e].clear()}attach(e,t){this.passiveEffect=e,this.stopPassiveEffect=t}set(e){this.passiveEffect?this.passiveEffect(e,this.updateAndNotify):this.updateAndNotify(e)}setWithVelocity(e,t,a){this.set(t),this.prev=void 0,this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt-a}jump(e,t=!0){this.updateAndNotify(e),this.prev=e,this.prevUpdatedAt=this.prevFrameValue=void 0,t&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(e){this.dependents||(this.dependents=new Set),this.dependents.add(e)}removeDependent(e){this.dependents&&this.dependents.delete(e)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const e=Jn.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||e-this.updatedAt>Q3)return 0;const t=Math.min(this.updatedAt-this.prevUpdatedAt,Q3);return J_(parseFloat(this.current)-parseFloat(this.prevFrameValue),t)}start(e){return this.stop(),new Promise(t=>{this.hasAnimated=!0,this.animation=e(t),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Lo(n,e){return new V9(n,e)}const{schedule:Gm}=u4(queueMicrotask,!1),Di={x:!1,y:!1};function I4(){return Di.x||Di.y}function j9(n){return n==="x"||n==="y"?Di[n]?null:(Di[n]=!0,()=>{Di[n]=!1}):Di.x||Di.y?null:(Di.x=Di.y=!0,()=>{Di.x=Di.y=!1})}function B4(n,e){const t=P4(n),a=new AbortController,o={passive:!0,...e,signal:a.signal};return[t,o,()=>a.abort()]}function $3(n){return!(n.pointerType==="touch"||I4())}function H9(n,e,t={}){const[a,o,l]=B4(n,t),u=f=>{if(!$3(f))return;const{target:d}=f,h=e(d,f);if(typeof h!="function"||!d)return;const g=v=>{$3(v)&&(h(v),d.removeEventListener("pointerleave",g))};d.addEventListener("pointerleave",g,o)};return a.forEach(f=>{f.addEventListener("pointerenter",u,o)}),l}const F4=(n,e)=>e?n===e?!0:F4(n,e.parentElement):!1,Wm=n=>n.pointerType==="mouse"?typeof n.button!="number"||n.button<=0:n.isPrimary!==!1,k9=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function G9(n){return k9.has(n.tagName)||n.tabIndex!==-1}const _f=new WeakSet;function J3(n){return e=>{e.key==="Enter"&&n(e)}}function P0(n,e){n.dispatchEvent(new PointerEvent("pointer"+e,{isPrimary:!0,bubbles:!0}))}const W9=(n,e)=>{const t=n.currentTarget;if(!t)return;const a=J3(()=>{if(_f.has(t))return;P0(t,"down");const o=J3(()=>{P0(t,"up")}),l=()=>P0(t,"cancel");t.addEventListener("keyup",o,e),t.addEventListener("blur",l,e)});t.addEventListener("keydown",a,e),t.addEventListener("blur",()=>t.removeEventListener("keydown",a),e)};
vendor: 4,727 bytes, line 4174
4174function ex(n){return Wm(n)&&!I4()}function X9(n,e,t={}){const[a,o,l]=B4(n,t),u=f=>{const d=f.currentTarget;if(!ex(f))return;_f.add(d);const h=e(d,f),g=(y,b)=>{window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",x),_f.has(d)&&_f.delete(d),ex(y)&&typeof h=="function"&&h(y,{success:b})},v=y=>{g(y,d===window||d===document||t.useGlobalTarget||F4(d,y.target))},x=y=>{g(y,!1)};window.addEventListener("pointerup",v,o),window.addEventListener("pointercancel",x,o)};return a.forEach(f=>{(t.useGlobalTarget?window:f).addEventListener("pointerdown",u,o),F9(f)&&(f.addEventListener("focus",h=>W9(h,o)),!G9(f)&&!f.hasAttribute("tabindex")&&(f.tabIndex=0))}),l}function z4(n){return Q_(n)&&"ownerSVGElement"in n}function q9(n){return z4(n)&&n.tagName==="svg"}const jn=n=>!!(n&&n.getVelocity),Y9=[...L4,pn,Da],Z9=n=>Y9.find(N4(n)),V4=G.createContext({transformPagePoint:n=>n,isStatic:!1,reducedMotion:"never"});function K9(n=!0){const e=G.useContext(Em);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:a,register:o}=e,l=G.useId();G.useEffect(()=>{if(n)return o(l)},[n]);const u=G.useCallback(()=>n&&a&&a(l),[l,a,n]);return!t&&a?[!1,u]:[!0]}const j4=G.createContext({strict:!1}),tx={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},Do={};for(const n in tx)Do[n]={isEnabled:e=>tx[n].some(t=>!!e[t])};function Q9(n){for(const e in n)Do[e]={...Do[e],...n[e]}}const $9=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function Rf(n){return n.startsWith("while")||n.startsWith("drag")&&n!=="draggable"||n.startsWith("layout")||n.startsWith("onTap")||n.startsWith("onPan")||n.startsWith("onLayout")||$9.has(n)}let H4=n=>!Rf(n);function J9(n){typeof n=="function"&&(H4=e=>e.startsWith("on")?!Rf(e):n(e))}try{J9(require("@emotion/is-prop-valid").default)}catch{}function eA(n,e,t){const a={};for(const o in n)o==="values"&&typeof n.values=="object"||(H4(o)||t===!0&&Rf(o)||!e&&!Rf(o)||n.draggable&&o.startsWith("onDrag"))&&(a[o]=n[o]);return a}const zf=G.createContext({});function Vf(n){return n!==null&&typeof n=="object"&&typeof n.start=="function"}function dc(n){return typeof n=="string"||Array.isArray(n)}const Xm=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],qm=["initial",...Xm];function jf(n){return Vf(n.animate)||qm.some(e=>dc(n[e]))}function k4(n){return!!(jf(n)||n.variants)}function tA(n,e){if(jf(n)){const{initial:t,animate:a}=n;return{initial:t===!1||dc(t)?t:void 0,animate:dc(a)?a:void 0}}return n.inherit!==!1?e:{}}function nA(n){const{initial:e,animate:t}=tA(n,G.useContext(zf));return G.useMemo(()=>({initial:e,animate:t}),[nx(e),nx(t)])}function nx(n){return Array.isArray(n)?n.join(" "):n}const hc={};function iA(n){for(const e in n)hc[e]=n[e],Dm(e)&&(hc[e].isCSSVariable=!0)}function G4(n,{layout:e,layoutId:t}){return jo.has(n)||n.startsWith("origin")||(e||t!==void 0)&&(!!hc[n]||n==="opacity")}const sA={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},aA=Vo.length;function rA(n,e,t){let a="",o=!0;for(let l=0;l<aA;l++){const u=Vo[l],f=n[u];if(f===void 0)continue;let d=!0;if(typeof f=="number"?d=f===(u.startsWith("scale")?1:0):d=parseFloat(f)===0,!d||t){const h=O4(f,km[u]);if(!d){o=!1;const g=sA[u]||u;a+=`${g}(${h}) `}t&&(e[u]=h)}}return a=a.trim(),t?a=t(e,o?"":a):o&&(a="none"),a}function Ym(n,e,t){const{style:a,vars:o,transformOrigin:l}=n;let u=!1,f=!1;for(const d in e){const h=e[d];if(jo.has(d)){u=!0;continue}else if(Dm(d)){o[d]=h;continue}else{const g=O4(h,km[d]);d.startsWith("origin")?(f=!0,l[d]=g):a[d]=g}}if(e.transform||(u||t?a.transform=rA(e,n.transform,t):a.transform&&(a.transform="none")),f){const{originX:d="50%",originY:h="50%",originZ:g=0}=l;a.transformOrigin=`${d} ${h} ${g}`}}const Zm=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function W4(n,e,t){for(const a in e)!jn(e[a])&&!G4(a,t)&&(n[a]=e[a])}function oA({transformTemplate:n},e){return G.useMemo(()=>{const t=Zm();return Ym(t,e,n),Object.assign({},t.vars,t.style)}
vendor: 41,007 bytes, line 4174
4174,[e])}function lA(n,e){const t=n.style||{},a={};return W4(a,t,n),Object.assign(a,oA(n,e)),a}function cA(n,e){const t={},a=lA(n,e);return n.drag&&n.dragListener!==!1&&(t.draggable=!1,a.userSelect=a.WebkitUserSelect=a.WebkitTouchCallout="none",a.touchAction=n.drag===!0?"none":`pan-${n.drag==="x"?"y":"x"}`),n.tabIndex===void 0&&(n.onTap||n.onTapStart||n.whileTap)&&(t.tabIndex=0),t.style=a,t}const uA={offset:"stroke-dashoffset",array:"stroke-dasharray"},fA={offset:"strokeDashoffset",array:"strokeDasharray"};function dA(n,e,t=1,a=0,o=!0){n.pathLength=1;const l=o?uA:fA;n[l.offset]=at.transform(-a);const u=at.transform(e),f=at.transform(t);n[l.array]=`${u} ${f}`}function X4(n,{attrX:e,attrY:t,attrScale:a,pathLength:o,pathSpacing:l=1,pathOffset:u=0,...f},d,h,g){if(Ym(n,f,h),d){n.style.viewBox&&(n.attrs.viewBox=n.style.viewBox);return}n.attrs=n.style,n.style={};const{attrs:v,style:x}=n;v.transform&&(x.transform=v.transform,delete v.transform),(x.transform||v.transformOrigin)&&(x.transformOrigin=v.transformOrigin??"50% 50%",delete v.transformOrigin),x.transform&&(x.transformBox=g?.transformBox??"fill-box",delete v.transformBox),e!==void 0&&(v.x=e),t!==void 0&&(v.y=t),a!==void 0&&(v.scale=a),o!==void 0&&dA(v,o,l,u,!1)}const q4=()=>({...Zm(),attrs:{}}),Y4=n=>typeof n=="string"&&n.toLowerCase()==="svg";function hA(n,e,t,a){const o=G.useMemo(()=>{const l=q4();return X4(l,e,Y4(a),n.transformTemplate,n.style),{...l.attrs,style:{...l.style}}},[e]);if(n.style){const l={};W4(l,n.style,n),o.style={...l,...o.style}}return o}const pA=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Km(n){return typeof n!="string"||n.includes("-")?!1:!!(pA.indexOf(n)>-1||/[A-Z]/u.test(n))}function mA(n,e,t,{latestValues:a},o,l=!1){const f=(Km(n)?hA:cA)(e,a,o,n),d=eA(e,typeof n=="string",l),h=n!==G.Fragment?{...d,...f,ref:t}:{},{children:g}=e,v=G.useMemo(()=>jn(g)?g.get():g,[g]);return G.createElement(n,{...h,children:v})}function ix(n){const e=[{},{}];return n?.values.forEach((t,a)=>{e[0][a]=t.get(),e[1][a]=t.getVelocity()}),e}function Qm(n,e,t,a){if(typeof e=="function"){const[o,l]=ix(a);e=e(t!==void 0?t:n.custom,o,l)}if(typeof e=="string"&&(e=n.variants&&n.variants[e]),typeof e=="function"){const[o,l]=ix(a);e=e(t!==void 0?t:n.custom,o,l)}return e}function yf(n){return jn(n)?n.get():n}function gA({scrapeMotionValuesFromProps:n,createRenderState:e},t,a,o){return{latestValues:vA(t,a,o,n),renderState:e()}}function vA(n,e,t,a){const o={},l=a(n,{});for(const x in l)o[x]=yf(l[x]);let{initial:u,animate:f}=n;const d=jf(n),h=k4(n);e&&h&&!d&&n.inherit!==!1&&(u===void 0&&(u=e.initial),f===void 0&&(f=e.animate));let g=t?t.initial===!1:!1;g=g||u===!1;const v=g?f:u;if(v&&typeof v!="boolean"&&!Vf(v)){const x=Array.isArray(v)?v:[v];for(let y=0;y<x.length;y++){const b=Qm(n,x[y]);if(b){const{transitionEnd:w,transition:M,...S}=b;for(const N in S){let T=S[N];if(Array.isArray(T)){const R=g?T.length-1:0;T=T[R]}T!==null&&(o[N]=T)}for(const N in w)o[N]=w[N]}}}return o}const Z4=n=>(e,t)=>{const a=G.useContext(zf),o=G.useContext(Em),l=()=>gA(n,e,a,o);return t?l():$7(l)};function $m(n,e,t){const{style:a}=n,o={};for(const l in a)(jn(a[l])||e.style&&jn(e.style[l])||G4(l,n)||t?.getValue(l)?.liveStyle!==void 0)&&(o[l]=a[l]);return o}const xA=Z4({scrapeMotionValuesFromProps:$m,createRenderState:Zm});function K4(n,e,t){const a=$m(n,e,t);for(const o in n)if(jn(n[o])||jn(e[o])){const l=Vo.indexOf(o)!==-1?"attr"+o.charAt(0).toUpperCase()+o.substring(1):o;a[l]=n[o]}return a}const _A=Z4({scrapeMotionValuesFromProps:K4,createRenderState:q4}),yA=Symbol.for("motionComponentSymbol");function xo(n){return n&&typeof n=="object"&&Object.prototype.hasOwnProperty.call(n,"current")}function SA(n,e,t){return G.useCallback(a=>{a&&n.onMount&&n.onMount(a),e&&(a?e.mount(a):e.unmount()),t&&(typeof t=="function"?t(a):xo(t)&&(t.current=a))},[e])}const Jm=n=>n.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),MA="framerAppearId",Q4="data-"+Jm(MA),$4=G.createContext({});function bA(n,e,t,a,o){const{visualElement:l}=G.useContext(zf),u=G.useContext(j4),f=G.useContext(Em),d=G.useContext(V4).reducedMotion,h=G.useRef(null);a=a||u.renderer,!h.current&&a&&(h.current=a(n,{visualState:e,parent:l,props:t,presenceContext:f,blockInitialAnimation:f?f.initial===!1:!1,reducedMotionConfig:d}));const g=h.current,v=G.useContext($4);g&&!g.projection&&o&&(g.type==="html"||g.type==="svg")&&EA(h.current,t,o,v);const x=G.useRef(!1);G.useInsertionEffect(()=>{g&&x.current&&g.update(t,f)});const y=t[Q4],b=G.useRef(!!y&&!window.MotionHandoffIsComplete?.(y)&&window.MotionHasOptimisedAnimation?.(y));return J7(()=>{g&&(x.current=!0,window.MotionIsMounted=!0,g.updateFeatures(),g.scheduleRenderMicrotask(),b.current&&g.animationState&&g.animationState.animateChanges())}),G.useEffect(()=>{g&&(!b.current&&g.animationState&&g.animationState.animateChanges(),b.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(y)}),b.current=!1),g.enteringChildren=void 0)}),g}function EA(n,e,t,a){const{layoutId:o,layout:l,drag:u,dragConstraints:f,layoutScroll:d,layoutRoot:h,layoutCrossfade:g}=e;n.projection=new t(n.latestValues,e["data-framer-portal-id"]?void 0:J4(n.parent)),n.projection.setOptions({layoutId:o,layout:l,alwaysMeasureLayout:!!u||f&&xo(f),visualElement:n,animationType:typeof l=="string"?l:"both",initialPromotionConfig:a,crossfade:g,layoutScroll:d,layoutRoot:h})}function J4(n){if(n)return n.options.allowProjection!==!1?n.projection:J4(n.parent)}function O0(n,{forwardMotionProps:e=!1}={},t,a){t&&Q9(t);const o=Km(n)?_A:xA;function l(f,d){let h;const g={...G.useContext(V4),...f,layoutId:wA(f)},{isStatic:v}=g,x=nA(f),y=o(f,v);if(!v&&bm){TA();const b=CA(g);h=b.MeasureLayout,x.visualElement=bA(n,y,g,a,b.ProjectionNode)}return m.jsxs(zf.Provider,{value:x,children:[h&&x.visualElement?m.jsx(h,{visualElement:x.visualElement,...g}):null,mA(n,f,SA(y,x.visualElement,d),y,v,e)]})}l.displayName=`motion.${typeof n=="string"?n:`create(${n.displayName??n.name??""})`}`;const u=G.forwardRef(l);return u[yA]=n,u}function wA({layoutId:n}){const e=G.useContext(Z_).id;return e&&n!==void 0?e+"-"+n:n}function TA(n,e){G.useContext(j4).strict}function CA(n){const{drag:e,layout:t}=Do;if(!e&&!t)return{};const a={...e,...t};return{MeasureLayout:e?.isEnabled(n)||t?.isEnabled(n)?a.MeasureLayout:void 0,ProjectionNode:a.ProjectionNode}}function AA(n,e){if(typeof Proxy>"u")return O0;const t=new Map,a=(l,u)=>O0(l,u,n,e),o=(l,u)=>a(l,u);return new Proxy(o,{get:(l,u)=>u==="create"?a:(t.has(u)||t.set(u,O0(u,void 0,n,e)),t.get(u))})}function ey({top:n,left:e,right:t,bottom:a}){return{x:{min:e,max:t},y:{min:n,max:a}}}function RA({x:n,y:e}){return{top:e.min,right:n.max,bottom:e.max,left:n.min}}function NA(n,e){if(!e)return n;const t=e({x:n.left,y:n.top}),a=e({x:n.right,y:n.bottom});return{top:t.y,left:t.x,bottom:a.y,right:a.x}}function I0(n){return n===void 0||n===1}function Kp({scale:n,scaleX:e,scaleY:t}){return!I0(n)||!I0(e)||!I0(t)}function fr(n){return Kp(n)||ty(n)||n.z||n.rotate||n.rotateX||n.rotateY||n.skewX||n.skewY}function ty(n){return sx(n.x)||sx(n.y)}function sx(n){return n&&n!=="0%"}function Nf(n,e,t){const a=n-t,o=e*a;return t+o}function ax(n,e,t,a,o){return o!==void 0&&(n=Nf(n,o,a)),Nf(n,t,a)+e}function Qp(n,e=0,t=1,a,o){n.min=ax(n.min,e,t,a,o),n.max=ax(n.max,e,t,a,o)}function ny(n,{x:e,y:t}){Qp(n.x,e.translate,e.scale,e.originPoint),Qp(n.y,t.translate,t.scale,t.originPoint)}const rx=.999999999999,ox=1.0000000000001;function LA(n,e,t,a=!1){const o=t.length;if(!o)return;e.x=e.y=1;let l,u;for(let f=0;f<o;f++){l=t[f],u=l.projectionDelta;const{visualElement:d}=l.options;d&&d.props.style&&d.props.style.display==="contents"||(a&&l.options.layoutScroll&&l.scroll&&l!==l.root&&yo(n,{x:-l.scroll.offset.x,y:-l.scroll.offset.y}),u&&(e.x*=u.x.scale,e.y*=u.y.scale,ny(n,u)),a&&fr(l.latestValues)&&yo(n,l.latestValues))}e.x<ox&&e.x>rx&&(e.x=1),e.y<ox&&e.y>rx&&(e.y=1)}function _o(n,e){n.min=n.min+e,n.max=n.max+e}function lx(n,e,t,a,o=.5){const l=en(n.min,n.max,o);Qp(n,e,t,l,a)}function yo(n,e){lx(n.x,e.x,e.scaleX,e.scale,e.originX),lx(n.y,e.y,e.scaleY,e.scale,e.originY)}function iy(n,e){return ey(NA(n.getBoundingClientRect(),e))}function DA(n,e,t){const a=iy(n,t),{scroll:o}=e;return o&&(_o(a.x,o.offset.x),_o(a.y,o.offset.y)),a}const cx=()=>({translate:0,scale:1,origin:0,originPoint:0}),So=()=>({x:cx(),y:cx()}),ux=()=>({min:0,max:0}),ln=()=>({x:ux(),y:ux()}),$p={current:null},sy={current:!1};function UA(){if(sy.current=!0,!!bm)if(window.matchMedia){const n=window.matchMedia("(prefers-reduced-motion)"),e=()=>$p.current=n.matches;n.addEventListener("change",e),e()}else $p.current=!1}const PA=new WeakMap;function OA(n,e,t){for(const a in e){const o=e[a],l=t[a];if(jn(o))n.addValue(a,o);else if(jn(l))n.addValue(a,Lo(o,{owner:n}));else if(l!==o)if(n.hasValue(a)){const u=n.getValue(a);u.liveStyle===!0?u.jump(o):u.hasAnimated||u.set(o)}else{const u=n.getStaticValue(a);n.addValue(a,Lo(u!==void 0?u:o,{owner:n}))}}for(const a in t)e[a]===void 0&&n.removeValue(a);return e}const fx=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class IA{scrapeMotionValuesFromProps(e,t,a){return{}}constructor({parent:e,props:t,presenceContext:a,reducedMotionConfig:o,blockInitialAnimation:l,visualState:u},f={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=jm,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const x=Jn.now();this.renderScheduledAt<x&&(this.renderScheduledAt=x,Qt.render(this.render,!1,!0))};const{latestValues:d,renderState:h}=u;this.latestValues=d,this.baseTarget={...d},this.initialValues=t.initial?{...d}:{},this.renderState=h,this.parent=e,this.props=t,this.presenceContext=a,this.depth=e?e.depth+1:0,this.reducedMotionConfig=o,this.options=f,this.blockInitialAnimation=!!l,this.isControllingVariants=jf(t),this.isVariantNode=k4(t),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(e&&e.current);const{willChange:g,...v}=this.scrapeMotionValuesFromProps(t,{},this);for(const x in v){const y=v[x];d[x]!==void 0&&jn(y)&&y.set(d[x])}}mount(e){this.current=e,PA.set(e,this),this.projection&&!this.projection.instance&&this.projection.mount(e),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((t,a)=>this.bindToMotionValue(a,t)),sy.current||UA(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:$p.current,this.parent?.addChild(this),this.update(this.props,this.presenceContext)}unmount(){this.projection&&this.projection.unmount(),La(this.notifyUpdate),La(this.render),this.valueSubscriptions.forEach(e=>e()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const e in this.events)this.events[e].clear();for(const e in this.features){const t=this.features[e];t&&(t.unmount(),t.isMounted=!1)}this.current=null}addChild(e){this.children.add(e),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(e)}removeChild(e){this.children.delete(e),this.enteringChildren&&this.enteringChildren.delete(e)}bindToMotionValue(e,t){this.valueSubscriptions.has(e)&&this.valueSubscriptions.get(e)();const a=jo.has(e);a&&this.onBindTransform&&this.onBindTransform();const o=t.on("change",u=>{this.latestValues[e]=u,this.props.onUpdate&&Qt.preRender(this.notifyUpdate),a&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let l;window.MotionCheckAppearSync&&(l=window.MotionCheckAppearSync(this,e,t)),this.valueSubscriptions.set(e,()=>{o(),l&&l(),t.owner&&t.stop()})}sortNodePosition(e){return!this.current||!this.sortInstanceNodePosition||this.type!==e.type?0:this.sortInstanceNodePosition(this.current,e.current)}updateFeatures(){let e="animation";for(e in Do){const t=Do[e];if(!t)continue;const{isEnabled:a,Feature:o}=t;if(!this.features[e]&&o&&a(this.props)&&(this.features[e]=new o(this)),this.features[e]){const l=this.features[e];l.isMounted?l.update():(l.mount(),l.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):ln()}getStaticValue(e){return this.latestValues[e]}setStaticValue(e,t){this.latestValues[e]=t}update(e,t){(e.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=e,this.prevPresenceContext=this.presenceContext,this.presenceContext=t;for(let a=0;a<fx.length;a++){const o=fx[a];this.propEventSubscriptions[o]&&(this.propEventSubscriptions[o](),delete this.propEventSubscriptions[o]);const l="on"+o,u=e[l];u&&(this.propEventSubscriptions[o]=this.on(o,u))}this.prevMotionValues=OA(this,this.scrapeMotionValuesFromProps(e,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(e){return this.props.variants?this.props.variants[e]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(e){const t=this.getClosestVariantNode();if(t)return t.variantChildren&&t.variantChildren.add(e),()=>t.variantChildren.delete(e)}addValue(e,t){const a=this.values.get(e);t!==a&&(a&&this.removeValue(e),this.bindToMotionValue(e,t),this.values.set(e,t),this.latestValues[e]=t.get())}removeValue(e){this.values.delete(e);const t=this.valueSubscriptions.get(e);t&&(t(),this.valueSubscriptions.delete(e)),delete this.latestValues[e],this.removeValueFromRenderState(e,this.renderState)}hasValue(e){return this.values.has(e)}getValue(e,t){if(this.props.values&&this.props.values[e])return this.props.values[e];let a=this.values.get(e);return a===void 0&&t!==void 0&&(a=Lo(t===null?void 0:t,{owner:this}),this.addValue(e,a)),a}readValue(e,t){let a=this.latestValues[e]!==void 0||!this.current?this.latestValues[e]:this.getBaseTargetFromProps(this.props,e)??this.readValueFromInstance(this.current,e,this.options);return a!=null&&(typeof a=="string"&&(K_(a)||$_(a))?a=parseFloat(a):!Z9(a)&&Da.test(t)&&(a=U4(e,t)),this.setBaseTarget(e,jn(a)?a.get():a)),jn(a)?a.get():a}setBaseTarget(e,t){this.baseTarget[e]=t}getBaseTarget(e){const{initial:t}=this.props;let a;if(typeof t=="string"||typeof t=="object"){const l=Qm(this.props,t,this.presenceContext?.custom);l&&(a=l[e])}if(t&&a!==void 0)return a;const o=this.getBaseTargetFromProps(this.props,e);return o!==void 0&&!jn(o)?o:this.initialValues[e]!==void 0&&a===void 0?void 0:this.baseTarget[e]}on(e,t){return this.events[e]||(this.events[e]=new Rm),this.events[e].add(t)}notify(e,...t){this.events[e]&&this.events[e].notify(...t)}scheduleRenderMicrotask(){Gm.render(this.render)}}class ay extends IA{constructor(){super(...arguments),this.KeyframeResolver=B9}sortInstanceNodePosition(e,t){return e.compareDocumentPosition(t)&2?1:-1}getBaseTargetFromProps(e,t){return e.style?e.style[t]:void 0}removeValueFromRenderState(e,{vars:t,style:a}){delete t[e],delete a[e]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:e}=this.props;jn(e)&&(this.childSubscription=e.on("change",t=>{this.current&&(this.current.textContent=`${t}`)}))}}function ry(n,{style:e,vars:t},a,o){const l=n.style;let u;for(u in e)l[u]=e[u];o?.applyProjectionStyles(l,a);for(u in t)l.setProperty(u,t[u])}function BA(n){return window.getComputedStyle(n)}class FA extends ay{constructor(){super(...arguments),this.type="html",this.renderInstance=ry}readValueFromInstance(e,t){if(jo.has(t))return this.projection?.isProjecting?kp(t):n9(e,t);{const a=BA(e),o=(Dm(t)?a.getPropertyValue(t):a[t])||0;return typeof o=="string"?o.trim():o}}measureInstanceViewportBox(e,{transformPagePoint:t}){return iy(e,t)}build(e,t,a){Ym(e,t,a.transformTemplate)}scrapeMotionValuesFromProps(e,t,a){return $m(e,t,a)}}const oy=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function zA(n,e,t,a){ry(n,e,void 0,a);for(const o in e.attrs)n.setAttribute(oy.has(o)?o:Jm(o),e.attrs[o])}class VA extends ay{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=ln}getBaseTargetFromProps(e,t){return e[t]}readValueFromInstance(e,t){if(jo.has(t)){const a=D4(t);return a&&a.default||0}return t=oy.has(t)?t:Jm(t),e.getAttribute(t)}scrapeMotionValuesFromProps(e,t,a){return K4(e,t,a)}build(e,t,a){X4(e,t,this.isSVGTag,a.transformTemplate,a.style)}renderInstance(e,t,a,o){zA(e,t,a,o)}mount(e){this.isSVGTag=Y4(e.tagName),super.mount(e)}}const jA=(n,e)=>Km(n)?new VA(e):new FA(e,{allowProjection:n!==G.Fragment});function wo(n,e,t){const a=n.getProps();return Qm(a,e,t!==void 0?t:a.custom,n)}const Jp=n=>Array.isArray(n);function HA(n,e,t){n.hasValue(e)?n.getValue(e).set(t):n.addValue(e,Lo(t))}function kA(n){return Jp(n)?n[n.length-1]||0:n}function GA(n,e){const t=wo(n,e);let{transitionEnd:a={},transition:o={},...l}=t||{};l={...l,...a};for(const u in l){const f=kA(l[u]);HA(n,u,f)}}function WA(n){return!!(jn(n)&&n.add)}function em(n,e){const t=n.getValue("willChange");if(WA(t))return t.add(e);if(!t&&Is.WillChange){const a=new Is.WillChange("auto");n.addValue("willChange",a),a.add(e)}}function ly(n){return n.props[Q4]}const XA=n=>n!==null;function qA(n,{repeat:e,repeatType:t="loop"},a){const o=n.filter(XA),l=e&&t!=="loop"&&e%2===1?0:o.length-1;return o[l]}const YA={type:"spring",stiffness:500,damping:25,restSpeed:10},ZA=n=>({type:"spring",stiffness:550,damping:n===0?2*Math.sqrt(550):30,restSpeed:10}),KA={type:"keyframes",duration:.8},QA={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},$A=(n,{keyframes:e})=>e.length>2?KA:jo.has(n)?n.startsWith("scale")?ZA(e[1]):YA:QA;function JA({when:n,delay:e,delayChildren:t,staggerChildren:a,staggerDirection:o,repeat:l,repeatType:u,repeatDelay:f,from:d,elapsed:h,...g}){return!!Object.keys(g).length}const e2=(n,e,t,a={},o,l)=>u=>{const f=Hm(a,n)||{},d=f.delay||a.delay||0;let{elapsed:h=0}=a;h=h-Zi(d);const g={keyframes:Array.isArray(t)?t:[null,t],ease:"easeOut",velocity:e.getVelocity(),...f,delay:-h,onUpdate:x=>{e.set(x),f.onUpdate&&f.onUpdate(x)},onComplete:()=>{u(),f.onComplete&&f.onComplete()},name:n,motionValue:e,element:l?void 0:o};JA(f)||Object.assign(g,$A(n,g)),g.duration&&(g.duration=Zi(g.duration)),g.repeatDelay&&(g.repeatDelay=Zi(g.repeatDelay)),g.from!==void 0&&(g.keyframes[0]=g.from);let v=!1;if((g.type===!1||g.duration===0&&!g.repeatDelay)&&(Yp(g),g.delay===0&&(v=!0)),(Is.instantAnimations||Is.skipAnimations)&&(v=!0,Yp(g),g.delay=0),g.allowFlatten=!f.type&&!f.ease,v&&!l&&e.get()!==void 0){const x=qA(g.keyframes,f);if(x!==void 0){Qt.update(()=>{g.onUpdate(x),g.onComplete()});return}}return f.isSync?new Vm(g):new w9(g)};function eR({protectedKeys:n,needsAnimating:e},t){const a=n.hasOwnProperty(t)&&e[t]!==!0;return e[t]=!1,a}function cy(n,e,{delay:t=0,transitionOverride:a,type:o}={}){let{transition:l=n.getDefaultTransition(),transitionEnd:u,...f}=e;a&&(l=a);const d=[],h=o&&n.animationState&&n.animationState.getState()[o];for(const g in f){const v=n.getValue(g,n.latestValues[g]??null),x=f[g];if(x===void 0||h&&eR(h,g))continue;const y={delay:t,...Hm(l||{},g)},b=v.get();if(b!==void 0&&!v.isAnimating&&!Array.isArray(x)&&x===b&&!y.velocity)continue;let w=!1;if(window.MotionHandoffAnimation){const S=ly(n);if(S){const N=window.MotionHandoffAnimation(S,g,Qt);N!==null&&(y.startTime=N,w=!0)}}em(n,g),v.start(e2(g,v,x,n.shouldReduceMotion&&R4.has(g)?{type:!1}:y,n,w));const M=v.animation;M&&d.push(M)}return u&&Promise.all(d).then(()=>{Qt.update(()=>{u&&GA(n,u)})}),d}function uy(n,e,t,a=0,o=1){const l=Array.from(n).sort((h,g)=>h.sortNodePosition(g)).indexOf(e),u=n.size,f=(u-1)*a;return typeof t=="function"?t(l,u):o===1?l*a:f-l*a}function tm(n,e,t={}){const a=wo(n,e,t.type==="exit"?n.presenceContext?.custom:void 0);let{transition:o=n.getDefaultTransition()||{}}=a||{};t.transitionOverride&&(o=t.transitionOverride);const l=a?()=>Promise.all(cy(n,a,t)):()=>Promise.resolve(),u=n.variantChildren&&n.variantChildren.size?(d=0)=>{const{delayChildren:h=0,staggerChildren:g,staggerDirection:v}=o;return tR(n,e,d,h,g,v,t)}:()=>Promise.resolve(),{when:f}=o;if(f){const[d,h]=f==="beforeChildren"?[l,u]:[u,l];return d().then(()=>h())}else return Promise.all([l(),u(t.delay)])}function tR(n,e,t=0,a=0,o=0,l=1,u){const f=[];for(const d of n.variantChildren)d.notify("AnimationStart",e),f.push(tm(d,e,{...u,delay:t+(typeof a=="function"?0:a)+uy(n.variantChildren,d,a,o,l)}).then(()=>d.notify("AnimationComplete",e)));return Promise.all(f)}function nR(n,e,t={}){n.notify("AnimationStart",e);let a;if(Array.isArray(e)){const o=e.map(l=>tm(n,l,t));a=Promise.all(o)}else if(typeof e=="string")a=tm(n,e,t);else{const o=typeof e=="function"?wo(n,e,t.custom):e;a=Promise.all(cy(n,o,t))}return a.then(()=>{n.notify("AnimationComplete",e)})}function fy(n,e){if(!Array.isArray(e))return!1;const t=e.length;if(t!==n.length)return!1;for(let a=0;a<t;a++)if(e[a]!==n[a])return!1;return!0}const iR=qm.length;function dy(n){if(!n)return;if(!n.isControllingVariants){const t=n.parent?dy(n.parent)||{}:{};return n.props.initial!==void 0&&(t.initial=n.props.initial),t}const e={};for(let t=0;t<iR;t++){const a=qm[t],o=n.props[a];(dc(o)||o===!1)&&(e[a]=o)}return e}const sR=[...Xm].reverse(),aR=Xm.length;function rR(n){return e=>Promise.all(e.map(({animation:t,options:a})=>nR(n,t,a)))}function oR(n){let e=rR(n),t=dx(),a=!0;const o=d=>(h,g)=>{const v=wo(n,g,d==="exit"?n.presenceContext?.custom:void 0);if(v){const{transition:x,transitionEnd:y,...b}=v;h={...h,...b,...y}}return h};function l(d){e=d(n)}function u(d){const{props:h}=n,g=dy(n.parent)||{},v=[],x=new Set;let y={},b=1/0;for(let M=0;M<aR;M++){const S=sR[M],N=t[S],T=h[S]!==void 0?h[S]:g[S],R=dc(T),P=S===d?N.isActive:null;P===!1&&(b=M);let I=T===g[S]&&T!==h[S]&&R;if(I&&a&&n.manuallyAnimateOnMount&&(I=!1),N.protectedKeys={...y},!N.isActive&&P===null||!T&&!N.prevProp||Vf(T)||typeof T=="boolean")continue;const F=lR(N.prevProp,T);let V=F||S===d&&N.isActive&&!I&&R||M>b&&R,U=!1;const L=Array.isArray(T)?T:[T];let z=L.reduce(o(S),{});P===!1&&(z={});const{prevResolvedValues:ce={}}=N,ue={...ce,...z},ge=Z=>{V=!0,x.has(Z)&&(U=!0,x.delete(Z)),N.needsAnimating[Z]=!0;const Y=n.getValue(Z);Y&&(Y.liveStyle=!1)};for(const Z in ue){const Y=z[Z],he=ce[Z];if(y.hasOwnProperty(Z))continue;let O=!1;Jp(Y)&&Jp(he)?O=!fy(Y,he):O=Y!==he,O?Y!=null?ge(Z):x.add(Z):Y!==void 0&&x.has(Z)?ge(Z):N.protectedKeys[Z]=!0}N.prevProp=T,N.prevResolvedValues=z,N.isActive&&(y={...y,...z}),a&&n.blockInitialAnimation&&(V=!1);const me=I&&F;V&&(!me||U)&&v.push(...L.map(Z=>{const Y={type:S};if(typeof Z=="string"&&a&&!me&&n.manuallyAnimateOnMount&&n.parent){const{parent:he}=n,O=wo(he,Z);if(he.enteringChildren&&O){const{delayChildren:ee}=O.transition||{};Y.delay=uy(he.enteringChildren,n,ee)}}return{animation:Z,options:Y}}))}if(x.size){const M={};if(typeof h.initial!="boolean"){const S=wo(n,Array.isArray(h.initial)?h.initial[0]:h.initial);S&&S.transition&&(M.transition=S.transition)}x.forEach(S=>{const N=n.getBaseTarget(S),T=n.getValue(S);T&&(T.liveStyle=!0),M[S]=N??null}),v.push({animation:M})}let w=!!v.length;return a&&(h.initial===!1||h.initial===h.animate)&&!n.manuallyAnimateOnMount&&(w=!1),a=!1,w?e(v):Promise.resolve()}function f(d,h){if(t[d].isActive===h)return Promise.resolve();n.variantChildren?.forEach(v=>v.animationState?.setActive(d,h)),t[d].isActive=h;const g=u(d);for(const v in t)t[v].protectedKeys={};return g}return{animateChanges:u,setActive:f,setAnimateFunction:l,getState:()=>t,reset:()=>{t=dx(),a=!0}}}function lR(n,e){return typeof e=="string"?e!==n:Array.isArray(e)?!fy(e,n):!1}function or(n=!1){return{isActive:n,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function dx(){return{animate:or(!0),whileInView:or(),whileHover:or(),whileTap:or(),whileDrag:or(),whileFocus:or(),exit:or()}}class Pa{constructor(e){this.isMounted=!1,this.node=e}update(){}}class cR extends Pa{constructor(e){super(e),e.animationState||(e.animationState=oR(e))}updateAnimationControlsSubscription(){const{animate:e}=this.node.getProps();Vf(e)&&(this.unmountControls=e.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:e}=this.node.getProps(),{animate:t}=this.node.prevProps||{};e!==t&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let uR=0;class fR extends Pa{constructor(){super(...arguments),this.id=uR++}update(){if(!this.node.presenceContext)return;const{isPresent:e,onExitComplete:t}=this.node.presenceContext,{isPresent:a}=this.node.prevPresenceContext||{};if(!this.node.animationState||e===a)return;const o=this.node.animationState.setActive("exit",!e);t&&!e&&o.then(()=>{t(this.id)})}mount(){const{register:e,onExitComplete:t}=this.node.presenceContext||{};t&&t(this.id),e&&(this.unmount=e(this.id))}unmount(){}}const dR={animation:{Feature:cR},exit:{Feature:fR}};function pc(n,e,t,a={passive:!0}){return n.addEventListener(e,t,a),()=>n.removeEventListener(e,t)}function Tc(n){return{point:{x:n.pageX,y:n.pageY}}}const hR=n=>e=>Wm(e)&&n(e,Tc(e));function Jl(n,e,t,a){return pc(n,e,hR(t),a)}const hy=1e-4,pR=1-hy,mR=1+hy,py=.01,gR=0-py,vR=0+py;function Gn(n){return n.max-n.min}function xR(n,e,t){return Math.abs(n-e)<=t}function hx(n,e,t,a=.5){n.origin=a,n.originPoint=en(e.min,e.max,n.origin),n.scale=Gn(t)/Gn(e),n.translate=en(t.min,t.max,n.origin)-n.originPoint,(n.scale>=pR&&n.scale<=mR||isNaN(n.scale))&&(n.scale=1),(n.translate>=gR&&n.translate<=vR||isNaN(n.translate))&&(n.translate=0)}function ec(n,e,t,a){hx(n.x,e.x,t.x,a?a.originX:void 0),hx(n.y,e.y,t.y,a?a.originY:void 0)}function px(n,e,t){n.min=t.min+e.min,n.max=n.min+Gn(e)}function _R(n,e,t){px(n.x,e.x,t.x),px(n.y,e.y,t.y)}function mx(n,e,t){n.min=e.min-t.min,n.max=n.min+Gn(e)}function tc(n,e,t){mx(n.x,e.x,t.x),mx(n.y,e.y,t.y)}function Ei(n){return[n("x"),n("y")]}const my=({current:n})=>n?n.ownerDocument.defaultView:null,gx=(n,e)=>Math.abs(n-e);function yR(n,e){const t=gx(n.x,e.x),a=gx(n.y,e.y);return Math.sqrt(t**2+a**2)}class gy{constructor(e,t,{transformPagePoint:a,contextWindow:o=window,dragSnapToOrigin:l=!1,distanceThreshold:u=3}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const x=F0(this.lastMoveEventInfo,this.history),y=this.startEvent!==null,b=yR(x.offset,{x:0,y:0})>=this.distanceThreshold;if(!y&&!b)return;const{point:w}=x,{timestamp:M}=On;this.history.push({...w,timestamp:M});const{onStart:S,onMove:N}=this.handlers;y||(S&&S(this.lastMoveEvent,x),this.startEvent=this.lastMoveEvent),N&&N(this.lastMoveEvent,x)},this.handlePointerMove=(x,y)=>{this.lastMoveEvent=x,this.lastMoveEventInfo=B0(y,this.transformPagePoint),Qt.update(this.updatePoint,!0)},this.handlePointerUp=(x,y)=>{this.end();const{onEnd:b,onSessionEnd:w,resumeAnimation:M}=this.handlers;if(this.dragSnapToOrigin&&M&&M(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const S=F0(x.type==="pointercancel"?this.lastMoveEventInfo:B0(y,this.transformPagePoint),this.history);this.startEvent&&b&&b(x,S),w&&w(x,S)},!Wm(e))return;this.dragSnapToOrigin=l,this.handlers=t,this.transformPagePoint=a,this.distanceThreshold=u,this.contextWindow=o||window;const f=Tc(e),d=B0(f,this.transformPagePoint),{point:h}=d,{timestamp:g}=On;this.history=[{...h,timestamp:g}];const{onSessionStart:v}=t;v&&v(e,F0(d,this.history)),this.removeListeners=bc(Jl(this.contextWindow,"pointermove",this.handlePointerMove),Jl(this.contextWindow,"pointerup",this.handlePointerUp),Jl(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(e){this.handlers=e}end(){this.removeListeners&&this.removeListeners(),La(this.updatePoint)}}function B0(n,e){return e?{point:e(n.point)}:n}function vx(n,e){return{x:n.x-e.x,y:n.y-e.y}}function F0({point:n},e){return{point:n,delta:vx(n,vy(e)),offset:vx(n,SR(e)),velocity:MR(e,.1)}}function SR(n){return n[0]}function vy(n){return n[n.length-1]}function MR(n,e){if(n.length<2)return{x:0,y:0};let t=n.length-1,a=null;const o=vy(n);for(;t>=0&&(a=n[t],!(o.timestamp-a.timestamp>Zi(e)));)t--;if(!a)return{x:0,y:0};const l=Ki(o.timestamp-a.timestamp);if(l===0)return{x:0,y:0};const u={x:(o.x-a.x)/l,y:(o.y-a.y)/l};return u.x===1/0&&(u.x=0),u.y===1/0&&(u.y=0),u}function bR(n,{min:e,max:t},a){return e!==void 0&&n<e?n=a?en(e,n,a.min):Math.max(n,e):t!==void 0&&n>t&&(n=a?en(t,n,a.max):Math.min(n,t)),n}function xx(n,e,t){return{min:e!==void 0?n.min+e:void 0,max:t!==void 0?n.max+t-(n.max-n.min):void 0}}function ER(n,{top:e,left:t,bottom:a,right:o}){return{x:xx(n.x,t,o),y:xx(n.y,e,a)}}function _x(n,e){let t=e.min-n.min,a=e.max-n.max;return e.max-e.min<n.max-n.min&&([t,a]=[a,t]),{min:t,max:a}}function wR(n,e){return{x:_x(n.x,e.x),y:_x(n.y,e.y)}}function TR(n,e){let t=.5;const a=Gn(n),o=Gn(e);return o>a?t=cc(e.min,e.max-a,n.min):a>o&&(t=cc(n.min,n.max-o,e.min)),Os(0,1,t)}function CR(n,e){const t={};return e.min!==void 0&&(t.min=e.min-n.min),e.max!==void 0&&(t.max=e.max-n.min),t}const nm=.35;function AR(n=nm){return n===!1?n=0:n===!0&&(n=nm),{x:yx(n,"left","right"),y:yx(n,"top","bottom")}}function yx(n,e,t){return{min:Sx(n,e),max:Sx(n,t)}}function Sx(n,e){return typeof n=="number"?n:n[e]||0}const RR=new WeakMap;class NR{constructor(e){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=ln(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=e}start(e,{snapToCursor:t=!1,distanceThreshold:a}={}){const{presenceContext:o}=this.visualElement;if(o&&o.isPresent===!1)return;const l=v=>{const{dragSnapToOrigin:x}=this.getProps();x?this.pauseAnimation():this.stopAnimation(),t&&this.snapToCursor(Tc(v).point)},u=(v,x)=>{const{drag:y,dragPropagation:b,onDragStart:w}=this.getProps();if(y&&!b&&(this.openDragLock&&this.openDragLock(),this.openDragLock=j9(y),!this.openDragLock))return;this.latestPointerEvent=v,this.latestPanInfo=x,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Ei(S=>{let N=this.getAxisMotionValue(S).get()||0;if(Qi.test(N)){const{projection:T}=this.visualElement;if(T&&T.layout){const R=T.layout.layoutBox[S];R&&(N=Gn(R)*(parseFloat(N)/100))}}this.originPoint[S]=N}),w&&Qt.postRender(()=>w(v,x)),em(this.visualElement,"transform");const{animationState:M}=this.visualElement;M&&M.setActive("whileDrag",!0)},f=(v,x)=>{this.latestPointerEvent=v,this.latestPanInfo=x;const{dragPropagation:y,dragDirectionLock:b,onDirectionLock:w,onDrag:M}=this.getProps();if(!y&&!this.openDragLock)return;const{offset:S}=x;if(b&&this.currentDirection===null){this.currentDirection=LR(S),this.currentDirection!==null&&w&&w(this.currentDirection);return}this.updateAxis("x",x.point,S),this.updateAxis("y",x.point,S),this.visualElement.render(),M&&M(v,x)},d=(v,x)=>{this.latestPointerEvent=v,this.latestPanInfo=x,this.stop(v,x),this.latestPointerEvent=null,this.latestPanInfo=null},h=()=>Ei(v=>this.getAnimationState(v)==="paused"&&this.getAxisMotionValue(v).animation?.play()),{dragSnapToOrigin:g}=this.getProps();this.panSession=new gy(e,{onSessionStart:l,onStart:u,onMove:f,onSessionEnd:d,resumeAnimation:h},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,distanceThreshold:a,contextWindow:my(this.visualElement)})}stop(e,t){const a=e||this.latestPointerEvent,o=t||this.latestPanInfo,l=this.isDragging;if(this.cancel(),!l||!o||!a)return;const{velocity:u}=o;this.startAnimation(u);const{onDragEnd:f}=this.getProps();f&&Qt.postRender(()=>f(a,o))}cancel(){this.isDragging=!1;const{projection:e,animationState:t}=this.visualElement;e&&(e.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:a}=this.getProps();!a&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),t&&t.setActive("whileDrag",!1)}updateAxis(e,t,a){const{drag:o}=this.getProps();if(!a||!lf(e,o,this.currentDirection))return;const l=this.getAxisMotionValue(e);let u=this.originPoint[e]+a[e];this.constraints&&this.constraints[e]&&(u=bR(u,this.constraints[e],this.elastic[e])),l.set(u)}resolveConstraints(){const{dragConstraints:e,dragElastic:t}=this.getProps(),a=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,o=this.constraints;e&&xo(e)?this.constraints||(this.constraints=this.resolveRefConstraints()):e&&a?this.constraints=ER(a.layoutBox,e):this.constraints=!1,this.elastic=AR(t),o!==this.constraints&&a&&this.constraints&&!this.hasMutatedConstraints&&Ei(l=>{this.constraints!==!1&&this.getAxisMotionValue(l)&&(this.constraints[l]=CR(a.layoutBox[l],this.constraints[l]))})}resolveRefConstraints(){const{dragConstraints:e,onMeasureDragConstraints:t}=this.getProps();if(!e||!xo(e))return!1;const a=e.current,{projection:o}=this.visualElement;if(!o||!o.layout)return!1;const l=DA(a,o.root,this.visualElement.getTransformPagePoint());let u=wR(o.layout.layoutBox,l);if(t){const f=t(RA(u));this.hasMutatedConstraints=!!f,f&&(u=ey(f))}return u}startAnimation(e){const{drag:t,dragMomentum:a,dragElastic:o,dragTransition:l,dragSnapToOrigin:u,onDragTransitionEnd:f}=this.getProps(),d=this.constraints||{},h=Ei(g=>{if(!lf(g,t,this.currentDirection))return;let v=d&&d[g]||{};u&&(v={min:0,max:0});const x=o?200:1e6,y=o?40:1e7,b={type:"inertia",velocity:a?e[g]:0,bounceStiffness:x,bounceDamping:y,timeConstant:750,restDelta:1,restSpeed:10,...l,...v};return this.startAxisValueAnimation(g,b)});return Promise.all(h).then(f)}startAxisValueAnimation(e,t){const a=this.getAxisMotionValue(e);return em(this.visualElement,e),a.start(e2(e,a,0,t,this.visualElement,!1))}stopAnimation(){Ei(e=>this.getAxisMotionValue(e).stop())}pauseAnimation(){Ei(e=>this.getAxisMotionValue(e).animation?.pause())}getAnimationState(e){return this.getAxisMotionValue(e).animation?.state}getAxisMotionValue(e){const t=`_drag${e.toUpperCase()}`,a=this.visualElement.getProps(),o=a[t];return o||this.visualElement.getValue(e,(a.initial?a.initial[e]:void 0)||0)}snapToCursor(e){Ei(t=>{const{drag:a}=this.getProps();if(!lf(t,a,this.currentDirection))return;const{projection:o}=this.visualElement,l=this.getAxisMotionValue(t);if(o&&o.layout){const{min:u,max:f}=o.layout.layoutBox[t];l.set(e[t]-en(u,f,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:e,dragConstraints:t}=this.getProps(),{projection:a}=this.visualElement;if(!xo(t)||!a||!this.constraints)return;this.stopAnimation();const o={x:0,y:0};Ei(u=>{const f=this.getAxisMotionValue(u);if(f&&this.constraints!==!1){const d=f.get();o[u]=TR({min:d,max:d},this.constraints[u])}});const{transformTemplate:l}=this.visualElement.getProps();this.visualElement.current.style.transform=l?l({},""):"none",a.root&&a.root.updateScroll(),a.updateLayout(),this.resolveConstraints(),Ei(u=>{if(!lf(u,e,null))return;const f=this.getAxisMotionValue(u),{min:d,max:h}=this.constraints[u];f.set(en(d,h,o[u]))})}addListeners(){if(!this.visualElement.current)return;RR.set(this.visualElement,this);const e=this.visualElement.current,t=Jl(e,"pointerdown",d=>{const{drag:h,dragListener:g=!0}=this.getProps();h&&g&&this.start(d)}),a=()=>{const{dragConstraints:d}=this.getProps();xo(d)&&d.current&&(this.constraints=this.resolveRefConstraints())},{projection:o}=this.visualElement,l=o.addEventListener("measure",a);o&&!o.layout&&(o.root&&o.root.updateScroll(),o.updateLayout()),Qt.read(a);const u=pc(window,"resize",()=>this.scalePositionWithinConstraints()),f=o.addEventListener("didUpdate",(({delta:d,hasLayoutChanged:h})=>{this.isDragging&&h&&(Ei(g=>{const v=this.getAxisMotionValue(g);v&&(this.originPoint[g]+=d[g].translate,v.set(v.get()+d[g].translate))}),this.visualElement.render())}));return()=>{u(),t(),l(),f&&f()}}getProps(){const e=this.visualElement.getProps(),{drag:t=!1,dragDirectionLock:a=!1,dragPropagation:o=!1,dragConstraints:l=!1,dragElastic:u=nm,dragMomentum:f=!0}=e;return{...e,drag:t,dragDirectionLock:a,dragPropagation:o,dragConstraints:l,dragElastic:u,dragMomentum:f}}}function lf(n,e,t){return(e===!0||e===n)&&(t===null||t===n)}function LR(n,e=10){let t=null;return Math.abs(n.y)>e?t="y":Math.abs(n.x)>e&&(t="x"),t}class DR extends Pa{constructor(e){super(e),this.removeGroupControls=wi,this.removeListeners=wi,this.controls=new NR(e)}mount(){const{dragControls:e}=this.node.getProps();e&&(this.removeGroupControls=e.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||wi}unmount(){this.removeGroupControls(),this.removeListeners()}}const Mx=n=>(e,t)=>{n&&Qt.postRender(()=>n(e,t))};class UR extends Pa{constructor(){super(...arguments),this.removePointerDownListener=wi}onPointerDown(e){this.session=new gy(e,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:my(this.node)})}createPanHandlers(){const{onPanSessionStart:e,onPanStart:t,onPan:a,onPanEnd:o}=this.node.getProps();return{onSessionStart:Mx(e),onStart:Mx(t),onMove:a,onEnd:(l,u)=>{delete this.session,o&&Qt.postRender(()=>o(l,u))}}}mount(){this.removePointerDownListener=Jl(this.node.current,"pointerdown",e=>this.onPointerDown(e))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const Sf={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function bx(n,e){return e.max===e.min?0:n/(e.max-e.min)*100}const Hl={correct:(n,e)=>{if(!e.target)return n;if(typeof n=="string")if(at.test(n))n=parseFloat(n);else return n;const t=bx(n,e.target.x),a=bx(n,e.target.y);return`${t}% ${a}%`}},PR={correct:(n,{treeScale:e,projectionDelta:t})=>{const a=n,o=Da.parse(n);if(o.length>5)return a;const l=Da.createTransformer(n),u=typeof o[0]!="number"?1:0,f=t.x.scale*e.x,d=t.y.scale*e.y;o[0+u]/=f,o[1+u]/=d;const h=en(f,d,.5);return typeof o[2+u]=="number"&&(o[2+u]/=h),typeof o[3+u]=="number"&&(o[3+u]/=h),l(o)}};let z0=!1;class OR extends G.Component{componentDidMount(){const{visualElement:e,layoutGroup:t,switchLayoutGroup:a,layoutId:o}=this.props,{projection:l}=e;iA(IR),l&&(t.group&&t.group.add(l),a&&a.register&&o&&a.register(l),z0&&l.root.didUpdate(),l.addEventListener("animationComplete",()=>{this.safeToRemove()}),l.setOptions({...l.options,onExitComplete:()=>this.safeToRemove()})),Sf.hasEverUpdated=!0}getSnapshotBeforeUpdate(e){const{layoutDependency:t,visualElement:a,drag:o,isPresent:l}=this.props,{projection:u}=a;return u&&(u.isPresent=l,z0=!0,o||e.layoutDependency!==t||t===void 0||e.isPresent!==l?u.willUpdate():this.safeToRemove(),e.isPresent!==l&&(l?u.promote():u.relegate()||Qt.postRender(()=>{const f=u.getStack();(!f||!f.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:e}=this.props.visualElement;e&&(e.root.didUpdate(),Gm.postRender(()=>{!e.currentAnimation&&e.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:e,layoutGroup:t,switchLayoutGroup:a}=this.props,{projection:o}=e;z0=!0,o&&(o.scheduleCheckAfterUnmount(),t&&t.group&&t.group.remove(o),a&&a.deregister&&a.deregister(o))}safeToRemove(){const{safeToRemove:e}=this.props;e&&e()}render(){return null}}function xy(n){const[e,t]=K9(),a=G.useContext(Z_);return m.jsx(OR,{...n,layoutGroup:a,switchLayoutGroup:G.useContext($4),isPresent:e,safeToRemove:t})}const IR={borderRadius:{...Hl,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Hl,borderTopRightRadius:Hl,borderBottomLeftRadius:Hl,borderBottomRightRadius:Hl,boxShadow:PR};function BR(n,e,t){const a=jn(n)?n:Lo(n);return a.start(e2("",a,e,t)),a.animation}const FR=(n,e)=>n.depth-e.depth;class zR{constructor(){this.children=[],this.isDirty=!1}add(e){wm(this.children,e),this.isDirty=!0}remove(e){Tm(this.children,e),this.isDirty=!0}
vendor: 5,157 bytes, line 4174
4174forEach(e){this.isDirty&&this.children.sort(FR),this.isDirty=!1,this.children.forEach(e)}}function VR(n,e){const t=Jn.now(),a=({timestamp:o})=>{const l=o-t;l>=e&&(La(a),n(l-e))};return Qt.setup(a,!0),()=>La(a)}const _y=["TopLeft","TopRight","BottomLeft","BottomRight"],jR=_y.length,Ex=n=>typeof n=="string"?parseFloat(n):n,wx=n=>typeof n=="number"||at.test(n);function HR(n,e,t,a,o,l){o?(n.opacity=en(0,t.opacity??1,kR(a)),n.opacityExit=en(e.opacity??1,0,GR(a))):l&&(n.opacity=en(e.opacity??1,t.opacity??1,a));for(let u=0;u<jR;u++){const f=`border${_y[u]}Radius`;let d=Tx(e,f),h=Tx(t,f);if(d===void 0&&h===void 0)continue;d||(d=0),h||(h=0),d===0||h===0||wx(d)===wx(h)?(n[f]=Math.max(en(Ex(d),Ex(h),a),0),(Qi.test(h)||Qi.test(d))&&(n[f]+="%")):n[f]=h}(e.rotate||t.rotate)&&(n.rotate=en(e.rotate||0,t.rotate||0,a))}function Tx(n,e){return n[e]!==void 0?n[e]:n.borderRadius}const kR=yy(0,.5,r4),GR=yy(.5,.95,wi);function yy(n,e,t){return a=>a<n?0:a>e?1:t(cc(n,e,a))}function Cx(n,e){n.min=e.min,n.max=e.max}function bi(n,e){Cx(n.x,e.x),Cx(n.y,e.y)}function Ax(n,e){n.translate=e.translate,n.scale=e.scale,n.originPoint=e.originPoint,n.origin=e.origin}function Rx(n,e,t,a,o){return n-=e,n=Nf(n,1/t,a),o!==void 0&&(n=Nf(n,1/o,a)),n}function WR(n,e=0,t=1,a=.5,o,l=n,u=n){if(Qi.test(e)&&(e=parseFloat(e),e=en(u.min,u.max,e/100)-u.min),typeof e!="number")return;let f=en(l.min,l.max,a);n===l&&(f-=e),n.min=Rx(n.min,e,t,f,o),n.max=Rx(n.max,e,t,f,o)}function Nx(n,e,[t,a,o],l,u){WR(n,e[t],e[a],e[o],e.scale,l,u)}const XR=["x","scaleX","originX"],qR=["y","scaleY","originY"];function Lx(n,e,t,a){Nx(n.x,e,XR,t?t.x:void 0,a?a.x:void 0),Nx(n.y,e,qR,t?t.y:void 0,a?a.y:void 0)}function Dx(n){return n.translate===0&&n.scale===1}function Sy(n){return Dx(n.x)&&Dx(n.y)}function Ux(n,e){return n.min===e.min&&n.max===e.max}function YR(n,e){return Ux(n.x,e.x)&&Ux(n.y,e.y)}function Px(n,e){return Math.round(n.min)===Math.round(e.min)&&Math.round(n.max)===Math.round(e.max)}function My(n,e){return Px(n.x,e.x)&&Px(n.y,e.y)}function Ox(n){return Gn(n.x)/Gn(n.y)}function Ix(n,e){return n.translate===e.translate&&n.scale===e.scale&&n.originPoint===e.originPoint}class ZR{constructor(){this.members=[]}add(e){wm(this.members,e),e.scheduleRender()}remove(e){if(Tm(this.members,e),e===this.prevLead&&(this.prevLead=void 0),e===this.lead){const t=this.members[this.members.length-1];t&&this.promote(t)}}relegate(e){const t=this.members.findIndex(o=>e===o);if(t===0)return!1;let a;for(let o=t;o>=0;o--){const l=this.members[o];if(l.isPresent!==!1){a=l;break}}return a?(this.promote(a),!0):!1}promote(e,t){const a=this.lead;if(e!==a&&(this.prevLead=a,this.lead=e,e.show(),a)){a.instance&&a.scheduleRender(),e.scheduleRender(),e.resumeFrom=a,t&&(e.resumeFrom.preserveOpacity=!0),a.snapshot&&(e.snapshot=a.snapshot,e.snapshot.latestValues=a.animationValues||a.latestValues),e.root&&e.root.isUpdating&&(e.isLayoutDirty=!0);const{crossfade:o}=e.options;o===!1&&a.hide()}}exitAnimationComplete(){this.members.forEach(e=>{const{options:t,resumingFrom:a}=e;t.onExitComplete&&t.onExitComplete(),a&&a.options.onExitComplete&&a.options.onExitComplete()})}scheduleRender(){this.members.forEach(e=>{e.instance&&e.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function KR(n,e,t){let a="";const o=n.x.translate/e.x,l=n.y.translate/e.y,u=t?.z||0;if((o||l||u)&&(a=`translate3d(${o}px, ${l}px, ${u}px) `),(e.x!==1||e.y!==1)&&(a+=`scale(${1/e.x}, ${1/e.y}) `),t){const{transformPerspective:h,rotate:g,rotateX:v,rotateY:x,skewX:y,skewY:b}=t;h&&(a=`perspective(${h}px) ${a}`),g&&(a+=`rotate(${g}deg) `),v&&(a+=`rotateX(${v}deg) `),x&&(a+=`rotateY(${x}deg) `),y&&(a+=`skewX(${y}deg) `),b&&(a+=`skewY(${b}deg) `)}const f=n.x.scale*e.x,d=n.y.scale*e.y;return(f!==1||d!==1)&&(a+=`scale(${f}, ${d})`),a||"none"}const V0=["","X","Y","Z"],QR=1e3;let $R=0;function j0(n,e,t,a){const{latestValues:o}=e;o[n]&&(t[n]=o[n],e.setStaticValue(n,0),a&&(a[n]=0))}function by(n){if(n.hasCheckedOptimisedAppear=!0,n.root===n)return;const{visualElement:e}=n.options;if(!e)return;const t=ly(e);if(window.MotionHasOptimisedAnimation(t,"transform")){const{layout:o,layoutId:l}=n.options;window.MotionCancelOptimisedAnimation(t,"transform",Qt,!(o||l))}const{parent:a}=n;a&&!a.hasCheckedOptimisedAppear&&by(a)}function Ey({attachResizeListener:n,defaultParent:e,measureScroll:t,checkIsScrollRoot:a,resetTransform:o}){return class{constructor(u={},f=e?.()){this.id=$R++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>
vendor: 4,304 bytes, line 4174
4174{this.projectionUpdateScheduled=!1,this.nodes.forEach(tN),this.nodes.forEach(aN),this.nodes.forEach(rN),this.nodes.forEach(nN)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=u,this.root=f?f.root||f:this,this.path=f?[...f.path,f]:[],this.parent=f,this.depth=f?f.depth+1:0;for(let d=0;d<this.path.length;d++)this.path[d].shouldResetTransform=!0;this.root===this&&(this.nodes=new zR)}addEventListener(u,f){return this.eventHandlers.has(u)||this.eventHandlers.set(u,new Rm),this.eventHandlers.get(u).add(f)}notifyListeners(u,...f){const d=this.eventHandlers.get(u);d&&d.notify(...f)}hasListeners(u){return this.eventHandlers.has(u)}mount(u){if(this.instance)return;this.isSVG=z4(u)&&!q9(u),this.instance=u;const{layoutId:f,layout:d,visualElement:h}=this.options;if(h&&!h.current&&h.mount(u),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(d||f)&&(this.isLayoutDirty=!0),n){let g,v=0;const x=()=>this.root.updateBlockedByResize=!1;Qt.read(()=>{v=window.innerWidth}),n(u,()=>{const y=window.innerWidth;y!==v&&(v=y,this.root.updateBlockedByResize=!0,g&&g(),g=VR(x,250),Sf.hasAnimatedSinceResize&&(Sf.hasAnimatedSinceResize=!1,this.nodes.forEach(zx)))})}f&&this.root.registerSharedNode(f,this),this.options.animate!==!1&&h&&(f||d)&&this.addEventListener("didUpdate",({delta:g,hasLayoutChanged:v,hasRelativeLayoutChanged:x,layout:y})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const b=this.options.transition||h.getDefaultTransition()||fN,{onLayoutAnimationStart:w,onLayoutAnimationComplete:M}=h.getProps(),S=!this.targetLayout||!My(this.targetLayout,y),N=!v&&x;if(this.options.layoutRoot||this.resumeFrom||N||v&&(S||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const T={...Hm(b,"layout"),onPlay:w,onComplete:M};(h.shouldReduceMotion||this.options.layoutRoot)&&(T.delay=0,T.type=!1),this.startAnimation(T),this.setAnimationOrigin(g,N)}else v||zx(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=y})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const u=this.getStack();u&&u.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),La(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(oN),this.animationId++)}getTransformTemplate(){const{visualElement:u}=this.options;return u&&u.getProps().transformTemplate}willUpdate(u=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&by(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let g=0;g<this.path.length;g++){const v=this.path[g];v.shouldResetTransform=!0,v.updateScroll("snapshot"),v.options.layoutRoot&&v.willUpdate(!1)}const{layoutId:f,layout:d}=this.options;if(f===void 0&&!d)return;const h=this.getTransformTemplate();this.prevTransformTemplateValue=h?h(this.latestValues,""):void 0,this.updateSnapshot(),u&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(Bx);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(Fx);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(sN),this.nodes.forEach(JR),this.nodes.forEach(eN)):this.nodes.forEach(Fx),this.clearAllSnapshots();const f=Jn.now();On.delta=Os(0,1e3/60,f-On.timestamp),On.timestamp=f,On.isProcessing=!0,R0.update.process(On),R0.preRender.process(On),R0.render.process(On),On.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,Gm.read(this.scheduleUpdate))}
vendor: 6,064 bytes, line 4174
4174clearAllSnapshots(){this.nodes.forEach(iN),this.sharedNodes.forEach(lN)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Qt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Qt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!Gn(this.snapshot.measuredBox.x)&&!Gn(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let d=0;d<this.path.length;d++)this.path[d].updateScroll();const u=this.layout;this.layout=this.measure(!1),this.layoutCorrected=ln(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:f}=this.options;f&&f.notify("LayoutMeasure",this.layout.layoutBox,u?u.layoutBox:void 0)}updateScroll(u="measure"){let f=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===u&&(f=!1),f&&this.instance){const d=a(this.instance);this.scroll={animationId:this.root.animationId,phase:u,isRoot:d,offset:t(this.instance),wasRoot:this.scroll?this.scroll.isRoot:d}}}resetTransform(){if(!o)return;const u=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,f=this.projectionDelta&&!Sy(this.projectionDelta),d=this.getTransformTemplate(),h=d?d(this.latestValues,""):void 0,g=h!==this.prevTransformTemplateValue;u&&this.instance&&(f||fr(this.latestValues)||g)&&(o(this.instance,h),this.shouldResetTransform=!1,this.scheduleRender())}measure(u=!0){const f=this.measurePageBox();let d=this.removeElementScroll(f);return u&&(d=this.removeTransform(d)),dN(d),{animationId:this.root.animationId,measuredBox:f,layoutBox:d,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:u}=this.options;if(!u)return ln();const f=u.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(hN))){const{scroll:h}=this.root;h&&(_o(f.x,h.offset.x),_o(f.y,h.offset.y))}return f}removeElementScroll(u){const f=ln();if(bi(f,u),this.scroll?.wasRoot)return f;for(let d=0;d<this.path.length;d++){const h=this.path[d],{scroll:g,options:v}=h;h!==this.root&&g&&v.layoutScroll&&(g.wasRoot&&bi(f,u),_o(f.x,g.offset.x),_o(f.y,g.offset.y))}return f}applyTransform(u,f=!1){const d=ln();bi(d,u);for(let h=0;h<this.path.length;h++){const g=this.path[h];!f&&g.options.layoutScroll&&g.scroll&&g!==g.root&&yo(d,{x:-g.scroll.offset.x,y:-g.scroll.offset.y}),fr(g.latestValues)&&yo(d,g.latestValues)}return fr(this.latestValues)&&yo(d,this.latestValues),d}removeTransform(u){const f=ln();bi(f,u);for(let d=0;d<this.path.length;d++){const h=this.path[d];if(!h.instance||!fr(h.latestValues))continue;Kp(h.latestValues)&&h.updateSnapshot();const g=ln(),v=h.measurePageBox();bi(g,v),Lx(f,h.latestValues,h.snapshot?h.snapshot.layoutBox:void 0,g)}return fr(this.latestValues)&&Lx(f,this.latestValues),f}setTargetDelta(u){this.targetDelta=u,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(u){this.options={...this.options,...u,crossfade:u.crossfade!==void 0?u.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==On.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(u=!1){const f=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=f.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=f.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=f.isSharedProjectionDirty);const d=!!this.resumingFrom||this!==f;if(!(u||d&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:g,layoutId:v}=this.options;if(!(!this.layout||!(g||v))){if(this.resolvedRelativeTargetAt=On.timestamp,!this.targetDelta&&!this.relativeTarget){const x=this.getClosestProjectingParent();x&&x.layout&&this.animationProgress!==1?(this.relativeParent=x,this.forceRelativeParentToResolveTarget(),this.relativeTarget=ln(),this.relativeTargetOrigin=ln(),tc(this.relativeTargetOrigin,this.layout.layoutBox,x.layout.layoutBox),bi(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=ln(),this.targetWithTransforms=ln()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),_R(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):bi(this.target,this.layout.layoutBox),ny(this.target,this.targetDelta)):bi(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget)){this.attemptToResolveRelativeTarget=!1;const x=this.getClosestProjectingParent();x&&!!x.resumingFrom==!!this.resumingFrom&&!x.options.layoutScroll&&x.target&&this.animationProgress!==1?(this.relativeParent=x,this.forceRelativeParentToResolveTarget(),this.relativeTarget=ln(),this.relativeTargetOrigin=ln(),tc(this.relativeTargetOrigin,this.target,x.target),bi(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}}}getClosestProjectingParent(){if(!(!this.parent||Kp(this.parent.latestValues)||ty(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}calcProjection(){const u=this.getLead(),f=!!this.resumingFrom||this!==u;let d=!0;
vendor: 13,990 bytes, line 4174
4174if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(d=!1),f&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(d=!1),this.resolvedRelativeTargetAt===On.timestamp&&(d=!1),d)return;const{layout:h,layoutId:g}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(h||g))return;bi(this.layoutCorrected,this.layout.layoutBox);const v=this.treeScale.x,x=this.treeScale.y;LA(this.layoutCorrected,this.treeScale,this.path,f),u.layout&&!u.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(u.target=u.layout.layoutBox,u.targetWithTransforms=ln());const{target:y}=u;if(!y){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(Ax(this.prevProjectionDelta.x,this.projectionDelta.x),Ax(this.prevProjectionDelta.y,this.projectionDelta.y)),ec(this.projectionDelta,this.layoutCorrected,y,this.latestValues),(this.treeScale.x!==v||this.treeScale.y!==x||!Ix(this.projectionDelta.x,this.prevProjectionDelta.x)||!Ix(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",y))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(u=!0){if(this.options.visualElement?.scheduleRender(),u){const f=this.getStack();f&&f.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=So(),this.projectionDelta=So(),this.projectionDeltaWithTransform=So()}setAnimationOrigin(u,f=!1){const d=this.snapshot,h=d?d.latestValues:{},g={...this.latestValues},v=So();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!f;const x=ln(),y=d?d.source:void 0,b=this.layout?this.layout.source:void 0,w=y!==b,M=this.getStack(),S=!M||M.members.length<=1,N=!!(w&&!S&&this.options.crossfade===!0&&!this.path.some(uN));this.animationProgress=0;let T;this.mixTargetDelta=R=>{const P=R/1e3;Vx(v.x,u.x,P),Vx(v.y,u.y,P),this.setTargetDelta(v),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(tc(x,this.layout.layoutBox,this.relativeParent.layout.layoutBox),cN(this.relativeTarget,this.relativeTargetOrigin,x,P),T&&YR(this.relativeTarget,T)&&(this.isProjectionDirty=!1),T||(T=ln()),bi(T,this.relativeTarget)),w&&(this.animationValues=g,HR(g,h,this.latestValues,P,N,S)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=P},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(u){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(La(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Qt.update(()=>{Sf.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=Lo(0)),this.currentAnimation=BR(this.motionValue,[0,1e3],{...u,velocity:0,isSync:!0,onUpdate:f=>{this.mixTargetDelta(f),u.onUpdate&&u.onUpdate(f)},onStop:()=>{},onComplete:()=>{u.onComplete&&u.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const u=this.getStack();u&&u.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(QR),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const u=this.getLead();let{targetWithTransforms:f,target:d,layout:h,latestValues:g}=u;if(!(!f||!d||!h)){if(this!==u&&this.layout&&h&&wy(this.options.animationType,this.layout.layoutBox,h.layoutBox)){d=this.target||ln();const v=Gn(this.layout.layoutBox.x);d.x.min=u.target.x.min,d.x.max=d.x.min+v;const x=Gn(this.layout.layoutBox.y);d.y.min=u.target.y.min,d.y.max=d.y.min+x}bi(f,d),yo(f,g),ec(this.projectionDeltaWithTransform,this.layoutCorrected,f,g)}}registerSharedNode(u,f){this.sharedNodes.has(u)||this.sharedNodes.set(u,new ZR),this.sharedNodes.get(u).add(f);const h=f.options.initialPromotionConfig;f.promote({transition:h?h.transition:void 0,preserveFollowOpacity:h&&h.shouldPreserveFollowOpacity?h.shouldPreserveFollowOpacity(f):void 0})}isLead(){const u=this.getStack();return u?u.lead===this:!0}getLead(){const{layoutId:u}=this.options;return u?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:u}=this.options;return u?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:u}=this.options;if(u)return this.root.sharedNodes.get(u)}promote({needsReset:u,transition:f,preserveFollowOpacity:d}={}){const h=this.getStack();h&&h.promote(this,d),u&&(this.projectionDelta=void 0,this.needsReset=!0),f&&this.setOptions({transition:f})}relegate(){const u=this.getStack();return u?u.relegate(this):!1}resetSkewAndRotation(){const{visualElement:u}=this.options;if(!u)return;let f=!1;const{latestValues:d}=u;if((d.z||d.rotate||d.rotateX||d.rotateY||d.rotateZ||d.skewX||d.skewY)&&(f=!0),!f)return;const h={};d.z&&j0("z",u,h,this.animationValues);for(let g=0;g<V0.length;g++)j0(`rotate${V0[g]}`,u,h,this.animationValues),j0(`skew${V0[g]}`,u,h,this.animationValues);u.render();for(const g in h)u.setStaticValue(g,h[g]),this.animationValues&&(this.animationValues[g]=h[g]);u.scheduleRender()}applyProjectionStyles(u,f){if(!this.instance||this.isSVG)return;if(!this.isVisible){u.visibility="hidden";return}const d=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,u.visibility="",u.opacity="",u.pointerEvents=yf(f?.pointerEvents)||"",u.transform=d?d(this.latestValues,""):"none";return}const h=this.getLead();if(!this.projectionDelta||!this.layout||!h.target){this.options.layoutId&&(u.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,u.pointerEvents=yf(f?.pointerEvents)||""),this.hasProjected&&!fr(this.latestValues)&&(u.transform=d?d({},""):"none",this.hasProjected=!1);return}u.visibility="";const g=h.animationValues||h.latestValues;this.applyTransformsToTarget();let v=KR(this.projectionDeltaWithTransform,this.treeScale,g);d&&(v=d(g,v)),u.transform=v;const{x,y}=this.projectionDelta;u.transformOrigin=`${x.origin*100}% ${y.origin*100}% 0`,h.animationValues?u.opacity=h===this?g.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:g.opacityExit:u.opacity=h===this?g.opacity!==void 0?g.opacity:"":g.opacityExit!==void 0?g.opacityExit:0;for(const b in hc){if(g[b]===void 0)continue;const{correct:w,applyTo:M,isCSSVariable:S}=hc[b],N=v==="none"?g[b]:w(g[b],h);if(M){const T=M.length;for(let R=0;R<T;R++)u[M[R]]=N}else S?this.options.visualElement.renderState.vars[b]=N:u[b]=N}this.options.layoutId&&(u.pointerEvents=h===this?yf(f?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(u=>u.currentAnimation?.stop()),this.root.nodes.forEach(Bx),this.root.sharedNodes.clear()}}}function JR(n){n.updateLayout()}function eN(n){const e=n.resumeFrom?.snapshot||n.snapshot;if(n.isLead()&&n.layout&&e&&n.hasListeners("didUpdate")){const{layoutBox:t,measuredBox:a}=n.layout,{animationType:o}=n.options,l=e.source!==n.layout.source;o==="size"?Ei(g=>{const v=l?e.measuredBox[g]:e.layoutBox[g],x=Gn(v);v.min=t[g].min,v.max=v.min+x}):wy(o,e.layoutBox,t)&&Ei(g=>{const v=l?e.measuredBox[g]:e.layoutBox[g],x=Gn(t[g]);v.max=v.min+x,n.relativeTarget&&!n.currentAnimation&&(n.isProjectionDirty=!0,n.relativeTarget[g].max=n.relativeTarget[g].min+x)});const u=So();ec(u,t,e.layoutBox);const f=So();l?ec(f,n.applyTransform(a,!0),e.measuredBox):ec(f,t,e.layoutBox);const d=!Sy(u);let h=!1;if(!n.resumeFrom){const g=n.getClosestProjectingParent();if(g&&!g.resumeFrom){const{snapshot:v,layout:x}=g;if(v&&x){const y=ln();tc(y,e.layoutBox,v.layoutBox);const b=ln();tc(b,t,x.layoutBox),My(y,b)||(h=!0),g.options.layoutRoot&&(n.relativeTarget=b,n.relativeTargetOrigin=y,n.relativeParent=g)}}}n.notifyListeners("didUpdate",{layout:t,snapshot:e,delta:f,layoutDelta:u,hasLayoutChanged:d,hasRelativeLayoutChanged:h})}else if(n.isLead()){const{onExitComplete:t}=n.options;t&&t()}n.options.transition=void 0}function tN(n){n.parent&&(n.isProjecting()||(n.isProjectionDirty=n.parent.isProjectionDirty),n.isSharedProjectionDirty||(n.isSharedProjectionDirty=!!(n.isProjectionDirty||n.parent.isProjectionDirty||n.parent.isSharedProjectionDirty)),n.isTransformDirty||(n.isTransformDirty=n.parent.isTransformDirty))}function nN(n){n.isProjectionDirty=n.isSharedProjectionDirty=n.isTransformDirty=!1}function iN(n){n.clearSnapshot()}function Bx(n){n.clearMeasurements()}function Fx(n){n.isLayoutDirty=!1}function sN(n){const{visualElement:e}=n.options;e&&e.getProps().onBeforeLayoutMeasure&&e.notify("BeforeLayoutMeasure"),n.resetTransform()}function zx(n){n.finishAnimation(),n.targetDelta=n.relativeTarget=n.target=void 0,n.isProjectionDirty=!0}function aN(n){n.resolveTargetDelta()}function rN(n){n.calcProjection()}function oN(n){n.resetSkewAndRotation()}function lN(n){n.removeLeadSnapshot()}function Vx(n,e,t){n.translate=en(e.translate,0,t),n.scale=en(e.scale,1,t),n.origin=e.origin,n.originPoint=e.originPoint}function jx(n,e,t,a){n.min=en(e.min,t.min,a),n.max=en(e.max,t.max,a)}function cN(n,e,t,a){jx(n.x,e.x,t.x,a),jx(n.y,e.y,t.y,a)}function uN(n){return n.animationValues&&n.animationValues.opacityExit!==void 0}const fN={duration:.45,ease:[.4,0,.1,1]},Hx=n=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(n),kx=Hx("applewebkit/")&&!Hx("chrome/")?Math.round:wi;function Gx(n){n.min=kx(n.min),n.max=kx(n.max)}function dN(n){Gx(n.x),Gx(n.y)}function wy(n,e,t){return n==="position"||n==="preserve-aspect"&&!xR(Ox(e),Ox(t),.2)}function hN(n){return n!==n.root&&n.scroll?.wasRoot}const pN=Ey({attachResizeListener:(n,e)=>pc(n,"resize",e),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),H0={current:void 0},Ty=Ey({measureScroll:n=>({x:n.scrollLeft,y:n.scrollTop}),defaultParent:()=>{if(!H0.current){const n=new pN({});n.mount(window),n.setOptions({layoutScroll:!0}),H0.current=n}return H0.current},resetTransform:(n,e)=>{n.style.transform=e!==void 0?e:"none"},checkIsScrollRoot:n=>window.getComputedStyle(n).position==="fixed"}),mN={pan:{Feature:UR},drag:{Feature:DR,ProjectionNode:Ty,MeasureLayout:xy}};function Wx(n,e,t){const{props:a}=n;n.animationState&&a.whileHover&&n.animationState.setActive("whileHover",t==="Start");const o="onHover"+t,l=a[o];l&&Qt.postRender(()=>l(e,Tc(e)))}class gN extends Pa{mount(){const{current:e}=this.node;e&&(this.unmount=H9(e,(t,a)=>(Wx(this.node,a,"Start"),o=>Wx(this.node,o,"End"))))}unmount(){}}class vN extends Pa{constructor(){super(...arguments),this.isActive=!1}onFocus(){let e=!1;try{e=this.node.current.matches(":focus-visible")}catch{e=!0}!e||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=bc(pc(this.node.current,"focus",()=>this.onFocus()),pc(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function Xx(n,e,t){const{props:a}=n;if(n.current instanceof HTMLButtonElement&&n.current.disabled)return;n.animationState&&a.whileTap&&n.animationState.setActive("whileTap",t==="Start");const o="onTap"+(t==="End"?"":t),l=a[o];l&&Qt.postRender(()=>l(e,Tc(e)))}class xN extends Pa{mount(){const{current:e}=this.node;e&&(this.unmount=X9(e,(t,a)=>(Xx(this.node,a,"Start"),(o,{success:l})=>Xx(this.node,o,l?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const im=new WeakMap,k0=new WeakMap,_N=n=>{const e=im.get(n.target);e&&e(n)},yN=n=>{n.forEach(_N)};function SN({root:n,...e}){const t=n||document;k0.has(t)||k0.set(t,{});const a=k0.get(t),o=JSON.stringify(e);return a[o]||(a[o]=new IntersectionObserver(yN,{root:n,...e})),a[o]}function MN(n,e,t){const a=SN(e);return im.set(n,t),a.observe(n),()=>{im.delete(n),a.unobserve(n)}}const bN={some:0,all:1};class EN extends Pa{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:e={}}=this.node.getProps(),{root:t,margin:a,amount:o="some",once:l}=e,u={root:t?t.current:void 0,rootMargin:a,threshold:typeof o=="number"?o:bN[o]},f=d=>{const{isIntersecting:h}=d;if(this.isInView===h||(this.isInView=h,l&&!h&&this.hasEnteredView))return;h&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",h);const{onViewportEnter:g,onViewportLeave:v}=this.node.getProps(),x=h?g:v;x&&x(d)};return MN(this.node.current,u,f)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:e,prevProps:t}=this.node;["amount","margin","root"].some(wN(e,t))&&this.startObserver()}unmount(){}}function wN({viewport:n={}},{viewport:e={}}={}){return t=>n[t]!==e[t]}const TN={inView:{Feature:EN},tap:{Feature:xN},focus:{Feature:vN},hover:{Feature:gN}},CN={layout:{ProjectionNode:Ty,MeasureLayout:xy}},AN={...dR,...TN,...mN,...CN},ct=AA(AN,jA),RN={some:0,all:1};function NN(n,e,{root:t,margin:a,amount:o="some"}={}){const l=P4(n),u=new WeakMap,f=h=>{h.forEach(g=>{const v=u.get(g.target);if(g.isIntersecting!==!!v)if(g.isIntersecting){const x=e(g.target,g);typeof x=="function"?u.set(g.target,x):d.unobserve(g.target)}else typeof v=="function"&&(v(g),u.delete(g.target))})},d=new IntersectionObserver(f,{root:t,rootMargin:a,threshold:typeof o=="number"?o:RN[o]});return l.forEach(h=>
4174d.observe(h)),()=>d.disconnect()}function LN(n,{root:e,margin:t,amount:a,once:o=!1,initial:l=!1}={}){const[u,f]=G.useState(l);return G.useEffect(()=>{if(!n.current||o&&u)return;const d=()=>(f(!0),o?void 0:()=>f(!1)),h={root:e&&e.current||void 0,margin:t,amount:a};return NN(n.current,d,h)},[e,n,t,o,a]),u}const qx="/assets/mtrf11-C98J4FX4.png",Lf="/assets/hero-DFkW7PeT.png",sm="/assets/homepage-Dirqj5Be.png",Df="/assets/level3-D1cpfgcA.png",am="/assets/village-DbkXmjX3.png",At={hidden:{opacity:0,y:40},visible:{opacity:1,y:0,transition:{duration:.7,ease:"easeOut"}}},cf={visible:{transition:{staggerChildren:.18,delayChildren:.15}}},DN=Object.assign({"/src/assets/tech_icons/blender.svg":f6,"/src/assets/tech_icons/c++.svg":d6,"/src/assets/tech_icons/css.svg":h6,"/src/assets/tech_icons/docker.svg":p6,"/src/assets/tech_icons/expo.svg":m6,"/src/assets/tech_icons/flask.svg":g6,"/src/assets/tech_icons/framer-motion.svg":v6,"/src/assets/tech_icons/framer.svg":x6,"/src/assets/tech_icons/git.svg":_6,"/src/assets/tech_icons/github.svg":y6,"/src/assets/tech_icons/gsap.svg":S6,"/src/assets/tech_icons/html.svg":M6,"/src/assets/tech_icons/javascript.svg":b6,"/src/assets/tech_icons/matlab.svg":E6,"/src/assets/tech_icons/next.svg":w6,"/src/assets/tech_icons/nodejs.svg":T6,"/src/assets/tech_icons/npm.svg":C6,"/src/assets/tech_icons/python.svg":A6,"/src/assets/tech_icons/react.svg":R6,"/src/assets/tech_icons/reactquery.svg":N6,"/src/assets/tech_icons/reactrouter.svg":L6,"/src/assets/tech_icons/tailwindcss.svg":D6,"/src/assets/tech_icons/threejs.svg":U6,"/src/assets/tech_icons/typescript.svg":P6,"/src/assets/tech_icons/vitejs.svg":O6,"/src/assets/tech_icons/vscode.svg":I6});function di({name:n,src:e}){const t="/src/assets/tech_icons/"+e+".svg",a=DN[t];return m.jsxs("div",{className:"flex items-center rounded-lg group gap-2 relative my-auto mt-4",children:[m.jsx("img",{className:"rounded-lg w-10 h-10 object-cover",src:a}),m.jsx("p",{className:"text-xl tracking-tight ",children:n})]})}function UN({sidebarOpen:n,fishFollowCursor:e}){const t=G.useRef(null),a=LN(t,{amount:.5,margin:"-10% 0% -10% 0%"}),o=ts(),l=G.useRef(null),u=G.useRef(e);G.useEffect(()=>{u.current=e},[e]),G.useEffect(()=>{const he=new zs,O=new Gs({antialias:!0});O.setPixelRatio(window.devicePixelRatio),O.setSize(window.innerWidth,window.innerHeight),l.current&&!l.current.contains(O.domElement)&&l.current.appendChild(O.domElement);const ee=new mn(60,window.innerWidth/window.innerHeight,.1,100);ee.position.set(0,2,0),ee.lookAt(0,0,0);const Me=new ks,be=new Vs;be.setPath("/threejs-water-shader/");const te=be.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),xe=new js().load("/threejs-water-shader/ocean_floor.png");he.background=te,he.environment=te;const Ee={size:512},Te=new Ws({environmentMap:te,resolution:Ee.size});he.add(Te);const Ue=new Xs({texture:xe});he.add(Ue),Te.material.uniforms.uWavesAmplitude.value=.06,Te.material.uniforms.uWavesFrequency.value=.04,Te.material.uniforms.uWavesIterations.value=1,Te.material.uniforms.uWavesSpeed.value=.1,Te.material.uniforms.uTroughColor.value=new Fe(793917),Te.material.uniforms.uSurfaceColor.value=new Fe(2839444),Te.material.uniforms.uPeakColor.value=new Fe(7643122),Te.material.uniforms.uOpacity.value=.6,Te.material.uniforms.uFresnelPower.value=.3,Te.material.uniforms.uFresnelScale.value=.9,Te.material.uniforms.uTroughTransition.value=.4,Ue.material.uniforms.uCausticsColor.value=new Fe(14148348),Ue.material.uniforms.uCausticsScale.value=6,Ue.material.uniforms.uCausticsSpeed.value=.2,he.add(new Hs(16777215,.9));function ut(C){setFishFollowCursor(J=>!J)}window.addEventListener("dblclick",ut);const Qe=50,Et=5,Ut=.08,gt=.14,k=.2,Xt=1.8,ft=.9;let rt=new St(0,0);window.addEventListener("mousemove",C=>{const J=C.clientX/window.innerWidth*2-1,de=-(C.clientY/window.innerHeight*2-1),fe=new le(J,de,.5);fe.unproject(ee);const q=fe.clone().sub(ee.position).normalize();if(Math.abs(q.y)>1e-4){const Ae=(k-ee.position.y)/q.y;rt.set(ee.position.x+q.x*Ae,ee.position.z+q.z*Ae)}});const He=[];for(let C=0;C<Qe;C++){const J=new Yl;let de=.2;const fe=(Math.random()-.5)*de,q=(Math.random()-.5)*de,Ae=Math.random()*Math.PI*2,Le=.7+Math.random()*.8,ze=(.023+Math.random()*.05)/10;let Ge=Math.max(-Xt,Math.min(Xt,Math.cos(Ae)*Le+fe)),_e=Math.max(-ft,Math.min(ft,Math.sin(Ae)*Le+q));J.position.set(Ge,k,_e),J.scale.set(gt,gt,gt),He.push({group:J,velocity:new St(Math.cos(Ae)*.02,Math.sin(Ae)*.02),speed:ze,scatterBias:new St(fe,q),repulse:new St(0,0),ignoreMouse:C<Qe,randVec:new St((Math.random()-.5)*.013,(Math.random()-.5)*.013),circleAngle:Math.random()*Math.PI*4,orbitDirection:Math.random()<.5?1:-1,orbitRadius:.5+Math.random()*4});for(let Re=0;Re<Et;
4174Re++){const Be=Re/(Et-1),We=.08*(1-.68*Be),De=.93*(1-.75*Be)*.4,tt=new ym({color:new Fe().setHSL(0,0,.2),transparent:!0,opacity:De,depthWrite:!1}),W=new wf(We,14,8),Pe=new pi(W,tt);Pe.position.set(0,0,0);const we=new Q7({transparent:!0,opacity:.15}),Ve=new wf(We*1.8,14,8),Ce=new pi(Ve,we);Ce.position.copy(Pe.position),Pe.add(Ce),Pe.userData.glowMesh=Ce,J.add(Pe)}he.add(J)}let vt=0;const Ke=3;function ot(C){const J=new St(rt.x-C.group.position.x+C.scatterBias.x*.13,rt.y-C.group.position.z+C.scatterBias.y*.13);return J.lengthSq()>1e-6?J.clone().normalize():new St(1,0)}function $t(C,J){rt.x<-Xt||rt.x>Xt||rt.z<-ft||rt.z>ft?vt+=J:vt=0;for(let fe=0;fe<He.length;fe++){const q=He[fe];for(let Ae=0;Ae<Et;Ae++){const Le=Ae/(Et-1),ze=(C*.1+fe*.17+Le*.25)%1,Ge=.7+.3*Math.sin(C+fe),_e=.5+.15*Math.cos(C+Ae*.2+fe);q.group.children[Ae].material.color.setHSL(ze,Ge,_e),q.ignoreMouse=!u.current;const Re=q.group.children[Ae],Be=Re.userData&&Re.userData.glowMesh;if(Be&&Be.material&&Be.material.uniforms){const We=Re.material.color.clone();We.offsetHSL(0,0,.001),Be.material.uniforms.glowColor.value.copy(We)}}}const de=.07;for(let fe=0;fe<He.length;fe++){const q=He[fe];q.repulse.set(0,0);for(let Ae=0;Ae<He.length;Ae++){if(fe===Ae)continue;const Le=He[Ae],ze=q.group.position.x-Le.group.position.x,Ge=q.group.position.z-Le.group.position.z,_e=ze*ze+Ge*Ge;if(_e<de*de&&_e>1e-5){const Re=Math.sqrt(_e),Be=.035*(1-Re/de);q.repulse.x+=ze/Re*Be,q.repulse.y+=Ge/Re*Be}}}for(let fe=0;fe<He.length;fe++){const q=He[fe];fe>=Qe&&(q.ignoreMouse=vt>Ke);let Ae;if(q.ignoreMouse){const Re=q.orbitRadius;q.circleAngle+=J*.32*q.orbitDirection;const Be=Math.cos(q.circleAngle)*Re*2.5,We=Math.sin(q.circleAngle)*Re*1.5;Ae=new St(Be-q.group.position.x,We-q.group.position.z).normalize().multiplyScalar(q.speed*.6)}else{const Re=new St(rt.x-q.group.position.x+q.scatterBias.x*.13,rt.y-q.group.position.z+q.scatterBias.y*.13),Be=Re.length();Ae=Re.length()>.001?Re.clone().normalize().multiplyScalar(q.speed*Math.min(Be,1.3)*1.7):new St(0,0)}Ae.add(q.repulse),q.velocity.lerp(Ae,.08),q.velocity.length()>q.speed&&q.velocity.setLength(q.speed),q.group.position.x+=q.velocity.x,q.group.position.z+=q.velocity.y,q.group.position.x<-Xt&&(q.group.position.x=-Xt,q.velocity.x*=-.67),q.group.position.x>Xt&&(q.group.position.x=Xt,q.velocity.x*=-.67),q.group.position.z<-ft&&(q.group.position.z=-ft,q.velocity.y*=-.67),q.group.position.z>ft&&(q.group.position.z=ft,q.velocity.y*=-.67);const Le=q.velocity.length()>.001?q.velocity.clone().normalize():ot(q),ze=new le(Le.x,0,Le.y),_e=q.group.position.clone().clone().add(ze.clone().negate().multiplyScalar(Ut*(Et-1)));q.group.position.y=k,q.group.lookAt(_e.x,k,_e.z),q.group.rotateY(Math.PI/2);for(let Re=0;Re<Et;Re++){const Be=Re/(Et-1),We=-Re*Ut,De=1-Math.pow(1-Be,3)/2,tt=C*7-Be*2.4+fe*.25,W=Math.sin(tt)*.17*De;q.group.children[Re].position.set(We,0,W)}}}function B(){const C=Me.getDelta(),J=Me.getElapsedTime();$t(J,C),Te.update(J),Ue.update(J),O.render(he,ee),requestAnimationFrame(B)}return B(),window.addEventListener("resize",()=>{ee.aspect=window.innerWidth/window.innerHeight,ee.updateProjectionMatrix(),O.setSize(window.innerWidth,window.innerHeight)}),()=>{O&&(O.dispose(),l.current&&l.current.removeChild(O.domElement),window.removeEventListener("dblclick",ut))}},[]);const[f,d]=G.useState(!1),[h,g]=G.useState(!1),[v,x]=G.useState(!1),[y,b]=G.useState(!1),[w,M]=G.useState(!1),[S,N]=G.useState(!1),[T,R]=G.useState(!1),[P,I]=G.useState(!1),[F,V]=G.useState(!1);function U(){navigator.clipboard.writeText("[email protected]").then(()=>{V(!0),setTimeout(()=>V(!1),1500)})}const L="rounded-3xl ring-1 ring-white/10 bg-gradient-to-br from-indigo-500/10 via-teal-400/5 to-indigo-600/10 backdrop-blur-sm shadow-[0_10px_30px_-10px_rgba(0,0,0,0.4)]",z="inline-flex items-center rounded-full text-indigo-100 ring-1 ring-inset ring-indigo-400/30 px-4 py-2 text-sm font-semibold bg-gradient-to-br from-indigo-500/40 via-blue-400/5 to-indigo-600/40 backdrop-blur-sm shadow-[0_10px_30px_-10px_rgba(0,0,0,0.4)]",ce="inline-flex items-center rounded-full text-gray-100 ring-1 ring-inset ring-white/15 px-4 py-2 text-sm font-semibold bg-gradient-to-br from-red-400/30 via-white/2 to-red-500/30 backdrop-blur-sm shadow-[0_10px_30px_-10px_rgba(0,0,0,0.4)]",ue="text-gray-100 font-shree-bold ring-1 ring-inset ring-indigo-400/50 px-4 py-2 rounded-lg text-gray-100 mt-5 hover:bg-[#3b82f6] transition-colors duration-300 bg-gradient-to-br from-indigo-500/40 via-bg-white/5 to-red-400/40 backdrop-blur-sm shadow-[0_10px_30px_-10px_rgba(0,0,0,0.6)]",ge={hidden:{opacity:0,x:-40},visible:{opacity:1,x:0}},me={hidden:{opacity:0,x:40},visible:{opacity:1,x:0}},[j,Z]=G.useState(!1);G.useEffect(()=>{const he=window.matchMedia("(min-width: 768px)");Z(he.matches);const O=ee=>{Z(ee.matches)};return he.addEventListener("change",O),()=>he.removeEventListener("change",O)},[]);const Y=es();return G.useEffect(()=>{if(Y.state?.scrollToProjects){const he=document.getElementById("projects");he&&he.scrollIntoView({behavior:"smooth"}),window.history.replaceState({},document.title,window.location.pathname)}},[Y.state]),m.jsxs(m.Fragment,{children:[m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:l,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`scroll-smooth pond-text-content font-shree w-full h-full transition-opacity duration-300 ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("section",{id:"home",children:m.jsxs(ct.article,{variants:ge,initial:"hidden",
4174whileInView:"visible",viewport:{amount:.6,margin:"-8% 0% -8% 0%"},transition:{duration:.6,ease:"easeOut"},className:"flex w-full h-[100vh] items-center",children:[m.jsxs("div",{className:"pl-[5vw] md:pl-[15vw] w-[80vw] md:w-[50vw] ",children:[m.jsx(ct.h1,{className:"text-7xl mb-4 font-shree text-gray-100",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:"Emma Zhang"}),m.jsxs("p",{className:" text-gray-200 w-120 text-xl",children:["Hi There! I'm a ",m.jsx("span",{className:"font-shree-bold text-gray-100",children:"Software Engineer"})," with background in ",m.jsx("span",{className:"font-shree-bold text-gray-100",children:"sensory neuroscience"}),". I design interfaces for brain-computer interactions."]}),m.jsxs("div",{className:"flex gap-5",children:[m.jsx("button",{onClick:()=>window.open(Y_,"_blank"),className:`${ue}`,children:m.jsx("span",{children:"Resume"})}),m.jsxs("div",{className:"flex gap-5 mt-5 text-gray-200",children:[m.jsx("button",{onClick:()=>window.location.href="https://github.com/zhijingz",className:"hover:text-[#3b82f6] transition-color duration-400",children:m.jsxs("svg",{width:"35",height:"35",className:"mt-1",viewBox:"0 0 44 44",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsx("path",{d:"M18 39.135C11.1429 41.4496 5.42858 39.135 2 32",stroke:"currentColoe","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M18 42V35.5158C18 34.3192 18.3678 33.2792 18.9608 32.3398C19.3676 31.6952 19.089 30.7808 18.3542 30.5788C12.2679 28.9056 8 26.2154 8 17.2921C8 14.9722 8.7601 12.7911 10.0962 10.8928C10.4287 10.4204 10.595 10.1842 10.635 9.9702C10.6749 9.75626 10.6054 9.47704 10.4664 8.91864C9.90076 6.64584 9.93742 4.23238 10.7864 2.05646C10.7864 2.05646 12.5408 1.48484 16.534 3.97938C17.4456 4.54894 17.9015 4.83372 18.303 4.89742C18.7044 4.96112 19.2412 4.82768 20.3146 4.56082C21.7826 4.1959 23.2952 4 25 4C26.7048 4 28.2174 4.1959 29.6854 4.56082C30.7588 4.82768 31.2956 4.96112 31.697 4.89742C32.0986 4.83372 32.5544 4.54894 33.466 3.97938C37.4592 1.48484 39.2136 2.05646 39.2136 2.05646C40.0626 4.23238 40.0992 6.64584 39.5336 8.91864C39.3946 9.47704 39.325 9.75626 39.365 9.9702C39.405 10.1841 39.5712 10.4204 39.9038 10.8928C41.2398 12.7911 42 14.9722 42 17.2921C42 26.2154 37.7322 28.9056 31.6458 30.5788C30.911 30.7808 30.6324 31.6952 31.0392 32.3398C31.6322 33.2792 32 34.3192 32 35.5158V42",stroke:"currentColor","stroke-width":"1","stroke-linecap":"round","stroke-linejoin":"round"})]})}),m.jsx("button",{onClick:()=>window.location.href="https://www.linkedin.com/in/emma-zhang-0547982a2/",className:"hover:text-[#3b82f6] transition-color duration-400",children:m.jsxs("svg",{width:"38",height:"38",className:"mt-0.5",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsx("path",{d:"M9 19H8C6.11438 19 5.17158 19 4.58578 19.5858C4 20.1716 4 21.1144 4 23V40C4 41.8856 4 42.8284 4.58578 43.4142C5.17158 44 6.11438 44 8 44H9C10.8856 44 11.8284 44 12.4142 43.4142C13 42.8284 13 41.8856 13 40V23C13 21.1144 13 20.1716 12.4142 19.5858C11.8284 19 10.8856 19 9 19Z",stroke:"currentColor","stroke-width":"1"}),m.jsx("path",{d:"M13 8.5C13 10.9853 10.9853 13 8.5 13C6.01472 13 4 10.9853 4 8.5C4 6.01472 6.01472 4 8.5 4C10.9853 4 13 6.01472 13 8.5Z",stroke:"currentColor","stroke-width":"1"}),m.jsx("path",{d:"M24.652 19H23C21.1144 19 20.1716 19 19.5858 19.5858C19 20.1716 19 21.1144 19 23V40C19 41.8856 19 42.8284 19.5858 43.4142C20.1716 44 21.1144 44 23 44H24C25.8856 44 26.8284 44 27.4142 43.4142C28 42.8284 28 41.8856 28 40L28.0002 33.0002C28.0002 29.6866 29.0562 27.0002 32.1758 27.0002C33.7354 27.0002 35 28.3434 35 30.0002V39.0002C35 40.8858 35 41.8286 35.5858 42.4144C36.1714 43.0002 37.1144 43.0002 39 43.0002H39.9974C41.8826 43.0002 42.8252 43.0002 43.411 42.4146C43.9968 41.829 43.997 40.8864 43.9974 39.0012L44.0002 28.0004C44.0002 23.03 39.2728 19.0005 34.5936 19.0005C31.9298 19.0005 29.5534 20.3062 28.0002 22.348C28 21.0878 28 20.4578 27.7264 19.99C27.553 19.6937 27.3062 19.4471 27.01 19.2737C26.5422 19 25.9122 19 24.652 19Z",stroke:"currentColor","stroke-width":"1","stroke-linejoin":"round"})]})}),m.jsx("button",{type:"button",onClick:U,children:m.jsx("svg",{width:"34",height:"34",className:`mt-2 ${F?"text-[#3b82f6]":"text-gray-200"}`,viewBox:"0 0 28 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:m.jsx("path",{d:"M27 3V17C27 18.1046 26.1046 19 25 19H3C1.89543 19 1 18.1046 1 17V3M27 3C27 1.89543 26.1046 1 25 1H3C1.89543 1 1 1.89543 1 3M27 3L15.1384 11.2119C14.4535 11.686 13.5465 11.686 12.8616 11.2119L1 3",stroke:"currentColor",strokeWidth:"0.7","stroke-linecap":"round","stroke-linejoin":"round"})})})]})]})]}
4174),m.jsxs(ct.article,{variants:ge,initial:"hidden",whileInView:"visible",viewport:{amount:.6,margin:"-8% 0% -8% 0%"},transition:{duration:.6,ease:"easeOut"},className:"mt-[80vh] ml-[13vw] text-xl text-gray-100 font-shree-bold",children:[m.jsx("span",{className:"text-gray-300 font-shree",children:"<hint>"})," try double clicking ",m.jsx("span",{className:"text-gray-300 font-shree",children:"</hint>"})]})]})}),m.jsxs("section",{id:"focus",className:"w-full max-w-[1200px] mx-auto px-6 py-8",children:[m.jsx(ct.article,{className:"text-gray-200 text-3xl font-medium text-center",children:"My Focus"}),m.jsxs("div",{className:"grid sm:grid-cols-1 md:grid-cols-2 gap-8 mx-20 mt-6 ",children:[m.jsxs(ct.article,{variants:ge,initial:"hidden",whileInView:"visible",viewport:{amount:.6,margin:"-8% 0% -8% 0%"},transition:{duration:.6,ease:"easeOut"},className:`${L} p-8`,children:[m.jsxs("header",{className:"mb-6",children:[m.jsx("h3",{className:"text-2xl md:text-4xl text-gray-100",children:"Neuroscience & BCI"}),m.jsx("p",{className:"text-gray-300 mt-2",children:"Research and building at the interface of neural signals and interactive systems."})]}),m.jsxs("div",{className:"flex flex-wrap gap-3",children:[m.jsx("span",{className:ce,children:"ECoG analysis"}),m.jsx("span",{className:ce,children:"Signal Processing"}),m.jsx("span",{className:ce,children:"MATLAB"}),m.jsx("span",{className:ce,children:"Python"}),m.jsx("span",{className:ce,children:"Speech neuroscience"}),m.jsx("span",{className:z,children:"High-Gamma Band-Pass Filter"}),m.jsx("span",{className:z,children:"mTRF"}),m.jsx("span",{className:z,children:"Principal Component Analysis"}),m.jsx("span",{className:z,children:"fMRI segmentation"})]})]}),m.jsxs(ct.article,{variants:me,initial:"hidden",whileInView:"visible",viewport:{amount:.6,margin:"-8% 0% -8% 0%"},transition:{duration:.6,ease:"easeOut"},className:`${L} p-8`,children:[m.jsxs("header",{className:"mb-6",children:[m.jsx("h3",{className:"text-4xl md:text-4xl text-gray-100",children:"Full-Stack Development"}),m.jsx("p",{className:"text-gray-300 mt-2",children:"Shipping responsive, performant, and engaging web interfaces and tools."})]}),m.jsxs("div",{className:"flex flex-wrap gap-3",children:[m.jsx("span",{className:ce,children:"Unity"}),m.jsx("span",{className:ce,children:"React"}),m.jsx("span",{className:z,children:"Tailwindcss"}),m.jsx("span",{className:ce,children:"Three.js"}),m.jsx("span",{className:z,children:"Custom fragment/vertex shaders"}),m.jsx("span",{className:z,children:"Framer Motion"}),m.jsx("span",{className:z,children:"3D Animations"}),m.jsx("span",{className:ce,children:"LLM Groq/Ollama Model Integration"}),m.jsx("span",{className:z,children:"Multi-agent AI-powered"})]})]})]}),m.jsxs(ct.article,{variants:ge,initial:"hidden",whileInView:"visible",viewport:{amount:.6,margin:"-8% 0% -8% 0%"},transition:{duration:.6,ease:"easeOut"},className:`${L} p-8 m-8 mx-20 text-xl text-center text-gray-300`,children:["I believe the future of web applications lies in bringing ",m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"direct brain stimulation"})," and ",m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"augumented reality"})," into the loop of human-computer interactions.",m.jsx("span",{children:" "}),m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"I strive to build this next generation of recreational brain-computer interfaces (BCI)"}),"."]})]}),m.jsx("section",{id:"projects",className:"mt-80 md:mt-30",children:m.jsxs("div",{id:"projects",className:"grid grid-cols-1 md:grid-cols-2 gap-x-10 m-0 p-10 md:p-0",children:[m.jsxs(ct.article,{className:"flex flex-col ",...j?{variants:ge,initial:"hidden",whileInView:"visible",viewport:{amount:.6,margin:"-8% 0% -8% 0%"},transition:{duration:.6,ease:"easeOut"}}:{},children:[m.jsx("div",{className:"text-right text-2xl mb-8 text-gray-200 ",children:m.jsx(ct.p,{initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:"NEURAL Projects"})}),m.jsxs(ct.div,{className:"mb-10 ",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:[m.jsx("div",{className:"w-full",children:m.jsxs("div",{onMouseEnter:()=>b(!0),onMouseLeave:()=>b(!1),children:[m.jsxs("div",{className:"flex justify-end gap-5 text-gray-100 hover:text-[#3b82f6] transition-color duration-400 ",children:[m.jsx("button",{className:`mb-1 transition-opacity duration-400 text-[#edf7fd] ${y?"o
4174pacity-100":"opacity-0"}`,onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:" hover:text-gray-100-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})}),m.jsx($n,{to:"/mtrf",className:"text-5xl text-right ",children:"mTRF & PSI"})]}),m.jsxs("div",{className:"flex gap-5 text-gray-200 justify-end mt-2",children:[m.jsx("span",{className:z,children:"MATLAB"}),m.jsx("span",{className:z,children:"mTRF"}),m.jsx("span",{className:z,children:"ECoG processing"}),m.jsx("span",{className:z,children:"band-pass filter"})]})]})}),m.jsx("div",{onClick:()=>o("/mtrf"),className:"md:hidden cursor-pointer mt-5 w-full mx-auto rounded-[30px] overflow-hidden",children:m.jsx("img",{src:qx,className:"w-full h-full object-cover "})})]}),m.jsxs(ct.div,{className:"mb-10 ",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:[m.jsx("div",{className:"text-right",children:m.jsx("div",{onMouseEnter:()=>M(!0),onMouseLeave:()=>M(!1),children:m.jsxs("div",{className:"flex justify-end gap-5 text-gray-100 hover:text-[#3b82f6] transition-color duration-400 ",children:[m.jsx("button",{className:`mb-1 transition-opacity duration-400 text-[#edf7fd] ${w?"opacity-100":"opacity-0"}`,onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:" hover:text-gray-100-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})}),m.jsx($n,{to:"/viseme",className:"text-5xl ",children:"Phoneme-to-Viseme"})]})})}),m.jsxs("div",{className:"flex gap-5 text-gray-200 justify-end mt-2",children:[m.jsx("span",{className:z,children:"MATLAB"}),m.jsx("span",{className:z,children:"PCA"}),m.jsx("span",{className:z,children:"Dimensionality Reduction"})]}),m.jsx("div",{onClick:()=>o("/viseme"),className:"md:hidden cursor-pointer mt-5 w-full mx-auto rounded-[30px] overflow-hidden",children:m.jsx("img",{src:Lf,className:"w-full h-full object-cover "})})]})]}),m.jsxs("div",{className:"relative md:mr-auto md:ml-0 w-0 md:w-[40vw] max-w-160 overflow-hidden rounded-[30px] grid",children:[m.jsx("div",{className:`hidden md:block col-start-1 row-start-1 transition-opacity duration-400 ${y?"opacity-100":"opacity-0"}`,children:m.jsx("img",{src:qx,className:"w-full h-full object-cover "})}),m.jsx("div",{className:`hidden md:block col-start-1 row-start-1 transition-opacity duration-400 ${w?"opacity-100":"opacity-0"}`,children:m.jsx("img",{src:Lf,className:"w-full h-full object-cover "})})]}),m.jsxs("div",{className:"relative md:ml-auto md:mr-0 w-0 md:w-[40vw] max-w-160 overflow-hidden rounded-[30px] grid flex items-center justify-center",children:[m.jsx("div",{className:`hidden md:block col-start-1 row-start-1 transition-opacity duration-400 h-6/8 w-full ${f?"opacity-100":"opacity-0"}`,children:m.jsx("img",{src:Pp,className:"w-full h-full object-cover rounded-[30px]"})}),m.jsx("div",{className:`hidden md:block col-start-1 row-start-1 transition-opacity duration-400 h-6/8 w-full ${h?"opacity-100":"opacity-0"}`,children:m.jsx("img",{src:Op,className:"w-full h-full object-cover rounded-[30px]"})}),m.jsx("div",{className:`hidden md:block col-start-1 row-start-1 transition-opacity duration-400 h-6/8 w-full ${v?"opacity-100":"opacity-0"}`,children:m.jsx("img",{src:Ip,className:"w-full h-full object-cover rounded-[30px]"})})]}),m.jsxs(ct.article,{className:"mt-10 md:mt-5 flex flex-col justify-start",...j?{variants:ge,initial:"hidden",
4174whileInView:"visible",viewport:{amount:.6,margin:"-8% 0% -8% 0%"},transition:{duration:.6,ease:"easeOut"}}:{},children:[m.jsx("div",{className:"text-2xl mb-5 text-gray-200 ",children:m.jsx(ct.p,{initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:"FULL-STACK Projects"})}),m.jsxs(ct.div,{className:"mb-10 ",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:[m.jsx("div",{onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),children:m.jsxs("div",{className:"flex gap-5 hover:text-[#3b82f6] transition-color duration-400",children:[m.jsx("div",{className:"",children:m.jsx($n,{to:"/tripsmart",className:"text-5xl ",children:"TripSmart AI"})}),m.jsx("button",{className:`mb-1 transition-opacity duration-400 text-[#edf7fd] ${f?"opacity-100":"opacity-0"}`,onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:" hover:text-gray-100-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})})]})}),m.jsxs("div",{className:"flex gap-5 mt-2",children:[m.jsx("span",{className:z,children:"Python"}),m.jsx("span",{className:z,children:"React"}),m.jsx("span",{className:z,children:"Flask"}),m.jsx("span",{className:z,children:"Ollama Embeddings"}),m.jsx("span",{className:z,children:"LangChain"})]}),m.jsx("div",{onClick:()=>o("/tripsmart"),className:"md:hidden cursor-pointer mt-5 w-full mx-auto rounded-[30px] overflow-hidden",children:m.jsx("img",{src:Pp,className:"w-full h-full object-cover rounded-[30px]"})})]}),m.jsxs(ct.div,{className:"mb-10",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:[m.jsx("div",{onMouseEnter:()=>g(!0),onMouseLeave:()=>g(!1),children:m.jsxs("div",{variants:At,initial:"hidden",whileInView:"visible",className:"flex gap-5 hover:text-[#3b82f6] transition-color duration-400",children:[m.jsx($n,{to:"/uaem",className:"text-5xl ",children:"UAEM-UM Website"}),m.jsx("button",{className:`mb-1 transition-opacity duration-400 text-[#edf7fd] ${h?"opacity-100":"opacity-0"}`,onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:" hover:text-gray-100-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})})]})}),m.jsxs("div",{className:"flex gap-5 mt-2",children:[m.jsx("span",{className:z,children:"React"}),m.jsx("span",{className:z,children:"React-Router"}),m.jsx("span",{className:z,children:"Framer Motion"}),m.jsx("span",{className:z,children:"Javascript"})]}),m.jsx("div",{onClick:()=>o("/uaem"),className:"md:hidden mt-7 w-full mx-auto rounded-[30px] overflow-hidden",children:m.jsx("img",{src:Op,className:"w-full h-full object-cover rounded-[30px]"})})]}
4174),m.jsxs(ct.div,{className:"mb-10",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:[m.jsx("div",{onMouseEnter:()=>x(!0),onMouseLeave:()=>x(!1),children:m.jsxs("div",{className:"flex gap-5 hover:text-[#3b82f6] transition-color duration-400",children:[m.jsx($n,{to:"/naturewalk",className:"text-5xl ",children:"Nature Walk"}),m.jsx("button",{className:`mb-1 transition-opacity duration-400 text-[#edf7fd] ${v?"opacity-100":"opacity-0"}`,onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:" hover:text-gray-100-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})})]})}),m.jsxs("div",{className:"flex gap-5 mt-2",children:[m.jsx("span",{className:z,children:"THREE.js"}),m.jsx("span",{className:z,children:"WebGL"}),m.jsx("span",{className:z,children:"Custom Shaders"}),m.jsx("span",{className:z,children:"Javascript"})]}),m.jsx("div",{onClick:()=>o("/naturewalk"),className:" md:hidden mt-7 w-full mx-auto rounded-[30px] overflow-hidden",children:m.jsx("img",{src:Ip,className:"w-full h-full object-cover rounded-[30px]"})})]})]}),m.jsxs(ct.article,{className:"flex flex-col ",...j?{variants:ge,initial:"hidden",whileInView:"visible",viewport:{amount:.6,margin:"-8% 0% -8% 0%"},transition:{duration:.6,ease:"easeOut"}}:{},children:[m.jsx("div",{className:"text-right text-2xl mb-8 text-gray-200 ",children:m.jsx(ct.p,{initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:"GAME Projects"})}),m.jsxs(ct.div,{className:"mb-10 ",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:[m.jsx("div",{onMouseEnter:()=>I(!0),onMouseLeave:()=>I(!1),children:m.jsxs("div",{className:"flex justify-end gap-5 text-gray-100 hover:text-[#3b82f6] transition-color duration-400 ",children:[m.jsx("button",{className:`mb-1 transition-opacity duration-400 text-[#edf7fd] ${P?"opacity-100":"opacity-0"}`,onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:" hover:text-gray-100-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})}),m.jsx("div",{className:"",children:m.jsx($n,{to:"/villagerim",className:"text-5xl ",children:"VillageRim"})})]})}),m.jsxs("div",{className:"flex gap-5 justify-end mt-2",children:[m.jsx("span",{className:z,children:"Unity"}),m.jsx("span",{className:z,children:"C#"})]}),m.jsx("div",{onClick:()=>o("/villagerim"),className:"md:hidden cursor-pointer mt-5 w-full mx-auto rounded-[30px] overflow-hidden",children:m.jsx("img",{src:am,className:"w-full h-full object-cover rounded-[30px]"})})]}
4174),m.jsxs(ct.div,{className:"mb-10 ",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:[m.jsx("div",{onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),children:m.jsxs("div",{className:"flex justify-end gap-5 text-gray-100 hover:text-[#3b82f6] transition-color duration-400 ",children:[m.jsx("button",{className:`mb-1 transition-opacity duration-400 text-[#edf7fd] ${S?"opacity-100":"opacity-0"}`,onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:" hover:text-gray-100-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})}),m.jsx("div",{className:"",children:m.jsx($n,{to:"/metroid",className:"text-5xl ",children:"Metroid Remake"})})]})}),m.jsxs("div",{className:"flex gap-5 justify-end mt-2",children:[m.jsx("span",{className:z,children:"Unity"}),m.jsx("span",{className:z,children:"C#"})]}),m.jsx("div",{onClick:()=>o("/metroid"),className:"md:hidden cursor-pointer mt-5 w-full mx-auto rounded-[30px] overflow-hidden",children:m.jsx("img",{src:sm,className:"w-full h-full object-cover rounded-[30px]"})})]}),m.jsxs(ct.div,{className:"mb-10 ",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:At,children:[m.jsx("div",{onMouseEnter:()=>R(!0),onMouseLeave:()=>R(!1),children:m.jsxs("div",{className:"flex justify-end gap-5 text-gray-100 hover:text-[#3b82f6] transition-color duration-400 ",children:[m.jsx("button",{className:`mb-1 transition-opacity duration-400 text-[#edf7fd] ${T?"opacity-100":"opacity-0"}`,onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:" hover:text-gray-100-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})}),m.jsx("div",{className:"",children:m.jsx($n,{to:"/flipped",className:"text-5xl ",children:"Flipped"})})]})}),m.jsxs("div",{className:"flex gap-5 justify-end mt-2",children:[m.jsx("span",{className:z,children:"Unity"}),m.jsx("span",{className:z,children:"C#"})]}),m.jsx("div",{onClick:()=>o("/flipped"),className:"md:hidden cursor-pointer mt-5 w-full mx-auto rounded-[30px] overflow-hidden",children:m.jsx("img",{src:Df,className:"w-full h-full object-cover rounded-[30px]"})})]})]}),m.jsxs("div",{className:"relative md:mr-auto md:ml-0 w-0 md:w-[40vw] max-w-160 overflow-hidden rounded-[30px] grid flex items-center justify-center",children:[m.jsx("div",{className:`hidden md:block col-start-1 row-start-1 transition-opacity duration-400 h-6/8 w-full ${S?"opacity-100":"opacity-0"}`,children:m.jsx("img",{src:sm,className:"w-full h-full object-cover rounded-[30px]"})}),m.jsx("div",{className:`hidden md:block col-start-1 row-start-1 transition-opacity duration-400 h-6/8 w-full ${T?"opacity-100":"opacity-0"}`,children:m.jsx("img",{src:Df,className:"w-full h-full object-cover rounded-[30px]"})}),m.jsx("div",{className:`hidden md:block col-start-1 row-start-1 transition-opacity duration-400 h-6/8 w-full ${P?"opacity-100":"opacity-0"}`,children:m.jsx("img",{src:am,className:"w-full h-full object-cover rounded-[30px]"})})]})]})}),m.jsxs("section",{id:"stack",className:"mt-80 mb-60 md:w-[90vw] max-w-280 mx-auto px-25",children:[m.jsx("p",{className:"text-2xl mb-5 ",children:"My Stack"}),m.jsxs(ct.div,{className:"grid grid-cols-1 md:grid-cols-2 gap-x-5 gap-y-3 mb-10 items-center",initial:"hidden",
4174whileInView:"visible",animate:a?"visible":"hidden",variants:cf,children:[m.jsx(ct.p,{variants:At,className:"text-5xl",children:"Frontend"}),m.jsxs("div",{className:"flex flex-wrap gap-x-10 text-xl md:w-8/9 max-w-150",children:[m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"Javascript",src:"javascript"})}),m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"HTML",src:"html"})}),m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"CSS",src:"css"})}),m.jsx(ct.div,{variants:At,children:m.jsxs("div",{className:"flex items-center rounded-lg group gap-2 relative mt-2",children:[m.jsx("svg",{width:"40",height:"40",className:"text-white mt-4",viewBox:"0 0 103 104",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:m.jsx("g",{id:"threejs",children:m.jsxs("g",{id:"threejs_2",children:[m.jsx("path",{id:"Vector","fill-rule":"evenodd","clip-rule":"evenodd",d:"M26.7016 102L2 2L101.023 30.5092L26.7016 102Z",stroke:"currentColor","stroke-width":"2.2865","stroke-miterlimit":"10","stroke-linejoin":"round"}),m.jsx("path",{id:"Vector_2","fill-rule":"evenodd","clip-rule":"evenodd",d:"M51.4929 16.2573L63.8349 66.2722L14.3511 52.013L51.4929 16.2573Z",stroke:"currentColor","stroke-width":"2.2865","stroke-miterlimit":"10","stroke-linejoin":"round"}),m.jsx("path",{id:"Vector_3","fill-rule":"evenodd","clip-rule":"evenodd",d:"M39.2145 58.7966L33.0844 33.9509L57.6688 41.0082L39.2145 58.7966Z",stroke:"currentColor","stroke-width":"2.2865","stroke-miterlimit":"10","stroke-linejoin":"round"}),m.jsx("path",{id:"Vector_4","fill-rule":"evenodd","clip-rule":"evenodd",d:"M26.952 9.13574L33.0821 33.9814L8.49768 26.9241L26.952 9.13574Z",stroke:"currentColor","stroke-width":"2.2865","stroke-miterlimit":"10","stroke-linejoin":"round"}),m.jsx("path",{id:"Vector_5","fill-rule":"evenodd","clip-rule":"evenodd",d:"M76.1186 23.2988L82.2487 48.1445L57.6643 41.0872L76.1186 23.2988Z",stroke:"currentColor","stroke-width":"2.2865","stroke-miterlimit":"10","stroke-linejoin":"round"}),m.jsx("path",{id:"Vector_6","fill-rule":"evenodd","clip-rule":"evenodd",d:"M39.2173 58.8137L45.3474 83.6594L20.7629 76.6021L39.2173 58.8137Z",stroke:"currentColor","stroke-width":"2.2865","stroke-miterlimit":"10","stroke-linejoin":"round"})]})})}),m.jsx("p",{className:"text-xl tracking-tight mt-4",children:"THREE.js"})]})}),m.jsx(ct.div,{className:"mt-2",variants:At,children:m.jsx(di,{name:"TailwindCSS",src:"tailwindcss"})}),m.jsx(ct.div,{className:"mt-2",variants:At,children:m.jsx(di,{name:"React",src:"react"})}),m.jsx(ct.div,{className:"mt-1",variants:At,children:m.jsx(di,{name:"Typescript",src:"typescript"})})]})]}),m.jsxs(ct.div,{className:"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3 mb-10 items-center",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:cf,children:[m.jsx(ct.p,{variants:At,className:"text-5xl",children:"Backend"}),m.jsxs("div",{className:"flex flex-wrap gap-x-10 text-xl md:w-7/8 max-w-150",children:[m.jsx(ct.div,{variants:At,children:m.jsxs("div",{className:"flex items-center rounded-lg group gap-2 relative mt-2",children:[m.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 640",className:"text-white w-14 h-14",fill:"currentColor",children:m.jsx("path",{d:"M339.6 155.6L419.7 202.4C422.6 204 422.7 208.6 419.7 210.2L324.5 265.8C321.6 267.5 318.2 267.4 315.5 265.8L220.3 210.2C217.4 208.6 217.3 203.9 220.3 202.4L300.4 155.6L300.4 64L96 183.4L96 422.2L174.4 376.4L174.4 282.8C174.3 279.5 178.2 277.1 181.1 278.9L276.3 334.5C279.2 336.2 280.8 339.2 280.8 342.3L280.8 453.5C280.9 456.8 277 459.2 274.1 457.4L194 410.8L115.6 456.6L320 576L524.4 456.6L446 410.8L365.9 457.6C363.1 459.3 359.1 457.1 359.2 453.7L359.2 342.5C359.2 339.2 361 336.2 363.7 334.7L458.9 279C461.7 277.3 465.7 279.5 465.6 282.9L465.6 376.5L544 422.3L544 183.5L339.6 64.1L339.6 155.7z"})}),m.jsx("p",{className:"text-xl tracking-tight mt-0",children:"Unity"})]})}),m.jsx(ct.div,{variants:At,className:"",children:m.jsx(di,{name:"Python",src:"python"})}),m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"MATLAB",src:"matlab"})})]})]}),m.jsxs(ct.div,{className:"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3 mb-10 items-center",initial:"hidden",
4174whileInView:"visible",animate:a?"visible":"hidden",variants:cf,children:[m.jsx(ct.p,{variants:At,className:"text-5xl",children:"Tools"}),m.jsxs("div",{className:"flex flex-wrap gap-x-10 text-xl md:w-7/8 max-w-150",children:[m.jsx(ct.div,{variants:At,children:m.jsxs("div",{className:"flex items-center rounded-lg group gap-2 relative mt-2",children:[m.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-13 h-13",viewBox:"0 0 128 128",children:[m.jsxs("defs",{children:[m.jsxs("linearGradient",{id:"jira-original-a",gradientUnits:"userSpaceOnUse",x1:"22.034",y1:"9.773",x2:"17.118",y2:"14.842",gradientTransform:"scale(4)",children:[m.jsx("stop",{offset:".176","stop-color":"#0052cc"}),m.jsx("stop",{offset:"1","stop-color":"#2684ff"})]}),m.jsxs("linearGradient",{id:"jira-original-b",gradientUnits:"userSpaceOnUse",x1:"16.641",y1:"15.564",x2:"10.957",y2:"21.094",gradientTransform:"scale(4)",children:[m.jsx("stop",{offset:".176","stop-color":"#0052cc"}),m.jsx("stop",{offset:"1","stop-color":"#2684ff"})]})]}),m.jsx("path",{d:"M108.023 16H61.805c0 11.52 9.324 20.848 20.847 20.848h8.5v8.226c0 11.52 9.328 20.848 20.848 20.848V19.977A3.98 3.98 0 00108.023 16zm0 0",fill:"#2684ff"}),m.jsx("path",{d:"M85.121 39.04H38.902c0 11.519 9.325 20.847 20.844 20.847h8.504v8.226c0 11.52 9.328 20.848 20.848 20.848V43.016a3.983 3.983 0 00-3.977-3.977zm0 0",fill:"url(#jira-original-a)"}),m.jsx("path",{d:"M62.219 62.078H16c0 11.524 9.324 20.848 20.848 20.848h8.5v8.23c0 11.52 9.328 20.844 20.847 20.844V66.059a3.984 3.984 0 00-3.976-3.98zm0 0",fill:"url(#jira-original-b)"})]}),m.jsx("p",{className:"text-xl tracking-tight mt-0",children:"Jira"})]})}),m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"Git",src:"git"})}),m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"VSCODE",src:"vscode"})}),m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"NPM",src:"npm"})})]})]}),m.jsxs(ct.div,{className:"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3 mb-10 items-center",initial:"hidden",whileInView:"visible",animate:a?"visible":"hidden",variants:cf,children:[m.jsx(ct.p,{variants:At,className:"text-5xl ",children:"Studying"}),m.jsxs("div",{className:"flex flex-wrap gap-x-10 text-xl md:w-7/8 max-w-150",children:[m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"Framer Motion",src:"framer-motion"})}),m.jsx(ct.div,{variants:At,children:m.jsx(di,{name:"React Native",src:"react"})}),m.jsx(ct.div,{variants:At,children:m.jsxs("div",{className:"flex items-center rounded-lg group gap-2 relative mt-2",children:[m.jsxs("svg",{height:"40",viewBox:".1 16.7 2472.8 1996.5",width:"45",className:"mt-2",xmlns:"http://www.w3.org/2000/svg",children:[m.jsx("path",{d:"m2006.5 1485.6c-98.8 100.8-237 157.8-386.7 158-149.8.3-288.1-56.3-386.9-156.8-48.3-49-83.7-105.2-105.7-165.3-21.5-59-29.7-122.1-24.2-184.6 5.3-61 23.3-120.3 53-173.9 28.9-52.4 68.6-99.7 117.6-139.7 96-78.3 218.2-120.6 346.2-120.8s250.1 41.9 346.2 119.8c48.9 39.9 88.6 87 117.4 139.3 29.7 53.6 47.8 112.8 53.1 173.8 5.5 62.6-2.8 125.6-24.3 184.7-22 60-57.5 116.3-105.7 165.5z",fill:"#fff"}),m.jsx("path",{d:"m1300.4 1143.3c4.5-81.5 44.5-153.4 104.7-204.3 59.1-50.1 138.7-80.6 225.4-80.6 86.8.1 166.3 30.6 225.4 80.6 60.2 51 100.2 122.8 104.8 204.3 4.6 83.8-29.1 161.7-88.2 219.4-60.2 58.7-146 95.6-242 95.6s-181.9-36.9-242.1-95.6c-59-57.7-92.6-135.6-88-219.4z",fill:"#005385"}),m.jsx("path",{d:"m774.5 1308.3c.6 31.8 10.8 93.8 26 142.3 32.1 102.5 86.5 197.4 162.3 281 77.8 85.9 173.4 154.9 284 203.8 116.3 51.5 242.2 77.8 372.9 77.5 130.7-.2 256.6-26.9 372.8-78.8 110.5-49.5 206.1-118.7 283.8-204.8 75.7-84 130-179 162.1-281.5 16-51.1 26.3-103.8 30.5-157.1 4-52 2.3-104.4-5-156.1-14.4-101.4-49.5-196.5-103.5-283.2-49.5-79.6-113.1-149.4-188.8-208.2l.1-.1-763.8-586.4c-.6-.5-1.3-1.1-1.9-1.6-50.3-38.4-134.5-38.3-189.6.3-55.8 39-62.1 103.5-12.6 144.2l-.2.1 318.6 259.2-971.3 1h-1.3c-80.2.1-157.4 52.8-172.7 119.3-15.6 67.8 38.9 124 122.4 124.4l-.1.3 492.3-1-878.5 674.3c-1.1.9-2.3 1.7-3.3 2.5-82.8 63.4-109.6 169-57.5 235.8 53 67.9 165.6 68 249.4.3l479.4-392.3s-7 53-6.5 84.8zm1232 177.3c-98.8 100.8-237 157.8-386.7 158-149.8.3-288.1-56.3-386.9-156.8-48.3-49-83.7-105.2-105.7-165.3-21.5-59-29.7-122.1-24.2-184.6 5.3-61 23.3-120.3 53-173.9 28.9-52.4 68.6-99.7 117.6-139.7 96-78.3 218.2-120.6 346.2-120.8s250.1 41.9 346.2 119.8c48.9 39.9 88.6 87 117.4 139.3 29.7 53.6 47.8 112.8 53.1 173.8 5.5 62.6-2.8 125.6-24.3 184.7-22 60-57.5 116.3-105.7 165.5z",fill:"#ff7021"})]}),m.jsx("p",{className:"text-xl tracking-tight mt-4",children:"Blender"})]})})]})]})]}),m.jsxs("section",{id:"contact",className:"flex flex-col items-center mb-10",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm mb-7",children:"Built by emma "})]})]})]})}function PN({sidebarOpen:n,setSidebarOpen:e}){const[t,a]=G.useState(!1),[o,l]=G.useState(!1);let u=90;return n?u=0:u=90,m.jsxs(m.Fragment,{children:[m.jsx("button",{onClick:()=>e(!n),onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),className:"fixed top-10 right-5 z-60 md:right-12 p-3 text-white rounded-md focus:outline-none",children:m.jsx("svg",{width:"52",height:"19",viewBox:"0 0 58 25",className:"text-gray-200 hover:text-indigo-400 transition-transform duration-300",style:{transform:`rotate(${u}deg)`},fill:"none",xmlns:"http://www.w3.org/2000/svg",children:m.jsx("path",{d:"M11.9111 12.7155L11.4111 12.7155L11.4111 12.7155L11.9111 12.7155ZM13.9463 15.0163L13.9462 15.5163L13.9463 15.5163L13.9463 15.0163ZM15.9824 12.7155L16.4824 12.7155L16.4824 12.7155L15.9824 12.7155ZM13.9463 10.4157L13.9463 9.91573L13.9462 9.91573L13.9463 10.4157ZM0.953679 13.026L0.513278 13.2628L0.953679 13.026ZM56.6769 22.4632L56.2065 22.6327L56.6769 22.4632ZM55.1679 23.3496L54.821 23.7097L55.1679 23.3496ZM51.3548 11.6536L51.7404 11.9719L51.3548 11.6536ZM51.3721 13.121L51.7449 12.7878L51.3721 13.121ZM41.9629 12.321L42.2671 12.7178C46.7633 9.27149 51.1462 5.3052
41746 55.1951 1.22192L54.84 0.869872L54.485 0.51782C50.4608 4.57627 46.1118 8.51092 41.6587 11.9242L41.9629 12.321ZM56.4102 1.81843L55.9412 1.64497C54.7028 4.993 52.9171 8.9755 50.9692 11.3354L51.3548 11.6536L51.7404 11.9719C53.8039 9.47206 55.6369 5.3503 56.8791 1.99188L56.4102 1.81843ZM51.3721 13.121L50.9993 13.4543C53.4154 16.157 55.1537 19.7108 56.2065 22.6327L56.6769 22.4632L57.1473 22.2937C56.0704 19.3048 54.2776 15.6211 51.7449 12.7878L51.3721 13.121ZM55.1679 23.3496L55.5149 22.9896C51.3644 18.9898 46.8713 15.5186 42.2706 11.9269L41.9629 12.321L41.6552 12.7151C46.2667 16.3152 50.7153 19.7531 54.821 23.7097L55.1679 23.3496ZM0.943233 12.1138L1.38923 12.3398C3.60183 7.97411 6.26646 5.10444 9.22791 3.41448C12.187 1.72589 15.4833 1.19167 19.0027 1.56605C26.0693 2.31775 33.9863 6.72819 41.6552 12.7151L41.9629 12.321L42.2706 11.9269C34.5629 5.90972 26.4618 1.35387 19.1085 0.57166C15.418 0.179086 11.904 0.735996 8.73228 2.54595C5.56294 4.35454 2.77634 7.39083 0.497241 11.8878L0.943233 12.1138ZM41.9629 12.321L41.6587 11.9242C33.9955 17.798 26.0791 22.0852 19.0094 22.8631C15.4864 23.2507 12.1868 22.7657 9.22646 21.1837C6.26536 19.6014 3.60397 16.9003 1.39408 12.7893L0.953679 13.026L0.513278 13.2628C2.79632 17.5098 5.58625 20.3723 8.75515 22.0657C11.9248 23.7595 15.4339 24.2625 19.1187 23.8571C26.4645 23.0488 34.5598 18.6255 42.2671 12.7178L41.9629 12.321ZM11.9111 12.7155L11.4111 12.7155C11.4111 14.2026 12.49 15.5162 13.9462 15.5163L13.9463 15.0163L13.9463 14.5163C13.1542 14.5162 12.4111 13.7692 12.4111 12.7155L11.9111 12.7155ZM13.9463 15.0163L13.9463 15.5163C15.4024 15.5163 16.4824 14.203 16.4824 12.7155L15.9824 12.7155L15.4824 12.7155C15.4824 13.769 14.7388 14.5163 13.9463 14.5163L13.9463 15.0163ZM15.9824 12.7155L16.4824 12.7155C16.4824 11.2279 15.4021 9.91573 13.9463 9.91573L13.9463 10.4157L13.9463 10.9157C14.739 10.9157 15.4824 11.6624 15.4824 12.7156L15.9824 12.7155ZM13.9463 10.4157L13.9462 9.91573C12.4903 9.9159 11.4112 11.2282 11.4111 12.7155L11.9111 12.7155L12.4111 12.7156C12.4112 11.6622 13.1539 10.9158 13.9463 10.9157L13.9463 10.4157ZM0.943233 12.1138L0.497241 11.8878C0.280687 12.3151 0.285814 12.8396 0.513278 13.2628L0.953679 13.026L1.39408 12.7893C1.32215 12.6555 1.31993 12.4766 1.38923 12.3398L0.943233 12.1138ZM56.6769 22.4632L56.2065 22.6327C56.2552 22.7678 56.2438 22.8634 56.2201 22.9265C56.1951 22.9933 56.1453 23.0526 56.0739 23.0939C55.9362 23.1736 55.7172 23.1846 55.5149 22.9896L55.1679 23.3496L54.821 23.7097C55.3473 24.2168 56.0543 24.2606 56.5747 23.9595C57.1066 23.6517 57.4033 23.0042 57.1473 22.2937L56.6769 22.4632ZM51.3548 11.6536L50.9692 11.3354C50.4666 11.9442 50.4601 12.8511 50.9993 13.4543L51.3721 13.121L51.7449 12.7878C51.5479 12.5675 51.5398 12.2149 51.7404 11.9719L51.3548 11.6536ZM54.84 0.869872L55.1951 1.22192C55.3929 1.0224 55.6214 1.02832 55.7816 1.12437C55.9362 1.21704 56.0338 1.39457 55.9412 1.64497L56.4102 1.81843L56.8791 1.99188C57.1506 1.25793 56.8326 0.58855 56.2959 0.266715C55.7647 -0.0517405 55.0261 -0.0279256 54.485 0.51782L54.84 0.869872Z",stroke:"currentColor"})})}),n&&m.jsx("div",{className:"fixed inset-0 z-50",onClick:()=>e(!1)}),m.jsx("nav",{className:` 4175 fixed top-9 md:right-[8vw] font-shree bg-transparent z-50 4176 transform transition-all duration-300 ease-in-out overflow-hidden h-[6vh] items-center w-[100vw] md:w-[40vw] 4177 ${n?"ml-42":"ml-[100vw] opacity-0 "} 4178 `,children:m.jsxs("ul",{className:"menu menu-horizontal text-lg gap-x-4 ",children:[m.jsx("li",{className:"",children:m.jsx($n,{to:"/#home",className:"hover:bg-indigo-600",onClick:()=>e(!1),children:"Home"})}),m.jsx("li",{children:m.jsx($n,{to:"/#focus",className:"hover:bg-indigo-600",onClick:()=>e(!1),children:"Focus"})}),m.jsx("li",{children:m.jsx($n,{to:"/#projects",className:"hover:bg-indigo-600",onClick:()=>e(!1),children:"Projects"})}),m.jsx("li",{children:m.jsx($n,{to:"/#stack",className:"hover:bg-indigo-600",onClick:()=>e(!1),children:"Stack"})}),m.jsx("li",{children:m.jsx("button",{className:"hover:bg-indigo-600",onClick:()=>window.open(Y_,"_blank"),children:"Resume"})})]})})]})}const ON="/assets/destination1-BqwCfdPV.png",IN="/assets/destination2-D0D7pHf_.png",BN="/assets/itinerary1-DmVDfe7f.png",FN="/assets/itinerary2-B2NHDiAa.png",zN="/assets/itinerary3-ByWzQyyy.png";function Oa(){const{pathname:n}=es();return G.useEffect(()=>{window.scrollTo(0,0)},[n]),null}function VN({sidebarOpen:n}){const e=G.useRef(null);G.useEffect(()=>{const o=new zs,l=new Gs({antialias:!0});l.setPixelRatio(window.devicePixelRatio),l.setSize(window.innerWidth,window.innerHeight),e.current&&!e.current.contains(l.domElement)&&e.current.appendChild(l.domElement);const u=new mn(60,window.innerWidth/window.innerHeight,.1,100);u.position.set(0,2,0),u.lookAt(0,0,0);const f=new ks,d=new Vs;d.setPath("/threejs-water-shader/");const h=d.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),g=new js().load("/threejs-water-shader/ocean_floor.png");o.background=h,o.environment=h;const v={size:512},x=new Ws({environmentMap:h,resolution:v.size});o.add(x);const y=new Xs({texture:g});o.add(y),x.material.uniforms.uWavesAmplitude.value=.06,x.material.uniforms.uWavesFrequency.value=.04,x.material.uniforms.uWavesIterations.value=1,x.material.uniforms.uWavesSpeed.value=.1,x.material.uniforms.uTroughColor.value=new Fe(793917),x.material.uniforms.uSurfaceColor.value=new Fe(2839444),x.material.uniforms.uPeakColor.value=new Fe(7643122),x.material.uniforms.uOpacity.value=.6,x.material.uniforms.uFresnelPower.value=.3,x.material.uniforms.uFresnelScale.value=.9,x.material.uniforms.uTroughTransition.value=.4,y.material.uniforms.uCausticsColor.value=new Fe(14148348),y.material.uniforms.uCausticsScale.value=6,y.material.uniforms.uCausticsSpeed.value=.2,o.add(new Hs(16777215,.9));function b(){const w=f.getElapsedTime();x.update(w),y.update(w),l.render(o,u),requestAnimationFrame(b)}return b(),window.addEventListener("resize",()=>{u.aspect=window.innerWidth/window.innerHeight,u.updateProjectionMatrix(),l.setSize(window.innerWidth,window.innerHeight)}),()=>
4178{l&&(l.dispose(),e.current&&e.current.removeChild(l.domElement))}},[]);const t=ts(),a=()=>{t("/",{state:{scrollToProjects:!0}})};return m.jsxs(m.Fragment,{children:[m.jsx(Oa,{}),m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:e,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`bg-transparent text-white m-0 p-0 font-shree ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("div",{className:"fixed left-5 top-12 md:left-16 md:top-10 z-50",children:m.jsx("button",{type:"button",className:"flex items-center text-xl hover:text-blue-300",onClick:a,children:m.jsx("svg",{className:"h-8 w-8 mr-2",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24",children:m.jsx("path",{d:"M15 18l-6-6 6-6"})})})}),m.jsx("div",{className:"pt-[15vh] md:pt-0",children:m.jsx("div",{className:"w-[88vw] md:w-[60vw] mx-auto mb-8 overflow-hidden rounded-b-[30px] rounded-t-[30px] md:rounded-b-[30px] md:rounded-t-[0px]",children:m.jsx("img",{src:Pp,className:"w-full h-full object-cover ",alt:"Homepage"})})}),m.jsxs("div",{className:"px-[6vw] md:px-[20vw] pb-[15vh]",children:[m.jsxs("div",{className:"flex gap-10",children:[m.jsx("h1",{className:"text-5xl mb-2",children:"TripSmart AI"}),m.jsxs("div",{className:"flex gap-5 mt-1",children:[m.jsx("button",{className:"mb-5",onClick:()=>window.location.href="https://travel-agent-ai-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:"text-gray-400 hover:text-blue-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})}),m.jsx("button",{className:"mb-5",onClick:()=>window.location.href="",children:m.jsxs("svg",{width:"30",height:"30",className:"text-gray-400 hover:text-blue-300",viewBox:"0 0 51 51",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsx("path",{d:"M20.6 46.4904C12.2 49.3258 5.2 46.4904 1 37.75",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M20.5996 50V42.0568C20.5996 40.5911 21.0503 39.3171 21.7766 38.1662C22.2749 37.3767 21.9336 36.2564 21.0335 36.009C13.5778 33.9595 8.34961 30.6639 8.34961 19.7328C8.34961 16.891 9.28074 14.2191 10.9175 11.8937C11.3248 11.3149 11.5285 11.0256 11.5774 10.7635C11.6264 10.5014 11.5413 10.1594 11.371 9.47533C10.678 6.69114 10.723 3.73466 11.763 1.06916C11.763 1.06916 13.9121 0.368929 18.8037 3.42475C19.9205 4.12245 20.4789 4.4713 20.9707 4.54933C21.4625 4.62737 22.12 4.46392 23.4351 4.13701C25.2334 3.68998 27.0862 3.45 29.1746 3.45C31.263 3.45 33.1159 3.68998 34.9141 4.13701C36.2292 4.46392 36.8867 4.62737 37.3785 4.54933C37.8703 4.4713 38.4287 4.12245 39.5455 3.42475C44.4371 0.368929 46.5862 1.06916 46.5862 1.06916C47.6263 3.73466 47.6712 6.69114 46.9782 9.47533C46.808 10.1594 46.7228 10.5014 46.7718 10.7635C46.8207 11.0256 47.0244 11.315 47.4317 11.8937C49.0685 14.2191 49.9996 16.891 49.9996 19.7328C49.9996 30.6639 44.7715 33.9595 37.3157 36.009C36.4156 36.2564 36.0744 37.3767 36.5726 38.1662C37.299 39.3171 37.7496 40.5911 37.7496 42.0568V50",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]})})]})]}),m.jsx("hr",{className:"border-t border-gray-400 mb-6"}),m.jsxs("div",{className:"flex gap-40 mb-5",children:[m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"YEAR"}),m.jsx("p",{children:"2025"})]}),m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"TECH & TECHNIQUES"}),m.jsx("p",{className:"md:w-[25vw]",children:"Python, React, React Router, TailwindCSS, LangChain, Groq Model, ChromaDB, Ollama Embeddings, Axios, Git, Markdown, JSPDF"})]})]}),m.jsxs("section",{className:"mb-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"DESCRIPTION"}),m.jsx("p",{className:"whitespace-pre-line leading-relaxed",children:"A passion project - My dad is a tour guide so I know how valuable travel expert opinion can be when planning a trip. But not everyone wants a tour guide on their trip, so why not build an easily accessible AI agent but with the same knowledge and capabilities?"}),m.jsx("br",{}),m.jsx("p",{children:"This is an AI-powered travel planning website designed to assist 1) provide insights on dream destinations 2) plan your travel itinerary based on yor unique preferences."}),m.jsx("br",{}),m.jsx("p",{children:'I used a Groq Model ("llama-3.3-70b-versatile") here because of its small size and relatively fast response time.'})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"FRONTEND"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsxs("li",{children:[m.jsx("span",{className:"font-semibold",children:"DestinationExpert:"})," responsive chatbot",m.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[m.jsx("li",{children:"Chat interface with markdown + custom streaming AI response"}),m.jsx("li",{children:"Map-based geolocation feature via Leaflet and fly-to-location animations"})]})]}),m.jsxs("li",{children:[m.jsx("span",{className:"font-semibold",children:"ItineraryPlanner:"})," a clean itinerary planning form with AI-powered response",m.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[m.jsx("li",{children:"simple design for user to input desired trip info: dates, pace, content, number of locations"}),m.jsx("li",{children:"handles multi-city trip selection with transportation and cost estimates"})]})]}),m.jsx("li",{children:"PDF generation for downloaded itineraries/destination details using JSPDF"})]})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"BACKEND"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsx("li",{children:"Base AI agent is Groq's llama-based large language model â used for both DestinationExpert + ItineraryPlanner"}),m.jsxs("li",{children:[m.jsx("span",{className:"font-semibold",children:"DestinationExpert:"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-1",children:[m.jsx("li",{children:"LangChain pipeline: uses embedding storage and similarity search with ChromaDB, augmented by OllamaEmbeddingFunction for high-quality embeddings of local documents"}),m.jsx("li",{children:m.jsx("span",{className:"block ml-2",children:"documents from a real Europe-based tour guide!"})}),m.jsx("li",{children:"Handles follow-up question and conversational context awareness â via storing and updating/reformatting chat history"})]})]}),m.jsx("li",{children:"Multi AI agent integration via agent child classes"}),m.jsx("li",{children:"Axios for reliable HTTP communication with Flask backend API"})]})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"DESTINATION AGENT"}),m.jsx("img",{src:ON,className:"mb-4"}),m.jsx("img",{src:IN,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"ITINERARY PLANNER"}),m.jsx("img",{src:BN,className:"mb-4"}),m.jsxs("div",{className:"flex",children:[m.jsx("div",{className:"w-[50vw] h-[40vh] md:w-[30vw] md:h-[50vh] mx-auto overflow-hidden",children:m.jsx("img",{src:FN,
4178className:"w-full h-full object-cover"})}),m.jsx("div",{className:"w-[50vw] h-[40vh] md:w-[30vw] md:h-[50vh] mx-auto overflow-hidden",children:m.jsx("img",{src:zN,className:"w-full h-full object-cover"})})]})]})]}),m.jsxs("div",{className:"flex flex-col items-center mb-4",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm ",children:"Built by emma "})]})]})]})}const jN="/assets/grass-HYG7kCXK.png",HN="/assets/koipond-DqmyxjYE.png",kN="/assets/star-uAgQk8LU.png",GN="/assets/fire-He4e0lnB.png";function WN({sidebarOpen:n}){const e=G.useRef(null);G.useEffect(()=>{const o=new zs,l=new Gs({antialias:!0});l.setPixelRatio(window.devicePixelRatio),l.setSize(window.innerWidth,window.innerHeight),e.current&&!e.current.contains(l.domElement)&&e.current.appendChild(l.domElement);const u=new mn(60,window.innerWidth/window.innerHeight,.1,100);u.position.set(0,2,0),u.lookAt(0,0,0);const f=new ks,d=new Vs;d.setPath("/threejs-water-shader/");const h=d.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),g=new js().load("/threejs-water-shader/ocean_floor.png");o.background=h,o.environment=h;const v={size:512},x=new Ws({environmentMap:h,resolution:v.size});o.add(x);const y=new Xs({texture:g});o.add(y),x.material.uniforms.uWavesAmplitude.value=.06,x.material.uniforms.uWavesFrequency.value=.04,x.material.uniforms.uWavesIterations.value=1,x.material.uniforms.uWavesSpeed.value=.1,x.material.uniforms.uTroughColor.value=new Fe(793917),x.material.uniforms.uSurfaceColor.value=new Fe(2839444),x.material.uniforms.uPeakColor.value=new Fe(7643122),x.material.uniforms.uOpacity.value=.6,x.material.uniforms.uFresnelPower.value=.3,x.material.uniforms.uFresnelScale.value=.9,x.material.uniforms.uTroughTransition.value=.4,y.material.uniforms.uCausticsColor.value=new Fe(14148348),y.material.uniforms.uCausticsScale.value=6,y.material.uniforms.uCausticsSpeed.value=.2,o.add(new Hs(16777215,.9));function b(){const w=f.getElapsedTime();x.update(w),y.update(w),l.render(o,u),requestAnimationFrame(b)}return b(),window.addEventListener("resize",()=>{u.aspect=window.innerWidth/window.innerHeight,u.updateProjectionMatrix(),l.setSize(window.innerWidth,window.innerHeight)}),()=>{l&&(l.dispose(),e.current&&e.current.removeChild(l.domElement))}},[]);const t=ts(),a=()=>{t("/",{state:{scrollToProjects:!0}})};return m.jsxs(m.Fragment,{children:[m.jsx(Oa,{}),m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:e,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`bg-transparent text-white m-0 p-0 font-shree ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("div",{className:"fixed left-5 top-12 md:left-16 md:top-10 z-50",children:m.jsx("button",{type:"button",className:"flex items-center text-xl hover:text-blue-300",onClick:a,children:m.jsx("svg",{className:"h-8 w-8 mr-2",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24",children:m.jsx("path",{d:"M15 18l-6-6 6-6"})})})}),m.jsx("div",{className:"pt-[15vh] md:pt-0",children:m.jsx("div",{className:"w-[88vw] md:w-[60vw] mx-auto mb-8 overflow-hidden rounded-b-[30px] rounded-t-[30px] md:rounded-b-[30px] md:rounded-t-[0px]",children:m.jsx("a",{href:"https://immersive-production.up.railway.app",children:m.jsx("img",{src:Ip,className:"w-full h-full object-cover ",alt:"Homepage"})})})}),m.jsxs("div",{className:"px-[6vw] md:px-[20vw] pb-[15vh]",children:[m.jsxs("div",{className:"flex gap-10",children:[m.jsx("h1",{className:"text-5xl mb-2",children:"Nature Walk"}),m.jsxs("div",{className:"flex gap-5 mt-1",children:[m.jsx("button",{className:"mb-5",onClick:()=>window.location.href="https://immersive-production.up.railway.app/",children:m.jsxs("svg",{width:"30",height:"30",className:"text-gray-400 hover:text-blue-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.28
41786 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})}),m.jsx("button",{className:"mb-5",onClick:()=>window.location.href="https://github.com/zhijingz/immersive",children:m.jsxs("svg",{width:"30",height:"30",className:"text-gray-400 hover:text-blue-300",viewBox:"0 0 51 51",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsx("path",{d:"M20.6 46.4904C12.2 49.3258 5.2 46.4904 1 37.75",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M20.5996 50V42.0568C20.5996 40.5911 21.0503 39.3171 21.7766 38.1662C22.2749 37.3767 21.9336 36.2564 21.0335 36.009C13.5778 33.9595 8.34961 30.6639 8.34961 19.7328C8.34961 16.891 9.28074 14.2191 10.9175 11.8937C11.3248 11.3149 11.5285 11.0256 11.5774 10.7635C11.6264 10.5014 11.5413 10.1594 11.371 9.47533C10.678 6.69114 10.723 3.73466 11.763 1.06916C11.763 1.06916 13.9121 0.368929 18.8037 3.42475C19.9205 4.12245 20.4789 4.4713 20.9707 4.54933C21.4625 4.62737 22.12 4.46392 23.4351 4.13701C25.2334 3.68998 27.0862 3.45 29.1746 3.45C31.263 3.45 33.1159 3.68998 34.9141 4.13701C36.2292 4.46392 36.8867 4.62737 37.3785 4.54933C37.8703 4.4713 38.4287 4.12245 39.5455 3.42475C44.4371 0.368929 46.5862 1.06916 46.5862 1.06916C47.6263 3.73466 47.6712 6.69114 46.9782 9.47533C46.808 10.1594 46.7228 10.5014 46.7718 10.7635C46.8207 11.0256 47.0244 11.315 47.4317 11.8937C49.0685 14.2191 49.9996 16.891 49.9996 19.7328C49.9996 30.6639 44.7715 33.9595 37.3157 36.009C36.4156 36.2564 36.0744 37.3767 36.5726 38.1662C37.299 39.3171 37.7496 40.5911 37.7496 42.0568V50",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]})})]})]}),m.jsx("hr",{className:"border-t border-gray-400 mb-6"}),m.jsxs("div",{className:"flex gap-40 mb-5",children:[m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"YEAR"}),m.jsx("p",{children:"2025"})]}),m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"TECH & TECHNIQUES"}),m.jsx("p",{className:"md:w-[25vw]",children:"Three.js, Custom Fragment & Vertex Shaders, WebGL, React, Javascript"})]})]}),m.jsxs("section",{className:"mb-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"DESCRIPTION"}),m.jsx("p",{className:"whitespace-pre-line leading-relaxed",children:"This is my first project in Three.js. I'm in the process of designing it for a VR viewing! This site guides the user through four distinct, interactive 3D environments: Night Meadow, Koi Pond, Starlit Cosmos, and Fireside Glow. The piece is actually used as animated background of a nature-awareness conference hosted in my university! "})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"KEY FEATURES"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsx("li",{children:"Real-time mouse interaction: spawning fireflies, guide flame direction, attract fish movement"}),m.jsx("li",{children:"Extensive custom vertex- and fragment- shaders for texture of dynamic grass lighting, water surface, fire particles, and star glow"}),m.jsx("li",{children:"Original 3D animation of grass movement in wind, fish swim style, shooting stars, flame particle rising trajectory"}),m.jsx("li",{children:"DEVELOPING: VR viewing of scenery and interaction with hand waving/joystick"})]})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"NIGHT MEADOW"}),m.jsx("img",{src:jN,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"KOI POND"}),m.jsx("img",{src:HN,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"COSMOS"}),m.jsx("img",{src:kN,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"FIRELIGHT"}),m.jsx("img",{src:GN,className:"w-full h-full object-cover"})]})]}),m.jsxs("div",{className:"flex flex-col items-center mb-4",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm ",children:"Built by emma "})]})]})]})}const XN="/assets/about-CZcerlck.png",qN="/assets/about2-B29HOG5V.png",YN="/assets/aap1-BFa2cTmQ.png",ZN="/assets/aap2-CTSFo5yT.png",KN="/assets/outreach-DeqApBHT.png",QN="/assets/members1-C4WrXOcY.png",$N="/assets/contact-BgwJVhIT.png";function JN({sidebarOpen:n}){const e=G.useRef(null);G.useEffect(()=>{const o=new zs,l=new Gs({antialias:!0});l.setPixelRatio(window.devicePixelRatio),l.setSize(window.innerWidth,window.innerHeight),e.current&&!e.current.contains(l.domElement)&&e.current.appendChild(l.domElement);const u=new mn(60,window.innerWidth/window.innerHeight,.1,100);u.position.set(0,2,0),u.lookAt(0,0,0);const f=new ks,d=new Vs;d.setPath("/threejs-water-shader/");const h=d.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),g=new js().load("/threejs-water-shader/ocean_floor.png");o.background=h,o.environment=h;const v={size:512},x=new Ws({environmentMap:h,resolution:v.size});o.add(x);const y=new Xs({texture:g});o.add(y),x.material.uniforms.uWavesAmplitude.value=.06,x.material.uniforms.uWavesFrequency.value=.04,x.material.uniforms.uWavesIterations.value=1,x.material.uniforms.uWavesSpeed.value=.1,x.material.uniforms.uTroughColor.value=new Fe(793917),x.material.uniforms.uSurfaceColor.value=new Fe(2839444),x.material.uniforms.uPeakColor.value=new Fe(7643122),x.material.uniforms.uOpacity.value=.6,x.material.uniforms.uFresnelPower.value=.3,x.material.uniforms.uFresnelScale.value=.9,x.material.uniforms.uTroughTransition.value=.4,y.material.uniforms.uCausticsColor.value=new Fe(14148348),y.material.uniforms.uCausticsScale.value=6,y.material.uniforms.uCausticsSpeed.value=.2,o.add(new Hs(16777215,.9));function b(){const w=f.getElapsedTime();x.update(w),y.update(w),l.render(o,u),requestAnimationFrame(b)}return b(),window.addEventListener("resize",()=>{u.aspect=window.innerWidth/window.innerHeight,u.updateProjectionMatrix(),l.setSize(window.innerWidth,window.innerHeight)}),()=>
4178{l&&(l.dispose(),e.current&&e.current.removeChild(l.domElement))}},[]);const t=ts(),a=()=>{t("/",{state:{scrollToProjects:!0}})};return m.jsxs(m.Fragment,{children:[m.jsx(Oa,{}),m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:e,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`scroll-smooth pond-text-content w-full h-full m-0 p-0 font-shree transition-opacity duration-200 ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("div",{className:"fixed left-5 top-12 md:left-16 md:top-10 z-50",children:m.jsx("button",{type:"button",className:"flex items-center text-xl hover:text-blue-300",onClick:a,children:m.jsx("svg",{className:"h-8 w-8 mr-2",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24",children:m.jsx("path",{d:"M15 18l-6-6 6-6"})})})}),m.jsx("div",{className:"pt-[15vh] md:pt-0",children:m.jsx("div",{className:"w-[88vw] md:w-[60vw] mx-auto mb-8 overflow-hidden rounded-b-[30px] rounded-t-[30px] md:rounded-b-[30px] md:rounded-t-[0px]",children:m.jsx("img",{src:Op,className:"w-full h-full object-cover ",alt:"Homepage"})})}),m.jsxs("div",{className:"px-[6vw] md:px-[20vw] pb-[15vh]",children:[m.jsxs("div",{className:"flex gap-10",children:[m.jsx("h1",{className:"text-5xl mb-2",children:"UAEM-UM Website"}),m.jsx("div",{className:"flex gap-5 mt-1",children:m.jsx("button",{className:"mb-5",onClick:()=>window.location.href="https://public.websites.umich.edu/~uaem/",children:m.jsxs("svg",{width:"30",height:"30",className:"text-gray-400 hover:text-blue-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{clipPath:"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.286 5.57143V13",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})})})]}),m.jsx("hr",{className:"border-t border-gray-400 mb-6"}),m.jsxs("div",{className:"flex gap-40 mb-5",children:[m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"YEAR"}),m.jsx("p",{children:"2025"})]}),m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"TECH & TECHNIQUES"}),m.jsx("p",{className:"md:w-[25vw]",children:"React, React Router, Framer Motion, JavaScript, React Intersection Observer, TailwindCSS"})]})]}),m.jsxs("section",{className:"mb-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"DESCRIPTION"}),m.jsx("p",{className:"whitespace-pre-line leading-relaxed",children:"As the web developer and the club vice president, this is the website I designed for my health advocacy club (UAEM) at my university that showcases the clubâs mission, history, members, projects, and contact resources"})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"KEY FEATURES"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsx("li",{children:"Project timelines with tooltip interaction"}),m.jsx("li",{children:"Use Framer Motion to provide smooth entrance effects such as fade-ins and bottom-up animations"}),m.jsx("li",{children:"Trigger animations on content entering viewport and staggered animation sequences to avoid content clutter"})]})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"ABOUT PAGE"}),m.jsx("img",{src:XN,className:"mb-4"}),m.jsx("img",{src:qN,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"PROJECTS - AAP"}),m.jsx("img",{src:YN,className:"mb-4"}),m.jsx("img",{src:ZN,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"PROJECTS - OUTREACH"}),m.jsx("img",{src:KN,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"MEMBERS PAGE"}),m.jsx("img",{src:QN,className:"w-full h-full object-cover"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"CONTACT PAGE"}),m.jsx("img",{src:$N})]})]}),m.jsxs("div",{className:"flex flex-col items-center mb-4",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm ",children:"Built by emma "})]})]})]})}const eL="/assets/mtrf1-dwU9cVx4.png",tL="/assets/mtrf2-CNnFy_1S.png",nL="/assets/mtrf3-BSdUJw6h.png",iL="/assets/mtrf4-GRBXC9Dj.png",sL="/assets/mtrf5-D0htohvi.png",aL="/assets/mtrf6-D3gBePVn.png";function rL({sidebarOpen:n}){const e=G.useRef(null);G.useEffect(()=>{const o=new zs,l=new Gs({antialias:!0});l.setPixelRatio(window.devicePixelRatio),l.setSize(window.innerWidth,window.innerHeight),e.current&&!e.current.contains(l.domElement)&&e.current.appendChild(l.domElement);const u=new mn(60,window.innerWidth/window.innerHeight,.1,100);u.position.set(0,2,0),u.lookAt(0,0,0);const f=new ks,d=new Vs;d.setPath("/threejs-water-shader/");const h=d.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),g=new js().load("/threejs-water-shader/ocean_floor.png");o.background=h,o.environment=h;const v={size:512},x=new Ws({environmentMap:h,resolution:v.size});o.add(x);const y=new Xs({texture:g});o.add(y),x.material.uniforms.uWavesAmplitude.value=.06,x.material.uniforms.uWavesFrequency.value=.04,x.material.uniforms.uWavesIterations.value=1,x.material.uniforms.uWavesSpeed.value=.1,x.material.uniforms.uTroughColor.value=new Fe(793917),x.material.uniforms.uSurfaceColor.value=new Fe(2839444),x.material.uniforms.uPeakColor.value=new Fe(7643122),x.material.uniforms.uOpacity.value=.6,x.material.uniforms.uFresnelPower.value=.3,x.material.uniforms.uFresnelScale.value=.9,x.material.uniforms.uTroughTransition.value=.4,y.material.uniforms.uCausticsColor.value=new Fe(14148348),y.material.uniforms.uCausticsScale.value=6,y.material.uniforms.uCausticsSpeed.value=.2,o.add(new Hs(16777215,.9));function b(){const w=f.getElapsedTime();x.update(w),y.update(w),l.render(o,u),requestAnimationFrame(b)}return b(),window.addEventListener("resize",()=>{u.aspect=window.innerWidth/window.innerHeight,u.updateProjectionMatrix(),l.setSize(window.innerWidth,window.innerHeight)}),()=>
4178{l&&(l.dispose(),e.current&&e.current.removeChild(l.domElement))}},[]);const t=ts(),a=()=>{t("/",{state:{scrollToProjects:!0}})};return m.jsxs(m.Fragment,{children:[m.jsx(Oa,{}),m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:e,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`bg-transparent text-white m-0 p-0 font-shree ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("div",{className:"fixed left-5 top-12 md:left-16 md:top-10 z-50",children:m.jsx("button",{type:"button",className:"flex items-center text-xl hover:text-blue-300",onClick:a,children:m.jsx("svg",{className:"h-8 w-8 mr-2",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24",children:m.jsx("path",{d:"M15 18l-6-6 6-6"})})})}),m.jsx("div",{className:"pt-[15vh] md:pt-0",children:m.jsx("div",{className:"w-[88vw] md:w-[60vw] mx-auto mb-8 overflow-hidden rounded-b-[30px] rounded-t-[30px] md:rounded-b-[30px] md:rounded-t-[0px]",children:m.jsx("img",{src:eL,className:"w-full h-full object-cover ",alt:"Homepage"})})}),m.jsxs("div",{className:"px-[6vw] md:px-[20vw] pb-[15vh]",children:[m.jsxs("div",{className:"flex gap-10",children:[m.jsx("h1",{className:"text-5xl mb-2",children:"mTRF with PSI"}),m.jsx("div",{className:"flex gap-5 mt-1"})]}),m.jsx("hr",{className:"border-t border-gray-400 mb-6"}),m.jsxs("div",{className:"flex gap-40 mb-5",children:[m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"YEAR"}),m.jsx("p",{children:"2025"})]}),m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"TECH & TECHNIQUES"}),m.jsx("p",{className:"md:w-[25vw]",children:"MATLAB, mTRF, ECoG signal processing, band-pass filter"})]})]}),m.jsxs("section",{className:"mb-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"DESCRIPTION"}),m.jsxs("p",{className:"whitespace-pre-line leading-relaxed",children:["Modeling neural responses to speech with mTRF analysis and phoneme selectivity measures to reveal how the brain encodes distinct speech sounds.",m.jsx("br",{})," My work as a research intern in Flinker Lab at New York University."]})]}),m.jsx("img",{src:tL,className:"w-[40vw] mx-auto"}),m.jsx("div",{className:"flex justify-center items-center ",children:m.jsx("svg",{width:"40",height:"46",viewBox:"0 0 124 46",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:m.jsx("g",{transform:"rotate(90, 62, 23)",children:m.jsx("path",{d:"M3 20C1.34315 20 0 21.3431 0 23C0 24.6569 1.34315 26 3 26V23V20ZM123.121 25.1213C124.293 23.9497 124.293 22.0503 123.121 20.8787L104.029 1.7868C102.858 0.615224 100.958 0.615224 99.7868 1.7868C98.6152 2.95837 98.6152 4.85786 99.7868 6.02944L116.757 23L99.7868 39.9706C98.6152 41.1421 98.6152 43.0416 99.7868 44.2132C100.958 45.3848 102.858 45.3848 104.029 44.2132L123.121 25.1213ZM3 23V26H121V23V20H3V23Z",fill:"white"})})})}),m.jsx("img",{src:nL,className:"mt-1 w-[40vw] mx-auto"}),m.jsxs("section",{className:"my-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"WHY THIS MATTERS"}),m.jsx("p",{className:"whitespace-pre-line leading-relaxed",children:"Characterizing how distinct brain areas respond to different phonemes (smallest unit of speech e.g. b, a, g) is essential for building accurate speech synthesizers that translate neural signal directly into speech for those with impaired speech."})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"DATASET"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsxs("li",{children:[m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"Source:"})," Auditory Repetition Task ECoG recording from single patient."]}),m.jsxs("li",{children:[m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"Content:"})," 107 unique words heard and verbally repeated by patient"]}),m.jsxs("li",{children:[m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"Neural Model:"})," Common Average Referenced and high-band pass (70-150) filtered electrodes."]}),m.jsxs("li",{children:[m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"Stimulus Model:"})," Phoneme timing extracted using MFA."]})]})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"METHODS & FINDINGS"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsxs("li",{children:[m.jsx("span",{children:"Conducted Multivariate Temporal Response Function (mTRF) analysis using MFA-extracted phoneme timing and preprocessed neural signal"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsxs("li",{children:["mTRF identifies ",m.
4178jsx("span",{className:"text-gray-100 font-shree-bold",children:"how well actual neural signals can be predicted by stimulus model (phoneme/word occurrence)"})]}),m.jsx("li",{children:"used regularization to find optimal parameters for mTRF"})]})]}),m.jsx("li",{children:"Map mTRF r-value (higher=better predicted) from mTRF results onto T1 + MNI brain for visualization"}),m.jsxs("li",{children:[m.jsxs("span",{children:["Developed ",m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"phoneme-based neural response matrix from actual neural signals + generated phoneme selectivity index"})," based on this paper"]}),m.jsx("ul",{className:"list-disc pl-6 space-y-2 ",children:m.jsxs("li",{children:["these insights are ",m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"important for tuning speech synthesizers for live and accurate neural-to-speech transcription"})]})})]})]})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"mTRF WEIGHTS"}),m.jsxs("div",{className:"flex gap-4 w-full",children:[m.jsx("img",{src:iL,className:"w-3/5 mb-4"}),m.jsx("img",{src:sL,className:"w-2/5 mb-4"})]})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"NEURAL RESPONSE MATRIX"}),m.jsx("img",{src:aL,className:"mb-4"})]})]}),m.jsxs("div",{className:"flex flex-col items-center mb-4",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm ",children:"Built by emma "})]})]})]})}const oL="/assets/viseme1-Cu4NzIUl.png",lL="/assets/viseme2-kALTyGxW.png",cL="/assets/viseme3-CsUMWJcw.png",uL="/assets/viseme4-cRgF97tD.png",fL="/assets/viseme5-BY0x1A3R.png",dL="/assets/viseme6-5SyAcwkv.png";function hL({sidebarOpen:n}){const e=G.useRef(null);G.useEffect(()=>{const o=new zs,l=new Gs({antialias:!0});l.setPixelRatio(window.devicePixelRatio),l.setSize(window.innerWidth,window.innerHeight),e.current&&!e.current.contains(l.domElement)&&e.current.appendChild(l.domElement);const u=new mn(60,window.innerWidth/window.innerHeight,.1,100);u.position.set(0,2,0),u.lookAt(0,0,0);const f=new ks,d=new Vs;d.setPath("/threejs-water-shader/");const h=d.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),g=new js().load("/threejs-water-shader/ocean_floor.png");o.background=h,o.environment=h;const v={size:512},x=new Ws({environmentMap:h,resolution:v.size});o.add(x);const y=new Xs({texture:g});o.add(y),x.material.uniforms.uWavesAmplitude.value=.06,x.material.uniforms.uWavesFrequency.value=.04,x.material.uniforms.uWavesIterations.value=1,x.material.uniforms.uWavesSpeed.value=.1,x.material.uniforms.uTroughColor.value=new Fe(793917),x.material.uniforms.uSurfaceColor.value=new Fe(2839444),x.material.uniforms.uPeakColor.value=new Fe(7643122),x.material.uniforms.uOpacity.value=.6,x.material.uniforms.uFresnelPower.value=.3,x.material.uniforms.uFresnelScale.value=.9,x.material.uniforms.uTroughTransition.value=.4,y.material.uniforms.uCausticsColor.value=new Fe(14148348),y.material.uniforms.uCausticsScale.value=6,y.material.uniforms.uCausticsSpeed.value=.2,o.add(new Hs(16777215,.9));function b(){const w=f.getElapsedTime();x.update(w),y.update(w),l.render(o,u),requestAnimationFrame(b)}return b(),window.addEventListener("resize",()=>{u.aspect=window.innerWidth/window.innerHeight,u.updateProjectionMatrix(),l.setSize(window.innerWidth,window.innerHeight)}),()=>{l&&(l.dispose(),e.current&&e.current.removeChild(l.domElement))}},[]);const t=ts(),a=()=>{t("/",{state:{scrollToProjects:!0}})};return m.jsxs(m.Fragment,{children:[m.jsx(Oa,{}),m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:e,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`bg-transparent text-white m-0 p-0 font-shree ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("div",{className:"fixed left-5 top-12 md:left-16 md:top-10 z-50",children:m.jsx("button",{type:"button",className:"flex items-center text-xl hover:text-blue-300",onClick:a,children:m.jsx("svg",{className:"h-8 w-8 mr-2",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24",children:m.jsx("path",{d:"M15 18l-6-6 6-6"})})})}),m.jsx("div",{className:"pt-[15vh] md:pt-0",children:m.jsx("div",{className:"w-[88vw] md:w-[60vw] mx-auto mb-8 overflow-hidden rounded-b-[30px] rounded-t-[30px] md:rounded-b-[30px] md:rounded-t-[0px]",children:m.jsx("img",{src:Lf,className:"w-full h-full object-cover ",alt:"Homepage"})})}),m.jsxs("div",{className:"px-[6vw] md:px-[20vw] pb-[15vh]",children:[m.jsxs("div",{className:"flex gap-10",children:[m.jsx("h1",{className:"text-5xl mb-2",children:"Phoneme-to-Viseme"}),m.jsx("div",{className:"flex gap-5 mt-1",children:m.jsx("button",{className:"mb-5",onClick:()=>window.location.href="https://docs.google.com/presentation/d/1rjI4psxyUApx-X_cnuuoOcEVVErRv_wNh0ukSAGtwfY/edit?usp=sharing/",children:m.jsxs("svg",{width:"30",height:"30",className:"text-gray-400 hover:text-blue-300",viewBox:"0 0 52 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[m.jsxs("g",{"clip-path":"url(#clip0_95_44)",children:[m.jsx("path",{d:"M35.286 39V46.4286C35.286 47.4137 34.8947 48.3584 34.1981 49.055C33.5015 49.7515 32.5568 50.1429 31.5717 50.1429H5.57171C4.58662 50.1429 3.64187 49.7515 2.94531 49.055C2.24875 48.3584 1.85742 47.4137 1.85742 46.4286V5.57143C1.85742 4.58634 2.24875 3.64159 2.94531 2.94503C3.64187 2.24847 4.58662 1.85714 5.57171 1.85714H31.5717C32.5568 1.85714 33.5015 2.24847 34.1981 2.94503C34.8947 3.64159 35.286 4.58634 35.28
41786 5.57143V13",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M24.1436 26H50.1436",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"}),m.jsx("path",{d:"M42.7148 18.5714L50.1434 26L42.7148 33.4286",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"})]}),m.jsx("defs",{children:m.jsx("clipPath",{id:"clip0_95_44",children:m.jsx("rect",{width:"52",height:"52",fill:"white"})})})]})})})]}),m.jsx("hr",{className:"border-t border-gray-400 mb-6"}),m.jsxs("div",{className:"flex gap-40 mb-5",children:[m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"YEAR"}),m.jsx("p",{children:"2023-2024"})]}),m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"TECH & TECHNIQUES"}),m.jsx("p",{className:"md:w-[25vw]",children:"MATLAB, PCA, UMAP, seqNMF"})]})]}),m.jsxs("section",{className:"mb-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"DESCRIPTION"}),m.jsxs("p",{className:"whitespace-pre-line leading-relaxed",children:["A data-driven phoneme-to-viseme mapping using lip landmark data and dimensionality reduction techniques .",m.jsx("br",{})," My work as a research assistant in the Multisensory Perception Lab at University of Michigan."]})]}),m.jsxs("div",{className:"flex",children:[m.jsx("img",{src:oL,className:"w-[20vw] mx-auto"}),m.jsx("div",{className:"flex justify-center items-center ",children:m.jsx("svg",{width:"40",height:"46",viewBox:"0 0 124 46",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:m.jsx("path",{d:"M3 20C1.34315 20 0 21.3431 0 23C0 24.6569 1.34315 26 3 26V23V20ZM123.121 25.1213C124.293 23.9497 124.293 22.0503 123.121 20.8787L104.029 1.7868C102.858 0.615224 100.958 0.615224 99.7868 1.7868C98.6152 2.95837 98.6152 4.85786 99.7868 6.02944L116.757 23L99.7868 39.9706C98.6152 41.1421 98.6152 43.0416 99.7868 44.2132C100.958 45.3848 102.858 45.3848 104.029 44.2132L123.121 25.1213ZM3 23V26H121V23V20H3V23Z",fill:"white"})})}),m.jsx("img",{src:lL,className:"mt-1 w-[20vw] mx-auto"})]}),m.jsxs("section",{className:"my-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"WHY THIS MATTERS"}),m.jsx("p",{className:"whitespace-pre-line leading-relaxed",children:"Understanding how phonemes (sounds) map to visemes (lip shapes when speaking) ensures higher performance in natural speech recognition and decoding for BCI and human-computer interfaces."})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"DATASET"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsxs("li",{children:[m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"Source:"})," TCD-TIMIT audiovisual speech corpus."]}),m.jsxs("li",{children:[m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"Content:"})," 378 unique sentences per speaker, recorded in separate videos"]}),m.jsxs("li",{children:[m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"Data Extraction:"})," OpenFace used to detect facial landmarks."]}),m.jsxs("li",{children:[m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"Focus:"})," 20 lip landmarks (points 48â67)."]})]})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"METHODS & FINDINGS"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsxs("li",{children:["Conducted Principle Component Analysis (PCA) to ",m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"simplify continuous lip movement into a series of discrete trajectories"})]}),m.jsx("li",{children:"Identified what series of discrete lip trajectories occur when pronouncing each phoneme"}),m.jsxs("li",{children:[m.jsxs("span",{children:["Developed ",m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"a mapping from phoneme (audio) to visual lip movements"})," with distinct parameters"]}),m.jsx("ul",{className:"list-disc pl-6 space-y-2 ",children:m.jsx("li",{children:m.jsx("span",{className:"text-gray-100 font-shree-bold",children:"inputting these parameters allows for better performance in lip reading and speech decoding ML"})})})]})]})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"SIMPLIFIED LIP TRAJECTORY"}),m.jsx("img",{src:cL,className:" mb-4 mx-auto"}),m.jsx("img",{src:uL,className:"w-[40vw] mb-4 mx-auto"})]}),m.jsxs("div",{className:"mb-5 ",children:[m.jsx("p",{className:"text-center mb-4",children:"PCA SPACE"}),m.jsxs("div",{className:"flex w-full gap-10 mx-auto",children:[m.jsx("img",{src:fL,className:"w-1/2 mb-4"}),m.jsx("img",{src:dL,className:"w-2/5 h-1/5 mb-4"})]}),m.jsx("img",{src:Lf,className:"mb-4 "})]})]}),m.jsxs("div",{className:"flex flex-col items-center mb-4",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm ",children:"Built by emma "})]})]})]})}var nc={},Ts={},kl={},Yx;function pL(){if(Yx)return kl;
4178Yx=1,Object.defineProperty(kl,"__esModule",{value:!0}),kl.useCanvasIdentifier=void 0;var n=Bs(),e=0,t="react-unity-webgl-canvas",a=function(o){var l=(0,n.useState)(0),u=l[0],f=l[1],d=(0,n.useCallback)(function(){f(function(g){return g+1})},[]);if(o!==void 0)return[o,d];var h=(0,n.useMemo)(function(){return[t,e].join("-")},[u]);return[h,d]};return kl.useCanvasIdentifier=a,kl}var Gl={},Wl={},Zx;function Cy(){return Zx||(Zx=1,Object.defineProperty(Wl,"__esModule",{value:!0}),Wl.isBrowserEnvironment=void 0,Wl.isBrowserEnvironment=typeof window<"u"&&typeof document<"u"),Wl}var Kx;function mL(){if(Kx)return Gl;Kx=1,Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.useUnityLoader=void 0;var n=Bs(),e=Cy(),t=function(a){var o=(0,n.useState)("Loading"),l=o[0],u=o[1];return(0,n.useEffect)(function(){if(e.isBrowserEnvironment!==!1){if(a===null){u("Idle");return}var f=window.document.querySelector('script[src="'.concat(a,'"]'));f===null?(f=window.document.createElement("script"),f.type="text/javascript",f.src=a,f.async=!0,f.setAttribute("data-status","loading"),window.document.body.appendChild(f),f.addEventListener("load",function(){return f?.setAttribute("data-status","loaded")}),f.addEventListener("error",function(){return f?.setAttribute("data-status","error")})):u(f.getAttribute("data-status")==="loaded"?"Loaded":"Error");var d=function(h){return u(h.type==="load"?"Loaded":"Error")};return f.addEventListener("load",d),f.addEventListener("error",d),function(){f!==null&&(f.removeEventListener("load",d),f.removeEventListener("error",d),f.remove())}}},[a]),l};return Gl.useUnityLoader=t,Gl}var Qx;function gL(){if(Qx)return Ts;Qx=1;var n=Ts&&Ts.__awaiter||function(u,f,d,h){function g(v){return v instanceof d?v:new d(function(x){x(v)})}return new(d||(d=Promise))(function(v,x){function y(M){try{w(h.next(M))}catch(S){x(S)}}function b(M){try{w(h.throw(M))}catch(S){x(S)}}function w(M){M.done?v(M.value):g(M.value).then(y,b)}w((h=h.apply(u,f||[])).next())})},e=Ts&&Ts.__generator||function(u,f){var d={label:0,sent:function(){if(v[0]&1)throw v[1];return v[1]},trys:[],ops:[]},h,g,v,x=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return x.next=y(0),x.throw=y(1),x.return=y(2),typeof Symbol=="function"&&(x[Symbol.iterator]=function(){return this}),x;function y(w){return function(M){return b([w,M])}}function b(w){if(h)throw new TypeError("Generator is already executing.");for(;x&&(x=0,w[0]&&(d=0)),d;)try{if(h=1,g&&(v=w[0]&2?g.return:w[0]?g.throw||((v=g.return)&&v.call(g),0):g.next)&&!(v=v.call(g,w[1])).done)return v;switch(g=0,v&&(w=[w[0]&2,v.value]),w[0]){case 0:case 1:v=w;break;case 4:return d.label++,{value:w[1],done:!1};case 5:d.label++,g=w[1],w=[0];continue;case 7:w=d.ops.pop(),d.trys.pop();continue;default:if(v=d.trys,!(v=v.length>0&&v[v.length-1])&&(w[0]===6||w[0]===2)){d=0;continue}if(w[0]===3&&(!v||w[1]>v[0]&&w[1]<v[3])){d.label=w[1];break}if(w[0]===6&&d.label<v[1]){d.label=v[1],v=w;break}if(v&&d.label<v[2]){d.label=v[2],d.ops.push(w);break}v[2]&&d.ops.pop(),d.trys.pop();continue}w=f.call(u,d)}catch(M){w=[6,M],g=0}finally{h=v=0}if(w[0]&5)throw w[1];return{value:w[0]?w[1]:void 0,done:!0}}};Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.Unity=void 0;var t=Bs(),a=pL(),o=mL(),l=(0,t.forwardRef)(function(u,f){var d=(0,t.useState)(null),h=d[0],g=d[1],v=(0,t.useState)(null),x=v[0],y=v[1],b=(0,a.useCanvasIdentifier)(u.id),w=b[0],M=b[1],S=(0,o.useUnityLoader)(u.unityProvider.loaderUrl),N=(0,t.useCallback)(function(T){u.unityProvider.setLoadingProgression(T),T===1&&u.unityProvider.setIsLoaded(!0)},[u.unityProvider]);return(0,t.useEffect)(function(){var T=function(){return n(void 0,void 0,void 0,function(){var P,I,F,V,U;return e(this,function(L){switch(L.label){case 0:if(!h||x||S!=="Loaded")return[2];console.log("React Unity WebGL: Initializing Unity instance..."),u.unityProvider.setUnityInstance(null),y(null),u.unityProvider.setLoadingProgression(0),(U=(V=u.unityProvider).setIsLoaded)===null||U===void 0||U.call(V,!1),u.unityProvider.setInitialisationError(void 0),M(),P={companyName:u.unityProvider.companyName,productName:u.unityProvider.productName,productVersion:u.unityProvider.productVersion,dataUrl:u.unityProvider.dataUrl,frameworkUrl:u.unityProvider.frameworkUrl,code
4178Url:u.unityProvider.codeUrl,workerUrl:u.unityProvider.workerUrl,memoryUrl:u.unityProvider.memoryUrl,symbolsUrl:u.unityProvider.symbolsUrl,streamingAssetsUrl:u.unityProvider.streamingAssetsUrl,devicePixelRatio:u.devicePixelRatio,webglContextAttributes:u.unityProvider.webglContextAttributes,cacheControl:u.unityProvider.cacheControl,autoSyncPersistentDataPath:u.unityProvider.autoSyncPersistentDataPath,matchWebGLToCanvasSize:u.matchWebGLToCanvasSize,disabledCanvasEvents:u.disabledCanvasEvents},Object.keys(P).forEach(function(z){(P[z]===null||P[z]===void 0)&&delete P[z]}),L.label=1;case 1:return L.trys.push([1,3,,4]),[4,window.createUnityInstance(h,P,N)];case 2:return I=L.sent(),y(I),u.unityProvider.setUnityInstance(I),[3,4];case 3:return F=L.sent(),console.error("React Unity WebGL: Error initializing Unity instance:",F),u.unityProvider.setInitialisationError(F),[3,4];case 4:return[2]}})})},R=function(){return n(void 0,void 0,void 0,function(){var P,I,F;return e(this,function(V){switch(V.label){case 0:return!x||!h?[2]:(console.log("React Unity WebGL: Detaching Unity instance..."),u.unityProvider.setUnityInstance(null),y(null),u.unityProvider.setLoadingProgression(0),(F=(I=u.unityProvider).setIsLoaded)===null||F===void 0||F.call(I,!1),u.unityProvider.setInitialisationError(void 0),P=document.createElement("canvas"),P.id=h.id,P.setAttribute("react-unity-webgl-role","cleanup"),P.style.display="none",document.body.appendChild(P),x.Module.canvas=P,y(null),[4,x.Quit()]);case 1:return V.sent(),document.body.removeChild(P),[2]}})})};return T(),function(){R()}},[h,x,S,u.unityProvider]),(0,t.useImperativeHandle)(f,function(){return h}),(0,t.createElement)("canvas",{ref:g,id:w,style:u.style,className:u.className,tabIndex:u.tabIndex})});return Ts.Unity=l,Ts}var Xl={},lr={},$x;function vL(){if($x)return lr;$x=1;var n=lr&&lr.__spreadArray||function(u,f,d){if(d||arguments.length===2)for(var h=0,g=f.length,v;h<g;h++)(v||!(h in f))&&(v||(v=Array.prototype.slice.call(f,0,h)),v[h]=f[h]);return u.concat(v||Array.prototype.slice.call(f))};Object.defineProperty(lr,"__esModule",{value:!0}),lr.useEventSystem=void 0;var e=Bs(),t=Cy(),a=[],o=function(u){for(var f=[],d=1;d<arguments.length;d++)f[d-1]=arguments[d];var h=void 0;return a.forEach(function(g){h=g.apply(void 0,n([u],f,!1))}),h};t.isBrowserEnvironment===!0&&(window.dispatchReactUnityEvent=o);var l=function(){var u=(0,e.useRef)([]),f=(0,e.useCallback)(function(g,v){u.current=n(n([],u.current,!0),[{eventName:g,callback:v}],!1)},[u]),d=(0,e.useCallback)(function(g,v){u.current=u.current.filter(function(x){return x.eventName!==g&&x.callback!==v})},[u]),h=(0,e.useCallback)(function(g){for(var v=[],x=1;x<arguments.length;x++)v[x-1]=arguments[x];var y=u.current.find(function(b){return b.eventName===g});if(!(typeof y>"u"))return y.callback.apply(y,v)},[u]);return(0,e.useEffect)(function(){return a.push(h),function(){a.splice(a.indexOf(h),1)}},[h]),{addEventListener:f,removeEventListener:d}};return lr.useEventSystem=l,lr}var Jx;function xL(){if(Jx)return Xl;Jx=1,Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.useUnityContext=void 0;var n=Bs(),e=vL(),t=function(a){var o=(0,n.useState)(null),l=o[0],u=o[1],f=(0,n.useState)(0),d=f[0],h=f[1],g=(0,n.useState)(!1),v=g[0],x=g[1],y=(0,n.useState)(),b=y[0],w=y[1],M=(0,e.useEventSystem)(),S=(0,n.useRef)({companyName:a.companyName,productName:a.productName,productVersion:a.productVersion,codeUrl:a.codeUrl,dataUrl:a.dataUrl,frameworkUrl:a.frameworkUrl,loaderUrl:a.loaderUrl,memoryUrl:a.memoryUrl,symbolsUrl:a.symbolsUrl,streamingAssetsUrl:a.streamingAssetsUrl,workerUrl:a.workerUrl,webglContextAttributes:a.webglContextAttributes,cacheControl:a.cacheControl,autoSyncPersistentDataPath:a.autoSyncPersistentDataPath,setUnityInstance:u,setLoadingProgression:h,setIsLoaded:x,setInitialisationError:w}),N=(0,n.useCallback)(function(V){return l?.SetFullscreen(V?1:0)},[l]),T=(0,n.useCallback)(function(){var V;return(V=l?.Module.canvas)===null||V===void 0?void 0:V.requestPointerLock()},[l]),R=(0,n.useCallback)(function(V,U,L){return l?.SendMessage(V,U,L)},[l]),P=(0,n.useCallback)(function(V,U){var L;return(L=l?.Module.canvas)===null||L===void 0?void 0:L.toDataURL(V,U)},[l]),I=(0,n.useCallback)(function(){var V;return(V=l?.Quit())!==null&&V!==void 0?V:Promise.reject()},[l]),F=(0,n.useCallback)(function(){var V;return(V=l?.GetMetricsInfo)===null||V===void 0?void 0:V.call(l)},[l]);return{unityProvider:S.current,loadingProgression:d,isLoaded:v,initialisationError:b,requestFullscreen:N,requestPointerLock:T,sendMessage:R,takeScreenshot:P,unload:I,getMetricsInfo:F,addEventListener:M.addEventListener,removeEventListener:M.removeEventListener,UNSAFE__unityInstance:l}};return Xl.useUnityContext=t,Xl}var ql={},e_;function _L(){if(e_)return ql;
4178e_=1,Object.defineProperty(ql,"__esModule",{value:!0}),ql.useUnityMetricsInfo=void 0;var n=Bs(),e=function(t,a){var o=(0,n.useState)({}),l=o[0],u=o[1];return(0,n.useEffect)(function(){var f=setInterval(function(){var d=t();typeof d>"u"||u(d)},a.interval||1e3);return function(){clearInterval(f)}},[t,a.interval]),l};return ql.useUnityMetricsInfo=e,ql}var t_;function yL(){return t_||(t_=1,(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.useUnityMetricsInfo=n.useUnityContext=n.Unity=void 0;var e=gL();Object.defineProperty(n,"Unity",{enumerable:!0,get:function(){return e.Unity}});var t=xL();Object.defineProperty(n,"useUnityContext",{enumerable:!0,get:function(){return t.useUnityContext}});var a=_L();Object.defineProperty(n,"useUnityMetricsInfo",{enumerable:!0,get:function(){return a.useUnityMetricsInfo}})})(nc)),nc}var Uo=yL();const SL="/assets/pic1-J0FDUeRp.png",ML="/assets/pic2-BOd6tm2g.png",bL="/assets/pic3-DGHIxDmy.png";function EL({sidebarOpen:n}){const e=G.useRef(null);G.useEffect(()=>{const v=new zs,x=new Gs({antialias:!0});x.setPixelRatio(window.devicePixelRatio),x.setSize(window.innerWidth,window.innerHeight),e.current&&!e.current.contains(x.domElement)&&e.current.appendChild(x.domElement);const y=new mn(60,window.innerWidth/window.innerHeight,.1,100);y.position.set(0,2,0),y.lookAt(0,0,0);const b=new ks,w=new Vs;w.setPath("/threejs-water-shader/");const M=w.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),S=new js().load("/threejs-water-shader/ocean_floor.png");v.background=M,v.environment=M;const N={size:512},T=new Ws({environmentMap:M,resolution:N.size});v.add(T);const R=new Xs({texture:S});v.add(R),T.material.uniforms.uWavesAmplitude.value=.06,T.material.uniforms.uWavesFrequency.value=.04,T.material.uniforms.uWavesIterations.value=1,T.material.uniforms.uWavesSpeed.value=.1,T.material.uniforms.uTroughColor.value=new Fe(793917),T.material.uniforms.uSurfaceColor.value=new Fe(2839444),T.material.uniforms.uPeakColor.value=new Fe(7643122),T.material.uniforms.uOpacity.value=.6,T.material.uniforms.uFresnelPower.value=.3,T.material.uniforms.uFresnelScale.value=.9,T.material.uniforms.uTroughTransition.value=.4,R.material.uniforms.uCausticsColor.value=new Fe(14148348),R.material.uniforms.uCausticsScale.value=6,R.material.uniforms.uCausticsSpeed.value=.2,v.add(new Hs(16777215,.9));function P(){const I=b.getElapsedTime();T.update(I),R.update(I),x.render(v,y),requestAnimationFrame(P)}return P(),window.addEventListener("resize",()=>{y.aspect=window.innerWidth/window.innerHeight,y.updateProjectionMatrix(),x.setSize(window.innerWidth,window.innerHeight)}),()=>{x&&(x.dispose(),e.current&&e.current.removeChild(x.domElement))}},[]);const t=ts(),a=()=>{t("/",{state:{scrollToProjects:!0}})},{unityProvider:o}=Uo.useUnityContext({loaderUrl:"/metroid/Build/metroid.loader.js",dataUrl:"metroid/Build/metroid.data",frameworkUrl:"/metroid/Build/metroid.framework.js",codeUrl:"metroid/Build/metroid.wasm"}),[l,u]=G.useState(!1),[f,d]=G.useState(!1),h=G.useRef(null),g=()=>{h.current&&(f?(document.exitFullscreen?.().catch(()=>{}),d(!1)):(h.current.requestFullscreen?.().catch(()=>{}),d(!0)))};return G.useEffect(()=>{const v=y=>{y.key==="Escape"&&f&&(document.exitFullscreen?.().catch(()=>{}),d(!1))},x=()=>{document.fullscreenElement||d(!1)};return document.addEventListener("keydown",v),document.addEventListener("fullscreenchange",x),()=>{document.removeEventListener("keydown",v),document.removeEventListener("fullscreenchange",x)}},[f]),m.jsxs(m.Fragment,{children:[m.jsx(Oa,{}),m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:e,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`bg-transparent text-white m-0 p-0 font-shree ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("div",{className:"fixed left-5 top-12 md:left-16 md:top-10 z-50",children:m.jsx("button",{type:"button",className:"flex items-center text-xl hover:text-blue-300",onClick:a,children:m.jsx("svg",{className:"h-8 w-8 mr-2",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24",children:m.jsx("path",{d:"M15 18l-6-6 6-6"})})})}),m.jsx("div",{className:"pt-[15vh] md:pt-0",children:m.jsx("div",{className:"unity-container",children:l?m.jsx(m.Fragment,{children:m.jsxs("div",{ref:h,className:`${f?"fixed inset-0 z-[999]":"mx-auto w-[78vw] md:w-[60vw] rounded-[30px] mb-8 md:rounded-b-[30px] md:rounded-t-[0px]"} relative`,children:[m.jsx(Uo.Unity,{unityProvider:o,className:`w-full h-full ${f?"":"rounded-[30px] md:rounded-b-[30px] md:rounded-t-[0px]"}`}),m.jsx("button",{onClick:g,className:`absolute p-2 bg-black bg-opacity-60 hover:bg-opacity-80 text-white rounded transition ${f?"bottom-6 right-6":"bottom-4 right-4"}`,title:f?"Exit Fullscreen":"Toggle Fullscreen",children:m.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:m.jsx("path",{d:"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"})})})]})}):m.jsxs("div",{className:"start-screen mt-0 pt-0 relative flex items-center justify-center mx-auto w-[78vw] md:w-[60vw] h-[48vw] md:h-[30vw] rounded-[30px] mb-8 md:rounded-b-[30px] md:rounded-t-[0px] cursor-pointer overflow-hidden",onClick:()=>
4178u(!0),children:[m.jsx("img",{src:sm,alt:"Homepage Background",className:"absolute inset-0 w-full h-full object-cover brightness-50","aria-hidden":"true"}),m.jsx("div",{className:"relative z-10 flex flex-col items-center",children:m.jsx("button",{className:" cursor-pointer px-6 py-2 mx-auto my-auto border rounded-lg border-white text-white hover:bg-white hover:text-black font-semibold transition mb-2",children:"Start"})})]})})}),m.jsxs("div",{className:"px-[6vw] md:px-[20vw] pb-[15vh]",children:[m.jsxs("div",{className:"flex gap-10",children:[m.jsx("h1",{className:"text-5xl mb-2",children:"Metroid NES Remake"}),m.jsx("div",{className:"flex gap-5 mt-1"})]}),m.jsx("hr",{className:"border-t border-gray-400 mb-6"}),m.jsxs("div",{className:"flex gap-40 mb-5",children:[m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"YEAR"}),m.jsx("p",{children:"2025"})]}),m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"TECH & TECHNIQUES"}),m.jsx("p",{className:"md:w-[25vw]",children:"Unity, C#"})]})]}),m.jsxs("section",{className:"mb-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"DESCRIPTION"}),m.jsxs("p",{className:"whitespace-pre-line leading-relaxed",children:["My first full project in Unity! A remake of the original Metroid NES game with an additional custom feature of inverting gravity.",m.jsx("br",{}),"I worked in a team of three and was responsible for building the player movements, shooting mechanics, collectables, and some of the enemie mechanics."]})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"KEY FEATURES"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsx("li",{children:"Implemented smooth and responsive player movement mechanics"}),m.jsx("li",{children:"Designed collectibles including power-ups and health items to enhance gameplay"}),m.jsx("li",{children:"Programmed enemy behaviors and attack patterns for dynamic challenge"}),m.jsx("li",{children:"Integrated gravity inversion feature to add a unique twist to traditional platforming"})]})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"SKREE ENEMY"}),m.jsx("img",{src:ML,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"INVERT GRAVITY"}),m.jsx("img",{src:bL,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"ROOM TRANSITION"}),m.jsx("img",{src:SL,className:"mb-4"})]})]}),m.jsxs("div",{className:"flex flex-col items-center mb-4",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm ",children:"Built by emma "})]})]})]})}const wL="/assets/level2-lXaLnAF_.png",TL="/assets/level4-CvCW3pdE.png";function CL({sidebarOpen:n}){const e=G.useRef(null);G.useEffect(()=>{const v=new zs,x=new Gs({antialias:!0});x.setPixelRatio(window.devicePixelRatio),x.setSize(window.innerWidth,window.innerHeight),e.current&&!e.current.contains(x.domElement)&&e.current.appendChild(x.domElement);const y=new mn(60,window.innerWidth/window.innerHeight,.1,100);y.position.set(0,2,0),y.lookAt(0,0,0);const b=new ks,w=new Vs;w.setPath("/threejs-water-shader/");const M=w.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),S=new js().load("/threejs-water-shader/ocean_floor.png");v.background=M,v.environment=M;const N={size:512},T=new Ws({environmentMap:M,resolution:N.size});v.add(T);const R=new Xs({texture:S});v.add(R),T.material.uniforms.uWavesAmplitude.value=.06,T.material.uniforms.uWavesFrequency.value=.04,T.material.uniforms.uWavesIterations.value=1,T.material.uniforms.uWavesSpeed.value=.1,T.material.uniforms.uTroughColor.value=new Fe(793917),T.material.uniforms.uSurfaceColor.value=new Fe(2839444),T.material.uniforms.uPeakColor.value=new Fe(7643122),T.material.uniforms.uOpacity.value=.6,T.material.uniforms.uFresnelPower.value=.3,T.material.uniforms.uFresnelScale.value=.9,T.material.uniforms.uTroughTransition.value=.4,R.material.uniforms.uCausticsColor.value=new Fe(14148348),R.material.uniforms.uCausticsScale.value=6,R.material.uniforms.uCausticsSpeed.value=.2,v.add(new Hs(16777215,.9));function P(){const I=b.getElapsedTime();T.update(I),R.update(I),x.render(v,y),requestAnimationFrame(P)}return P(),window.addEventListener("resize",()=>{y.aspect=window.innerWidth/window.innerHeight,y.updateProjectionMatrix(),x.setSize(window.innerWidth,window.innerHeight)}),()=>{x&&(x.dispose(),e.current&&e.current.removeChild(x.domElement))}},[]);const t=ts(),a=()=>{t("/",{state:{scrollToProjects:!0}})},{unityProvider:o}=Uo.useUnityContext({loaderUrl:"/Flipped/Build/Flipped.loader.js",dataUrl:"Flipped/Build/Flipped.data",frameworkUrl:"/Flipped/Build/Flipped.framework.js",code
4178Url:"Flipped/Build/Flipped.wasm"}),[l,u]=G.useState(!1),[f,d]=G.useState(!1),h=G.useRef(null),g=()=>{h.current&&(f?(document.exitFullscreen?.().catch(()=>{}),d(!1)):(h.current.requestFullscreen?.().catch(()=>{}),d(!0)))};return G.useEffect(()=>{const v=y=>{y.key==="Escape"&&f&&(document.exitFullscreen?.().catch(()=>{}),d(!1))},x=()=>{document.fullscreenElement||d(!1)};return document.addEventListener("keydown",v),document.addEventListener("fullscreenchange",x),()=>{document.removeEventListener("keydown",v),document.removeEventListener("fullscreenchange",x)}},[f]),m.jsxs(m.Fragment,{children:[m.jsx(Oa,{}),m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:e,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`bg-transparent text-white m-0 p-0 font-shree ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("div",{className:"fixed left-5 top-12 md:left-16 md:top-10 z-50",children:m.jsx("button",{type:"button",className:"flex items-center text-xl hover:text-blue-300",onClick:a,children:m.jsx("svg",{className:"h-8 w-8 mr-2",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24",children:m.jsx("path",{d:"M15 18l-6-6 6-6"})})})}),m.jsx("div",{className:"pt-[15vh] md:pt-0",children:m.jsx("div",{className:"unity-container",children:l?m.jsx(m.Fragment,{children:m.jsxs("div",{ref:h,className:`${f?"fixed inset-0 z-[999]":"mx-auto w-[78vw] md:w-[60vw] rounded-[30px] mb-8 md:rounded-b-[30px] md:rounded-t-[0px]"} relative`,children:[m.jsx(Uo.Unity,{unityProvider:o,className:`w-full h-full ${f?"":"rounded-[30px] md:rounded-b-[30px] md:rounded-t-[0px]"}`}),m.jsx("button",{onClick:g,className:`absolute p-2 bg-black bg-opacity-60 hover:bg-opacity-80 text-white rounded transition ${f?"bottom-6 right-6":"bottom-4 right-4"}`,title:f?"Exit Fullscreen":"Toggle Fullscreen",children:m.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:m.jsx("path",{d:"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"})})})]})}):m.jsxs("div",{className:"start-screen mt-0 pt-0 relative flex items-center justify-center mx-auto w-[78vw] md:w-[60vw] h-[48vw] md:h-[30vw] rounded-[30px] mb-8 md:rounded-b-[30px] md:rounded-t-[0px] cursor-pointer overflow-hidden",onClick:()=>u(!0),children:[m.jsx("img",{src:Df,alt:"Homepage Background",className:"absolute inset-0 w-full h-full object-cover brightness-50","aria-hidden":"true"}),m.jsx("div",{className:"relative z-10 flex flex-col items-center",children:m.jsx("button",{className:" cursor-pointer px-6 py-2 mx-auto my-auto border rounded-lg border-white text-white hover:bg-white hover:text-black font-semibold transition mb-2",children:"Start"})})]})})}),m.jsxs("div",{className:"px-[6vw] md:px-[20vw] pb-[15vh]",children:[m.jsxs("div",{className:"flex gap-10",children:[m.jsx("h1",{className:"text-5xl mb-2",children:"Flipped - Original game"}),m.jsx("div",{className:"flex gap-5 mt-1"})]}),m.jsx("hr",{className:"border-t border-gray-400 mb-6"}),m.jsxs("div",{className:"flex gap-40 mb-5",children:[m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"YEAR"}),m.jsx("p",{children:"2025"})]}),m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"TECH & TECHNIQUES"}),m.jsx("p",{className:"md:w-[25vw]",children:"Unity, C#"})]})]}),m.jsxs("section",{className:"mb-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"DESCRIPTION"}),m.jsx("p",{className:"whitespace-pre-line leading-relaxed",children:"A two-player collaborative platformer!"})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"KEY FEATURES"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsx("li",{children:"Innovative level designs"}),m.jsx("li",{children:"Intuitive player controls and gameplay"}),m.jsx("li",{children:"Composed original game music"})]})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"LEVEL 2"}),m.jsx("img",{src:wL,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"LEVEL 3"}),m.jsx("img",{src:Df,className:"mb-4"})]}),m.jsxs("div",{className:"mb-5",children:[m.jsx("p",{className:"text-center mb-4",children:"LEVEL 4"}),m.jsx("img",{src:TL,className:"mb-4"})]})]}),m.jsxs("div",{className:"flex flex-col items-center mb-4",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm ",children:"Built by emma "})]})]})]})}function AL({sidebarOpen:n}){const e=G.useRef(null);G.useEffect(()=>{const v=new zs,x=new Gs({antialias:!0});x.setPixelRatio(window.devicePixelRatio),x.setSize(window.innerWidth,window.innerHeight),e.current&&!e.current.contains(x.domElement)&&e.current.appendChild(x.domElement);const y=new mn(60,window.innerWidth/window.innerHeight,.1,100);y.position.set(0,2,0),y.lookAt(0,0,0);const b=new ks,w=new Vs;w.setPath("/threejs-water-shader/");const M=w.load(["px.png","nx.png","py.png","ny.png","pz.png","nz.png"]),S=new js().load("/threejs-water-shader/ocean_floor.png");v.background=M,v.environment=M;const N={size:512},T=new Ws({environmentMap:M,resolution:N.size});v.add(T);const R=new Xs({texture:S});v.add(R),T.material.uniforms.uWavesAmplitude.value=.06,T.material.uniforms.uWavesFrequency.value=.04,T.material.uniforms.uWavesIterations.value=1,T.material.uniforms.uWavesSpeed.value=.1,T.material.uniforms.uTroughColor.value=new Fe(793917),T.material.uniforms.uSurfaceColor.value=new Fe(2839444),T.material.uniforms.uPeakColor.value=new Fe(7643122),T.material.uniforms.uOpacity.value=.6,T.material.uniforms.uFresnelPower.value=.3,T.material.uniforms.uFresnelScale.value=.9,T.material.uniforms.uTroughTransition.value=.4,R.material.uniforms.uCausticsColor.value=new Fe(14148348),R.material.uniforms.uCausticsScale.value=6,R.material.uniforms.uCausticsSpeed.value=.2,v.add(new Hs(16777215,.9));function P(){const I=b.getElapsedTime();T.update(I),R.update(I),x.render(v,y),requestAnimationFrame(P)}return P(),window.addEventListener("resize",()=>{y.aspect=window.innerWidth/window.innerHeight,y.updateProjectionMatrix(),x.setSize(window.innerWidth,window.innerHeight)}),()=>{x&&(x.dispose(),e.current&&e.current.removeChild(x.domElement))}},[]);const t=ts(),a=()=>{t("/",{state:{scrollToProjects:!0}})},{unityProvider:o}=Uo.useUnityContext({loaderUrl:"/VillageRim/Build/VillageRim.loader.js",dataUrl:"VillageRim/Build/VillageRim.data",frameworkUrl:"/VillageRim/Build/VillageRim.framework.js",code
4178Url:"VillageRim/Build/VillageRim.wasm"}),[l,u]=G.useState(!1),[f,d]=G.useState(!1),h=G.useRef(null),g=()=>{h.current&&(f?(document.exitFullscreen?.().catch(()=>{}),d(!1)):(h.current.requestFullscreen?.().catch(()=>{}),d(!0)))};return G.useEffect(()=>{const v=y=>{y.key==="Escape"&&f&&(document.exitFullscreen?.().catch(()=>{}),d(!1))},x=()=>{document.fullscreenElement||d(!1)};return document.addEventListener("keydown",v),document.addEventListener("fullscreenchange",x),()=>{document.removeEventListener("keydown",v),document.removeEventListener("fullscreenchange",x)}},[f]),m.jsxs(m.Fragment,{children:[m.jsx(Oa,{}),m.jsx("div",{className:"fixed inset-0 -z-10",children:m.jsx("div",{ref:e,className:"w-full h-full ",style:{touchAction:"none",background:"transparent"}})}),m.jsxs("div",{className:`bg-transparent text-white m-0 p-0 font-shree ${n?"opacity-40":"opacity-100"}`,children:[m.jsx("div",{className:"fixed left-5 top-12 md:left-16 md:top-10 z-50",children:m.jsx("button",{type:"button",className:"flex items-center text-xl hover:text-blue-300",onClick:a,children:m.jsx("svg",{className:"h-8 w-8 mr-2",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24",children:m.jsx("path",{d:"M15 18l-6-6 6-6"})})})}),m.jsx("div",{className:"pt-[15vh] md:pt-0",children:m.jsx("div",{className:"unity-container",children:l?m.jsx(m.Fragment,{children:m.jsxs("div",{ref:h,className:`${f?"fixed inset-0 z-[999]":"mx-auto w-[78vw] md:w-[60vw] rounded-[30px] mb-8 md:rounded-b-[30px] md:rounded-t-[0px]"} relative`,children:[m.jsx(Uo.Unity,{unityProvider:o,className:`w-full h-full ${f?"":"rounded-[30px] md:rounded-b-[30px] md:rounded-t-[0px]"}`}),m.jsx("button",{onClick:g,className:`absolute p-2 bg-black bg-opacity-60 hover:bg-opacity-80 text-white rounded transition ${f?"bottom-6 right-6":"bottom-4 right-4"}`,title:f?"Exit Fullscreen":"Toggle Fullscreen",children:m.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:m.jsx("path",{d:"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"})})})]})}):m.jsxs("div",{className:"start-screen mt-0 pt-0 relative flex items-center justify-center mx-auto w-[78vw] md:w-[60vw] h-[48vw] md:h-[30vw] rounded-[30px] mb-8 md:rounded-b-[30px] md:rounded-t-[0px] cursor-pointer overflow-hidden",onClick:()=>u(!0),children:[m.jsx("img",{src:am,alt:"Homepage Background",className:"absolute inset-0 w-full h-full object-cover brightness-50","aria-hidden":"true"}),m.jsx("div",{className:"relative z-10 flex flex-col items-center",children:m.jsx("button",{className:" cursor-pointer px-6 py-2 mx-auto my-auto border rounded-lg border-white text-white hover:bg-white hover:text-black font-semibold transition mb-2",children:"Start"})})]})})}),m.jsxs("div",{className:"px-[6vw] md:px-[20vw] pb-[15vh]",children:[m.jsxs("div",{className:"flex gap-10",children:[m.jsx("h1",{className:"text-5xl mb-2",children:"Village Rim - Original Game"}),m.jsx("div",{className:"flex gap-5 mt-1"})]}),m.jsx("hr",{className:"border-t border-gray-400 mb-6"}),m.jsxs("div",{className:"flex gap-40 mb-5",children:[m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"YEAR"}),m.jsx("p",{children:"2025"})]}),m.jsxs("div",{children:[m.jsx("h2",{className:"font-bold text-xl mb-2",children:"TECH & TECHNIQUES"}),m.jsx("p",{className:"md:w-[25vw]",children:"Unity, C#"})]})]}),m.jsxs("section",{className:"mb-8",children:[m.jsx("h2",{className:"font-bold text-2xl mb-2",children:"DESCRIPTION"}),m.jsxs("p",{className:"whitespace-pre-line leading-relaxed mb-6",children:["A 2D open-world action RPG featuring exploration, combat, elemental mechanics, farming, and a fully persistent game world built with scalable Unity systems. ",m.jsx("br",{}),"Please see our amazing trailer here!"]}),m.jsx("div",{className:"relative w-full",style:{paddingBottom:"56.25%"},children:m.jsx("iframe",{className:"absolute top-0 left-0 w-full h-full rounded-lg",src:"https://www.youtube.com/embed/sUJh4b26NqM",title:"Village Rim Trailer",frameBorder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})})]}),m.jsxs("section",{className:"mb-10",children:[m.jsx("h2",{className:"text-2xl font-bold mb-3",children:"KEY FEATURES"}),m.jsxs("ul",{className:"list-disc pl-6 space-y-2",children:[m.jsxs("li",{children:[m.jsx("strong",{children:"OPEN-WORLD EXPLORATION:"})," Multi-island 2D environments with seamless scene transitions, above-ground and underground biomes, and dynamic world-state management."]}),m.jsxs("li",{children:[m.jsx("strong",{children:"MODULAR COMBAT SYSTEM:"})," Melee attacks, hit detection, cooldowns, damage types, and responsive enemy feedback loops."]}),m.jsxs("li",{children:[m.jsx("strong",{children:"ELEMENTAL INTERACTIONS:"})," Fire/water mechanics enabling burn, extinguish, and environment-dependent effects across players, enemies, and props."]}),m.jsxs("li",{children:[m.jsx("strong",{children:"ADVANCED ENEMY & BOSS BEHAVIOR:"})," State machines, unique attack patterns, pathfinding, melee/ranged variants, and telegraphed boss mechanics."]}),m.jsxs("li",{children:[m.jsx("strong",{children:"PLAYER SYSTEMS:"})," Movement, dodge, health/stamina, equipment, and interactions with world objects."]}),m.jsxs("li",{children:[m.jsx("strong",{children:"INVENTORY MANAGEMENT:"})," Loot pickup, hotbar shortcuts, drag-and-drop UI, and JSON-based save/load support."]}
vendor: 7,167 bytes, line 4178
4178),m.jsxs("li",{children:[m.jsx("strong",{children:"NPC INTERACTIONS:"})," Proximity triggers, branching dialogue, quest hooks, and persistent narrative flags."]}),m.jsxs("li",{children:[m.jsx("strong",{children:"SAVE SYSTEM:"})," Structured JSON serialization for player state, inventory, world progress, NPCs, and environment data."]}),m.jsxs("li",{children:[m.jsx("strong",{children:"VISUAL POLISH:"})," Particle effects, shaders, tilemaps, and Cinemachine-based camera behavior."]})]})]})]}),m.jsxs("div",{className:"flex flex-col items-center mb-4",children:[m.jsx("p",{className:"text-1xl mb-4",children:"You know how to find me"}),m.jsx("p",{className:"text-3xl mb-4",children:"[email protected]"}),m.jsx("p",{className:"text-sm ",children:"Built by emma "})]})]})]})}var RL="1.3.10";function Ay(n,e,t){return Math.max(n,Math.min(e,t))}function NL(n,e,t){return(1-t)*n+t*e}function LL(n,e,t,a){return NL(n,e,1-Math.exp(-t*a))}function DL(n,e){return(n%e+e)%e}var UL=class{isRunning=!1;value=0;from=0;to=0;currentTime=0;lerp;duration;easing;onUpdate;advance(n){if(!this.isRunning)return;let e=!1;if(this.duration&&this.easing){this.currentTime+=n;const t=Ay(0,this.currentTime/this.duration,1);e=t>=1;const a=e?1:this.easing(t);this.value=this.from+(this.to-this.from)*a}else this.lerp?(this.value=LL(this.value,this.to,this.lerp*60,n),Math.round(this.value)===this.to&&(this.value=this.to,e=!0)):(this.value=this.to,e=!0);e&&this.stop(),this.onUpdate?.(this.value,e)}stop(){this.isRunning=!1}fromTo(n,e,{lerp:t,duration:a,easing:o,onStart:l,onUpdate:u}){this.from=this.value=n,this.to=e,this.lerp=t,this.duration=a,this.easing=o,this.currentTime=0,this.isRunning=!0,l?.(),this.onUpdate=u}};function PL(n,e){let t;return function(...a){let o=this;clearTimeout(t),t=setTimeout(()=>{t=void 0,n.apply(o,a)},e)}}var OL=class{constructor(n,e,{autoResize:t=!0,debounce:a=250}={}){this.wrapper=n,this.content=e,t&&(this.debouncedResize=PL(this.resize,a),this.wrapper instanceof Window?window.addEventListener("resize",this.debouncedResize,!1):(this.wrapperResizeObserver=new ResizeObserver(this.debouncedResize),this.wrapperResizeObserver.observe(this.wrapper)),this.contentResizeObserver=new ResizeObserver(this.debouncedResize),this.contentResizeObserver.observe(this.content)),this.resize()}width=0;height=0;scrollHeight=0;scrollWidth=0;debouncedResize;wrapperResizeObserver;contentResizeObserver;destroy(){this.wrapperResizeObserver?.disconnect(),this.contentResizeObserver?.disconnect(),this.wrapper===window&&this.debouncedResize&&window.removeEventListener("resize",this.debouncedResize,!1)}resize=()=>{this.onWrapperResize(),this.onContentResize()};onWrapperResize=()=>{this.wrapper instanceof Window?(this.width=window.innerWidth,this.height=window.innerHeight):(this.width=this.wrapper.clientWidth,this.height=this.wrapper.clientHeight)};onContentResize=()=>{this.wrapper instanceof Window?(this.scrollHeight=this.content.scrollHeight,this.scrollWidth=this.content.scrollWidth):(this.scrollHeight=this.wrapper.scrollHeight,this.scrollWidth=this.wrapper.scrollWidth)};get limit(){return{x:this.scrollWidth-this.width,y:this.scrollHeight-this.height}}},Ry=class{events={};emit(n,...e){let t=this.events[n]||[];for(let a=0,o=t.length;a<o;a++)t[a]?.(...e)}on(n,e){return this.events[n]?.push(e)||(this.events[n]=[e]),()=>{this.events[n]=this.events[n]?.filter(t=>e!==t)}}off(n,e){this.events[n]=this.events[n]?.filter(t=>e!==t)}destroy(){this.events={}}},n_=100/6,wa={passive:!1},IL=class{constructor(n,e={wheelMultiplier:1,touchMultiplier:1}){this.element=n,this.options=e,window.addEventListener("resize",this.onWindowResize,!1),this.onWindowResize(),this.element.addEventListener("wheel",this.onWheel,wa),this.element.addEventListener("touchstart",this.onTouchStart,wa),this.element.addEventListener("touchmove",this.onTouchMove,wa),this.element.addEventListener("touchend",this.onTouchEnd,wa)}touchStart={x:0,y:0};lastDelta={x:0,y:0};window={width:0,height:0};emitter=new Ry;on(n,e){return this.emitter.on(n,e)}destroy(){this.emitter.destroy(),window.removeEventListener("resize",this.onWindowResize,!1),this.element.removeEventListener("wheel",this.onWheel,wa),this.element.removeEventListener("touchstart",this.onTouchStart,wa),this.element.removeEventListener("touchmove",this.onTouchMove,wa),this.element.removeEventListener("touchend",this.onTouchEnd,wa)}onTouchStart=n=>{const{clientX:e,clientY:t}=n.targetTouches?n.targetTouches[0]:n;this.touchStart.x=e,this.touchStart.y=t,this.lastDelta={x:0,y:0},this.emitter.emit("scroll",{deltaX:0,deltaY:0,event:n})};onTouchMove=n=>{const{clientX:e,clientY:t}=n.targetTouches?n.targetTouches[0]:n,a=-(e-this.touchStart.x)*this.options.touchMultiplier,o=-(t-this.touchStart.y)*this.options.touchMultiplier;this.touchStart.x=e,this.touchStart.y=t,this.lastDelta={x:a,y:o},this.emitter.emit("scroll",{deltaX:a,deltaY:o,event:n})};onTouchEnd=n=>{this.emitter.emit("scroll",{deltaX:this.lastDelta.x,deltaY:this.lastDelta.y,event:n})};onWheel=n=>{let{deltaX:e,deltaY:t,deltaMode:a}=n;const o=a===1?n_:a===2?this.window.width:1,l=a===1?n_:a===2?this.window.height:1;e*=o,t*=l,e*=this.options.wheelMultiplier,t*=this.options.wheelMultiplier,this.emitter.emit("scroll",{deltaX:e,deltaY:t,event:n})};onWindowResize=()=>{this.window={width:window.innerWidth,height:window.innerHeight}}},i_=n=>Math.min(1,1.001-Math.pow(2,-10*n)),BL=class{_isScrolling=!1;_isStopped=!1;_isLocked=!1;_preventNextNativeScrollEvent=!1;_resetVelocityTimeout=null;__rafID=null;isTouching;time=0;userData={};lastVelocity=0;velocity=0;direction=0;options;targetScroll;animatedScroll;animate=new UL;emitter=new Ry;dimensions;virtualScroll;constructor({wrapper:n=window,content:e=document.documentElement,eventsTarget:t=n,smoothWheel:a=!0,syncTouch:o=!1,syncTouchLerp:l=.075,touchInertiaExponent:u=1.7,duration:f,easing:d,lerp:h=.1,infinite:g=!1,orientation:v="vertical",gestureOrientation:x=v==="horizontal"?"both":"vertical",touchMultiplier:y=1,wheelMultiplier:b=1,autoResize:w=!0,prevent:M,virtualScroll:S,overscroll:N=!0,autoRaf:T=!1,anchors:R=!1,autoToggle:P=!1,allowNestedScroll:I=!1,__experimental__naiveDimensions:F=!1}={}){window.lenisVersion=RL,(!n||n===document.documentElement)&&(n=window),typeof f=="number"&&typeof d!="function"?d=i_:typeof d=="function"&&typeof f!="number"&&(f=1),this.options={wrapper:n,content:e,eventsTarget:t,smoothWheel:a,syncTouch:o,syncTouchLerp:l,touchInertiaExponent:u,duration:f,easing:d,lerp:h,infinite:g,gestureOrientation:x,orientation:v,touchMultiplier:y,wheelMultiplier:b,autoResize:w,prevent:M,virtualScroll:S,overscroll:N,autoRaf:T,anchors:R,autoToggle:P,allowNestedScroll:I,__experimental__naiveDimensions:F},this.dimensions=new OL(n,e,{autoResize:w}),this.updateClassName(),this.targetScroll=this.animatedScroll=this.actualScroll,this.options.wrapper.addEventListener("scroll",this.onNativeScroll,!1),this.options.wrapper.addEventListener("scrollend",this.onScrollEnd,{capture:!0}),this.options.anchors&&this.options.wrapper===window&&this.options.wrapper.addEventListener("click",this.onClick,!1),this.options.wrapper.addEventListener("pointerdown",this.onPointerDown,!1),this.virtualScroll=ne
4178w IL(t,{touchMultiplier:y,wheelMultiplier:b}),this.virtualScroll.on("scroll",this.onVirtualScroll),this.options.autoToggle&&this.rootElement.addEventListener("transitionend",this.onTransitionEnd,{passive:!0}),this.options.autoRaf&&(this.__rafID=requestAnimationFrame(this.raf))}destroy(){this.emitter.destroy(),this.options.wrapper.removeEventListener("scroll",this.onNativeScroll,!1),this.options.wrapper.removeEventListener("scrollend",this.onScrollEnd,{capture:!0}),this.options.wrapper.removeEventListener("pointerdown",this.onPointerDown,!1),this.options.anchors&&this.options.wrapper===window&&this.options.wrapper.removeEventListener("click",this.onClick,!1),this.virtualScroll.destroy(),this.dimensions.destroy(),this.cleanUpClassName(),this.__rafID&&cancelAnimationFrame(this.__rafID)}on(n,e){return this.emitter.on(n,e)}off(n,e){return this.emitter.off(n,e)}onScrollEnd=n=>{n instanceof CustomEvent||(this.isScrolling==="smooth"||this.isScrolling===!1)&&n.stopPropagation()};dispatchScrollendEvent=()=>{this.options.wrapper.dispatchEvent(new CustomEvent("scrollend",{bubbles:this.options.wrapper===window,detail:{lenisScrollEnd:!0}}))};onTransitionEnd=n=>{if(n.propertyName.includes("overflow")){const e=this.isHorizontal?"overflow-x":"overflow-y",t=getComputedStyle(this.rootElement)[e];["hidden","clip"].includes(t)?this.internalStop():this.internalStart()}};setScroll(n){this.isHorizontal?this.options.wrapper.scrollTo({left:n,behavior:"instant"}):this.options.wrapper.scrollTo({top:n,behavior:"instant"})}onClick=n=>{const t=n.composedPath().find(a=>a instanceof HTMLAnchorElement&&(a.getAttribute("href")?.startsWith("#")||a.getAttribute("href")?.startsWith("/#")||a.getAttribute("href")?.startsWith("./#")));if(t){const a=t.getAttribute("href");if(a){const o=typeof this.options.anchors=="object"&&this.options.anchors?this.options.anchors:void 0;let l=`#${a.split("#")[1]}`;["#","/#","./#","#top","/#top","./#top"].includes(a)&&(l=0),this.scrollTo(l,o)}}};onPointerDown=n=>{n.button===1&&this.reset()};onVirtualScroll=n=>{if(typeof this.options.virtualScroll=="function"&&this.options.virtualScroll(n)===!1)return;const{deltaX:e,deltaY:t,event:a}=n;if(this.emitter.emit("virtual-scroll",{deltaX:e,deltaY:t,event:a}),a.ctrlKey||a.lenisStopPropagation)return;const o=a.type.includes("touch"),l=a.type.includes("wheel");this.isTouching=a.type==="touchstart"||a.type==="touchmove";const u=e===0&&t===0;if(this.options.syncTouch&&o&&a.type==="touchstart"&&u&&!this.isStopped&&!this.isLocked){this.reset();return}const d=this.options.gestureOrientation==="vertical"&&t===0||this.options.gestureOrientation==="horizontal"&&e===0;if(u||d)return;let h=a.composedPath();h=h.slice(0,h.indexOf(this.rootElement));const g=this.options.prevent;if(h.find(M=>M instanceof HTMLElement&&(typeof g=="function"&&g?.(M)||M.hasAttribute?.("data-lenis-prevent")||o&&M.hasAttribute?.("data-lenis-prevent-touch")||l&&M.hasAttribute?.("data-lenis-prevent-wheel")||this.options.allowNestedScroll&&this.checkNestedScroll(M,{deltaX:e,deltaY:t}))))return;if(this.isStopped||this.isLocked){a.cancelable&&a.preventDefault();return}if(!(this.options.syncTouch&&o||this.options.smoothWheel&&l)){this.isScrolling="native",this.animate.stop(),a.lenisStopPropagation=!0;return}let x=t;this.options.gestureOrientation==="both"?x=Math.abs(t)>Math.abs(e)?t:e:this.options.gestureOrientation==="horizontal"&&(x=e),(!this.options.overscroll||this.options.infinite||this.options.wrapper!==window&&(this.animatedScroll>0&&this.animatedScroll<this.limit||this.animatedScroll===0&&t>0||this.animatedScroll===this.limit&&t<0))&&(a.lenisStopPropagation=!0),a.cancelable&&a.preventDefault();const y=o&&this.options.syncTouch,w=o&&a.type==="touchend";w&&(x=Math.sign(this.velocity)*Math.pow(Math.abs(this.velocity),this.options.touchInertiaExponent)),this.scrollTo(this.targetScroll+x,{programmatic:!1,...y?{lerp:w?this.options.syncTouchLerp:1}:{lerp:this.options.lerp,duration:this.options.duration,easing:this.options.easing}})};resize(){this.dimensions.resize(),this.animatedScroll=this.targetScroll=this.actualScroll,this.emit
4178()}emit(){this.emitter.emit("scroll",this)}onNativeScroll=()=>{if(this._resetVelocityTimeout!==null&&(clearTimeout(this._resetVelocityTimeout),this._resetVelocityTimeout=null),this._preventNextNativeScrollEvent){this._preventNextNativeScrollEvent=!1;return}if(this.isScrolling===!1||this.isScrolling==="native"){const n=this.animatedScroll;this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity,this.velocity=this.animatedScroll-n,this.direction=Math.sign(this.animatedScroll-n),this.isStopped||(this.isScrolling="native"),this.emit(),this.velocity!==0&&(this._resetVelocityTimeout=setTimeout(()=>{this.lastVelocity=this.velocity,this.velocity=0,this.isScrolling=!1,this.emit()},400))}};reset(){this.isLocked=!1,this.isScrolling=!1,this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity=0,this.animate.stop()}start(){if(this.isStopped){if(this.options.autoToggle){this.rootElement.style.removeProperty("overflow");return}this.internalStart()}}internalStart(){this.isStopped&&(this.reset(),this.isStopped=!1,this.emit())}stop(){if(!this.isStopped){if(this.options.autoToggle){this.rootElement.style.setProperty("overflow","clip");return}this.internalStop()}}internalStop(){this.isStopped||(this.reset(),this.isStopped=!0,this.emit())}raf=n=>{const e=n-(this.time||n);this.time=n,this.animate.advance(e*.001),this.options.autoRaf&&(this.__rafID=requestAnimationFrame(this.raf))};scrollTo(n,{offset:e=0,immediate:t=!1,lock:a=!1,duration:o=this.options.duration,easing:l=this.options.easing,lerp:u=this.options.lerp,onStart:f,onComplete:d,force:h=!1,programmatic:g=!0,userData:v}={}){if(!((this.isStopped||this.isLocked)&&!h)){if(typeof n=="string"&&["top","left","start"].includes(n))n=0;else if(typeof n=="string"&&["bottom","right","end"].includes(n))n=this.limit;else{let x;if(typeof n=="string"?x=document.querySelector(n):n instanceof HTMLElement&&n?.nodeType&&(x=n),x){if(this.options.wrapper!==window){const b=this.rootElement.getBoundingClientRect();e-=this.isHorizontal?b.left:b.top}const y=x.getBoundingClientRect();n=(this.isHorizontal?y.left:y.top)+this.animatedScroll}}if(typeof n=="number"){if(n+=e,n=Math.round(n),this.options.infinite){if(g){this.targetScroll=this.animatedScroll=this.scroll;const x=n-this.animatedScroll;x>this.limit/2?n=n-this.limit:x<-this.limit/2&&(n=n+this.limit)}}else n=Ay(0,n,this.limit);if(n===this.targetScroll){f?.(this),d?.(this);return}if(this.userData=v??{},t){this.animatedScroll=this.targetScroll=n,this.setScroll(this.scroll),this.reset(),this.preventNextNativeScrollEvent(),this.emit(),d?.(this),this.userData={},requestAnimationFrame(()=>{this.dispatchScrollendEvent()});return}g||(this.targetScroll=n),typeof o=="number"&&typeof l!="function"?l=i_:typeof l=="function"&&typeof o!="number"&&(o=1),this.animate.fromTo(this.animatedScroll,n,{duration:o,easing:l,lerp:u,onStart:()=>{a&&(this.isLocked=!0),this.isScrolling="smooth",f?.(this)},onUpdate:(x,y)=>{this.isScrolling="smooth",this.lastVelocity=this.velocity,this.velocity=x-this.animatedScroll,this.direction=Math.sign(this.velocity),this.animatedScroll=x,this.setScroll(this.scroll),g&&(this.targetScroll=x),y||this.emit(),y&&(this.reset(),this.emit(),d?.(this),this.userData={},requestAnimationFrame(()=>{this.dispatchScrollendEvent()}),this.preventNextNativeScrollEvent())}})}}}preventNextNativeScrollEvent(){this._preventNextNativeScrollEvent=!0,requestAnimationFrame(()=>{this._preventNextNativeScrollEvent=!1})}checkNestedScroll(n,{deltaX:e,deltaY:t}){const a=Date.now(),o=n._lenis??={};let l,u,f,d,h,g,v,x;const y=this.options.gestureOrientation;if(a-(o.time??0)>2e3){o.time=Date.now();const P=window.getComputedStyle(n);o.computedStyle=P;const I=P.overflowX,F=P.overflowY;if(l=["auto","overlay","scroll"].includes(I),u=["auto","overlay","scroll"].includes(F),o.hasOverflowX=l,o.hasOverflowY=u,!l&&!u||y==="vertical"&&!u||y==="horizontal"&&!l)return!1;h=n.scrollWidth,g=n.scrollHeight,v=n.clientWidth,x=n.clientHeight,f=h>v,d=g>x,o.isScrollableX=f,o.isScrollableY=d,o.scrollWidth=h,o.scrollHeight=g,o.clientWidth=v,o.clientHeight=x}else f=o.isScrollableX,d=o.isScrollableY,l=o.hasOverflowX,u=o.hasOverflowY,h=o.scrollWidth,g=o.scrollHeight,v=o.clientWidth,x=o.clientHeight;if(!l&&!u||!f&&!d||y==="vertical"&&(!u||!d)||y==="horizontal"&&(!l||!f))return!1;let b;if(y==="horizontal")b="x";else if(y==="vertical")b="y";else{const P=e!==0,I=t!==0;P&&l&&f&&(b="x"),I&&u&&d&&(b="y")}
4178if(!b)return!1;let w,M,S,N,T;if(b==="x")w=n.scrollLeft,M=h-v,S=e,N=l,T=f;else if(b==="y")w=n.scrollTop,M=g-x,S=t,N=u,T=d;else return!1;return(S>0?w<M:w>0)&&N&&T}get rootElement(){return this.options.wrapper===window?document.documentElement:this.options.wrapper}get limit(){return this.options.__experimental__naiveDimensions?this.isHorizontal?this.rootElement.scrollWidth-this.rootElement.clientWidth:this.rootElement.scrollHeight-this.rootElement.clientHeight:this.dimensions.limit[this.isHorizontal?"x":"y"]}get isHorizontal(){return this.options.orientation==="horizontal"}get actualScroll(){const n=this.options.wrapper;return this.isHorizontal?n.scrollX??n.scrollLeft:n.scrollY??n.scrollTop}get scroll(){return this.options.infinite?DL(this.animatedScroll,this.limit):this.animatedScroll}get progress(){return this.limit===0?1:this.scroll/this.limit}get isScrolling(){return this._isScrolling}set isScrolling(n){this._isScrolling!==n&&(this._isScrolling=n,this.updateClassName())}get isStopped(){return this._isStopped}set isStopped(n){this._isStopped!==n&&(this._isStopped=n,this.updateClassName())}get isLocked(){return this._isLocked}set isLocked(n){this._isLocked!==n&&(this._isLocked=n,this.updateClassName())}get isSmooth(){return this.isScrolling==="smooth"}get className(){let n="lenis";return this.options.autoToggle&&(n+=" lenis-autoToggle"),this.isStopped&&(n+=" lenis-stopped"),this.isLocked&&(n+=" lenis-locked"),this.isScrolling&&(n+=" lenis-scrolling"),this.isScrolling==="smooth"&&(n+=" lenis-smooth"),n}updateClassName(){this.cleanUpClassName(),this.rootElement.className=`${this.rootElement.className} ${this.className}`.trim()}cleanUpClassName(){this.rootElement.className=this.rootElement.className.replace(/lenis(-\w+)?/g,"").trim()}};function FL(){G.useRef(null),G.useRef(null);const[n,e]=G.useState(!1),[t,a]=G.useState(!1);return es(),G.useEffect(()=>{const o=()=>{a(l=>!l)};return window.addEventListener("dblclick",o),()=>{window.removeEventListener("dblclick",o)}},[]),G.useEffect(()=>{const o=new BL;function l(u){o.raf(u),requestAnimationFrame(l)}requestAnimationFrame(l)},[]),m.jsxs(m.Fragment,{children:[m.jsx(PN,{sidebarOpen:n,setSidebarOpen:e}),m.jsxs(DM,{children:[m.jsx(Gi,{path:"/",element:m.jsx(UN,{sidebarOpen:n,fishFollowCursor:t})}),m.jsx(Gi,{path:"/tripsmart",element:m.jsx(VN,{sidebarOpen:n})}),m.jsx(Gi,{path:"/uaem",element:m.jsx(JN,{sidebarOpen:n})}),m.jsx(Gi,{path:"/naturewalk",element:m.jsx(WN,{sidebarOpen:n})}),m.jsx(Gi,{path:"/mtrf",element:m.jsx(rL,{sidebarOpen:n})}),m.jsx(Gi,{path:"/viseme",element:m.jsx(hL,{sidebarOpen:n})}),m.jsx(Gi,{path:"/metroid",element:m.jsx(EL,{sidebarOpen:n})}),m.jsx(Gi,{path:"/flipped",element:m.jsx(CL,{sidebarOpen:n})}),m.jsx(Gi,{path:"/villagerim",element:m.jsx(AL,{sidebarOpen:n})})]})]})}HS.createRoot(document.getElementById("root")).render(m.jsx(t6,{children:m.jsx(FL,{})}))});export default zL();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.