q.push("logDepthBufFC");for(varvink)q.push(v);k=q;v={};q=0;for(b=k.length;q<b;q++)r=k[q],v[r]=f.getUniformLocation(p,r);this.uniforms=v;q="position normal uv uv2 tangent color skinIndex skinWeight lineDistance".split("");for(k=0;k<e.maxMorphTargets;k++)q.push("morphTarget"+k);for(k=0;k<e.maxMorphNormals;k++)q.push("morphNormal"+k);for(varwinl)q.push(w);e=q;l={};w=0;for(k=e.length;w<k;w++)v=e[w],l[v]=f.getAttribLocation(p,v);this.attributes=l;this.id=a++;this.code=c;this.usedTimes=1;this.program=
p;this.vertexShader=h;this.fragmentShader=g;returnthis}}();THREE.WebGLShader=function(){vara=function(a){a=a.split("\n");for(varc=0;c<a.length;c++)a[c]=c+1+": "+a[c];returna.join("\n")};returnfunction(b,c,d){c=b.createShader(c);b.shaderSource(c,d);b.compileShader(c);!1===b.getShaderParameter(c,b.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==b.getShaderInfoLog(c)&&(console.error("THREE.WebGLShader:","gl.getShaderInfoLog()",b.getShaderInfoLog(c)),console.error(a(d)));returnc}}();THREE.RenderableVertex=function(){this.position=newTHREE.Vector3;this.positionWorld=newTHREE.Vector3;this.positionScreen=newTHREE.Vector4;this.visible=!0};THREE.RenderableVertex.prototype.copy=function(a){this.positionWorld.copy(a.positionWorld);this.positionScreen.copy(a.positionScreen)};THREE.RenderableFace=function(){this.id=0;this.v1=newTHREE.RenderableVertex;this.v2=newTHREE.RenderableVertex;this.v3=newTHREE.RenderableVertex;this.normalModel=newTHREE.Vector3;this.vertexNormalsModel=[newTHREE.Vector3,newTHREE.Vector3,newTHREE.Vector3];this.vertexNormalsLength=0;this.material=this.color=null;this.uvs=[newTHREE.Vector2,newTHREE.Vector2,newTHREE.Vector2];this.z=0};THREE.RenderableObject=function(){this.id=0;this.object=null;this.z=0};THREE.RenderableSprite=function(){this.id=0;this.object=null;this.rotation=this.z=this.y=this.x=0;this.scale=newTHREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.id=0;this.v1=newTHREE.RenderableVertex;this.v2=newTHREE.RenderableVertex;this.vertexColors=[newTHREE.Color,newTHREE.Color];this.material=null;this.z=0};THREE.GeometryUtils={merge:function(a,b,c){console.warn("DEPRECATED: GeometryUtils's .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.");vard;binstanceofTHREE.Mesh&&(b.matrixAutoUpdate&&b.updateMatrix(),d=b.matrix,b=b.geometry);a.merge(b,d,c)},randomPointInTriangle:function(){vara=newTHREE.Vector3;returnfunction(b,c,d){vare=newTHREE.Vector3,f=THREE.Math.random16(),g=THREE.Math.random16();1<f+g&&(f=1-f,g=1-g);varh=1-f-g;e.copy(b);e.multiplyScalar(f);
p;this.vertexShader=h;this.fragmentShader=g;returnthis}}();THREE.WebGLShader=function(){vara=function(a){a=a.split("\n");for(varc=0;c<a.length;c++)a[c]=c+1+": "+a[c];returna.join("\n")};returnfunction(b,c,d){c=b.createShader(c);b.shaderSource(c,d);b.compileShader(c);!1===b.getShaderParameter(c,b.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==b.getShaderInfoLog(c)&&(console.error("THREE.WebGLShader:","gl.getShaderInfoLog()",b.getShaderInfoLog(c)),console.error(a(d)));returnc}}();THREE.RenderableVertex=function(){this.position=newTHREE.Vector3;this.positionWorld=newTHREE.Vector3;this.positionScreen=newTHREE.Vector4;this.visible=!0};THREE.RenderableVertex.prototype.copy=function(a){this.positionWorld.copy(a.positionWorld);this.positionScreen.copy(a.positionScreen)};THREE.RenderableFace=function(){this.id=0;this.v1=newTHREE.RenderableVertex;this.v2=newTHREE.RenderableVertex;this.v3=newTHREE.RenderableVertex;this.normalModel=newTHREE.Vector3;this.vertexNormalsModel=[newTHREE.Vector3,newTHREE.Vector3,newTHREE.Vector3];this.vertexNormalsLength=0;this.color=newTHREE.Color;this.material=null;this.uvs=[newTHREE.Vector2,newTHREE.Vector2,newTHREE.Vector2];this.z=0};THREE.RenderableObject=function(){this.id=0;this.object=null;this.z=0};THREE.RenderableSprite=function(){this.id=0;this.object=null;this.rotation=this.z=this.y=this.x=0;this.scale=newTHREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.id=0;this.v1=newTHREE.RenderableVertex;this.v2=newTHREE.RenderableVertex;this.vertexColors=[newTHREE.Color,newTHREE.Color];this.material=null;this.z=0};THREE.GeometryUtils={merge:function(a,b,c){console.warn("DEPRECATED: GeometryUtils's .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.");vard;binstanceofTHREE.Mesh&&(b.matrixAutoUpdate&&b.updateMatrix(),d=b.matrix,b=b.geometry);a.merge(b,d,c)},randomPointInTriangle:function(){vara=newTHREE.Vector3;returnfunction(b,c,d){vare=newTHREE.Vector3,f=THREE.Math.random16(),g=THREE.Math.random16();1<f+g&&(f=1-f,g=1-g);varh=1-f-g;e.copy(b);e.multiplyScalar(f);