<!-- SOLID-PLAYTIME · part 126 -->
buteDivisors;if(O[M]=1,V[M]===0)t.enableVertexAttribArray(M),V[M]=1;if(k[M]!==R)t.vertexAttribDivisor(M,R),k[M]=R}function g(){let M=a.newAttributes,R=a.enabledAttributes;for(let O=0,V=R.length;O<V;O++)if(R[O]!==M[O])t.disableVertexAttribArray(O),R[O]=0}function m(M,R,O,V,k,et,Z){if(Z===!0)t.vertexAttribIPointer(M,R,O,k,et);else t.vertexAttribPointer(M,R,O,V,k,et)}function x(M,R,O,V){y();let k=V.attributes,et=O.getAttributes(),Z=R.defaultAttributeValues;for(let at in et){let W=et[at];if(W.location>=0){let ht=k[at];if(ht===void 0){if(at==="instanceMatrix"&&M.instanceMatrix)ht=M.instanceMatrix;if(at==="instanceColor"&&M.instanceColor)ht=M.instanceColor}if(ht!==void 0){let mt=ht.normalized,q=ht.itemSize,dt=e.get(ht);if(dt===void 0)continue;let{buffer:Ft,type:Et,bytesPerElement:X}=dt,ot=Et===t.INT||Et===t.UNSIGNED_INT||ht.gpuType===Hm;if(ht.isInterleavedBufferAttribute){let Y=ht.data,yt=Y.stride,Ht=ht.offset;if(Y.isInstancedInterleavedBuffer){for(let vt=0;vt<W.locationSize;vt++)d(W.location+vt,Y.meshPerAttribute);if(M.isInstancedMesh!==!0&&V._maxInstanceCount===void 0)V._maxInstanceCount=Y.meshPerAttribute*Y.count}else for(let vt=0;vt<W.locationSize;vt++)U(W.location+vt);t.bindBuffer(t.ARRAY_BUFFER,Ft);for(let vt=0;vt<W.locationSize;vt++)m(W.location+vt,q/W.locationSize,Et,mt,yt*X,(Ht+q/W.locationSize*vt)*X,ot)}else{if(ht.isInstancedBufferAttribute){for(let Y=0;Y<W.locationSize;Y++)d(W.location+Y,ht.meshPerAttribute);if(M.isInstancedMesh!==!0&&V._maxInstanceCount===void 0)V._maxInstanceCount=ht.meshPerAttribute*ht.count}else for(let Y=0;Y<W.locationSize;Y++)U(W.location+Y);t.bindBuffer(t.ARRAY_BUFFER,Ft);for(let Y=0;Y<W.locationSize;Y++)m(W.location+Y,q/W.locationSize,Et,mt,q*X,q/W.locationSize*Y*X,ot)}}else if(Z!==void 0){let mt=Z[at];if(mt!==void 0)switch(mt.length){case 2:t.vertexAttrib2fv(W.location,mt);break;case 3:t.vertexAttrib3fv(W.location,mt);break;case 4:t.vertexAttrib4fv(W.location,mt);break;default:t.vertexAttrib1fv(W.location,mt)}}}}g()}function S(){w();for(let M in i){let R=i[M];for(let O in R){let V=R[O];for(let k in V)u(V[k].object),delete V[k];delete R[O]}delete i[M]}}function A(M){if(i[M.id]===void 0)return;let R=i[M.id];for(let O in R){let V=R[O];for(let k in V)u(V[k].object),delete V[k];delete R[O]}delete i[M.id]}function T(M){for(let R in i){let O=i[R];if(O[M.id]===void 0)continue;let V=O[M.id];for(let k in V)u(V[k].object),delete V[k];delete O[M.id]}}function w(){if(b(),r=!0,a===s)return;a=s,c(a.object)}function b(){s.geometry=null,s.program=null,s.wireframe=!1}return{setup:o,reset:w,resetDefaultState:b,dispose:S,releaseStatesOfGeometry:A,releaseStatesOfProgram:T,initAttributes:y,enableAttribute:U,disableUnusedAttributes:g}}function PR(t,e,n){let i;function s(c){i=c}function a(c,u){t.drawArrays(i,c,u),n.update(u,i,1)}function r(c,u,f){if(f===0)return;t.drawArraysInstanced(i,c,u,f),n.update(u,i,f)}function o(c,u,f){if(f===0)return;e.get("WEBGL_multi_draw").multiDrawArraysWEBGL(i,c,0,u,0,f);let p=0;for(let v=0;v<f;v++)p+=u[v];n.update(p,i,1)}function l(c,u,f,h){if(f===0)return;let p=e.get("WEBGL_multi_draw");if(p===null)for(let v=0;v<c.length;v++)r(c[v],u[v],h[v]);else{p.multiDrawArraysInstancedWEBGL(i,c,0,u,0,h,0,f);let v=0;for(let y=0;y<f;y++)v+=u[y]*h[y];n.update(v,i,1)}}this.setMode=s,this.render=a,this.renderInstances=r,this.renderMultiDraw=o,this.renderMultiDrawInstances=l}function HR(t,e,n,i){let s;function a(){if(s!==void 0)return s;if(e.has("EXT_texture_filter_anisotropic")===!0){let T=e.get("EXT_texture_filter_anisotropic");s=t.getParameter(T.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else s=0;return s}function r(T){if(T!==Qi&&i.convert(T)!==t.getParameter(t.IMPLEMENTATION_COLOR_READ_FORMAT))return!1;return!0}function o(T){let w=T===Cc&&(e.has("EXT_color_buffer_half_float")||e.has("EXT_color_buffer_float"));if(T!==Ea&&i.convert(T)!==t.getParameter(t.IMPLEMENTATION_COLOR_READ_TYPE)&&T!==Ma&&!w)return!1;return!0}function l(T){if(T==="highp"){if(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";T="mediump"}if(T==="mediump"){if(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0)return"mediump"}return"lowp"}let c=n.precision!==void 0?n.precision:"highp",u=l(c);if(u!==c)console.warn("THREE.WebGLRenderer:",c,"not supported, using",u,"instead."),c=u;let f=n.logarithmicDepthBuffer===!0,h=n.reversedDepthBuffer===!0&&e.has("EXT_clip_control"),p=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),v=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),y=t.getParameter(t.MAX_TEXTURE_SIZE),U=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),d=t.getParameter(t.MAX_VERTEX_ATTRIBS),g=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),m=t.getParameter(t.MAX_VARYING_VECTORS),x=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),S=v>0,A=t.getParameter(t.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:a,getMaxP