From 1da8ee0df931785adbe937c2ccafc2ca02feac79 Mon Sep 17 00:00:00 2001 From: alteredq Date: Wed, 8 Dec 2010 12:30:33 +0100 Subject: [PATCH 1/2] Added vec3 and color parameters for MeshShaderMaterial. Also moved normal and view matrices into default parameters. --- build/Three.js | 162 ++++++++++++++-------------- build/ThreeDebug.js | 160 +++++++++++++-------------- build/ThreeExtras.js | 140 ++++++++++++------------ src/materials/MeshShaderMaterial.js | 3 +- src/renderers/WebGLRenderer.js | 21 ++-- 5 files changed, 248 insertions(+), 238 deletions(-) diff --git a/build/Three.js b/build/Three.js index 9b17cdb8..c5021ef9 100755 --- a/build/Three.js +++ b/build/Three.js @@ -12,8 +12,8 @@ THREE.Vector4=function(a,b,d,g){this.x=a||0;this.y=b||0;this.z=d||0;this.w=g||1} THREE.Vector4.prototype={set:function(a,b,d,g){this.x=a;this.y=b;this.z=d;this.w=g;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w; return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}}; THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3}; -THREE.Ray.prototype={intersectScene:function(a){var b,d,g=a.objects,j=[];a=0;for(b=g.length;a0&&K>0&&k+K<1}var d,g,j,n,m,l,o,c,F,D, -w,x=a.geometry,H=x.vertices,G=[];d=0;for(g=x.faces.length;d0&&L>0&&k+L<1}var d,g,j,n,m,l,o,c,F,D, +w,x=a.geometry,I=x.vertices,G=[];d=0;for(g=x.faces.length;d= @@ -22,10 +22,10 @@ THREE.Matrix4=function(){}; THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41= a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var g=new THREE.Vector3,j=new THREE.Vector3,n=new THREE.Vector3;n.sub(a,b).normalize();g.cross(d,n).normalize();j.cross(n,g).normalize();this.n11=g.x;this.n12=g.y;this.n13=g.z;this.n14=-g.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=n.x;this.n32=n.y;this.n33=n.z;this.n34=-n.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,g=a.z,j=1/(this.n41*b+this.n42* d+this.n43*g+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*g+this.n14)*j;a.y=(this.n21*b+this.n22*d+this.n23*g+this.n24)*j;a.z=(this.n31*b+this.n32*d+this.n33*g+this.n34)*j;return a},multiplyVector4:function(a){var b=a.x,d=a.y,g=a.z,j=a.w;a.x=this.n11*b+this.n12*d+this.n13*g+this.n14*j;a.y=this.n21*b+this.n22*d+this.n23*g+this.n24*j;a.z=this.n31*b+this.n32*d+this.n33*g+this.n34*j;a.w=this.n41*b+this.n42*d+this.n43*g+this.n44*j;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11* -a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,n=a.n14,m=a.n21,l=a.n22,o=a.n23,c=a.n24,F=a.n31,D=a.n32,w=a.n33,x=a.n34,H=a.n41,G=a.n42,K=a.n43,N=a.n44,O=b.n11,v=b.n12,f=b.n13,k=b.n14,e=b.n21,p=b.n22,h=b.n23,i=b.n24,s=b.n31,r=b.n32,L=b.n33,A=b.n34,M=b.n41,Q=b.n42,u=b.n43, -R=b.n44;this.n11=d*O+g*e+j*s+n*M;this.n12=d*v+g*p+j*r+n*Q;this.n13=d*f+g*h+j*L+n*u;this.n14=d*k+g*i+j*A+n*R;this.n21=m*O+l*e+o*s+c*M;this.n22=m*v+l*p+o*r+c*Q;this.n23=m*f+l*h+o*L+c*u;this.n24=m*k+l*i+o*A+c*R;this.n31=F*O+D*e+w*s+x*M;this.n32=F*v+D*p+w*r+x*Q;this.n33=F*f+D*h+w*L+x*u;this.n34=F*k+D*i+w*A+x*R;this.n41=H*O+G*e+K*s+N*M;this.n42=H*v+G*p+K*r+N*Q;this.n43=H*f+G*h+K*L+N*u;this.n44=H*k+G*i+K*A+N*R},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,n=this.n21,m=this.n22, -l=this.n23,o=this.n24,c=this.n31,F=this.n32,D=this.n33,w=this.n34,x=this.n41,H=this.n42,G=this.n43,K=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=n*a.n11+m*a.n21+l*a.n31+o*a.n41;this.n22=n*a.n12+m*a.n22+l*a.n32+o*a.n42;this.n23=n*a.n13+m*a.n23+l*a.n33+o*a.n43;this.n24=n*a.n14+m*a.n24+l*a.n34+o*a.n44;this.n31=c*a.n11+F*a.n21+D*a.n31+w*a.n41;this.n32=c*a.n12+F*a.n22+ -D*a.n32+w*a.n42;this.n33=c*a.n13+F*a.n23+D*a.n33+w*a.n43;this.n34=c*a.n14+F*a.n24+D*a.n34+w*a.n44;this.n41=x*a.n11+H*a.n21+G*a.n31+K*a.n41;this.n42=x*a.n12+H*a.n22+G*a.n32+K*a.n42;this.n43=x*a.n13+H*a.n23+G*a.n33+K*a.n43;this.n44=x*a.n14+H*a.n24+G*a.n34+K*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* +a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,n=a.n14,m=a.n21,l=a.n22,o=a.n23,c=a.n24,F=a.n31,D=a.n32,w=a.n33,x=a.n34,I=a.n41,G=a.n42,L=a.n43,N=a.n44,O=b.n11,v=b.n12,f=b.n13,k=b.n14,e=b.n21,p=b.n22,h=b.n23,i=b.n24,s=b.n31,r=b.n32,M=b.n33,A=b.n34,H=b.n41,Q=b.n42,u=b.n43, +R=b.n44;this.n11=d*O+g*e+j*s+n*H;this.n12=d*v+g*p+j*r+n*Q;this.n13=d*f+g*h+j*M+n*u;this.n14=d*k+g*i+j*A+n*R;this.n21=m*O+l*e+o*s+c*H;this.n22=m*v+l*p+o*r+c*Q;this.n23=m*f+l*h+o*M+c*u;this.n24=m*k+l*i+o*A+c*R;this.n31=F*O+D*e+w*s+x*H;this.n32=F*v+D*p+w*r+x*Q;this.n33=F*f+D*h+w*M+x*u;this.n34=F*k+D*i+w*A+x*R;this.n41=I*O+G*e+L*s+N*H;this.n42=I*v+G*p+L*r+N*Q;this.n43=I*f+G*h+L*M+N*u;this.n44=I*k+G*i+L*A+N*R},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,n=this.n21,m=this.n22, +l=this.n23,o=this.n24,c=this.n31,F=this.n32,D=this.n33,w=this.n34,x=this.n41,I=this.n42,G=this.n43,L=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=n*a.n11+m*a.n21+l*a.n31+o*a.n41;this.n22=n*a.n12+m*a.n22+l*a.n32+o*a.n42;this.n23=n*a.n13+m*a.n23+l*a.n33+o*a.n43;this.n24=n*a.n14+m*a.n24+l*a.n34+o*a.n44;this.n31=c*a.n11+F*a.n21+D*a.n31+w*a.n41;this.n32=c*a.n12+F*a.n22+ +D*a.n32+w*a.n42;this.n33=c*a.n13+F*a.n23+D*a.n33+w*a.n43;this.n34=c*a.n14+F*a.n24+D*a.n34+w*a.n44;this.n41=x*a.n11+I*a.n21+G*a.n31+L*a.n41;this.n42=x*a.n12+I*a.n22+G*a.n32+L*a.n42;this.n43=x*a.n13+I*a.n23+G*a.n33+L*a.n43;this.n44=x*a.n14+I*a.n24+G*a.n34+L*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14* this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,g){var j=b[d];b[d]=b[g];b[g]=j}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this, "n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){return[this.n11,this.n21,this.n31,this.n41,this.n12,this.n22,this.n32,this.n42,this.n13,this.n23,this.n33,this.n43,this.n14,this.n24,this.n34,this.n44]}, @@ -76,9 +76,9 @@ this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wiref THREE.MeshDepthMaterial=function(a){this.near=1;this.far=1E3;this.opacity=1;this.blending=THREE.NormalBlending;if(a){if(a.near!==undefined)this.near=a.near;if(a.far!==undefined)this.far=a.far;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.__2near=2*this.near;this.__farPlusNear=this.far+this.near;this.__farMinusNear=this.far-this.near;this.toString=function(){return"THREE.MeshDepthMaterial"}}; THREE.MeshNormalMaterial=function(a){this.opacity=1;this.shading=THREE.FlatShading;this.blending=THREE.NormalBlending;if(a){if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.MeshNormalMaterial"}};THREE.MeshFaceMaterial=function(){this.toString=function(){return"THREE.MeshFaceMaterial"}}; THREE.MeshCubeMaterial=function(a){this.id=THREE.MeshCubeMaterial.value++;this.env_map=null;this.blending=THREE.NormalBlending;if(a)if(a.env_map!==undefined)this.env_map=a.env_map;this.toString=function(){return"THREE.MeshCubeMaterial( id: "+this.id+"
env_map: "+this.env_map+" )"}};THREE.MeshCubeMaterialCounter={value:0}; -THREE.MeshShaderMaterial=function(a){this.id=THREE.MeshShaderMaterialCounter.value++;this.vertex_shader=this.fragment_shader="void main() {}";this.uniforms={};this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){if(a.fragment_shader!==undefined)this.fragment_shader=a.fragment_shader;if(a.vertex_shader!==undefined)this.vertex_shader=a.vertex_shader;if(a.uniforms!==undefined)this.uniforms= -a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshShaderMaterial (
id: "+this.id+"
blending: "+ -this.blending+"
wireframe: "+this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wireframe_linecap: "+this.wireframe_linecap+"
wireframe_linejoin: "+this.wireframe_linejoin+"
)"}};THREE.MeshShaderMaterialCounter={value:0}; +THREE.MeshShaderMaterial=function(a){this.id=THREE.MeshShaderMaterialCounter.value++;this.vertex_shader=this.fragment_shader="void main() {}";this.uniforms={};this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){if(a.fragment_shader!==undefined)this.fragment_shader=a.fragment_shader;if(a.vertex_shader!==undefined)this.vertex_shader=a.vertex_shader;if(a.uniforms!== +undefined)this.uniforms=a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshShaderMaterial (
id: "+this.id+ +"
blending: "+this.blending+"
wireframe: "+this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wireframe_linecap: "+this.wireframe_linecap+"
wireframe_linejoin: "+this.wireframe_linejoin+"
)"}};THREE.MeshShaderMaterialCounter={value:0}; THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleBasicMaterial (
color: "+this.color+"
map: "+this.map+"
opacity: "+this.opacity+"
blending: "+ this.blending+"
)"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleCircleMaterial (
color: "+this.color+"
opacity: "+this.opacity+"
blending: "+this.blending+"
)"}}; THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}}; @@ -86,87 +86,87 @@ THREE.Texture=function(a,b,d,g,j,n){this.image=a;this.mapping=b!==undefined?b:ne this.min_filter+"
)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){}; THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){}; THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}}; -THREE.Projector=function(){function a(O,v){var f=0,k=1,e=O.z+O.w,p=v.z+v.w,h=-O.z+O.w,i=-v.z+v.w;if(e>=0&&p>=0&&h>=0&&i>=0)return true;else if(e<0&&p<0||h<0&&i<0)return false;else{if(e<0)f=Math.max(f,e/(e-p));else if(p<0)k=Math.min(k,e/(e-p));if(h<0)f=Math.max(f,h/(h-i));else if(i<0)k=Math.min(k,h/(h-i));if(k=0&&p>=0&&h>=0&&i>=0)return true;else if(e<0&&p<0||h<0&&i<0)return false;else{if(e<0)f=Math.max(f,e/(e-p));else if(p<0)k=Math.min(k,e/(e-p));if(h<0)f=Math.max(f,h/(h-i));else if(i<0)k=Math.min(k,h/(h-i));if(k0&&y.z<1}R=r.geometry.faces;e=0;for(p=R.length;e0&&w.z<1){c=D[F]=D[F]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=r.rotation.z;c.scale.x=r.scale.x*Math.abs(c.x-(w.x+v.projectionMatrix.n11)/(w.w+v.projectionMatrix.n14));c.scale.y=r.scale.y*Math.abs(c.y-(w.y+v.projectionMatrix.n22)/(w.w+v.projectionMatrix.n24));c.material=r.material;b.push(c);F++}}}b.sort(function(W,I){return I.z-W.z});return b};this.unprojectVector=function(O,v){var f=new THREE.Matrix4; +d.centroidWorld.copy(y.centroid);M.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);x.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=H;d.faceMaterial=y.material;d.overdraw=Q;if(r.geometry.uvs[e]){d.uvs[0]=r.geometry.uvs[e][0];d.uvs[1]=r.geometry.uvs[e][1];d.uvs[2]=r.geometry.uvs[e][3]}b.push(d);j++;g=n[j]=n[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(i.positionWorld);g.v2.positionWorld.copy(z.positionWorld);g.v3.positionWorld.copy(E.positionWorld); +g.v1.positionScreen.copy(i.positionScreen);g.v2.positionScreen.copy(z.positionScreen);g.v3.positionScreen.copy(E.positionScreen);g.normalWorld.copy(d.normalWorld);g.centroidWorld.copy(d.centroidWorld);g.centroidScreen.copy(d.centroidScreen);g.z=g.centroidScreen.z;g.meshMaterial=H;g.faceMaterial=y.material;g.overdraw=Q;if(r.geometry.uvs[e]){g.uvs[0]=r.geometry.uvs[e][1];g.uvs[1]=r.geometry.uvs[e][2];g.uvs[2]=r.geometry.uvs[e][3]}b.push(g);j++}}}}else if(r instanceof THREE.Line){I.multiply(x,M);u=r.geometry.vertices; +R=u[0];R.positionScreen.copy(R.position);I.multiplyVector4(R.positionScreen);e=1;for(p=u.length;e0&&w.z<1){c=D[F]=D[F]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=r.rotation.z;c.scale.x=r.scale.x*Math.abs(c.x-(w.x+v.projectionMatrix.n11)/(w.w+v.projectionMatrix.n14));c.scale.y=r.scale.y*Math.abs(c.y-(w.y+v.projectionMatrix.n22)/(w.w+v.projectionMatrix.n24));c.material=r.material;b.push(c);F++}}}b.sort(function(W,J){return J.z-W.z});return b};this.unprojectVector=function(O,v){var f=new THREE.Matrix4; f.multiply(THREE.Matrix4.makeInvert(v.matrix),THREE.Matrix4.makeInvert(v.projectionMatrix));f.multiplyVector3(O);return O}}; -THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,g,j,n;this.domElement=document.createElement("div");this.setSize=function(m,l){d=m;g=l;j=d/2;n=g/2};this.render=function(m,l){var o,c,F,D,w,x,H,G;a=b.projectScene(m,l);o=0;for(c=a.length;o0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}else if(V instanceof THREE.PointLight){Y.sub(V.position,T);Y.normalize();V=J.dot(Y)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}}}function Na(q,T,J){if(J.opacity!=0){Da(J.opacity);ya(J.blending);var t,C,V,aa,ca,da;if(J instanceof THREE.ParticleBasicMaterial){if(J.map){aa=J.map;ca=aa.width>>1;da=aa.height>>1;C=T.scale.x*n;V=T.scale.y*m;J=C*ca;t=V*da;X.set(q.x-J, -q.y-t,q.x+J,q.y+t);if(B.instersects(X)){l.save();l.translate(q.x,q.y);l.rotate(-T.rotation);l.scale(C,-V);l.translate(-ca,-da);l.drawImage(aa,0,0);l.restore()}}}else if(J instanceof THREE.ParticleCircleMaterial){if(S){P.r=Z.r+ia.r+ja.r;P.g=Z.g+ia.g+ja.g;P.b=Z.b+ia.b+ja.b;h.r=J.color.r*P.r;h.g=J.color.g*P.g;h.b=J.color.b*P.b;h.updateStyleString()}else h.__styleString=J.color.__styleString;J=T.scale.x*n;t=T.scale.y*m;X.set(q.x-J,q.y-t,q.x+J,q.y+t);if(B.instersects(X)){C=h.__styleString;if(D!=C)l.fillStyle= -D=C;l.save();l.translate(q.x,q.y);l.rotate(-T.rotation);l.scale(J,t);l.beginPath();l.arc(0,0,1,0,La,true);l.closePath();l.fill();l.restore()}}}}function Oa(q,T,J,t){if(t.opacity!=0){Da(t.opacity);ya(t.blending);l.beginPath();l.moveTo(q.positionScreen.x,q.positionScreen.y);l.lineTo(T.positionScreen.x,T.positionScreen.y);l.closePath();if(t instanceof THREE.LineBasicMaterial){h.__styleString=t.color.__styleString;q=t.linewidth;if(w!=q)l.lineWidth=w=q;q=h.__styleString;if(F!=q)l.strokeStyle=F=q;l.stroke(); -X.inflate(t.linewidth*2)}}}function Ha(q,T,J,t,C,V){if(C.opacity!=0){Da(C.opacity);ya(C.blending);O=q.positionScreen.x;v=q.positionScreen.y;f=T.positionScreen.x;k=T.positionScreen.y;e=J.positionScreen.x;p=J.positionScreen.y;l.beginPath();l.moveTo(O,v);l.lineTo(f,k);l.lineTo(e,p);l.lineTo(O,v);l.closePath();if(C instanceof THREE.MeshBasicMaterial)if(C.map)C.map.image.loaded&&C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,k,e,p,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u, -t.uvs[2].v);else if(C.env_map){if(C.env_map.image.loaded)if(C.env_map.mapping instanceof THREE.SphericalReflectionMapping){q=wa.matrix;Y.copy(t.vertexNormalsWorld[0]);R=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;y=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[1]);z=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;E=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[2]);W=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;I=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;qa(O,v,f,k,e,p, -C.env_map.image,R,y,z,E,W,I)}}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString);else if(C instanceof THREE.MeshLambertMaterial){if(C.map&&!C.wireframe){C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,k,e,p,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);ya(THREE.SubtractiveBlending)}if(S)if(!C.wireframe&&C.shading==THREE.SmoothShading&&t.vertexNormalsWorld.length==3){i.r=s.r=r.r=Z.r;i.g=s.g=r.g=Z.g;i.b=s.b=r.b=Z.b;xa(V,t.v1.positionWorld, -t.vertexNormalsWorld[0],i);xa(V,t.v2.positionWorld,t.vertexNormalsWorld[1],s);xa(V,t.v3.positionWorld,t.vertexNormalsWorld[2],r);L.r=(s.r+r.r)*0.5;L.g=(s.g+r.g)*0.5;L.b=(s.b+r.b)*0.5;u=Ia(i,s,r,L);qa(O,v,f,k,e,p,u,0,0,1,0,0,1)}else{P.r=Z.r;P.g=Z.g;P.b=Z.b;xa(V,t.centroidWorld,t.normalWorld,P);h.r=C.color.r*P.r;h.g=C.color.g*P.g;h.b=C.color.b*P.b;h.updateStyleString();C.wireframe?za(h.__styleString,C.wireframe_linewidth):Aa(h.__styleString)}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth): -Aa(C.color.__styleString)}else if(C instanceof THREE.MeshDepthMaterial){A=C.__2near;M=C.__farPlusNear;Q=C.__farMinusNear;i.r=i.g=i.b=1-A/(M-q.positionScreen.z*Q);s.r=s.g=s.b=1-A/(M-T.positionScreen.z*Q);r.r=r.g=r.b=1-A/(M-J.positionScreen.z*Q);L.r=(s.r+r.r)*0.5;L.g=(s.g+r.g)*0.5;L.b=(s.b+r.b)*0.5;u=Ia(i,s,r,L);qa(O,v,f,k,e,p,u,0,0,1,0,0,1)}else if(C instanceof THREE.MeshNormalMaterial){h.r=Ea(t.normalWorld.x);h.g=Ea(t.normalWorld.y);h.b=Ea(t.normalWorld.z);h.updateStyleString();C.wireframe?za(h.__styleString, -C.wireframe_linewidth):Aa(h.__styleString)}}}function za(q,T){if(F!=q)l.strokeStyle=F=q;if(w!=T)l.lineWidth=w=T;l.stroke();X.inflate(T*2)}function Aa(q){if(D!=q)l.fillStyle=D=q;l.fill()}function qa(q,T,J,t,C,V,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;J-=q;t-=T;C-=q;V-=T;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha);ka=(ta*J-ha*C)*ga;ha=(ta*t-ha*V)*ga;J=(ra*C-sa*J)*ga;t=(ra*V-sa*t)*ga;q=q-ka*ca-J*da;T=T-ha*ca-t*da;l.save();l.transform(ka, -ha,J,t,q,T);l.clip();l.drawImage(aa,0,0);l.restore()}function Da(q){if(o!=q)l.globalAlpha=o=q}function ya(q){if(c!=q){switch(q){case THREE.NormalBlending:l.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:l.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:l.globalCompositeOperation="darker"}c=q}}function Ia(q,T,J,t){ba[0]=H(0,x(255,~~(q.r*255)));ba[1]=H(0,x(255,~~(q.g*255)));ba[2]=H(0,x(255,~~(q.b*255)));ba[4]=H(0,x(255,~~(T.r*255)));ba[5]=H(0,x(255, -~~(T.g*255)));ba[6]=H(0,x(255,~~(T.b*255)));ba[8]=H(0,x(255,~~(J.r*255)));ba[9]=H(0,x(255,~~(J.g*255)));ba[10]=H(0,x(255,~~(J.b*255)));ba[12]=H(0,x(255,~~(t.r*255)));ba[13]=H(0,x(255,~~(t.g*255)));ba[14]=H(0,x(255,~~(t.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(q){return q<0?x((1+q)*0.5,0.5):0.5+x(q*0.5,0.5)}function Fa(q,T){var J=T.x-q.x,t=T.y-q.y,C=1/Math.sqrt(J*J+t*t);J*=C;t*=C;T.x+=J;T.y+=t;q.x-=J;q.y-=t}var Ba,Ja,$,ea,ma,Ga,Ka,ua;l.setTransform(1,0,0,-1,n,m); -this.autoClear&&this.clear();a=b.projectScene(fa,wa);(S=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba0){E.r+=B.color.r*U;E.g+=B.color.g*U;E.b+=B.color.b*U}}else if(B instanceof THREE.PointLight){i.sub(B.position,z.centroidWorld);i.normalize();U=z.normalWorld.dot(i)*B.intensity;if(U>0){E.r+=B.color.r*U;E.g+=B.color.g*U;E.b+=B.color.b*U}}}}function b(y,z,E,W,I,B){A=g(M++);A.setAttribute("d","M "+y.positionScreen.x+ -" "+y.positionScreen.y+" L "+z.positionScreen.x+" "+z.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+"z");if(I instanceof THREE.MeshBasicMaterial)v.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshLambertMaterial)if(O){f.r=k.r;f.g=k.g;f.b=k.b;a(B,W,f);v.r=I.color.r*f.r;v.g=I.color.g*f.g;v.b=I.color.b*f.b;v.updateStyleString()}else v.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshDepthMaterial){h=1-I.__2near/(I.__farPlusNear-W.z*I.__farMinusNear); -v.setRGB(h,h,h)}else I instanceof THREE.MeshNormalMaterial&&v.setRGB(j(W.normalWorld.x),j(W.normalWorld.y),j(W.normalWorld.z));I.wireframe?A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+I.wireframe_linewidth+"; stroke-opacity: "+I.opacity+"; stroke-linecap: "+I.wireframe_linecap+"; stroke-linejoin: "+I.wireframe_linejoin):A.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+I.opacity);l.appendChild(A)}function d(y,z,E,W,I,B,U){A=g(M++);A.setAttribute("d", -"M "+y.positionScreen.x+" "+y.positionScreen.y+" L "+z.positionScreen.x+" "+z.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(B instanceof THREE.MeshBasicMaterial)v.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshLambertMaterial)if(O){f.r=k.r;f.g=k.g;f.b=k.b;a(U,I,f);v.r=B.color.r*f.r;v.g=B.color.g*f.g;v.b=B.color.b*f.b;v.updateStyleString()}else v.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshDepthMaterial){h= -1-B.__2near/(B.__farPlusNear-I.z*B.__farMinusNear);v.setRGB(h,h,h)}else B instanceof THREE.MeshNormalMaterial&&v.setRGB(j(I.normalWorld.x),j(I.normalWorld.y),j(I.normalWorld.z));B.wireframe?A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+B.wireframe_linewidth+"; stroke-opacity: "+B.opacity+"; stroke-linecap: "+B.wireframe_linecap+"; stroke-linejoin: "+B.wireframe_linejoin):A.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+B.opacity);l.appendChild(A)} -function g(y){if(s[y]==null){s[y]=document.createElementNS("http://www.w3.org/2000/svg","path");R==0&&s[y].setAttribute("shape-rendering","crispEdges");return s[y]}return s[y]}function j(y){return y<0?Math.min((1+y)*0.5,0.5):0.5+Math.min(y*0.5,0.5)}var n=null,m=new THREE.Projector,l=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,F,D,w,x,H,G,K=new THREE.Rectangle,N=new THREE.Rectangle,O=false,v=new THREE.Color(16777215),f=new THREE.Color(16777215),k=new THREE.Color(0),e=new THREE.Color(0), -p=new THREE.Color(0),h,i=new THREE.Vector3,s=[],r=[],L=[],A,M,Q,u,R=1;this.domElement=l;this.autoClear=true;this.setQuality=function(y){switch(y){case "high":R=1;break;case "low":R=0}};this.setSize=function(y,z){o=y;c=z;F=o/2;D=c/2;l.setAttribute("viewBox",-F+" "+-D+" "+o+" "+c);l.setAttribute("width",o);l.setAttribute("height",c);K.set(-F,-D,F,D)};this.clear=function(){for(;l.childNodes.length>0;)l.removeChild(l.childNodes[0])};this.render=function(y,z){var E,W,I,B,U,X,S,P;this.autoClear&&this.clear(); -n=m.projectScene(y,z);u=Q=M=0;if(O=y.lights.length>0){S=y.lights;k.setRGB(0,0,0);e.setRGB(0,0,0);p.setRGB(0,0,0);E=0;for(W=S.length;E=0&&c.enableVertexAttribArray(f.attributes[h])}}function m(f,k){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,k);c.compileShader(e);if(!c.getShaderParameter(e,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));return null}return e} -function l(f){switch(f){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0} -var o=document.createElement("canvas"),c,F,D,w=new THREE.Matrix4,x,H=new Float32Array(16),G=new Float32Array(16),K=new Float32Array(16),N=new Float32Array(9),O=new Float32Array(16);a=function(f,k){if(f){var e,p,h,i=pointLights=maxDirLights=maxPointLights=0;e=0;for(p=f.lights.length;e0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}else if(V instanceof THREE.PointLight){Y.sub(V.position,T);Y.normalize();V=K.dot(Y)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}}}function Na(q,T,K){if(K.opacity!=0){Da(K.opacity);ya(K.blending);var t,C,V,aa,ca,da;if(K instanceof THREE.ParticleBasicMaterial){if(K.map){aa=K.map;ca=aa.width>>1;da=aa.height>>1;C=T.scale.x*n;V=T.scale.y*m;K=C*ca;t=V*da;X.set(q.x-K, +q.y-t,q.x+K,q.y+t);if(B.instersects(X)){l.save();l.translate(q.x,q.y);l.rotate(-T.rotation);l.scale(C,-V);l.translate(-ca,-da);l.drawImage(aa,0,0);l.restore()}}}else if(K instanceof THREE.ParticleCircleMaterial){if(S){P.r=Z.r+ia.r+ja.r;P.g=Z.g+ia.g+ja.g;P.b=Z.b+ia.b+ja.b;h.r=K.color.r*P.r;h.g=K.color.g*P.g;h.b=K.color.b*P.b;h.updateStyleString()}else h.__styleString=K.color.__styleString;K=T.scale.x*n;t=T.scale.y*m;X.set(q.x-K,q.y-t,q.x+K,q.y+t);if(B.instersects(X)){C=h.__styleString;if(D!=C)l.fillStyle= +D=C;l.save();l.translate(q.x,q.y);l.rotate(-T.rotation);l.scale(K,t);l.beginPath();l.arc(0,0,1,0,La,true);l.closePath();l.fill();l.restore()}}}}function Oa(q,T,K,t){if(t.opacity!=0){Da(t.opacity);ya(t.blending);l.beginPath();l.moveTo(q.positionScreen.x,q.positionScreen.y);l.lineTo(T.positionScreen.x,T.positionScreen.y);l.closePath();if(t instanceof THREE.LineBasicMaterial){h.__styleString=t.color.__styleString;q=t.linewidth;if(w!=q)l.lineWidth=w=q;q=h.__styleString;if(F!=q)l.strokeStyle=F=q;l.stroke(); +X.inflate(t.linewidth*2)}}}function Ha(q,T,K,t,C,V){if(C.opacity!=0){Da(C.opacity);ya(C.blending);O=q.positionScreen.x;v=q.positionScreen.y;f=T.positionScreen.x;k=T.positionScreen.y;e=K.positionScreen.x;p=K.positionScreen.y;l.beginPath();l.moveTo(O,v);l.lineTo(f,k);l.lineTo(e,p);l.lineTo(O,v);l.closePath();if(C instanceof THREE.MeshBasicMaterial)if(C.map)C.map.image.loaded&&C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,k,e,p,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u, +t.uvs[2].v);else if(C.env_map){if(C.env_map.image.loaded)if(C.env_map.mapping instanceof THREE.SphericalReflectionMapping){q=wa.matrix;Y.copy(t.vertexNormalsWorld[0]);R=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;y=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[1]);z=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;E=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[2]);W=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;J=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;qa(O,v,f,k,e,p, +C.env_map.image,R,y,z,E,W,J)}}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString);else if(C instanceof THREE.MeshLambertMaterial){if(C.map&&!C.wireframe){C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,k,e,p,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);ya(THREE.SubtractiveBlending)}if(S)if(!C.wireframe&&C.shading==THREE.SmoothShading&&t.vertexNormalsWorld.length==3){i.r=s.r=r.r=Z.r;i.g=s.g=r.g=Z.g;i.b=s.b=r.b=Z.b;xa(V,t.v1.positionWorld, +t.vertexNormalsWorld[0],i);xa(V,t.v2.positionWorld,t.vertexNormalsWorld[1],s);xa(V,t.v3.positionWorld,t.vertexNormalsWorld[2],r);M.r=(s.r+r.r)*0.5;M.g=(s.g+r.g)*0.5;M.b=(s.b+r.b)*0.5;u=Ia(i,s,r,M);qa(O,v,f,k,e,p,u,0,0,1,0,0,1)}else{P.r=Z.r;P.g=Z.g;P.b=Z.b;xa(V,t.centroidWorld,t.normalWorld,P);h.r=C.color.r*P.r;h.g=C.color.g*P.g;h.b=C.color.b*P.b;h.updateStyleString();C.wireframe?za(h.__styleString,C.wireframe_linewidth):Aa(h.__styleString)}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth): +Aa(C.color.__styleString)}else if(C instanceof THREE.MeshDepthMaterial){A=C.__2near;H=C.__farPlusNear;Q=C.__farMinusNear;i.r=i.g=i.b=1-A/(H-q.positionScreen.z*Q);s.r=s.g=s.b=1-A/(H-T.positionScreen.z*Q);r.r=r.g=r.b=1-A/(H-K.positionScreen.z*Q);M.r=(s.r+r.r)*0.5;M.g=(s.g+r.g)*0.5;M.b=(s.b+r.b)*0.5;u=Ia(i,s,r,M);qa(O,v,f,k,e,p,u,0,0,1,0,0,1)}else if(C instanceof THREE.MeshNormalMaterial){h.r=Ea(t.normalWorld.x);h.g=Ea(t.normalWorld.y);h.b=Ea(t.normalWorld.z);h.updateStyleString();C.wireframe?za(h.__styleString, +C.wireframe_linewidth):Aa(h.__styleString)}}}function za(q,T){if(F!=q)l.strokeStyle=F=q;if(w!=T)l.lineWidth=w=T;l.stroke();X.inflate(T*2)}function Aa(q){if(D!=q)l.fillStyle=D=q;l.fill()}function qa(q,T,K,t,C,V,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;K-=q;t-=T;C-=q;V-=T;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha);ka=(ta*K-ha*C)*ga;ha=(ta*t-ha*V)*ga;K=(ra*C-sa*K)*ga;t=(ra*V-sa*t)*ga;q=q-ka*ca-K*da;T=T-ha*ca-t*da;l.save();l.transform(ka, +ha,K,t,q,T);l.clip();l.drawImage(aa,0,0);l.restore()}function Da(q){if(o!=q)l.globalAlpha=o=q}function ya(q){if(c!=q){switch(q){case THREE.NormalBlending:l.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:l.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:l.globalCompositeOperation="darker"}c=q}}function Ia(q,T,K,t){ba[0]=I(0,x(255,~~(q.r*255)));ba[1]=I(0,x(255,~~(q.g*255)));ba[2]=I(0,x(255,~~(q.b*255)));ba[4]=I(0,x(255,~~(T.r*255)));ba[5]=I(0,x(255, +~~(T.g*255)));ba[6]=I(0,x(255,~~(T.b*255)));ba[8]=I(0,x(255,~~(K.r*255)));ba[9]=I(0,x(255,~~(K.g*255)));ba[10]=I(0,x(255,~~(K.b*255)));ba[12]=I(0,x(255,~~(t.r*255)));ba[13]=I(0,x(255,~~(t.g*255)));ba[14]=I(0,x(255,~~(t.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(q){return q<0?x((1+q)*0.5,0.5):0.5+x(q*0.5,0.5)}function Fa(q,T){var K=T.x-q.x,t=T.y-q.y,C=1/Math.sqrt(K*K+t*t);K*=C;t*=C;T.x+=K;T.y+=t;q.x-=K;q.y-=t}var Ba,Ja,$,ea,ma,Ga,Ka,ua;l.setTransform(1,0,0,-1,n,m); +this.autoClear&&this.clear();a=b.projectScene(fa,wa);(S=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba0){E.r+=B.color.r*U;E.g+=B.color.g*U;E.b+=B.color.b*U}}else if(B instanceof THREE.PointLight){i.sub(B.position,z.centroidWorld);i.normalize();U=z.normalWorld.dot(i)*B.intensity;if(U>0){E.r+=B.color.r*U;E.g+=B.color.g*U;E.b+=B.color.b*U}}}}function b(y,z,E,W,J,B){A=g(H++);A.setAttribute("d","M "+y.positionScreen.x+ +" "+y.positionScreen.y+" L "+z.positionScreen.x+" "+z.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+"z");if(J instanceof THREE.MeshBasicMaterial)v.__styleString=J.color.__styleString;else if(J instanceof THREE.MeshLambertMaterial)if(O){f.r=k.r;f.g=k.g;f.b=k.b;a(B,W,f);v.r=J.color.r*f.r;v.g=J.color.g*f.g;v.b=J.color.b*f.b;v.updateStyleString()}else v.__styleString=J.color.__styleString;else if(J instanceof THREE.MeshDepthMaterial){h=1-J.__2near/(J.__farPlusNear-W.z*J.__farMinusNear); +v.setRGB(h,h,h)}else J instanceof THREE.MeshNormalMaterial&&v.setRGB(j(W.normalWorld.x),j(W.normalWorld.y),j(W.normalWorld.z));J.wireframe?A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+J.wireframe_linewidth+"; stroke-opacity: "+J.opacity+"; stroke-linecap: "+J.wireframe_linecap+"; stroke-linejoin: "+J.wireframe_linejoin):A.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+J.opacity);l.appendChild(A)}function d(y,z,E,W,J,B,U){A=g(H++);A.setAttribute("d", +"M "+y.positionScreen.x+" "+y.positionScreen.y+" L "+z.positionScreen.x+" "+z.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(B instanceof THREE.MeshBasicMaterial)v.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshLambertMaterial)if(O){f.r=k.r;f.g=k.g;f.b=k.b;a(U,J,f);v.r=B.color.r*f.r;v.g=B.color.g*f.g;v.b=B.color.b*f.b;v.updateStyleString()}else v.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshDepthMaterial){h= +1-B.__2near/(B.__farPlusNear-J.z*B.__farMinusNear);v.setRGB(h,h,h)}else B instanceof THREE.MeshNormalMaterial&&v.setRGB(j(J.normalWorld.x),j(J.normalWorld.y),j(J.normalWorld.z));B.wireframe?A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+B.wireframe_linewidth+"; stroke-opacity: "+B.opacity+"; stroke-linecap: "+B.wireframe_linecap+"; stroke-linejoin: "+B.wireframe_linejoin):A.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+B.opacity);l.appendChild(A)} +function g(y){if(s[y]==null){s[y]=document.createElementNS("http://www.w3.org/2000/svg","path");R==0&&s[y].setAttribute("shape-rendering","crispEdges");return s[y]}return s[y]}function j(y){return y<0?Math.min((1+y)*0.5,0.5):0.5+Math.min(y*0.5,0.5)}var n=null,m=new THREE.Projector,l=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,F,D,w,x,I,G,L=new THREE.Rectangle,N=new THREE.Rectangle,O=false,v=new THREE.Color(16777215),f=new THREE.Color(16777215),k=new THREE.Color(0),e=new THREE.Color(0), +p=new THREE.Color(0),h,i=new THREE.Vector3,s=[],r=[],M=[],A,H,Q,u,R=1;this.domElement=l;this.autoClear=true;this.setQuality=function(y){switch(y){case "high":R=1;break;case "low":R=0}};this.setSize=function(y,z){o=y;c=z;F=o/2;D=c/2;l.setAttribute("viewBox",-F+" "+-D+" "+o+" "+c);l.setAttribute("width",o);l.setAttribute("height",c);L.set(-F,-D,F,D)};this.clear=function(){for(;l.childNodes.length>0;)l.removeChild(l.childNodes[0])};this.render=function(y,z){var E,W,J,B,U,X,S,P;this.autoClear&&this.clear(); +n=m.projectScene(y,z);u=Q=H=0;if(O=y.lights.length>0){S=y.lights;k.setRGB(0,0,0);e.setRGB(0,0,0);p.setRGB(0,0,0);E=0;for(W=S.length;E=0&&c.enableVertexAttribArray(f.attributes[h])}}function m(f,k){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,k);c.compileShader(e);if(!c.getShaderParameter(e, +c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));return null}return e}function l(f){switch(f){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST; +case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var o=document.createElement("canvas"),c,F,D,w=new THREE.Matrix4,x,I=new Float32Array(16),G=new Float32Array(16),L=new Float32Array(16),N=new Float32Array(9),O=new Float32Array(16);a=function(f,k){if(f){var e,p,h,i=pointLights=maxDirLights=maxPointLights=0;e=0;for(p=f.lights.length;e= 0.0 )": "",k?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",k?"pointDiffuse += mColor * pointDiffuseWeight;":"",k?"pointSpecular += mSpecular * pointSpecularWeight;":"",k?"}":"",f?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"vec3 dirVector = normalize( lDirection.xyz );":"",f?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": "",f?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",f?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",f?"float dirSpecularWeight = 0.0;":"",f?"if ( dirDotNormalHalf >= 0.0 )":"",f?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",f?"dirDiffuse += mColor * dirDiffuseWeight;":"",f?"dirSpecular += mSpecular * dirSpecularWeight;":"",f?"}":"","vec4 totalLight = mAmbient;",f?"totalLight += dirDiffuse + dirSpecular;":"",k?"totalLight += pointDiffuse + pointSpecular;": "","if ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mapColor.rgb * totalLight.xyz * vLightWeighting, cubeColor.rgb, mReflectivity ), mapColor.a );\n} else {\ngl_FragColor = vec4( mapColor.rgb * cubeColor.rgb * totalLight.xyz * vLightWeighting, mapColor.a );\n}\n} else if ( material == 1 ) {\nif ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mColor.rgb * mapColor.rgb * vLightWeighting, cubeColor.rgb, mReflectivity ), mColor.a * mapColor.a );\n} else {\ngl_FragColor = vec4( mColor.rgb * mapColor.rgb * cubeColor.rgb * vLightWeighting, mColor.a * mapColor.a );\n}\n} else {\nif ( mixEnvMap ) {\ngl_FragColor = mix( mColor * mapColor, cubeColor, mReflectivity );\n} else {\ngl_FragColor = mColor * mapColor * cubeColor;\n}\n}\n}"].join("\n"); e=b(p,e);c.useProgram(e);j(e,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);f&&j(e,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);k&&j(e,["pointLightNumber","pointLightColor", "pointLightPosition"]);c.uniform1i(e.uniforms.enableMap,0);c.uniform1i(e.uniforms.tMap,0);c.uniform1i(e.uniforms.enableCubeMap,0);c.uniform1i(e.uniforms.tCube,1);c.uniform1i(e.uniforms.mixEnvMap,0);c.uniform1i(e.uniforms.useRefract,0);n(e,["position","normal","uv"]);return e}(a.directional,a.point);this.setSize=function(f,k){o.width=f;o.height=k;c.viewport(0,0,o.width,o.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(f,k){var e,p,h,i,s,r=[], -L=[],A=[];i=[];s=[];c.uniform1i(f.uniforms.enableLighting,k.length);e=0;for(p=k.length;e0){E.__webGLUVBuffer=c.createBuffer(); -c.bindBuffer(c.ARRAY_BUFFER,E.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(y),c.STATIC_DRAW)}E.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(M),c.STATIC_DRAW);E.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);E.__webGLFaceCount=M.length;E.__webGLLineCount=Q.length}};this.renderBuffer= -function(f,k,e,p){var h,i,s,r,L,A,M,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);M=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)M.push(u);j(e.program,M);n(e.program,["position","normal","uv"])}u=e.program}else u=D;if(u!=F){c.useProgram(u);F=u}u==D&&this.setupLights(u,k);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){s=e.wireframe; -r=e.wireframe_linewidth;f=u;k=e.uniforms;var R;for(h in k){Q=k[h].type;M=k[h].value;R=f.uniforms[h];if(Q=="i")c.uniform1i(R,M);else if(Q=="f")c.uniform1f(R,M);else if(Q=="t"){c.uniform1i(R,M);if(Q=k[h].texture)Q.image instanceof Array&&Q.image.length==6?d(Q,M):g(Q,M)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){h=e.color;i=e.opacity;s=e.wireframe;r=e.wireframe_linewidth;L=e.map;A=e.env_map;k=e.combine==THREE.MixOperation; -f=e.reflectivity;Q=e.env_map&&e.env_map.mapping instanceof THREE.CubeRefractionMapping;M=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(u.uniforms.mixEnvMap,k);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,M)}if(e instanceof THREE.MeshNormalMaterial){i=e.opacity;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1i(u.uniforms.material,4)}else if(e instanceof THREE.MeshDepthMaterial){i=e.opacity;s=e.wireframe; -r=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){h=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,i);c.uniform1f(u.uniforms.mShininess,e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof -THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);A=e.env_map}if(L){g(L,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(A){d(A,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap,0);i=u.attributes;c.bindBuffer(c.ARRAY_BUFFER, -p.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,p.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.uv>=0)if(p.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,p.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(r);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,p.__webGLLineBuffer);c.drawElements(c.LINES,p.__webGLLineCount,c.UNSIGNED_SHORT, -0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,p.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,p.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,k,e,p,h,i){var s,r,L,A,M;L=0;for(A=e.material.length;L=0;e--){p=f.__webGLObjects[e].object;k==p&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,k){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(k.matrix,f.matrix);H.set(k.matrix.flatten());G.set(w.flatten());K.set(k.projectionMatrix.flatten());x=THREE.Matrix4.makeInvert3x3(w).transpose(); -N.set(x.m);O.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,H);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,K);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,N);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,O)};this.loadCamera=function(f,k){c.uniform3f(f.uniforms.cameraPosition,k.position.x,k.position.y,k.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD); -c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,k){if(f){!k||k=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}}; -THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null}; -THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; +M=[],A=[];i=[];s=[];c.uniform1i(f.uniforms.enableLighting,k.length);e=0;for(p=k.length;e0){E.__webGLUVBuffer=c.createBuffer(); +c.bindBuffer(c.ARRAY_BUFFER,E.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(y),c.STATIC_DRAW)}E.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(H),c.STATIC_DRAW);E.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);E.__webGLFaceCount=H.length;E.__webGLLineCount=Q.length}};this.renderBuffer= +function(f,k,e,p){var h,i,s,r,M,A,H,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);H=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)H.push(u);j(e.program,H);n(e.program,["position","normal","uv"])}u=e.program}else u=D;if(u!=F){c.useProgram(u);F=u}u==D&&this.setupLights(u,k);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){s=e.wireframe; +r=e.wireframe_linewidth;f=u;k=e.uniforms;var R;for(h in k){Q=k[h].type;H=k[h].value;R=f.uniforms[h];if(Q=="i")c.uniform1i(R,H);else if(Q=="f")c.uniform1f(R,H);else if(Q=="v3")c.uniform3f(R,H.x,H.y,H.z);else if(Q=="c")c.uniform3f(R,H.r,H.g,H.b);else if(Q=="t"){c.uniform1i(R,H);if(Q=k[h].texture)Q.image instanceof Array&&Q.image.length==6?d(Q,H):g(Q,H)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){h=e.color;i=e.opacity;s=e.wireframe; +r=e.wireframe_linewidth;M=e.map;A=e.env_map;k=e.combine==THREE.MixOperation;f=e.reflectivity;Q=e.env_map&&e.env_map.mapping instanceof THREE.CubeRefractionMapping;H=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(u.uniforms.mixEnvMap,k);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,H)}if(e instanceof THREE.MeshNormalMaterial){i=e.opacity;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1i(u.uniforms.material, +4)}else if(e instanceof THREE.MeshDepthMaterial){i=e.opacity;s=e.wireframe;r=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){h=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,i);c.uniform1f(u.uniforms.mShininess, +e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);A=e.env_map}if(M){g(M,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(A){d(A,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap, +0);i=u.attributes;c.bindBuffer(c.ARRAY_BUFFER,p.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,p.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.uv>=0)if(p.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,p.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(r);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,p.__webGLLineBuffer); +c.drawElements(c.LINES,p.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,p.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,p.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,k,e,p,h,i){var s,r,M,A,H;M=0;for(A=e.material.length;M=0;e--){p=f.__webGLObjects[e].object;k==p&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,k){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(k.matrix,f.matrix);I.set(k.matrix.flatten()); +G.set(w.flatten());L.set(k.projectionMatrix.flatten());x=THREE.Matrix4.makeInvert3x3(w).transpose();N.set(x.m);O.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,I);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,L);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,N);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,O)};this.loadCamera=function(f,k){c.uniform3f(f.uniforms.cameraPosition, +k.position.x,k.position.y,k.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,k){if(f){!k||k=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK); +c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]}; +THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; diff --git a/build/ThreeDebug.js b/build/ThreeDebug.js index bb6d2f57..ab26a16b 100644 --- a/build/ThreeDebug.js +++ b/build/ThreeDebug.js @@ -12,8 +12,8 @@ THREE.Vector4=function(a,b,d,g){this.x=a||0;this.y=b||0;this.z=d||0;this.w=g||1} THREE.Vector4.prototype={set:function(a,b,d,g){this.x=a;this.y=b;this.z=d;this.w=g;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w; return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}}; THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3}; -THREE.Ray.prototype={intersectScene:function(a){var b,d,g=a.objects,j=[];a=0;for(b=g.length;a0&&K>0&&l+K<1}var d,g,j,n,m,k,o,c,F,D, -w,x=a.geometry,H=x.vertices,G=[];d=0;for(g=x.faces.length;d0&&L>0&&l+L<1}var d,g,j,n,m,k,o,c,F,D, +w,x=a.geometry,I=x.vertices,G=[];d=0;for(g=x.faces.length;d= @@ -22,10 +22,10 @@ THREE.Matrix4=function(){}; THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41= a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var g=new THREE.Vector3,j=new THREE.Vector3,n=new THREE.Vector3;n.sub(a,b).normalize();g.cross(d,n).normalize();j.cross(n,g).normalize();this.n11=g.x;this.n12=g.y;this.n13=g.z;this.n14=-g.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=n.x;this.n32=n.y;this.n33=n.z;this.n34=-n.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,g=a.z,j=1/(this.n41*b+this.n42* d+this.n43*g+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*g+this.n14)*j;a.y=(this.n21*b+this.n22*d+this.n23*g+this.n24)*j;a.z=(this.n31*b+this.n32*d+this.n33*g+this.n34)*j;return a},multiplyVector4:function(a){var b=a.x,d=a.y,g=a.z,j=a.w;a.x=this.n11*b+this.n12*d+this.n13*g+this.n14*j;a.y=this.n21*b+this.n22*d+this.n23*g+this.n24*j;a.z=this.n31*b+this.n32*d+this.n33*g+this.n34*j;a.w=this.n41*b+this.n42*d+this.n43*g+this.n44*j;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11* -a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,n=a.n14,m=a.n21,k=a.n22,o=a.n23,c=a.n24,F=a.n31,D=a.n32,w=a.n33,x=a.n34,H=a.n41,G=a.n42,K=a.n43,N=a.n44,O=b.n11,v=b.n12,f=b.n13,l=b.n14,e=b.n21,q=b.n22,h=b.n23,i=b.n24,s=b.n31,r=b.n32,L=b.n33,B=b.n34,M=b.n41,Q=b.n42,u=b.n43, -R=b.n44;this.n11=d*O+g*e+j*s+n*M;this.n12=d*v+g*q+j*r+n*Q;this.n13=d*f+g*h+j*L+n*u;this.n14=d*l+g*i+j*B+n*R;this.n21=m*O+k*e+o*s+c*M;this.n22=m*v+k*q+o*r+c*Q;this.n23=m*f+k*h+o*L+c*u;this.n24=m*l+k*i+o*B+c*R;this.n31=F*O+D*e+w*s+x*M;this.n32=F*v+D*q+w*r+x*Q;this.n33=F*f+D*h+w*L+x*u;this.n34=F*l+D*i+w*B+x*R;this.n41=H*O+G*e+K*s+N*M;this.n42=H*v+G*q+K*r+N*Q;this.n43=H*f+G*h+K*L+N*u;this.n44=H*l+G*i+K*B+N*R},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,n=this.n21,m=this.n22, -k=this.n23,o=this.n24,c=this.n31,F=this.n32,D=this.n33,w=this.n34,x=this.n41,H=this.n42,G=this.n43,K=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=n*a.n11+m*a.n21+k*a.n31+o*a.n41;this.n22=n*a.n12+m*a.n22+k*a.n32+o*a.n42;this.n23=n*a.n13+m*a.n23+k*a.n33+o*a.n43;this.n24=n*a.n14+m*a.n24+k*a.n34+o*a.n44;this.n31=c*a.n11+F*a.n21+D*a.n31+w*a.n41;this.n32=c*a.n12+F*a.n22+ -D*a.n32+w*a.n42;this.n33=c*a.n13+F*a.n23+D*a.n33+w*a.n43;this.n34=c*a.n14+F*a.n24+D*a.n34+w*a.n44;this.n41=x*a.n11+H*a.n21+G*a.n31+K*a.n41;this.n42=x*a.n12+H*a.n22+G*a.n32+K*a.n42;this.n43=x*a.n13+H*a.n23+G*a.n33+K*a.n43;this.n44=x*a.n14+H*a.n24+G*a.n34+K*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* +a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,n=a.n14,m=a.n21,k=a.n22,o=a.n23,c=a.n24,F=a.n31,D=a.n32,w=a.n33,x=a.n34,I=a.n41,G=a.n42,L=a.n43,N=a.n44,O=b.n11,v=b.n12,f=b.n13,l=b.n14,e=b.n21,q=b.n22,h=b.n23,i=b.n24,s=b.n31,r=b.n32,M=b.n33,B=b.n34,H=b.n41,Q=b.n42,u=b.n43, +R=b.n44;this.n11=d*O+g*e+j*s+n*H;this.n12=d*v+g*q+j*r+n*Q;this.n13=d*f+g*h+j*M+n*u;this.n14=d*l+g*i+j*B+n*R;this.n21=m*O+k*e+o*s+c*H;this.n22=m*v+k*q+o*r+c*Q;this.n23=m*f+k*h+o*M+c*u;this.n24=m*l+k*i+o*B+c*R;this.n31=F*O+D*e+w*s+x*H;this.n32=F*v+D*q+w*r+x*Q;this.n33=F*f+D*h+w*M+x*u;this.n34=F*l+D*i+w*B+x*R;this.n41=I*O+G*e+L*s+N*H;this.n42=I*v+G*q+L*r+N*Q;this.n43=I*f+G*h+L*M+N*u;this.n44=I*l+G*i+L*B+N*R},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,n=this.n21,m=this.n22, +k=this.n23,o=this.n24,c=this.n31,F=this.n32,D=this.n33,w=this.n34,x=this.n41,I=this.n42,G=this.n43,L=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=n*a.n11+m*a.n21+k*a.n31+o*a.n41;this.n22=n*a.n12+m*a.n22+k*a.n32+o*a.n42;this.n23=n*a.n13+m*a.n23+k*a.n33+o*a.n43;this.n24=n*a.n14+m*a.n24+k*a.n34+o*a.n44;this.n31=c*a.n11+F*a.n21+D*a.n31+w*a.n41;this.n32=c*a.n12+F*a.n22+ +D*a.n32+w*a.n42;this.n33=c*a.n13+F*a.n23+D*a.n33+w*a.n43;this.n34=c*a.n14+F*a.n24+D*a.n34+w*a.n44;this.n41=x*a.n11+I*a.n21+G*a.n31+L*a.n41;this.n42=x*a.n12+I*a.n22+G*a.n32+L*a.n42;this.n43=x*a.n13+I*a.n23+G*a.n33+L*a.n43;this.n44=x*a.n14+I*a.n24+G*a.n34+L*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14* this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,g){var j=b[d];b[d]=b[g];b[g]=j}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this, "n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){return[this.n11,this.n21,this.n31,this.n41,this.n12,this.n22,this.n32,this.n42,this.n13,this.n23,this.n33,this.n43,this.n14,this.n24,this.n34,this.n44]}, @@ -76,9 +76,9 @@ this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wiref THREE.MeshDepthMaterial=function(a){this.near=1;this.far=1E3;this.opacity=1;this.blending=THREE.NormalBlending;if(a){if(a.near!==undefined)this.near=a.near;if(a.far!==undefined)this.far=a.far;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.__2near=2*this.near;this.__farPlusNear=this.far+this.near;this.__farMinusNear=this.far-this.near;this.toString=function(){return"THREE.MeshDepthMaterial"}}; THREE.MeshNormalMaterial=function(a){this.opacity=1;this.shading=THREE.FlatShading;this.blending=THREE.NormalBlending;if(a){if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.MeshNormalMaterial"}};THREE.MeshFaceMaterial=function(){this.toString=function(){return"THREE.MeshFaceMaterial"}}; THREE.MeshCubeMaterial=function(a){this.id=THREE.MeshCubeMaterial.value++;this.env_map=null;this.blending=THREE.NormalBlending;if(a)if(a.env_map!==undefined)this.env_map=a.env_map;this.toString=function(){return"THREE.MeshCubeMaterial( id: "+this.id+"
env_map: "+this.env_map+" )"}};THREE.MeshCubeMaterialCounter={value:0}; -THREE.MeshShaderMaterial=function(a){this.id=THREE.MeshShaderMaterialCounter.value++;this.vertex_shader=this.fragment_shader="void main() {}";this.uniforms={};this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){if(a.fragment_shader!==undefined)this.fragment_shader=a.fragment_shader;if(a.vertex_shader!==undefined)this.vertex_shader=a.vertex_shader;if(a.uniforms!==undefined)this.uniforms= -a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshShaderMaterial (
id: "+this.id+"
blending: "+ -this.blending+"
wireframe: "+this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wireframe_linecap: "+this.wireframe_linecap+"
wireframe_linejoin: "+this.wireframe_linejoin+"
)"}};THREE.MeshShaderMaterialCounter={value:0}; +THREE.MeshShaderMaterial=function(a){this.id=THREE.MeshShaderMaterialCounter.value++;this.vertex_shader=this.fragment_shader="void main() {}";this.uniforms={};this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){if(a.fragment_shader!==undefined)this.fragment_shader=a.fragment_shader;if(a.vertex_shader!==undefined)this.vertex_shader=a.vertex_shader;if(a.uniforms!== +undefined)this.uniforms=a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshShaderMaterial (
id: "+this.id+ +"
blending: "+this.blending+"
wireframe: "+this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wireframe_linecap: "+this.wireframe_linecap+"
wireframe_linejoin: "+this.wireframe_linejoin+"
)"}};THREE.MeshShaderMaterialCounter={value:0}; THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleBasicMaterial (
color: "+this.color+"
map: "+this.map+"
opacity: "+this.opacity+"
blending: "+ this.blending+"
)"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleCircleMaterial (
color: "+this.color+"
opacity: "+this.opacity+"
blending: "+this.blending+"
)"}}; THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}}; @@ -86,88 +86,88 @@ THREE.Texture=function(a,b,d,g,j,n){this.image=a;this.mapping=b!==undefined?b:ne this.min_filter+"
)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){}; THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){}; THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}}; -THREE.Projector=function(){function a(O,v){var f=0,l=1,e=O.z+O.w,q=v.z+v.w,h=-O.z+O.w,i=-v.z+v.w;if(e>=0&&q>=0&&h>=0&&i>=0)return true;else if(e<0&&q<0||h<0&&i<0)return false;else{if(e<0)f=Math.max(f,e/(e-q));else if(q<0)l=Math.min(l,e/(e-q));if(h<0)f=Math.max(f,h/(h-i));else if(i<0)l=Math.min(l,h/(h-i));if(l=0&&q>=0&&h>=0&&i>=0)return true;else if(e<0&&q<0||h<0&&i<0)return false;else{if(e<0)f=Math.max(f,e/(e-q));else if(q<0)l=Math.min(l,e/(e-q));if(h<0)f=Math.max(f,h/(h-i));else if(i<0)l=Math.min(l,h/(h-i));if(l0&&y.z<1}R=r.geometry.faces;e=0;for(q=R.length;e0&&w.z<1){c=D[F]=D[F]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=r.rotation.z;c.scale.x=r.scale.x*Math.abs(c.x-(w.x+v.projectionMatrix.n11)/(w.w+v.projectionMatrix.n14));c.scale.y=r.scale.y*Math.abs(c.y-(w.y+v.projectionMatrix.n22)/(w.w+v.projectionMatrix.n24));c.material=r.material;b.push(c);F++}}}b.sort(function(W,I){return I.z-W.z});return b};this.unprojectVector=function(O,v){var f=new THREE.Matrix4; +d.centroidWorld.copy(y.centroid);M.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);x.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=H;d.faceMaterial=y.material;d.overdraw=Q;if(r.geometry.uvs[e]){d.uvs[0]=r.geometry.uvs[e][0];d.uvs[1]=r.geometry.uvs[e][1];d.uvs[2]=r.geometry.uvs[e][3]}b.push(d);j++;g=n[j]=n[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(i.positionWorld);g.v2.positionWorld.copy(A.positionWorld);g.v3.positionWorld.copy(E.positionWorld); +g.v1.positionScreen.copy(i.positionScreen);g.v2.positionScreen.copy(A.positionScreen);g.v3.positionScreen.copy(E.positionScreen);g.normalWorld.copy(d.normalWorld);g.centroidWorld.copy(d.centroidWorld);g.centroidScreen.copy(d.centroidScreen);g.z=g.centroidScreen.z;g.meshMaterial=H;g.faceMaterial=y.material;g.overdraw=Q;if(r.geometry.uvs[e]){g.uvs[0]=r.geometry.uvs[e][1];g.uvs[1]=r.geometry.uvs[e][2];g.uvs[2]=r.geometry.uvs[e][3]}b.push(g);j++}}}}else if(r instanceof THREE.Line){I.multiply(x,M);u=r.geometry.vertices; +R=u[0];R.positionScreen.copy(R.position);I.multiplyVector4(R.positionScreen);e=1;for(q=u.length;e0&&w.z<1){c=D[F]=D[F]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=r.rotation.z;c.scale.x=r.scale.x*Math.abs(c.x-(w.x+v.projectionMatrix.n11)/(w.w+v.projectionMatrix.n14));c.scale.y=r.scale.y*Math.abs(c.y-(w.y+v.projectionMatrix.n22)/(w.w+v.projectionMatrix.n24));c.material=r.material;b.push(c);F++}}}b.sort(function(W,J){return J.z-W.z});return b};this.unprojectVector=function(O,v){var f=new THREE.Matrix4; f.multiply(THREE.Matrix4.makeInvert(v.matrix),THREE.Matrix4.makeInvert(v.projectionMatrix));f.multiplyVector3(O);return O}}; -THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,g,j,n;this.domElement=document.createElement("div");this.setSize=function(m,k){d=m;g=k;j=d/2;n=g/2};this.render=function(m,k){var o,c,F,D,w,x,H,G;a=b.projectScene(m,k);o=0;for(c=a.length;o0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}else if(V instanceof THREE.PointLight){Y.sub(V.position,U);Y.normalize();V=J.dot(Y)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}}}function Na(p,U,J){if(J.opacity!=0){Da(J.opacity);ya(J.blending);var t,C,V,aa,ca,da;if(J instanceof THREE.ParticleBasicMaterial){if(J.map){aa=J.map;ca=aa.width>>1;da=aa.height>>1;C=U.scale.x*n;V=U.scale.y*m;J=C*ca;t=V*da;X.set(p.x-J, -p.y-t,p.x+J,p.y+t);if(!z.instersects(X))return;k.save();k.translate(p.x,p.y);k.rotate(-U.rotation);k.scale(C,-V);k.translate(-ca,-da);k.drawImage(aa,0,0);k.restore()}k.beginPath();k.moveTo(p.x-10,p.y);k.lineTo(p.x+10,p.y);k.moveTo(p.x,p.y-10);k.lineTo(p.x,p.y+10);k.closePath();k.strokeStyle="rgb(255,255,0)";k.stroke()}else if(J instanceof THREE.ParticleCircleMaterial){if(T){P.r=Z.r+ia.r+ja.r;P.g=Z.g+ia.g+ja.g;P.b=Z.b+ia.b+ja.b;h.r=J.color.r*P.r;h.g=J.color.g*P.g;h.b=J.color.b*P.b;h.updateStyleString()}else h.__styleString= -J.color.__styleString;J=U.scale.x*n;t=U.scale.y*m;X.set(p.x-J,p.y-t,p.x+J,p.y+t);if(z.instersects(X)){C=h.__styleString;if(D!=C)k.fillStyle=D=C;k.save();k.translate(p.x,p.y);k.rotate(-U.rotation);k.scale(J,t);k.beginPath();k.arc(0,0,1,0,La,true);k.closePath();k.fill();k.restore()}}}}function Oa(p,U,J,t){if(t.opacity!=0){Da(t.opacity);ya(t.blending);k.beginPath();k.moveTo(p.positionScreen.x,p.positionScreen.y);k.lineTo(U.positionScreen.x,U.positionScreen.y);k.closePath();if(t instanceof THREE.LineBasicMaterial){h.__styleString= -t.color.__styleString;p=t.linewidth;if(w!=p)k.lineWidth=w=p;p=h.__styleString;if(F!=p)k.strokeStyle=F=p;k.stroke();X.inflate(t.linewidth*2)}}}function Ha(p,U,J,t,C,V){if(C.opacity!=0){Da(C.opacity);ya(C.blending);O=p.positionScreen.x;v=p.positionScreen.y;f=U.positionScreen.x;l=U.positionScreen.y;e=J.positionScreen.x;q=J.positionScreen.y;k.beginPath();k.moveTo(O,v);k.lineTo(f,l);k.lineTo(e,q);k.lineTo(O,v);k.closePath();if(C instanceof THREE.MeshBasicMaterial)if(C.map)C.map.image.loaded&&C.map.mapping instanceof +S.getY(),S.getWidth(),S.getHeight());S.empty()}};this.render=function(fa,wa){function Ma(p){var U,K,t,C=p.lights;Z.setRGB(0,0,0);ia.setRGB(0,0,0);ja.setRGB(0,0,0);p=0;for(U=C.length;p0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}else if(V instanceof THREE.PointLight){Y.sub(V.position,U);Y.normalize();V=K.dot(Y)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}}}function Na(p,U,K){if(K.opacity!=0){Da(K.opacity);ya(K.blending);var t,C,V,aa,ca,da;if(K instanceof THREE.ParticleBasicMaterial){if(K.map){aa=K.map;ca=aa.width>>1;da=aa.height>>1;C=U.scale.x*n;V=U.scale.y*m;K=C*ca;t=V*da;X.set(p.x-K, +p.y-t,p.x+K,p.y+t);if(!z.instersects(X))return;k.save();k.translate(p.x,p.y);k.rotate(-U.rotation);k.scale(C,-V);k.translate(-ca,-da);k.drawImage(aa,0,0);k.restore()}k.beginPath();k.moveTo(p.x-10,p.y);k.lineTo(p.x+10,p.y);k.moveTo(p.x,p.y-10);k.lineTo(p.x,p.y+10);k.closePath();k.strokeStyle="rgb(255,255,0)";k.stroke()}else if(K instanceof THREE.ParticleCircleMaterial){if(T){P.r=Z.r+ia.r+ja.r;P.g=Z.g+ia.g+ja.g;P.b=Z.b+ia.b+ja.b;h.r=K.color.r*P.r;h.g=K.color.g*P.g;h.b=K.color.b*P.b;h.updateStyleString()}else h.__styleString= +K.color.__styleString;K=U.scale.x*n;t=U.scale.y*m;X.set(p.x-K,p.y-t,p.x+K,p.y+t);if(z.instersects(X)){C=h.__styleString;if(D!=C)k.fillStyle=D=C;k.save();k.translate(p.x,p.y);k.rotate(-U.rotation);k.scale(K,t);k.beginPath();k.arc(0,0,1,0,La,true);k.closePath();k.fill();k.restore()}}}}function Oa(p,U,K,t){if(t.opacity!=0){Da(t.opacity);ya(t.blending);k.beginPath();k.moveTo(p.positionScreen.x,p.positionScreen.y);k.lineTo(U.positionScreen.x,U.positionScreen.y);k.closePath();if(t instanceof THREE.LineBasicMaterial){h.__styleString= +t.color.__styleString;p=t.linewidth;if(w!=p)k.lineWidth=w=p;p=h.__styleString;if(F!=p)k.strokeStyle=F=p;k.stroke();X.inflate(t.linewidth*2)}}}function Ha(p,U,K,t,C,V){if(C.opacity!=0){Da(C.opacity);ya(C.blending);O=p.positionScreen.x;v=p.positionScreen.y;f=U.positionScreen.x;l=U.positionScreen.y;e=K.positionScreen.x;q=K.positionScreen.y;k.beginPath();k.moveTo(O,v);k.lineTo(f,l);k.lineTo(e,q);k.lineTo(O,v);k.closePath();if(C instanceof THREE.MeshBasicMaterial)if(C.map)C.map.image.loaded&&C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,l,e,q,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);else if(C.env_map){if(C.env_map.image.loaded)if(C.env_map.mapping instanceof THREE.SphericalReflectionMapping){p=wa.matrix;Y.copy(t.vertexNormalsWorld[0]);R=(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;y=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[1]);A=(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;E=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[2]);W= -(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;I=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;qa(O,v,f,l,e,q,C.env_map.image,R,y,A,E,W,I)}}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString);else if(C instanceof THREE.MeshLambertMaterial){if(C.map&&!C.wireframe){C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,l,e,q,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);ya(THREE.SubtractiveBlending)}if(T)if(!C.wireframe&&C.shading==THREE.SmoothShading&& -t.vertexNormalsWorld.length==3){i.r=s.r=r.r=Z.r;i.g=s.g=r.g=Z.g;i.b=s.b=r.b=Z.b;xa(V,t.v1.positionWorld,t.vertexNormalsWorld[0],i);xa(V,t.v2.positionWorld,t.vertexNormalsWorld[1],s);xa(V,t.v3.positionWorld,t.vertexNormalsWorld[2],r);L.r=(s.r+r.r)*0.5;L.g=(s.g+r.g)*0.5;L.b=(s.b+r.b)*0.5;u=Ia(i,s,r,L);qa(O,v,f,l,e,q,u,0,0,1,0,0,1)}else{P.r=Z.r;P.g=Z.g;P.b=Z.b;xa(V,t.centroidWorld,t.normalWorld,P);h.r=C.color.r*P.r;h.g=C.color.g*P.g;h.b=C.color.b*P.b;h.updateStyleString();C.wireframe?za(h.__styleString, -C.wireframe_linewidth):Aa(h.__styleString)}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString)}else if(C instanceof THREE.MeshDepthMaterial){B=C.__2near;M=C.__farPlusNear;Q=C.__farMinusNear;i.r=i.g=i.b=1-B/(M-p.positionScreen.z*Q);s.r=s.g=s.b=1-B/(M-U.positionScreen.z*Q);r.r=r.g=r.b=1-B/(M-J.positionScreen.z*Q);L.r=(s.r+r.r)*0.5;L.g=(s.g+r.g)*0.5;L.b=(s.b+r.b)*0.5;u=Ia(i,s,r,L);qa(O,v,f,l,e,q,u,0,0,1,0,0,1)}else if(C instanceof THREE.MeshNormalMaterial){h.r= -Ea(t.normalWorld.x);h.g=Ea(t.normalWorld.y);h.b=Ea(t.normalWorld.z);h.updateStyleString();C.wireframe?za(h.__styleString,C.wireframe_linewidth):Aa(h.__styleString)}}}function za(p,U){if(F!=p)k.strokeStyle=F=p;if(w!=U)k.lineWidth=w=U;k.stroke();X.inflate(U*2)}function Aa(p){if(D!=p)k.fillStyle=D=p;k.fill()}function qa(p,U,J,t,C,V,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;J-=p;t-=U;C-=p;V-=U;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha); -ka=(ta*J-ha*C)*ga;ha=(ta*t-ha*V)*ga;J=(ra*C-sa*J)*ga;t=(ra*V-sa*t)*ga;p=p-ka*ca-J*da;U=U-ha*ca-t*da;k.save();k.transform(ka,ha,J,t,p,U);k.clip();k.drawImage(aa,0,0);k.restore()}function Da(p){if(o!=p)k.globalAlpha=o=p}function ya(p){if(c!=p){switch(p){case THREE.NormalBlending:k.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:k.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:k.globalCompositeOperation="darker"}c=p}}function Ia(p,U,J,t){ba[0]=H(0,x(255, -~~(p.r*255)));ba[1]=H(0,x(255,~~(p.g*255)));ba[2]=H(0,x(255,~~(p.b*255)));ba[4]=H(0,x(255,~~(U.r*255)));ba[5]=H(0,x(255,~~(U.g*255)));ba[6]=H(0,x(255,~~(U.b*255)));ba[8]=H(0,x(255,~~(J.r*255)));ba[9]=H(0,x(255,~~(J.g*255)));ba[10]=H(0,x(255,~~(J.b*255)));ba[12]=H(0,x(255,~~(t.r*255)));ba[13]=H(0,x(255,~~(t.g*255)));ba[14]=H(0,x(255,~~(t.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(p){return p<0?x((1+p)*0.5,0.5):0.5+x(p*0.5,0.5)}function Fa(p,U){var J=U.x-p.x,t=U.y-p.y, -C=1/Math.sqrt(J*J+t*t);J*=C;t*=C;U.x+=J;U.y+=t;p.x-=J;p.y-=t}var Ba,Ja,$,ea,ma,Ga,Ka,ua;k.setTransform(1,0,0,-1,n,m);this.autoClear&&this.clear();a=b.projectScene(fa,wa);k.fillStyle="rgba(0, 255, 255, 0.5)";k.fillRect(z.getX(),z.getY(),z.getWidth(),z.getHeight());(T=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba0){E.r+=z.color.r*S;E.g+=z.color.g*S;E.b+=z.color.b*S}}else if(z instanceof THREE.PointLight){i.sub(z.position,A.centroidWorld);i.normalize();S=A.normalWorld.dot(i)*z.intensity;if(S>0){E.r+=z.color.r*S;E.g+=z.color.g*S;E.b+=z.color.b*S}}}}function b(y,A,E,W,I,z){B=g(M++);B.setAttribute("d","M "+y.positionScreen.x+ -" "+y.positionScreen.y+" L "+A.positionScreen.x+" "+A.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+"z");if(I instanceof THREE.MeshBasicMaterial)v.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshLambertMaterial)if(O){f.r=l.r;f.g=l.g;f.b=l.b;a(z,W,f);v.r=I.color.r*f.r;v.g=I.color.g*f.g;v.b=I.color.b*f.b;v.updateStyleString()}else v.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshDepthMaterial){h=1-I.__2near/(I.__farPlusNear-W.z*I.__farMinusNear); -v.setRGB(h,h,h)}else I instanceof THREE.MeshNormalMaterial&&v.setRGB(j(W.normalWorld.x),j(W.normalWorld.y),j(W.normalWorld.z));I.wireframe?B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+I.wireframe_linewidth+"; stroke-opacity: "+I.opacity+"; stroke-linecap: "+I.wireframe_linecap+"; stroke-linejoin: "+I.wireframe_linejoin):B.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+I.opacity);k.appendChild(B)}function d(y,A,E,W,I,z,S){B=g(M++);B.setAttribute("d", -"M "+y.positionScreen.x+" "+y.positionScreen.y+" L "+A.positionScreen.x+" "+A.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(z instanceof THREE.MeshBasicMaterial)v.__styleString=z.color.__styleString;else if(z instanceof THREE.MeshLambertMaterial)if(O){f.r=l.r;f.g=l.g;f.b=l.b;a(S,I,f);v.r=z.color.r*f.r;v.g=z.color.g*f.g;v.b=z.color.b*f.b;v.updateStyleString()}else v.__styleString=z.color.__styleString;else if(z instanceof THREE.MeshDepthMaterial){h= -1-z.__2near/(z.__farPlusNear-I.z*z.__farMinusNear);v.setRGB(h,h,h)}else z instanceof THREE.MeshNormalMaterial&&v.setRGB(j(I.normalWorld.x),j(I.normalWorld.y),j(I.normalWorld.z));z.wireframe?B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+z.wireframe_linewidth+"; stroke-opacity: "+z.opacity+"; stroke-linecap: "+z.wireframe_linecap+"; stroke-linejoin: "+z.wireframe_linejoin):B.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+z.opacity);k.appendChild(B)} -function g(y){if(s[y]==null){s[y]=document.createElementNS("http://www.w3.org/2000/svg","path");R==0&&s[y].setAttribute("shape-rendering","crispEdges");return s[y]}return s[y]}function j(y){return y<0?Math.min((1+y)*0.5,0.5):0.5+Math.min(y*0.5,0.5)}var n=null,m=new THREE.Projector,k=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,F,D,w,x,H,G,K=new THREE.Rectangle,N=new THREE.Rectangle,O=false,v=new THREE.Color(16777215),f=new THREE.Color(16777215),l=new THREE.Color(0),e=new THREE.Color(0), -q=new THREE.Color(0),h,i=new THREE.Vector3,s=[],r=[],L=[],B,M,Q,u,R=1;this.domElement=k;this.autoClear=true;this.setQuality=function(y){switch(y){case "high":R=1;break;case "low":R=0}};this.setSize=function(y,A){o=y;c=A;F=o/2;D=c/2;k.setAttribute("viewBox",-F+" "+-D+" "+o+" "+c);k.setAttribute("width",o);k.setAttribute("height",c);K.set(-F,-D,F,D)};this.clear=function(){for(;k.childNodes.length>0;)k.removeChild(k.childNodes[0])};this.render=function(y,A){var E,W,I,z,S,X,T,P;this.autoClear&&this.clear(); -n=m.projectScene(y,A);u=Q=M=0;if(O=y.lights.length>0){T=y.lights;l.setRGB(0,0,0);e.setRGB(0,0,0);q.setRGB(0,0,0);E=0;for(W=T.length;E=0&&c.enableVertexAttribArray(f.attributes[h])}}function m(f,l){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,l);c.compileShader(e);if(!c.getShaderParameter(e,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));return null}return e} -function k(f){switch(f){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0} -var o=document.createElement("canvas"),c,F,D,w=new THREE.Matrix4,x,H=new Float32Array(16),G=new Float32Array(16),K=new Float32Array(16),N=new Float32Array(9),O=new Float32Array(16);a=function(f,l){if(f){var e,q,h,i=pointLights=maxDirLights=maxPointLights=0;e=0;for(q=f.lights.length;e0){E.r+=z.color.r*S;E.g+=z.color.g*S;E.b+=z.color.b*S}}else if(z instanceof THREE.PointLight){i.sub(z.position,A.centroidWorld);i.normalize();S=A.normalWorld.dot(i)*z.intensity;if(S>0){E.r+=z.color.r*S;E.g+=z.color.g*S;E.b+=z.color.b*S}}}}function b(y,A,E,W,J,z){B=g(H++);B.setAttribute("d","M "+y.positionScreen.x+ +" "+y.positionScreen.y+" L "+A.positionScreen.x+" "+A.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+"z");if(J instanceof THREE.MeshBasicMaterial)v.__styleString=J.color.__styleString;else if(J instanceof THREE.MeshLambertMaterial)if(O){f.r=l.r;f.g=l.g;f.b=l.b;a(z,W,f);v.r=J.color.r*f.r;v.g=J.color.g*f.g;v.b=J.color.b*f.b;v.updateStyleString()}else v.__styleString=J.color.__styleString;else if(J instanceof THREE.MeshDepthMaterial){h=1-J.__2near/(J.__farPlusNear-W.z*J.__farMinusNear); +v.setRGB(h,h,h)}else J instanceof THREE.MeshNormalMaterial&&v.setRGB(j(W.normalWorld.x),j(W.normalWorld.y),j(W.normalWorld.z));J.wireframe?B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+J.wireframe_linewidth+"; stroke-opacity: "+J.opacity+"; stroke-linecap: "+J.wireframe_linecap+"; stroke-linejoin: "+J.wireframe_linejoin):B.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+J.opacity);k.appendChild(B)}function d(y,A,E,W,J,z,S){B=g(H++);B.setAttribute("d", +"M "+y.positionScreen.x+" "+y.positionScreen.y+" L "+A.positionScreen.x+" "+A.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(z instanceof THREE.MeshBasicMaterial)v.__styleString=z.color.__styleString;else if(z instanceof THREE.MeshLambertMaterial)if(O){f.r=l.r;f.g=l.g;f.b=l.b;a(S,J,f);v.r=z.color.r*f.r;v.g=z.color.g*f.g;v.b=z.color.b*f.b;v.updateStyleString()}else v.__styleString=z.color.__styleString;else if(z instanceof THREE.MeshDepthMaterial){h= +1-z.__2near/(z.__farPlusNear-J.z*z.__farMinusNear);v.setRGB(h,h,h)}else z instanceof THREE.MeshNormalMaterial&&v.setRGB(j(J.normalWorld.x),j(J.normalWorld.y),j(J.normalWorld.z));z.wireframe?B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+z.wireframe_linewidth+"; stroke-opacity: "+z.opacity+"; stroke-linecap: "+z.wireframe_linecap+"; stroke-linejoin: "+z.wireframe_linejoin):B.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+z.opacity);k.appendChild(B)} +function g(y){if(s[y]==null){s[y]=document.createElementNS("http://www.w3.org/2000/svg","path");R==0&&s[y].setAttribute("shape-rendering","crispEdges");return s[y]}return s[y]}function j(y){return y<0?Math.min((1+y)*0.5,0.5):0.5+Math.min(y*0.5,0.5)}var n=null,m=new THREE.Projector,k=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,F,D,w,x,I,G,L=new THREE.Rectangle,N=new THREE.Rectangle,O=false,v=new THREE.Color(16777215),f=new THREE.Color(16777215),l=new THREE.Color(0),e=new THREE.Color(0), +q=new THREE.Color(0),h,i=new THREE.Vector3,s=[],r=[],M=[],B,H,Q,u,R=1;this.domElement=k;this.autoClear=true;this.setQuality=function(y){switch(y){case "high":R=1;break;case "low":R=0}};this.setSize=function(y,A){o=y;c=A;F=o/2;D=c/2;k.setAttribute("viewBox",-F+" "+-D+" "+o+" "+c);k.setAttribute("width",o);k.setAttribute("height",c);L.set(-F,-D,F,D)};this.clear=function(){for(;k.childNodes.length>0;)k.removeChild(k.childNodes[0])};this.render=function(y,A){var E,W,J,z,S,X,T,P;this.autoClear&&this.clear(); +n=m.projectScene(y,A);u=Q=H=0;if(O=y.lights.length>0){T=y.lights;l.setRGB(0,0,0);e.setRGB(0,0,0);q.setRGB(0,0,0);E=0;for(W=T.length;E=0&&c.enableVertexAttribArray(f.attributes[h])}}function m(f,l){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,l);c.compileShader(e);if(!c.getShaderParameter(e, +c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));return null}return e}function k(f){switch(f){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST; +case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var o=document.createElement("canvas"),c,F,D,w=new THREE.Matrix4,x,I=new Float32Array(16),G=new Float32Array(16),L=new Float32Array(16),N=new Float32Array(9),O=new Float32Array(16);a=function(f,l){if(f){var e,q,h,i=pointLights=maxDirLights=maxPointLights=0;e=0;for(q=f.lights.length;e= 0.0 )": "",l?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",l?"pointDiffuse += mColor * pointDiffuseWeight;":"",l?"pointSpecular += mSpecular * pointSpecularWeight;":"",l?"}":"",f?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"vec3 dirVector = normalize( lDirection.xyz );":"",f?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": "",f?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",f?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",f?"float dirSpecularWeight = 0.0;":"",f?"if ( dirDotNormalHalf >= 0.0 )":"",f?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",f?"dirDiffuse += mColor * dirDiffuseWeight;":"",f?"dirSpecular += mSpecular * dirSpecularWeight;":"",f?"}":"","vec4 totalLight = mAmbient;",f?"totalLight += dirDiffuse + dirSpecular;":"",l?"totalLight += pointDiffuse + pointSpecular;": "","if ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mapColor.rgb * totalLight.xyz * vLightWeighting, cubeColor.rgb, mReflectivity ), mapColor.a );\n} else {\ngl_FragColor = vec4( mapColor.rgb * cubeColor.rgb * totalLight.xyz * vLightWeighting, mapColor.a );\n}\n} else if ( material == 1 ) {\nif ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mColor.rgb * mapColor.rgb * vLightWeighting, cubeColor.rgb, mReflectivity ), mColor.a * mapColor.a );\n} else {\ngl_FragColor = vec4( mColor.rgb * mapColor.rgb * cubeColor.rgb * vLightWeighting, mColor.a * mapColor.a );\n}\n} else {\nif ( mixEnvMap ) {\ngl_FragColor = mix( mColor * mapColor, cubeColor, mReflectivity );\n} else {\ngl_FragColor = mColor * mapColor * cubeColor;\n}\n}\n}"].join("\n"); e=b(q,e);c.useProgram(e);j(e,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);f&&j(e,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);l&&j(e,["pointLightNumber","pointLightColor", "pointLightPosition"]);c.uniform1i(e.uniforms.enableMap,0);c.uniform1i(e.uniforms.tMap,0);c.uniform1i(e.uniforms.enableCubeMap,0);c.uniform1i(e.uniforms.tCube,1);c.uniform1i(e.uniforms.mixEnvMap,0);c.uniform1i(e.uniforms.useRefract,0);n(e,["position","normal","uv"]);return e}(a.directional,a.point);this.setSize=function(f,l){o.width=f;o.height=l;c.viewport(0,0,o.width,o.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(f,l){var e,q,h,i,s,r=[], -L=[],B=[];i=[];s=[];c.uniform1i(f.uniforms.enableLighting,l.length);e=0;for(q=l.length;e0){E.__webGLUVBuffer=c.createBuffer(); -c.bindBuffer(c.ARRAY_BUFFER,E.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(y),c.STATIC_DRAW)}E.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(M),c.STATIC_DRAW);E.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);E.__webGLFaceCount=M.length;E.__webGLLineCount=Q.length}};this.renderBuffer= -function(f,l,e,q){var h,i,s,r,L,B,M,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);M=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)M.push(u);j(e.program,M);n(e.program,["position","normal","uv"])}u=e.program}else u=D;if(u!=F){c.useProgram(u);F=u}u==D&&this.setupLights(u,l);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){s=e.wireframe; -r=e.wireframe_linewidth;f=u;l=e.uniforms;var R;for(h in l){Q=l[h].type;M=l[h].value;R=f.uniforms[h];if(Q=="i")c.uniform1i(R,M);else if(Q=="f")c.uniform1f(R,M);else if(Q=="t"){c.uniform1i(R,M);if(Q=l[h].texture)Q.image instanceof Array&&Q.image.length==6?d(Q,M):g(Q,M)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){h=e.color;i=e.opacity;s=e.wireframe;r=e.wireframe_linewidth;L=e.map;B=e.env_map;l=e.combine==THREE.MixOperation; -f=e.reflectivity;Q=e.env_map&&e.env_map.mapping instanceof THREE.CubeRefractionMapping;M=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(u.uniforms.mixEnvMap,l);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,M)}if(e instanceof THREE.MeshNormalMaterial){i=e.opacity;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1i(u.uniforms.material,4)}else if(e instanceof THREE.MeshDepthMaterial){i=e.opacity;s=e.wireframe; -r=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){h=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,i);c.uniform1f(u.uniforms.mShininess,e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof -THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);B=e.env_map}if(L){g(L,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(B){d(B,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap,0);i=u.attributes;c.bindBuffer(c.ARRAY_BUFFER, -q.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,q.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.uv>=0)if(q.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,q.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(r);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLLineBuffer);c.drawElements(c.LINES,q.__webGLLineCount,c.UNSIGNED_SHORT, -0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,q.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,l,e,q,h,i){var s,r,L,B,M;L=0;for(B=e.material.length;L=0;e--){q=f.__webGLObjects[e].object;l==q&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,l){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(l.matrix,f.matrix);H.set(l.matrix.flatten());G.set(w.flatten());K.set(l.projectionMatrix.flatten());x=THREE.Matrix4.makeInvert3x3(w).transpose(); -N.set(x.m);O.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,H);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,K);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,N);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,O)};this.loadCamera=function(f,l){c.uniform3f(f.uniforms.cameraPosition,l.position.x,l.position.y,l.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD); -c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,l){if(f){!l||l=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}}; -THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null}; -THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; +M=[],B=[];i=[];s=[];c.uniform1i(f.uniforms.enableLighting,l.length);e=0;for(q=l.length;e0){E.__webGLUVBuffer=c.createBuffer(); +c.bindBuffer(c.ARRAY_BUFFER,E.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(y),c.STATIC_DRAW)}E.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(H),c.STATIC_DRAW);E.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);E.__webGLFaceCount=H.length;E.__webGLLineCount=Q.length}};this.renderBuffer= +function(f,l,e,q){var h,i,s,r,M,B,H,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);H=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)H.push(u);j(e.program,H);n(e.program,["position","normal","uv"])}u=e.program}else u=D;if(u!=F){c.useProgram(u);F=u}u==D&&this.setupLights(u,l);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){s=e.wireframe; +r=e.wireframe_linewidth;f=u;l=e.uniforms;var R;for(h in l){Q=l[h].type;H=l[h].value;R=f.uniforms[h];if(Q=="i")c.uniform1i(R,H);else if(Q=="f")c.uniform1f(R,H);else if(Q=="v3")c.uniform3f(R,H.x,H.y,H.z);else if(Q=="c")c.uniform3f(R,H.r,H.g,H.b);else if(Q=="t"){c.uniform1i(R,H);if(Q=l[h].texture)Q.image instanceof Array&&Q.image.length==6?d(Q,H):g(Q,H)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){h=e.color;i=e.opacity;s=e.wireframe; +r=e.wireframe_linewidth;M=e.map;B=e.env_map;l=e.combine==THREE.MixOperation;f=e.reflectivity;Q=e.env_map&&e.env_map.mapping instanceof THREE.CubeRefractionMapping;H=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(u.uniforms.mixEnvMap,l);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,H)}if(e instanceof THREE.MeshNormalMaterial){i=e.opacity;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1i(u.uniforms.material, +4)}else if(e instanceof THREE.MeshDepthMaterial){i=e.opacity;s=e.wireframe;r=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){h=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,i);c.uniform1f(u.uniforms.mShininess, +e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);B=e.env_map}if(M){g(M,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(B){d(B,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap, +0);i=u.attributes;c.bindBuffer(c.ARRAY_BUFFER,q.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,q.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.uv>=0)if(q.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,q.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(r);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLLineBuffer); +c.drawElements(c.LINES,q.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,q.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,l,e,q,h,i){var s,r,M,B,H;M=0;for(B=e.material.length;M=0;e--){q=f.__webGLObjects[e].object;l==q&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,l){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(l.matrix,f.matrix);I.set(l.matrix.flatten()); +G.set(w.flatten());L.set(l.projectionMatrix.flatten());x=THREE.Matrix4.makeInvert3x3(w).transpose();N.set(x.m);O.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,I);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,L);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,N);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,O)};this.loadCamera=function(f,l){c.uniform3f(f.uniforms.cameraPosition, +l.position.x,l.position.y,l.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,l){if(f){!l||l=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK); +c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]}; +THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; diff --git a/build/ThreeExtras.js b/build/ThreeExtras.js index 9e217aa2..7b6c8d57 100644 --- a/build/ThreeExtras.js +++ b/build/ThreeExtras.js @@ -22,8 +22,8 @@ THREE.Matrix4=function(){}; THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41= a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var e=new THREE.Vector3,g=new THREE.Vector3,j=new THREE.Vector3;j.sub(a,b).normalize();e.cross(d,j).normalize();g.cross(j,e).normalize();this.n11=e.x;this.n12=e.y;this.n13=e.z;this.n14=-e.dot(a);this.n21=g.x;this.n22=g.y;this.n23=g.z;this.n24=-g.dot(a);this.n31=j.x;this.n32=j.y;this.n33=j.z;this.n34=-j.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,e=a.z,g=1/(this.n41*b+this.n42* d+this.n43*e+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*e+this.n14)*g;a.y=(this.n21*b+this.n22*d+this.n23*e+this.n24)*g;a.z=(this.n31*b+this.n32*d+this.n33*e+this.n34)*g;return a},multiplyVector4:function(a){var b=a.x,d=a.y,e=a.z,g=a.w;a.x=this.n11*b+this.n12*d+this.n13*e+this.n14*g;a.y=this.n21*b+this.n22*d+this.n23*e+this.n24*g;a.z=this.n31*b+this.n32*d+this.n33*e+this.n34*g;a.w=this.n41*b+this.n42*d+this.n43*e+this.n44*g;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11* -a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,e=a.n12,g=a.n13,j=a.n14,l=a.n21,f=a.n22,q=a.n23,c=a.n24,t=a.n31,D=a.n32,r=a.n33,u=a.n34,v=a.n41,w=a.n42,H=a.n43,I=a.n44,z=b.n11,m=b.n12,h=b.n13,n=b.n14,i=b.n21,y=b.n22,k=b.n23,o=b.n24,B=b.n31,A=b.n32,P=b.n33,J=b.n34,R=b.n41,T=b.n42,E=b.n43, -V=b.n44;this.n11=d*z+e*i+g*B+j*R;this.n12=d*m+e*y+g*A+j*T;this.n13=d*h+e*k+g*P+j*E;this.n14=d*n+e*o+g*J+j*V;this.n21=l*z+f*i+q*B+c*R;this.n22=l*m+f*y+q*A+c*T;this.n23=l*h+f*k+q*P+c*E;this.n24=l*n+f*o+q*J+c*V;this.n31=t*z+D*i+r*B+u*R;this.n32=t*m+D*y+r*A+u*T;this.n33=t*h+D*k+r*P+u*E;this.n34=t*n+D*o+r*J+u*V;this.n41=v*z+w*i+H*B+I*R;this.n42=v*m+w*y+H*A+I*T;this.n43=v*h+w*k+H*P+I*E;this.n44=v*n+w*o+H*J+I*V},multiplySelf:function(a){var b=this.n11,d=this.n12,e=this.n13,g=this.n14,j=this.n21,l=this.n22, +a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,e=a.n12,g=a.n13,j=a.n14,l=a.n21,f=a.n22,q=a.n23,c=a.n24,t=a.n31,D=a.n32,r=a.n33,u=a.n34,v=a.n41,w=a.n42,H=a.n43,I=a.n44,z=b.n11,m=b.n12,h=b.n13,n=b.n14,i=b.n21,y=b.n22,k=b.n23,o=b.n24,B=b.n31,A=b.n32,P=b.n33,J=b.n34,Q=b.n41,T=b.n42,E=b.n43, +U=b.n44;this.n11=d*z+e*i+g*B+j*Q;this.n12=d*m+e*y+g*A+j*T;this.n13=d*h+e*k+g*P+j*E;this.n14=d*n+e*o+g*J+j*U;this.n21=l*z+f*i+q*B+c*Q;this.n22=l*m+f*y+q*A+c*T;this.n23=l*h+f*k+q*P+c*E;this.n24=l*n+f*o+q*J+c*U;this.n31=t*z+D*i+r*B+u*Q;this.n32=t*m+D*y+r*A+u*T;this.n33=t*h+D*k+r*P+u*E;this.n34=t*n+D*o+r*J+u*U;this.n41=v*z+w*i+H*B+I*Q;this.n42=v*m+w*y+H*A+I*T;this.n43=v*h+w*k+H*P+I*E;this.n44=v*n+w*o+H*J+I*U},multiplySelf:function(a){var b=this.n11,d=this.n12,e=this.n13,g=this.n14,j=this.n21,l=this.n22, f=this.n23,q=this.n24,c=this.n31,t=this.n32,D=this.n33,r=this.n34,u=this.n41,v=this.n42,w=this.n43,H=this.n44;this.n11=b*a.n11+d*a.n21+e*a.n31+g*a.n41;this.n12=b*a.n12+d*a.n22+e*a.n32+g*a.n42;this.n13=b*a.n13+d*a.n23+e*a.n33+g*a.n43;this.n14=b*a.n14+d*a.n24+e*a.n34+g*a.n44;this.n21=j*a.n11+l*a.n21+f*a.n31+q*a.n41;this.n22=j*a.n12+l*a.n22+f*a.n32+q*a.n42;this.n23=j*a.n13+l*a.n23+f*a.n33+q*a.n43;this.n24=j*a.n14+l*a.n24+f*a.n34+q*a.n44;this.n31=c*a.n11+t*a.n21+D*a.n31+r*a.n41;this.n32=c*a.n12+t*a.n22+ D*a.n32+r*a.n42;this.n33=c*a.n13+t*a.n23+D*a.n33+r*a.n43;this.n34=c*a.n14+t*a.n24+D*a.n34+r*a.n44;this.n41=u*a.n11+v*a.n21+w*a.n31+H*a.n41;this.n42=u*a.n12+v*a.n22+w*a.n32+H*a.n42;this.n43=u*a.n13+v*a.n23+w*a.n33+H*a.n43;this.n44=u*a.n14+v*a.n24+w*a.n34+H*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14* @@ -76,9 +76,9 @@ this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wiref THREE.MeshDepthMaterial=function(a){this.near=1;this.far=1E3;this.opacity=1;this.blending=THREE.NormalBlending;if(a){if(a.near!==undefined)this.near=a.near;if(a.far!==undefined)this.far=a.far;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.__2near=2*this.near;this.__farPlusNear=this.far+this.near;this.__farMinusNear=this.far-this.near;this.toString=function(){return"THREE.MeshDepthMaterial"}}; THREE.MeshNormalMaterial=function(a){this.opacity=1;this.shading=THREE.FlatShading;this.blending=THREE.NormalBlending;if(a){if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.MeshNormalMaterial"}};THREE.MeshFaceMaterial=function(){this.toString=function(){return"THREE.MeshFaceMaterial"}}; THREE.MeshCubeMaterial=function(a){this.id=THREE.MeshCubeMaterial.value++;this.env_map=null;this.blending=THREE.NormalBlending;if(a)if(a.env_map!==undefined)this.env_map=a.env_map;this.toString=function(){return"THREE.MeshCubeMaterial( id: "+this.id+"
env_map: "+this.env_map+" )"}};THREE.MeshCubeMaterialCounter={value:0}; -THREE.MeshShaderMaterial=function(a){this.id=THREE.MeshShaderMaterialCounter.value++;this.vertex_shader=this.fragment_shader="void main() {}";this.uniforms={};this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){if(a.fragment_shader!==undefined)this.fragment_shader=a.fragment_shader;if(a.vertex_shader!==undefined)this.vertex_shader=a.vertex_shader;if(a.uniforms!==undefined)this.uniforms= -a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshShaderMaterial (
id: "+this.id+"
blending: "+ -this.blending+"
wireframe: "+this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wireframe_linecap: "+this.wireframe_linecap+"
wireframe_linejoin: "+this.wireframe_linejoin+"
)"}};THREE.MeshShaderMaterialCounter={value:0}; +THREE.MeshShaderMaterial=function(a){this.id=THREE.MeshShaderMaterialCounter.value++;this.vertex_shader=this.fragment_shader="void main() {}";this.uniforms={};this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){if(a.fragment_shader!==undefined)this.fragment_shader=a.fragment_shader;if(a.vertex_shader!==undefined)this.vertex_shader=a.vertex_shader;if(a.uniforms!== +undefined)this.uniforms=a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshShaderMaterial (
id: "+this.id+ +"
blending: "+this.blending+"
wireframe: "+this.wireframe+"
wireframe_linewidth: "+this.wireframe_linewidth+"
wireframe_linecap: "+this.wireframe_linecap+"
wireframe_linejoin: "+this.wireframe_linejoin+"
)"}};THREE.MeshShaderMaterialCounter={value:0}; THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleBasicMaterial (
color: "+this.color+"
map: "+this.map+"
opacity: "+this.opacity+"
blending: "+ this.blending+"
)"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleCircleMaterial (
color: "+this.color+"
opacity: "+this.opacity+"
blending: "+this.blending+"
)"}}; THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}}; @@ -87,62 +87,62 @@ this.min_filter+"
)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE. THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){}; THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}}; THREE.Projector=function(){function a(z,m){var h=0,n=1,i=z.z+z.w,y=m.z+m.w,k=-z.z+z.w,o=-m.z+m.w;if(i>=0&&y>=0&&k>=0&&o>=0)return true;else if(i<0&&y<0||k<0&&o<0)return false;else{if(i<0)h=Math.max(h,i/(i-y));else if(y<0)n=Math.min(n,i/(i-y));if(k<0)h=Math.max(h,k/(k-o));else if(o<0)n=Math.min(n,k/(k-o));if(n0&&K.z<1}V=A.geometry.faces;i=0;for(y=V.length;i0&&K.z<1}U=A.geometry.faces;i=0;for(y=U.length;i0&&r.z<1){c=D[t]=D[t]||new THREE.RenderableParticle;c.x=r.x/r.w;c.y=r.y/r.w;c.z=r.z;c.rotation=A.rotation.z;c.scale.x=A.scale.x*Math.abs(c.x-(r.x+m.projectionMatrix.n11)/(r.w+m.projectionMatrix.n14));c.scale.y=A.scale.y*Math.abs(c.y-(r.y+m.projectionMatrix.n22)/(r.w+m.projectionMatrix.n24));c.material=A.material;b.push(c);t++}}}b.sort(function(Y,Q){return Q.z-Y.z});return b};this.unprojectVector=function(z,m){var h=new THREE.Matrix4; +d.centroidWorld.copy(K.centroid);P.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);u.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=Q;d.faceMaterial=K.material;d.overdraw=T;if(A.geometry.uvs[i]){d.uvs[0]=A.geometry.uvs[i][0];d.uvs[1]=A.geometry.uvs[i][1];d.uvs[2]=A.geometry.uvs[i][3]}b.push(d);g++;e=j[g]=j[g]||new THREE.RenderableFace3;e.v1.positionWorld.copy(o.positionWorld);e.v2.positionWorld.copy(L.positionWorld);e.v3.positionWorld.copy(N.positionWorld); +e.v1.positionScreen.copy(o.positionScreen);e.v2.positionScreen.copy(L.positionScreen);e.v3.positionScreen.copy(N.positionScreen);e.normalWorld.copy(d.normalWorld);e.centroidWorld.copy(d.centroidWorld);e.centroidScreen.copy(d.centroidScreen);e.z=e.centroidScreen.z;e.meshMaterial=Q;e.faceMaterial=K.material;e.overdraw=T;if(A.geometry.uvs[i]){e.uvs[0]=A.geometry.uvs[i][1];e.uvs[1]=A.geometry.uvs[i][2];e.uvs[2]=A.geometry.uvs[i][3]}b.push(e);g++}}}}else if(A instanceof THREE.Line){v.multiply(u,P);E=A.geometry.vertices; +U=E[0];U.positionScreen.copy(U.position);v.multiplyVector4(U.positionScreen);i=1;for(y=E.length;i0&&r.z<1){c=D[t]=D[t]||new THREE.RenderableParticle;c.x=r.x/r.w;c.y=r.y/r.w;c.z=r.z;c.rotation=A.rotation.z;c.scale.x=A.scale.x*Math.abs(c.x-(r.x+m.projectionMatrix.n11)/(r.w+m.projectionMatrix.n14));c.scale.y=A.scale.y*Math.abs(c.y-(r.y+m.projectionMatrix.n22)/(r.w+m.projectionMatrix.n24));c.material=A.material;b.push(c);t++}}}b.sort(function(Y,R){return R.z-Y.z});return b};this.unprojectVector=function(z,m){var h=new THREE.Matrix4; h.multiply(THREE.Matrix4.makeInvert(m.matrix),THREE.Matrix4.makeInvert(m.projectionMatrix));h.multiplyVector3(z);return z}}; THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,e,g,j;this.domElement=document.createElement("div");this.setSize=function(l,f){d=l;e=f;g=d/2;j=e/2};this.render=function(l,f){var q,c,t,D,r,u,v,w;a=b.projectScene(l,f);q=0;for(c=a.length;q0){F.r+=ca.r*Z;F.g+=ca.g*Z;F.b+=ca.b*Z}}else if(Z instanceof THREE.PointLight){$.sub(Z.position,X);$.normalize();Z=S.dot($)*ea;if(Z>0){F.r+=ca.r*Z;F.g+=ca.g*Z;F.b+=ca.b*Z}}}}function Na(C,X,S){if(S.opacity!=0){Ea(S.opacity);za(S.blending);var F,O,Z,ca,ea,fa;if(S instanceof THREE.ParticleBasicMaterial){if(S.map){ca=S.map;ea=ca.width>>1;fa=ca.height>>1;O=X.scale.x*j;Z=X.scale.y*l;S=O*ea;F=Z*fa;p.set(C.x-S,C.y-F,C.x+S, -C.y+F);if(M.instersects(p)){f.save();f.translate(C.x,C.y);f.rotate(-X.rotation);f.scale(O,-Z);f.translate(-ea,-fa);f.drawImage(ca,0,0);f.restore()}}}else if(S instanceof THREE.ParticleCircleMaterial){if(s){x.r=G.r+U.r+ba.r;x.g=G.g+U.g+ba.g;x.b=G.b+U.b+ba.b;k.r=S.color.r*x.r;k.g=S.color.g*x.g;k.b=S.color.b*x.b;k.updateStyleString()}else k.__styleString=S.color.__styleString;S=X.scale.x*j;F=X.scale.y*l;p.set(C.x-S,C.y-F,C.x+S,C.y+F);if(M.instersects(p)){O=k.__styleString;if(D!=O)f.fillStyle=D=O;f.save(); +C.y+F);if(M.instersects(p)){f.save();f.translate(C.x,C.y);f.rotate(-X.rotation);f.scale(O,-Z);f.translate(-ea,-fa);f.drawImage(ca,0,0);f.restore()}}}else if(S instanceof THREE.ParticleCircleMaterial){if(s){x.r=G.r+V.r+ba.r;x.g=G.g+V.g+ba.g;x.b=G.b+V.b+ba.b;k.r=S.color.r*x.r;k.g=S.color.g*x.g;k.b=S.color.b*x.b;k.updateStyleString()}else k.__styleString=S.color.__styleString;S=X.scale.x*j;F=X.scale.y*l;p.set(C.x-S,C.y-F,C.x+S,C.y+F);if(M.instersects(p)){O=k.__styleString;if(D!=O)f.fillStyle=D=O;f.save(); f.translate(C.x,C.y);f.rotate(-X.rotation);f.scale(S,F);f.beginPath();f.arc(0,0,1,0,ga,true);f.closePath();f.fill();f.restore()}}}}function Oa(C,X,S,F){if(F.opacity!=0){Ea(F.opacity);za(F.blending);f.beginPath();f.moveTo(C.positionScreen.x,C.positionScreen.y);f.lineTo(X.positionScreen.x,X.positionScreen.y);f.closePath();if(F instanceof THREE.LineBasicMaterial){k.__styleString=F.color.__styleString;C=F.linewidth;if(r!=C)f.lineWidth=r=C;C=k.__styleString;if(t!=C)f.strokeStyle=t=C;f.stroke();p.inflate(F.linewidth* 2)}}}function Ia(C,X,S,F,O,Z){if(O.opacity!=0){Ea(O.opacity);za(O.blending);z=C.positionScreen.x;m=C.positionScreen.y;h=X.positionScreen.x;n=X.positionScreen.y;i=S.positionScreen.x;y=S.positionScreen.y;f.beginPath();f.moveTo(z,m);f.lineTo(h,n);f.lineTo(i,y);f.lineTo(z,m);f.closePath();if(O instanceof THREE.MeshBasicMaterial)if(O.map)O.map.image.loaded&&O.map.mapping instanceof THREE.UVMapping&&ra(z,m,h,n,i,y,O.map.image,F.uvs[0].u,F.uvs[0].v,F.uvs[1].u,F.uvs[1].v,F.uvs[2].u,F.uvs[2].v);else if(O.env_map){if(O.env_map.image.loaded)if(O.env_map.mapping instanceof -THREE.SphericalReflectionMapping){C=xa.matrix;$.copy(F.vertexNormalsWorld[0]);V=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;K=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;$.copy(F.vertexNormalsWorld[1]);L=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;N=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;$.copy(F.vertexNormalsWorld[2]);Y=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;Q=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;ra(z,m,h,n,i,y,O.env_map.image,V,K,L,N,Y,Q)}}else O.wireframe?Aa(O.color.__styleString,O.wireframe_linewidth): +THREE.SphericalReflectionMapping){C=xa.matrix;$.copy(F.vertexNormalsWorld[0]);U=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;K=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;$.copy(F.vertexNormalsWorld[1]);L=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;N=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;$.copy(F.vertexNormalsWorld[2]);Y=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;R=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;ra(z,m,h,n,i,y,O.env_map.image,U,K,L,N,Y,R)}}else O.wireframe?Aa(O.color.__styleString,O.wireframe_linewidth): Ba(O.color.__styleString);else if(O instanceof THREE.MeshLambertMaterial){if(O.map&&!O.wireframe){O.map.mapping instanceof THREE.UVMapping&&ra(z,m,h,n,i,y,O.map.image,F.uvs[0].u,F.uvs[0].v,F.uvs[1].u,F.uvs[1].v,F.uvs[2].u,F.uvs[2].v);za(THREE.SubtractiveBlending)}if(s)if(!O.wireframe&&O.shading==THREE.SmoothShading&&F.vertexNormalsWorld.length==3){o.r=B.r=A.r=G.r;o.g=B.g=A.g=G.g;o.b=B.b=A.b=G.b;ya(Z,F.v1.positionWorld,F.vertexNormalsWorld[0],o);ya(Z,F.v2.positionWorld,F.vertexNormalsWorld[1],B);ya(Z, F.v3.positionWorld,F.vertexNormalsWorld[2],A);P.r=(B.r+A.r)*0.5;P.g=(B.g+A.g)*0.5;P.b=(B.b+A.b)*0.5;E=Ja(o,B,A,P);ra(z,m,h,n,i,y,E,0,0,1,0,0,1)}else{x.r=G.r;x.g=G.g;x.b=G.b;ya(Z,F.centroidWorld,F.normalWorld,x);k.r=O.color.r*x.r;k.g=O.color.g*x.g;k.b=O.color.b*x.b;k.updateStyleString();O.wireframe?Aa(k.__styleString,O.wireframe_linewidth):Ba(k.__styleString)}else O.wireframe?Aa(O.color.__styleString,O.wireframe_linewidth):Ba(O.color.__styleString)}else if(O instanceof THREE.MeshDepthMaterial){J=O.__2near; -R=O.__farPlusNear;T=O.__farMinusNear;o.r=o.g=o.b=1-J/(R-C.positionScreen.z*T);B.r=B.g=B.b=1-J/(R-X.positionScreen.z*T);A.r=A.g=A.b=1-J/(R-S.positionScreen.z*T);P.r=(B.r+A.r)*0.5;P.g=(B.g+A.g)*0.5;P.b=(B.b+A.b)*0.5;E=Ja(o,B,A,P);ra(z,m,h,n,i,y,E,0,0,1,0,0,1)}else if(O instanceof THREE.MeshNormalMaterial){k.r=Fa(F.normalWorld.x);k.g=Fa(F.normalWorld.y);k.b=Fa(F.normalWorld.z);k.updateStyleString();O.wireframe?Aa(k.__styleString,O.wireframe_linewidth):Ba(k.__styleString)}}}function Aa(C,X){if(t!=C)f.strokeStyle= +Q=O.__farPlusNear;T=O.__farMinusNear;o.r=o.g=o.b=1-J/(Q-C.positionScreen.z*T);B.r=B.g=B.b=1-J/(Q-X.positionScreen.z*T);A.r=A.g=A.b=1-J/(Q-S.positionScreen.z*T);P.r=(B.r+A.r)*0.5;P.g=(B.g+A.g)*0.5;P.b=(B.b+A.b)*0.5;E=Ja(o,B,A,P);ra(z,m,h,n,i,y,E,0,0,1,0,0,1)}else if(O instanceof THREE.MeshNormalMaterial){k.r=Fa(F.normalWorld.x);k.g=Fa(F.normalWorld.y);k.b=Fa(F.normalWorld.z);k.updateStyleString();O.wireframe?Aa(k.__styleString,O.wireframe_linewidth):Ba(k.__styleString)}}}function Aa(C,X){if(t!=C)f.strokeStyle= t=C;if(r!=X)f.lineWidth=r=X;f.stroke();p.inflate(X*2)}function Ba(C){if(D!=C)f.fillStyle=D=C;f.fill()}function ra(C,X,S,F,O,Z,ca,ea,fa,sa,la,ta,ua){var ma,ja;ma=ca.width-1;ja=ca.height-1;ea*=ma;fa*=ja;sa*=ma;la*=ja;ta*=ma;ua*=ja;S-=C;F-=X;O-=C;Z-=X;sa-=ea;la-=fa;ta-=ea;ua-=fa;ja=1/(sa*ua-ta*la);ma=(ua*S-la*O)*ja;la=(ua*F-la*Z)*ja;S=(sa*O-ta*S)*ja;F=(sa*Z-ta*F)*ja;C=C-ma*ea-S*fa;X=X-la*ea-F*fa;f.save();f.transform(ma,la,S,F,C,X);f.clip();f.drawImage(ca,0,0);f.restore()}function Ea(C){if(q!=C)f.globalAlpha= q=C}function za(C){if(c!=C){switch(C){case THREE.NormalBlending:f.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:f.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:f.globalCompositeOperation="darker"}c=C}}function Ja(C,X,S,F){da[0]=v(0,u(255,~~(C.r*255)));da[1]=v(0,u(255,~~(C.g*255)));da[2]=v(0,u(255,~~(C.b*255)));da[4]=v(0,u(255,~~(X.r*255)));da[5]=v(0,u(255,~~(X.g*255)));da[6]=v(0,u(255,~~(X.b*255)));da[8]=v(0,u(255,~~(S.r*255)));da[9]=v(0,u(255, ~~(S.g*255)));da[10]=v(0,u(255,~~(S.b*255)));da[12]=v(0,u(255,~~(F.r*255)));da[13]=v(0,u(255,~~(F.g*255)));da[14]=v(0,u(255,~~(F.b*255)));pa.putImageData(Da,0,0);wa.drawImage(ka,0,0);return qa}function Fa(C){return C<0?u((1+C)*0.5,0.5):0.5+u(C*0.5,0.5)}function Ga(C,X){var S=X.x-C.x,F=X.y-C.y,O=1/Math.sqrt(S*S+F*F);S*=O;F*=O;X.x+=S;X.y+=F;C.x-=S;C.y-=F}var Ca,Ka,aa,ha,oa,Ha,La,va;f.setTransform(1,0,0,-1,j,l);this.autoClear&&this.clear();a=b.projectScene(ia,xa);(s=ia.lights.length>0)&&Ma(ia);Ca=0; for(Ka=a.length;Ca0){N.r+=M.color.r*W;N.g+=M.color.g*W;N.b+=M.color.b*W}}else if(M instanceof THREE.PointLight){o.sub(M.position,L.centroidWorld);o.normalize();W=L.normalWorld.dot(o)*M.intensity;if(W>0){N.r+=M.color.r*W;N.g+=M.color.g*W;N.b+=M.color.b*W}}}}function b(K,L,N,Y,Q,M){J=e(R++);J.setAttribute("d","M "+K.positionScreen.x+ -" "+K.positionScreen.y+" L "+L.positionScreen.x+" "+L.positionScreen.y+" L "+N.positionScreen.x+","+N.positionScreen.y+"z");if(Q instanceof THREE.MeshBasicMaterial)m.__styleString=Q.color.__styleString;else if(Q instanceof THREE.MeshLambertMaterial)if(z){h.r=n.r;h.g=n.g;h.b=n.b;a(M,Y,h);m.r=Q.color.r*h.r;m.g=Q.color.g*h.g;m.b=Q.color.b*h.b;m.updateStyleString()}else m.__styleString=Q.color.__styleString;else if(Q instanceof THREE.MeshDepthMaterial){k=1-Q.__2near/(Q.__farPlusNear-Y.z*Q.__farMinusNear); -m.setRGB(k,k,k)}else Q instanceof THREE.MeshNormalMaterial&&m.setRGB(g(Y.normalWorld.x),g(Y.normalWorld.y),g(Y.normalWorld.z));Q.wireframe?J.setAttribute("style","fill: none; stroke: "+m.__styleString+"; stroke-width: "+Q.wireframe_linewidth+"; stroke-opacity: "+Q.opacity+"; stroke-linecap: "+Q.wireframe_linecap+"; stroke-linejoin: "+Q.wireframe_linejoin):J.setAttribute("style","fill: "+m.__styleString+"; fill-opacity: "+Q.opacity);f.appendChild(J)}function d(K,L,N,Y,Q,M,W){J=e(R++);J.setAttribute("d", -"M "+K.positionScreen.x+" "+K.positionScreen.y+" L "+L.positionScreen.x+" "+L.positionScreen.y+" L "+N.positionScreen.x+","+N.positionScreen.y+" L "+Y.positionScreen.x+","+Y.positionScreen.y+"z");if(M instanceof THREE.MeshBasicMaterial)m.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshLambertMaterial)if(z){h.r=n.r;h.g=n.g;h.b=n.b;a(W,Q,h);m.r=M.color.r*h.r;m.g=M.color.g*h.g;m.b=M.color.b*h.b;m.updateStyleString()}else m.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshDepthMaterial){k= -1-M.__2near/(M.__farPlusNear-Q.z*M.__farMinusNear);m.setRGB(k,k,k)}else M instanceof THREE.MeshNormalMaterial&&m.setRGB(g(Q.normalWorld.x),g(Q.normalWorld.y),g(Q.normalWorld.z));M.wireframe?J.setAttribute("style","fill: none; stroke: "+m.__styleString+"; stroke-width: "+M.wireframe_linewidth+"; stroke-opacity: "+M.opacity+"; stroke-linecap: "+M.wireframe_linecap+"; stroke-linejoin: "+M.wireframe_linejoin):J.setAttribute("style","fill: "+m.__styleString+"; fill-opacity: "+M.opacity);f.appendChild(J)} -function e(K){if(B[K]==null){B[K]=document.createElementNS("http://www.w3.org/2000/svg","path");V==0&&B[K].setAttribute("shape-rendering","crispEdges");return B[K]}return B[K]}function g(K){return K<0?Math.min((1+K)*0.5,0.5):0.5+Math.min(K*0.5,0.5)}var j=null,l=new THREE.Projector,f=document.createElementNS("http://www.w3.org/2000/svg","svg"),q,c,t,D,r,u,v,w,H=new THREE.Rectangle,I=new THREE.Rectangle,z=false,m=new THREE.Color(16777215),h=new THREE.Color(16777215),n=new THREE.Color(0),i=new THREE.Color(0), -y=new THREE.Color(0),k,o=new THREE.Vector3,B=[],A=[],P=[],J,R,T,E,V=1;this.domElement=f;this.autoClear=true;this.setQuality=function(K){switch(K){case "high":V=1;break;case "low":V=0}};this.setSize=function(K,L){q=K;c=L;t=q/2;D=c/2;f.setAttribute("viewBox",-t+" "+-D+" "+q+" "+c);f.setAttribute("width",q);f.setAttribute("height",c);H.set(-t,-D,t,D)};this.clear=function(){for(;f.childNodes.length>0;)f.removeChild(f.childNodes[0])};this.render=function(K,L){var N,Y,Q,M,W,p,s,x;this.autoClear&&this.clear(); -j=l.projectScene(K,L);E=T=R=0;if(z=K.lights.length>0){s=K.lights;n.setRGB(0,0,0);i.setRGB(0,0,0);y.setRGB(0,0,0);N=0;for(Y=s.length;N0){N.r+=M.color.r*W;N.g+=M.color.g*W;N.b+=M.color.b*W}}else if(M instanceof THREE.PointLight){o.sub(M.position,L.centroidWorld);o.normalize();W=L.normalWorld.dot(o)*M.intensity;if(W>0){N.r+=M.color.r*W;N.g+=M.color.g*W;N.b+=M.color.b*W}}}}function b(K,L,N,Y,R,M){J=e(Q++);J.setAttribute("d","M "+K.positionScreen.x+ +" "+K.positionScreen.y+" L "+L.positionScreen.x+" "+L.positionScreen.y+" L "+N.positionScreen.x+","+N.positionScreen.y+"z");if(R instanceof THREE.MeshBasicMaterial)m.__styleString=R.color.__styleString;else if(R instanceof THREE.MeshLambertMaterial)if(z){h.r=n.r;h.g=n.g;h.b=n.b;a(M,Y,h);m.r=R.color.r*h.r;m.g=R.color.g*h.g;m.b=R.color.b*h.b;m.updateStyleString()}else m.__styleString=R.color.__styleString;else if(R instanceof THREE.MeshDepthMaterial){k=1-R.__2near/(R.__farPlusNear-Y.z*R.__farMinusNear); +m.setRGB(k,k,k)}else R instanceof THREE.MeshNormalMaterial&&m.setRGB(g(Y.normalWorld.x),g(Y.normalWorld.y),g(Y.normalWorld.z));R.wireframe?J.setAttribute("style","fill: none; stroke: "+m.__styleString+"; stroke-width: "+R.wireframe_linewidth+"; stroke-opacity: "+R.opacity+"; stroke-linecap: "+R.wireframe_linecap+"; stroke-linejoin: "+R.wireframe_linejoin):J.setAttribute("style","fill: "+m.__styleString+"; fill-opacity: "+R.opacity);f.appendChild(J)}function d(K,L,N,Y,R,M,W){J=e(Q++);J.setAttribute("d", +"M "+K.positionScreen.x+" "+K.positionScreen.y+" L "+L.positionScreen.x+" "+L.positionScreen.y+" L "+N.positionScreen.x+","+N.positionScreen.y+" L "+Y.positionScreen.x+","+Y.positionScreen.y+"z");if(M instanceof THREE.MeshBasicMaterial)m.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshLambertMaterial)if(z){h.r=n.r;h.g=n.g;h.b=n.b;a(W,R,h);m.r=M.color.r*h.r;m.g=M.color.g*h.g;m.b=M.color.b*h.b;m.updateStyleString()}else m.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshDepthMaterial){k= +1-M.__2near/(M.__farPlusNear-R.z*M.__farMinusNear);m.setRGB(k,k,k)}else M instanceof THREE.MeshNormalMaterial&&m.setRGB(g(R.normalWorld.x),g(R.normalWorld.y),g(R.normalWorld.z));M.wireframe?J.setAttribute("style","fill: none; stroke: "+m.__styleString+"; stroke-width: "+M.wireframe_linewidth+"; stroke-opacity: "+M.opacity+"; stroke-linecap: "+M.wireframe_linecap+"; stroke-linejoin: "+M.wireframe_linejoin):J.setAttribute("style","fill: "+m.__styleString+"; fill-opacity: "+M.opacity);f.appendChild(J)} +function e(K){if(B[K]==null){B[K]=document.createElementNS("http://www.w3.org/2000/svg","path");U==0&&B[K].setAttribute("shape-rendering","crispEdges");return B[K]}return B[K]}function g(K){return K<0?Math.min((1+K)*0.5,0.5):0.5+Math.min(K*0.5,0.5)}var j=null,l=new THREE.Projector,f=document.createElementNS("http://www.w3.org/2000/svg","svg"),q,c,t,D,r,u,v,w,H=new THREE.Rectangle,I=new THREE.Rectangle,z=false,m=new THREE.Color(16777215),h=new THREE.Color(16777215),n=new THREE.Color(0),i=new THREE.Color(0), +y=new THREE.Color(0),k,o=new THREE.Vector3,B=[],A=[],P=[],J,Q,T,E,U=1;this.domElement=f;this.autoClear=true;this.setQuality=function(K){switch(K){case "high":U=1;break;case "low":U=0}};this.setSize=function(K,L){q=K;c=L;t=q/2;D=c/2;f.setAttribute("viewBox",-t+" "+-D+" "+q+" "+c);f.setAttribute("width",q);f.setAttribute("height",c);H.set(-t,-D,t,D)};this.clear=function(){for(;f.childNodes.length>0;)f.removeChild(f.childNodes[0])};this.render=function(K,L){var N,Y,R,M,W,p,s,x;this.autoClear&&this.clear(); +j=l.projectScene(K,L);E=T=Q=0;if(z=K.lights.length>0){s=K.lights;n.setRGB(0,0,0);i.setRGB(0,0,0);y.setRGB(0,0,0);N=0;for(Y=s.length;N=0&&c.enableVertexAttribArray(h.attributes[k])}}function l(h,n){var i;if(h=="fragment")i=c.createShader(c.FRAGMENT_SHADER);else if(h=="vertex")i=c.createShader(c.VERTEX_SHADER);c.shaderSource(i,n);c.compileShader(i);if(!c.getShaderParameter(i,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(i));return null}return i} -function f(h){switch(h){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0} -var q=document.createElement("canvas"),c,t,D,r=new THREE.Matrix4,u,v=new Float32Array(16),w=new Float32Array(16),H=new Float32Array(16),I=new Float32Array(9),z=new Float32Array(16);a=function(h,n){if(h){var i,y,k,o=pointLights=maxDirLights=maxPointLights=0;i=0;for(y=h.lights.length;i=0&&c.enableVertexAttribArray(h.attributes[k])}}function l(h,n){var i;if(h=="fragment")i=c.createShader(c.FRAGMENT_SHADER);else if(h=="vertex")i=c.createShader(c.VERTEX_SHADER);c.shaderSource(i,n);c.compileShader(i);if(!c.getShaderParameter(i, +c.COMPILE_STATUS)){alert(c.getShaderInfoLog(i));return null}return i}function f(h){switch(h){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST; +case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var q=document.createElement("canvas"),c,t,D,r=new THREE.Matrix4,u,v=new Float32Array(16),w=new Float32Array(16),H=new Float32Array(16),I=new Float32Array(9),z=new Float32Array(16);a=function(h,n){if(h){var i,y,k,o=pointLights=maxDirLights=maxPointLights=0;i=0;for(y=h.lights.length;i= 0.0 )": "",n?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",n?"pointDiffuse += mColor * pointDiffuseWeight;":"",n?"pointSpecular += mSpecular * pointSpecularWeight;":"",n?"}":"",h?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",h?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",h?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",h?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",h?"vec3 dirVector = normalize( lDirection.xyz );":"",h?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": "",h?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",h?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",h?"float dirSpecularWeight = 0.0;":"",h?"if ( dirDotNormalHalf >= 0.0 )":"",h?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",h?"dirDiffuse += mColor * dirDiffuseWeight;":"",h?"dirSpecular += mSpecular * dirSpecularWeight;":"",h?"}":"","vec4 totalLight = mAmbient;",h?"totalLight += dirDiffuse + dirSpecular;":"",n?"totalLight += pointDiffuse + pointSpecular;": @@ -151,25 +151,25 @@ i=b(y,i);c.useProgram(i);g(i,["viewMatrix","modelViewMatrix","projectionMatrix", "pointLightPosition"]);c.uniform1i(i.uniforms.enableMap,0);c.uniform1i(i.uniforms.tMap,0);c.uniform1i(i.uniforms.enableCubeMap,0);c.uniform1i(i.uniforms.tCube,1);c.uniform1i(i.uniforms.mixEnvMap,0);c.uniform1i(i.uniforms.useRefract,0);j(i,["position","normal","uv"]);return i}(a.directional,a.point);this.setSize=function(h,n){q.width=h;q.height=n;c.viewport(0,0,q.width,q.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(h,n){var i,y,k,o,B,A=[], P=[],J=[];o=[];B=[];c.uniform1i(h.uniforms.enableLighting,n.length);i=0;for(y=n.length;i0){N.__webGLUVBuffer=c.createBuffer(); -c.bindBuffer(c.ARRAY_BUFFER,N.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(K),c.STATIC_DRAW)}N.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,N.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(R),c.STATIC_DRAW);N.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,N.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(T),c.STATIC_DRAW);N.__webGLFaceCount=R.length;N.__webGLLineCount=T.length}};this.renderBuffer= -function(h,n,i,y){var k,o,B,A,P,J,R,T,E;if(i instanceof THREE.MeshShaderMaterial){if(!i.program){i.program=b(i.fragment_shader,i.vertex_shader);R=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(E in i.uniforms)R.push(E);g(i.program,R);j(i.program,["position","normal","uv"])}E=i.program}else E=D;if(E!=t){c.useProgram(E);t=E}E==D&&this.setupLights(E,n);this.loadCamera(E,h);this.loadMatrices(E);if(i instanceof THREE.MeshShaderMaterial){B=i.wireframe; -A=i.wireframe_linewidth;h=E;n=i.uniforms;var V;for(k in n){T=n[k].type;R=n[k].value;V=h.uniforms[k];if(T=="i")c.uniform1i(V,R);else if(T=="f")c.uniform1f(V,R);else if(T=="t"){c.uniform1i(V,R);if(T=n[k].texture)T.image instanceof Array&&T.image.length==6?d(T,R):e(T,R)}}}if(i instanceof THREE.MeshPhongMaterial||i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshBasicMaterial){k=i.color;o=i.opacity;B=i.wireframe;A=i.wireframe_linewidth;P=i.map;J=i.env_map;n=i.combine==THREE.MixOperation; -h=i.reflectivity;T=i.env_map&&i.env_map.mapping instanceof THREE.CubeRefractionMapping;R=i.refraction_ratio;c.uniform4f(E.uniforms.mColor,k.r*o,k.g*o,k.b*o,o);c.uniform1i(E.uniforms.mixEnvMap,n);c.uniform1f(E.uniforms.mReflectivity,h);c.uniform1i(E.uniforms.useRefract,T);c.uniform1f(E.uniforms.mRefractionRatio,R)}if(i instanceof THREE.MeshNormalMaterial){o=i.opacity;c.uniform1f(E.uniforms.mOpacity,o);c.uniform1i(E.uniforms.material,4)}else if(i instanceof THREE.MeshDepthMaterial){o=i.opacity;B=i.wireframe; -A=i.wireframe_linewidth;c.uniform1f(E.uniforms.mOpacity,o);c.uniform1f(E.uniforms.m2Near,i.__2near);c.uniform1f(E.uniforms.mFarPlusNear,i.__farPlusNear);c.uniform1f(E.uniforms.mFarMinusNear,i.__farMinusNear);c.uniform1i(E.uniforms.material,3)}else if(i instanceof THREE.MeshPhongMaterial){k=i.ambient;h=i.specular;i=i.shininess;c.uniform4f(E.uniforms.mAmbient,k.r,k.g,k.b,o);c.uniform4f(E.uniforms.mSpecular,h.r,h.g,h.b,o);c.uniform1f(E.uniforms.mShininess,i);c.uniform1i(E.uniforms.material,2)}else if(i instanceof -THREE.MeshLambertMaterial)c.uniform1i(E.uniforms.material,1);else if(i instanceof THREE.MeshBasicMaterial)c.uniform1i(E.uniforms.material,0);else if(i instanceof THREE.MeshCubeMaterial){c.uniform1i(E.uniforms.material,5);J=i.env_map}if(P){e(P,0);c.uniform1i(E.uniforms.tMap,0);c.uniform1i(E.uniforms.enableMap,1)}else c.uniform1i(E.uniforms.enableMap,0);if(J){d(J,1);c.uniform1i(E.uniforms.tCube,1);c.uniform1i(E.uniforms.enableCubeMap,1)}else c.uniform1i(E.uniforms.enableCubeMap,0);o=E.attributes;c.bindBuffer(c.ARRAY_BUFFER, -y.__webGLVertexBuffer);c.vertexAttribPointer(o.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,y.__webGLNormalBuffer);c.vertexAttribPointer(o.normal,3,c.FLOAT,false,0,0);if(o.uv>=0)if(y.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,y.__webGLUVBuffer);c.enableVertexAttribArray(o.uv);c.vertexAttribPointer(o.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(o.uv);if(B){c.lineWidth(A);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.__webGLLineBuffer);c.drawElements(c.LINES,y.__webGLLineCount,c.UNSIGNED_SHORT, -0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,y.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(h,n,i,y,k,o){var B,A,P,J,R;P=0;for(J=i.material.length;P=0;i--){y=h.__webGLObjects[i].object;n==y&&h.__webGLObjects.splice(i,1)}};this.setupMatrices=function(h,n){h.autoUpdateMatrix&&h.updateMatrix();r.multiply(n.matrix,h.matrix);v.set(n.matrix.flatten());w.set(r.flatten());H.set(n.projectionMatrix.flatten());u=THREE.Matrix4.makeInvert3x3(r).transpose(); -I.set(u.m);z.set(h.matrix.flatten())};this.loadMatrices=function(h){c.uniformMatrix4fv(h.uniforms.viewMatrix,false,v);c.uniformMatrix4fv(h.uniforms.modelViewMatrix,false,w);c.uniformMatrix4fv(h.uniforms.projectionMatrix,false,H);c.uniformMatrix3fv(h.uniforms.normalMatrix,false,I);c.uniformMatrix4fv(h.uniforms.objectMatrix,false,z)};this.loadCamera=function(h,n){c.uniform3f(h.uniforms.cameraPosition,n.position.x,n.position.y,n.position.z)};this.setBlending=function(h){switch(h){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD); -c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(h,n){if(h){!n||n=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(h=="back")c.cullFace(c.BACK);else h=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}}; -THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null}; -THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; +B);c.uniform3fv(h.uniforms.pointLightColor,o)}};this.createBuffers=function(h,n){var i,y,k,o,B,A,P,J,Q=[],T=[],E=[],U=[],K=[],L=0,N=h.geometry.geometryChunks[n],Y;k=false;i=0;for(y=h.material.length;i0){N.__webGLUVBuffer=c.createBuffer(); +c.bindBuffer(c.ARRAY_BUFFER,N.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(K),c.STATIC_DRAW)}N.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,N.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);N.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,N.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(T),c.STATIC_DRAW);N.__webGLFaceCount=Q.length;N.__webGLLineCount=T.length}};this.renderBuffer= +function(h,n,i,y){var k,o,B,A,P,J,Q,T,E;if(i instanceof THREE.MeshShaderMaterial){if(!i.program){i.program=b(i.fragment_shader,i.vertex_shader);Q=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(E in i.uniforms)Q.push(E);g(i.program,Q);j(i.program,["position","normal","uv"])}E=i.program}else E=D;if(E!=t){c.useProgram(E);t=E}E==D&&this.setupLights(E,n);this.loadCamera(E,h);this.loadMatrices(E);if(i instanceof THREE.MeshShaderMaterial){B=i.wireframe; +A=i.wireframe_linewidth;h=E;n=i.uniforms;var U;for(k in n){T=n[k].type;Q=n[k].value;U=h.uniforms[k];if(T=="i")c.uniform1i(U,Q);else if(T=="f")c.uniform1f(U,Q);else if(T=="v3")c.uniform3f(U,Q.x,Q.y,Q.z);else if(T=="c")c.uniform3f(U,Q.r,Q.g,Q.b);else if(T=="t"){c.uniform1i(U,Q);if(T=n[k].texture)T.image instanceof Array&&T.image.length==6?d(T,Q):e(T,Q)}}}if(i instanceof THREE.MeshPhongMaterial||i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshBasicMaterial){k=i.color;o=i.opacity;B=i.wireframe; +A=i.wireframe_linewidth;P=i.map;J=i.env_map;n=i.combine==THREE.MixOperation;h=i.reflectivity;T=i.env_map&&i.env_map.mapping instanceof THREE.CubeRefractionMapping;Q=i.refraction_ratio;c.uniform4f(E.uniforms.mColor,k.r*o,k.g*o,k.b*o,o);c.uniform1i(E.uniforms.mixEnvMap,n);c.uniform1f(E.uniforms.mReflectivity,h);c.uniform1i(E.uniforms.useRefract,T);c.uniform1f(E.uniforms.mRefractionRatio,Q)}if(i instanceof THREE.MeshNormalMaterial){o=i.opacity;c.uniform1f(E.uniforms.mOpacity,o);c.uniform1i(E.uniforms.material, +4)}else if(i instanceof THREE.MeshDepthMaterial){o=i.opacity;B=i.wireframe;A=i.wireframe_linewidth;c.uniform1f(E.uniforms.mOpacity,o);c.uniform1f(E.uniforms.m2Near,i.__2near);c.uniform1f(E.uniforms.mFarPlusNear,i.__farPlusNear);c.uniform1f(E.uniforms.mFarMinusNear,i.__farMinusNear);c.uniform1i(E.uniforms.material,3)}else if(i instanceof THREE.MeshPhongMaterial){k=i.ambient;h=i.specular;i=i.shininess;c.uniform4f(E.uniforms.mAmbient,k.r,k.g,k.b,o);c.uniform4f(E.uniforms.mSpecular,h.r,h.g,h.b,o);c.uniform1f(E.uniforms.mShininess, +i);c.uniform1i(E.uniforms.material,2)}else if(i instanceof THREE.MeshLambertMaterial)c.uniform1i(E.uniforms.material,1);else if(i instanceof THREE.MeshBasicMaterial)c.uniform1i(E.uniforms.material,0);else if(i instanceof THREE.MeshCubeMaterial){c.uniform1i(E.uniforms.material,5);J=i.env_map}if(P){e(P,0);c.uniform1i(E.uniforms.tMap,0);c.uniform1i(E.uniforms.enableMap,1)}else c.uniform1i(E.uniforms.enableMap,0);if(J){d(J,1);c.uniform1i(E.uniforms.tCube,1);c.uniform1i(E.uniforms.enableCubeMap,1)}else c.uniform1i(E.uniforms.enableCubeMap, +0);o=E.attributes;c.bindBuffer(c.ARRAY_BUFFER,y.__webGLVertexBuffer);c.vertexAttribPointer(o.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,y.__webGLNormalBuffer);c.vertexAttribPointer(o.normal,3,c.FLOAT,false,0,0);if(o.uv>=0)if(y.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,y.__webGLUVBuffer);c.enableVertexAttribArray(o.uv);c.vertexAttribPointer(o.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(o.uv);if(B){c.lineWidth(A);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.__webGLLineBuffer); +c.drawElements(c.LINES,y.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,y.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(h,n,i,y,k,o){var B,A,P,J,Q;P=0;for(J=i.material.length;P=0;i--){y=h.__webGLObjects[i].object;n==y&&h.__webGLObjects.splice(i,1)}};this.setupMatrices=function(h,n){h.autoUpdateMatrix&&h.updateMatrix();r.multiply(n.matrix,h.matrix);v.set(n.matrix.flatten()); +w.set(r.flatten());H.set(n.projectionMatrix.flatten());u=THREE.Matrix4.makeInvert3x3(r).transpose();I.set(u.m);z.set(h.matrix.flatten())};this.loadMatrices=function(h){c.uniformMatrix4fv(h.uniforms.viewMatrix,false,v);c.uniformMatrix4fv(h.uniforms.modelViewMatrix,false,w);c.uniformMatrix4fv(h.uniforms.projectionMatrix,false,H);c.uniformMatrix3fv(h.uniforms.normalMatrix,false,I);c.uniformMatrix4fv(h.uniforms.objectMatrix,false,z)};this.loadCamera=function(h,n){c.uniform3f(h.uniforms.cameraPosition, +n.position.x,n.position.y,n.position.z)};this.setBlending=function(h){switch(h){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(h,n){if(h){!n||n=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(h=="back")c.cullFace(c.BACK);else h=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK); +c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]}; +THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; var GeometryUtils={merge:function(a,b){var d=b instanceof THREE.Mesh,e=a.vertices.length,g=d?b.geometry:b,j=a.vertices,l=g.vertices,f=a.faces,q=g.faces,c=a.uvs;g=g.uvs;d&&b.updateMatrix();for(var t=0,D=l.length;t>7)-127;x=(U&127)<<16|G<<8|x;if(x==0&&ga==-127)return 0;return(1-2*(ba>>7))*(1+x*Math.pow(2,-23))*Math.pow(2,ga)}function f(p,s){var x=t(p,s),G=t(p,s+1),U=t(p,s+2);return(t(p,s+3)<<24)+(U<< -16)+(G<<8)+x}function q(p,s){var x=t(p,s);return(t(p,s+1)<<8)+x}function c(p,s){var x=t(p,s);return x>127?x-256:x}function t(p,s){return p.charCodeAt(s)&255}function D(p){var s,x,G;s=f(a,p);x=f(a,p+i);G=f(a,p+y);p=q(a,p+k);THREE.Loader.prototype.f3(I,s,x,G,p)}function r(p){var s,x,G,U,ba,ga;s=f(a,p);x=f(a,p+i);G=f(a,p+y);U=q(a,p+k);ba=f(a,p+o);ga=f(a,p+B);p=f(a,p+A);THREE.Loader.prototype.f3n(I,h,s,x,G,U,ba,ga,p)}function u(p){var s,x,G,U;s=f(a,p);x=f(a,p+P);G=f(a,p+J);U=f(a,p+R);p=q(a,p+T);THREE.Loader.prototype.f4(I, -s,x,G,U,p)}function v(p){var s,x,G,U,ba,ga,$,ka;s=f(a,p);x=f(a,p+P);G=f(a,p+J);U=f(a,p+R);ba=q(a,p+T);ga=f(a,p+E);$=f(a,p+V);ka=f(a,p+K);p=f(a,p+L);THREE.Loader.prototype.f4n(I,h,s,x,G,U,ba,ga,$,ka,p)}function w(p){var s,x;s=f(a,p);x=f(a,p+N);p=f(a,p+Y);THREE.Loader.prototype.uv3(I,n[s*2],n[s*2+1],n[x*2],n[x*2+1],n[p*2],n[p*2+1])}function H(p){var s,x,G;s=f(a,p);x=f(a,p+Q);G=f(a,p+M);p=f(a,p+W);THREE.Loader.prototype.uv4(I,n[s*2],n[s*2+1],n[x*2],n[x*2+1],n[G*2],n[G*2+1],n[p*2],n[p*2+1])}var I=this, -z=0,m,h=[],n=[],i,y,k,o,B,A,P,J,R,T,E,V,K,L,N,Y,Q,M,W;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(I,e,j);m={signature:a.substr(z,8),header_bytes:t(a,z+8),vertex_coordinate_bytes:t(a,z+9),normal_coordinate_bytes:t(a,z+10),uv_coordinate_bytes:t(a,z+11),vertex_index_bytes:t(a,z+12),normal_index_bytes:t(a,z+13),uv_index_bytes:t(a,z+14),material_index_bytes:t(a,z+15),nvertices:f(a,z+16),nnormals:f(a,z+16+4),nuvs:f(a,z+16+8),ntri_flat:f(a,z+16+12),ntri_smooth:f(a,z+16+16),ntri_flat_uv:f(a, -z+16+20),ntri_smooth_uv:f(a,z+16+24),nquad_flat:f(a,z+16+28),nquad_smooth:f(a,z+16+32),nquad_flat_uv:f(a,z+16+36),nquad_smooth_uv:f(a,z+16+40)};z+=m.header_bytes;i=m.vertex_index_bytes;y=m.vertex_index_bytes*2;k=m.vertex_index_bytes*3;o=m.vertex_index_bytes*3+m.material_index_bytes;B=m.vertex_index_bytes*3+m.material_index_bytes+m.normal_index_bytes;A=m.vertex_index_bytes*3+m.material_index_bytes+m.normal_index_bytes*2;P=m.vertex_index_bytes;J=m.vertex_index_bytes*2;R=m.vertex_index_bytes*3;T=m.vertex_index_bytes* -4;E=m.vertex_index_bytes*4+m.material_index_bytes;V=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes;K=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes*2;L=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes*3;N=m.uv_index_bytes;Y=m.uv_index_bytes*2;Q=m.uv_index_bytes;M=m.uv_index_bytes*2;W=m.uv_index_bytes*3;z+=function(p){var s,x,G,U=m.vertex_coordinate_bytes*3,ba=p+m.nvertices*U;for(p=p;p>7)-127;x=(V&127)<<16|G<<8|x;if(x==0&&ga==-127)return 0;return(1-2*(ba>>7))*(1+x*Math.pow(2,-23))*Math.pow(2,ga)}function f(p,s){var x=t(p,s),G=t(p,s+1),V=t(p,s+2);return(t(p,s+3)<<24)+(V<< +16)+(G<<8)+x}function q(p,s){var x=t(p,s);return(t(p,s+1)<<8)+x}function c(p,s){var x=t(p,s);return x>127?x-256:x}function t(p,s){return p.charCodeAt(s)&255}function D(p){var s,x,G;s=f(a,p);x=f(a,p+i);G=f(a,p+y);p=q(a,p+k);THREE.Loader.prototype.f3(I,s,x,G,p)}function r(p){var s,x,G,V,ba,ga;s=f(a,p);x=f(a,p+i);G=f(a,p+y);V=q(a,p+k);ba=f(a,p+o);ga=f(a,p+B);p=f(a,p+A);THREE.Loader.prototype.f3n(I,h,s,x,G,V,ba,ga,p)}function u(p){var s,x,G,V;s=f(a,p);x=f(a,p+P);G=f(a,p+J);V=f(a,p+Q);p=q(a,p+T);THREE.Loader.prototype.f4(I, +s,x,G,V,p)}function v(p){var s,x,G,V,ba,ga,$,ka;s=f(a,p);x=f(a,p+P);G=f(a,p+J);V=f(a,p+Q);ba=q(a,p+T);ga=f(a,p+E);$=f(a,p+U);ka=f(a,p+K);p=f(a,p+L);THREE.Loader.prototype.f4n(I,h,s,x,G,V,ba,ga,$,ka,p)}function w(p){var s,x;s=f(a,p);x=f(a,p+N);p=f(a,p+Y);THREE.Loader.prototype.uv3(I,n[s*2],n[s*2+1],n[x*2],n[x*2+1],n[p*2],n[p*2+1])}function H(p){var s,x,G;s=f(a,p);x=f(a,p+R);G=f(a,p+M);p=f(a,p+W);THREE.Loader.prototype.uv4(I,n[s*2],n[s*2+1],n[x*2],n[x*2+1],n[G*2],n[G*2+1],n[p*2],n[p*2+1])}var I=this, +z=0,m,h=[],n=[],i,y,k,o,B,A,P,J,Q,T,E,U,K,L,N,Y,R,M,W;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(I,e,j);m={signature:a.substr(z,8),header_bytes:t(a,z+8),vertex_coordinate_bytes:t(a,z+9),normal_coordinate_bytes:t(a,z+10),uv_coordinate_bytes:t(a,z+11),vertex_index_bytes:t(a,z+12),normal_index_bytes:t(a,z+13),uv_index_bytes:t(a,z+14),material_index_bytes:t(a,z+15),nvertices:f(a,z+16),nnormals:f(a,z+16+4),nuvs:f(a,z+16+8),ntri_flat:f(a,z+16+12),ntri_smooth:f(a,z+16+16),ntri_flat_uv:f(a, +z+16+20),ntri_smooth_uv:f(a,z+16+24),nquad_flat:f(a,z+16+28),nquad_smooth:f(a,z+16+32),nquad_flat_uv:f(a,z+16+36),nquad_smooth_uv:f(a,z+16+40)};z+=m.header_bytes;i=m.vertex_index_bytes;y=m.vertex_index_bytes*2;k=m.vertex_index_bytes*3;o=m.vertex_index_bytes*3+m.material_index_bytes;B=m.vertex_index_bytes*3+m.material_index_bytes+m.normal_index_bytes;A=m.vertex_index_bytes*3+m.material_index_bytes+m.normal_index_bytes*2;P=m.vertex_index_bytes;J=m.vertex_index_bytes*2;Q=m.vertex_index_bytes*3;T=m.vertex_index_bytes* +4;E=m.vertex_index_bytes*4+m.material_index_bytes;U=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes;K=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes*2;L=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes*3;N=m.uv_index_bytes;Y=m.uv_index_bytes*2;R=m.uv_index_bytes;M=m.uv_index_bytes*2;W=m.uv_index_bytes*3;z+=function(p){var s,x,G,V=m.vertex_coordinate_bytes*3,ba=p+m.nvertices*V;for(p=p;p Date: Thu, 9 Dec 2010 12:27:49 +0100 Subject: [PATCH 2/2] Added normal + ambient occlusion + displacement mapping demo. A lot of things going on in this commit: - added tangents computation for geometries - mesh must have UV coordinates - to be called explicitly once geometry is loaded like this: geometry.computeTangents() - tangents are stored in Vertex objects - quads are not solved properly (though workaround hack seems to work at least somehow, as far as each vertex appears at least somewhere) - extended VBOs in WebGLRenderer to include tangent streams (when available) - added "normal" shader to ShaderUtils (to be used with MeshShaderMaterial) - Blinn-Phong with one directional and one point light (7 varyings gone, just one spare) - normal maps are in tangent space - displacement maps use simple luminance value (could be changed if better precision is needed) - displacement mapping uses vertex texture fetch - this requires GPU with Shader Model 3.0 - not currently supported in ANGLE - for this, added "supportsVertexTextures" method to WebGLRenderer API, so that application can handle this --- build/Three.js | 235 ++++++++------- build/ThreeDebug.js | 237 ++++++++------- build/ThreeExtras.js | 276 ++++++++--------- examples/materials_normalmap.html | 282 ++++++++++++++++++ examples/obj/ninja/.htaccess | 7 + examples/obj/ninja/NinjaLo_bin.bin | Bin 0 -> 335347 bytes examples/obj/ninja/NinjaLo_bin.js | 22 ++ examples/textures/normal/ninja/ao.jpg | Bin 0 -> 72545 bytes .../textures/normal/ninja/displacement.jpg | Bin 0 -> 89169 bytes .../textures/normal/ninja/displacement.txt | 2 + examples/textures/normal/ninja/normal.jpg | Bin 0 -> 168288 bytes src/core/Geometry.js | 117 ++++++++ src/core/Vertex.js | 2 + src/extras/ShaderUtils.js | 195 ++++++++++++ src/renderers/WebGLRenderer.js | 71 ++++- 15 files changed, 1075 insertions(+), 371 deletions(-) create mode 100644 examples/materials_normalmap.html create mode 100644 examples/obj/ninja/.htaccess create mode 100644 examples/obj/ninja/NinjaLo_bin.bin create mode 100644 examples/obj/ninja/NinjaLo_bin.js create mode 100644 examples/textures/normal/ninja/ao.jpg create mode 100644 examples/textures/normal/ninja/displacement.jpg create mode 100644 examples/textures/normal/ninja/displacement.txt create mode 100644 examples/textures/normal/ninja/normal.jpg diff --git a/build/Three.js b/build/Three.js index c5021ef9..839c1fc6 100755 --- a/build/Three.js +++ b/build/Three.js @@ -5,59 +5,62 @@ THREE.Color.prototype={setRGB:function(a,b,d){this.r=a;this.g=b;this.b=d;if(this THREE.Vector2.prototype={set:function(a,b){this.x=a;this.y=b;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},unit:function(){this.multiplyScalar(1/this.length());return this},length:function(){return Math.sqrt(this.x* this.x+this.y*this.y)},lengthSq:function(){return this.x*this.x+this.y*this.y},negate:function(){this.x=-this.x;this.y=-this.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},toString:function(){return"THREE.Vector2 ("+this.x+", "+this.y+")"}};THREE.Vector3=function(a,b,d){this.x=a||0;this.y=b||0;this.z=d||0}; THREE.Vector3.prototype={set:function(a,b,d){this.x=a;this.y=b;this.z=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;return this}, -cross:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},crossSelf:function(a){var b=this.x,d=this.y,g=this.z;this.x=d*a.z-g*a.y;this.y=g*a.x-b*a.z;this.z=b*a.y-d*a.x;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/= +cross:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},crossSelf:function(a){var b=this.x,d=this.y,f=this.z;this.x=d*a.z-f*a.y;this.y=f*a.x-b*a.z;this.z=b*a.y-d*a.x;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/= a;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},distanceTo:function(a){var b=this.x-a.x,d=this.y-a.y;a=this.z-a.z;return Math.sqrt(b*b+d*d+a*a)},distanceToSquared:function(a){var b=this.x-a.x,d=this.y-a.y;a=this.z-a.z;return b*b+d*d+a*a},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},normalize:function(){var a= Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z);a>0?this.multiplyScalar(1/a):this.set(0,0,0);return this},setLength:function(a){return this.normalize().multiplyScalar(a)},isZero:function(){return Math.abs(this.x)<1.0E-4&&Math.abs(this.y)<1.0E-4&&Math.abs(this.z)<1.0E-4},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},toString:function(){return"THREE.Vector3 ( "+this.x+", "+this.y+", "+this.z+" )"}}; -THREE.Vector4=function(a,b,d,g){this.x=a||0;this.y=b||0;this.z=d||0;this.w=g||1}; -THREE.Vector4.prototype={set:function(a,b,d,g){this.x=a;this.y=b;this.z=d;this.w=g;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w; +THREE.Vector4=function(a,b,d,f){this.x=a||0;this.y=b||0;this.z=d||0;this.w=f||1}; +THREE.Vector4.prototype={set:function(a,b,d,f){this.x=a;this.y=b;this.z=d;this.w=f;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w; return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}}; THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3}; -THREE.Ray.prototype={intersectScene:function(a){var b,d,g=a.objects,j=[];a=0;for(b=g.length;a0&&L>0&&k+L<1}var d,g,j,n,m,l,o,c,F,D, -w,x=a.geometry,I=x.vertices,G=[];d=0;for(g=x.faces.length;d= -0&&Math.min(j,o.getBottom())-Math.max(d,o.getTop())>=0};this.empty=function(){l=true;j=g=d=b=0;a()};this.isEmpty=function(){return l};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+g+", top: "+d+", bottom: "+j+", width: "+n+", height: "+m+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}}; +THREE.Ray.prototype={intersectScene:function(a){var b,d,f=a.objects,j=[];a=0;for(b=f.length;a0&&J>0&&k+J<1}var d,f,j,m,n,l,o,c,E,C, +x,z=a.geometry,H=z.vertices,G=[];d=0;for(f=z.faces.length;d= +0&&Math.min(j,o.getBottom())-Math.max(d,o.getTop())>=0};this.empty=function(){l=true;j=f=d=b=0;a()};this.isEmpty=function(){return l};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+f+", top: "+d+", bottom: "+j+", width: "+m+", height: "+n+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}}; THREE.Matrix4=function(){}; THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41= -a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var g=new THREE.Vector3,j=new THREE.Vector3,n=new THREE.Vector3;n.sub(a,b).normalize();g.cross(d,n).normalize();j.cross(n,g).normalize();this.n11=g.x;this.n12=g.y;this.n13=g.z;this.n14=-g.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=n.x;this.n32=n.y;this.n33=n.z;this.n34=-n.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,g=a.z,j=1/(this.n41*b+this.n42* -d+this.n43*g+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*g+this.n14)*j;a.y=(this.n21*b+this.n22*d+this.n23*g+this.n24)*j;a.z=(this.n31*b+this.n32*d+this.n33*g+this.n34)*j;return a},multiplyVector4:function(a){var b=a.x,d=a.y,g=a.z,j=a.w;a.x=this.n11*b+this.n12*d+this.n13*g+this.n14*j;a.y=this.n21*b+this.n22*d+this.n23*g+this.n24*j;a.z=this.n31*b+this.n32*d+this.n33*g+this.n34*j;a.w=this.n41*b+this.n42*d+this.n43*g+this.n44*j;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11* -a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,n=a.n14,m=a.n21,l=a.n22,o=a.n23,c=a.n24,F=a.n31,D=a.n32,w=a.n33,x=a.n34,I=a.n41,G=a.n42,L=a.n43,N=a.n44,O=b.n11,v=b.n12,f=b.n13,k=b.n14,e=b.n21,p=b.n22,h=b.n23,i=b.n24,s=b.n31,r=b.n32,M=b.n33,A=b.n34,H=b.n41,Q=b.n42,u=b.n43, -R=b.n44;this.n11=d*O+g*e+j*s+n*H;this.n12=d*v+g*p+j*r+n*Q;this.n13=d*f+g*h+j*M+n*u;this.n14=d*k+g*i+j*A+n*R;this.n21=m*O+l*e+o*s+c*H;this.n22=m*v+l*p+o*r+c*Q;this.n23=m*f+l*h+o*M+c*u;this.n24=m*k+l*i+o*A+c*R;this.n31=F*O+D*e+w*s+x*H;this.n32=F*v+D*p+w*r+x*Q;this.n33=F*f+D*h+w*M+x*u;this.n34=F*k+D*i+w*A+x*R;this.n41=I*O+G*e+L*s+N*H;this.n42=I*v+G*p+L*r+N*Q;this.n43=I*f+G*h+L*M+N*u;this.n44=I*k+G*i+L*A+N*R},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,n=this.n21,m=this.n22, -l=this.n23,o=this.n24,c=this.n31,F=this.n32,D=this.n33,w=this.n34,x=this.n41,I=this.n42,G=this.n43,L=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=n*a.n11+m*a.n21+l*a.n31+o*a.n41;this.n22=n*a.n12+m*a.n22+l*a.n32+o*a.n42;this.n23=n*a.n13+m*a.n23+l*a.n33+o*a.n43;this.n24=n*a.n14+m*a.n24+l*a.n34+o*a.n44;this.n31=c*a.n11+F*a.n21+D*a.n31+w*a.n41;this.n32=c*a.n12+F*a.n22+ -D*a.n32+w*a.n42;this.n33=c*a.n13+F*a.n23+D*a.n33+w*a.n43;this.n34=c*a.n14+F*a.n24+D*a.n34+w*a.n44;this.n41=x*a.n11+I*a.n21+G*a.n31+L*a.n41;this.n42=x*a.n12+I*a.n22+G*a.n32+L*a.n42;this.n43=x*a.n13+I*a.n23+G*a.n33+L*a.n43;this.n44=x*a.n14+I*a.n24+G*a.n34+L*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* +a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var f=new THREE.Vector3,j=new THREE.Vector3,m=new THREE.Vector3;m.sub(a,b).normalize();f.cross(d,m).normalize();j.cross(m,f).normalize();this.n11=f.x;this.n12=f.y;this.n13=f.z;this.n14=-f.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=m.x;this.n32=m.y;this.n33=m.z;this.n34=-m.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,f=a.z,j=1/(this.n41*b+this.n42* +d+this.n43*f+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*f+this.n14)*j;a.y=(this.n21*b+this.n22*d+this.n23*f+this.n24)*j;a.z=(this.n31*b+this.n32*d+this.n33*f+this.n34)*j;return a},multiplyVector4:function(a){var b=a.x,d=a.y,f=a.z,j=a.w;a.x=this.n11*b+this.n12*d+this.n13*f+this.n14*j;a.y=this.n21*b+this.n22*d+this.n23*f+this.n24*j;a.z=this.n31*b+this.n32*d+this.n33*f+this.n34*j;a.w=this.n41*b+this.n42*d+this.n43*f+this.n44*j;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11* +a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,f=a.n12,j=a.n13,m=a.n14,n=a.n21,l=a.n22,o=a.n23,c=a.n24,E=a.n31,C=a.n32,x=a.n33,z=a.n34,H=a.n41,G=a.n42,J=a.n43,L=a.n44,M=b.n11,u=b.n12,e=b.n13,k=b.n14,g=b.n21,q=b.n22,h=b.n23,i=b.n24,r=b.n31,p=b.n32,D=b.n33,w=b.n34,I=b.n41,S=b.n42,t=b.n43, +O=b.n44;this.n11=d*M+f*g+j*r+m*I;this.n12=d*u+f*q+j*p+m*S;this.n13=d*e+f*h+j*D+m*t;this.n14=d*k+f*i+j*w+m*O;this.n21=n*M+l*g+o*r+c*I;this.n22=n*u+l*q+o*p+c*S;this.n23=n*e+l*h+o*D+c*t;this.n24=n*k+l*i+o*w+c*O;this.n31=E*M+C*g+x*r+z*I;this.n32=E*u+C*q+x*p+z*S;this.n33=E*e+C*h+x*D+z*t;this.n34=E*k+C*i+x*w+z*O;this.n41=H*M+G*g+J*r+L*I;this.n42=H*u+G*q+J*p+L*S;this.n43=H*e+G*h+J*D+L*t;this.n44=H*k+G*i+J*w+L*O},multiplySelf:function(a){var b=this.n11,d=this.n12,f=this.n13,j=this.n14,m=this.n21,n=this.n22, +l=this.n23,o=this.n24,c=this.n31,E=this.n32,C=this.n33,x=this.n34,z=this.n41,H=this.n42,G=this.n43,J=this.n44;this.n11=b*a.n11+d*a.n21+f*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+f*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+f*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+f*a.n34+j*a.n44;this.n21=m*a.n11+n*a.n21+l*a.n31+o*a.n41;this.n22=m*a.n12+n*a.n22+l*a.n32+o*a.n42;this.n23=m*a.n13+n*a.n23+l*a.n33+o*a.n43;this.n24=m*a.n14+n*a.n24+l*a.n34+o*a.n44;this.n31=c*a.n11+E*a.n21+C*a.n31+x*a.n41;this.n32=c*a.n12+E*a.n22+ +C*a.n32+x*a.n42;this.n33=c*a.n13+E*a.n23+C*a.n33+x*a.n43;this.n34=c*a.n14+E*a.n24+C*a.n34+x*a.n44;this.n41=z*a.n11+H*a.n21+G*a.n31+J*a.n41;this.n42=z*a.n12+H*a.n22+G*a.n32+J*a.n42;this.n43=z*a.n13+H*a.n23+G*a.n33+J*a.n43;this.n44=z*a.n14+H*a.n24+G*a.n34+J*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14* -this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,g){var j=b[d];b[d]=b[g];b[g]=j}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this, +this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,f){var j=b[d];b[d]=b[f];b[f]=j}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this, "n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){return[this.n11,this.n21,this.n31,this.n41,this.n12,this.n22,this.n32,this.n42,this.n13,this.n23,this.n33,this.n43,this.n14,this.n24,this.n34,this.n44]}, -toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,b,d){var g=new THREE.Matrix4;g.n14=a;g.n24=b;g.n34=d;return g};THREE.Matrix4.scaleMatrix=function(a,b,d){var g=new THREE.Matrix4;g.n11=a;g.n22=b;g.n33=d;return g}; +toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,b,d){var f=new THREE.Matrix4;f.n14=a;f.n24=b;f.n34=d;return f};THREE.Matrix4.scaleMatrix=function(a,b,d){var f=new THREE.Matrix4;f.n11=a;f.n22=b;f.n33=d;return f}; THREE.Matrix4.rotationXMatrix=function(a){var b=new THREE.Matrix4;b.n22=b.n33=Math.cos(a);b.n32=Math.sin(a);b.n23=-b.n32;return b};THREE.Matrix4.rotationYMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n33=Math.cos(a);b.n13=Math.sin(a);b.n31=-b.n13;return b};THREE.Matrix4.rotationZMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n22=Math.cos(a);b.n21=Math.sin(a);b.n12=-b.n21;return b}; -THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,g=Math.cos(b),j=Math.sin(b),n=1-g,m=a.x,l=a.y,o=a.z;d.n11=n*m*m+g;d.n12=n*m*l-j*o;d.n13=n*m*o+j*l;d.n21=n*m*l+j*o;d.n22=n*l*l+g;d.n23=n*l*o-j*m;d.n31=n*m*o-j*l;d.n32=n*l*o+j*m;d.n33=n*o*o+g;return d}; +THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,f=Math.cos(b),j=Math.sin(b),m=1-f,n=a.x,l=a.y,o=a.z;d.n11=m*n*n+f;d.n12=m*n*l-j*o;d.n13=m*n*o+j*l;d.n21=m*n*l+j*o;d.n22=m*l*l+f;d.n23=m*l*o-j*n;d.n31=m*n*o-j*l;d.n32=m*l*o+j*n;d.n33=m*o*o+f;return d}; THREE.Matrix4.makeInvert=function(a){var b=new THREE.Matrix4;b.n11=a.n23*a.n34*a.n42-a.n24*a.n33*a.n42+a.n24*a.n32*a.n43-a.n22*a.n34*a.n43-a.n23*a.n32*a.n44+a.n22*a.n33*a.n44;b.n12=a.n14*a.n33*a.n42-a.n13*a.n34*a.n42-a.n14*a.n32*a.n43+a.n12*a.n34*a.n43+a.n13*a.n32*a.n44-a.n12*a.n33*a.n44;b.n13=a.n13*a.n24*a.n42-a.n14*a.n23*a.n42+a.n14*a.n22*a.n43-a.n12*a.n24*a.n43-a.n13*a.n22*a.n44+a.n12*a.n23*a.n44;b.n14=a.n14*a.n23*a.n32-a.n13*a.n24*a.n32-a.n14*a.n22*a.n33+a.n12*a.n24*a.n33+a.n13*a.n22*a.n34-a.n12* a.n23*a.n34;b.n21=a.n24*a.n33*a.n41-a.n23*a.n34*a.n41-a.n24*a.n31*a.n43+a.n21*a.n34*a.n43+a.n23*a.n31*a.n44-a.n21*a.n33*a.n44;b.n22=a.n13*a.n34*a.n41-a.n14*a.n33*a.n41+a.n14*a.n31*a.n43-a.n11*a.n34*a.n43-a.n13*a.n31*a.n44+a.n11*a.n33*a.n44;b.n23=a.n14*a.n23*a.n41-a.n13*a.n24*a.n41-a.n14*a.n21*a.n43+a.n11*a.n24*a.n43+a.n13*a.n21*a.n44-a.n11*a.n23*a.n44;b.n24=a.n13*a.n24*a.n31-a.n14*a.n23*a.n31+a.n14*a.n21*a.n33-a.n11*a.n24*a.n33-a.n13*a.n21*a.n34+a.n11*a.n23*a.n34;b.n31=a.n22*a.n34*a.n41-a.n24*a.n32* a.n41+a.n24*a.n31*a.n42-a.n21*a.n34*a.n42-a.n22*a.n31*a.n44+a.n21*a.n32*a.n44;b.n32=a.n14*a.n32*a.n41-a.n12*a.n34*a.n41-a.n14*a.n31*a.n42+a.n11*a.n34*a.n42+a.n12*a.n31*a.n44-a.n11*a.n32*a.n44;b.n33=a.n13*a.n24*a.n41-a.n14*a.n22*a.n41+a.n14*a.n21*a.n42-a.n11*a.n24*a.n42-a.n12*a.n21*a.n44+a.n11*a.n22*a.n44;b.n34=a.n14*a.n22*a.n31-a.n12*a.n24*a.n31-a.n14*a.n21*a.n32+a.n11*a.n24*a.n32+a.n12*a.n21*a.n34-a.n11*a.n22*a.n34;b.n41=a.n23*a.n32*a.n41-a.n22*a.n33*a.n41-a.n23*a.n31*a.n42+a.n21*a.n33*a.n42+a.n22* a.n31*a.n43-a.n21*a.n32*a.n43;b.n42=a.n12*a.n33*a.n41-a.n13*a.n32*a.n41+a.n13*a.n31*a.n42-a.n11*a.n33*a.n42-a.n12*a.n31*a.n43+a.n11*a.n32*a.n43;b.n43=a.n13*a.n22*a.n41-a.n12*a.n23*a.n41-a.n13*a.n21*a.n42+a.n11*a.n23*a.n42+a.n12*a.n21*a.n43-a.n11*a.n22*a.n43;b.n44=a.n12*a.n23*a.n31-a.n13*a.n22*a.n31+a.n13*a.n21*a.n32-a.n11*a.n23*a.n32-a.n12*a.n21*a.n33+a.n11*a.n22*a.n33;b.multiplyScalar(1/a.determinant());return b}; -THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],g=-b[10]*b[1]+b[2]*b[9],j=b[6]*b[1]-b[2]*b[5],n=-b[10]*b[4]+b[6]*b[8],m=b[10]*b[0]-b[2]*b[8],l=-b[6]*b[0]+b[2]*b[4],o=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],F=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*n+b[2]*o;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*g;a.m[2]=b*j;a.m[3]=b*n;a.m[4]=b*m;a.m[5]=b*l;a.m[6]=b*o;a.m[7]=b*c;a.m[8]=b*F;return a}; -THREE.Matrix4.makeFrustum=function(a,b,d,g,j,n){var m,l,o;m=new THREE.Matrix4;l=2*j/(b-a);o=2*j/(g-d);a=(b+a)/(b-a);d=(g+d)/(g-d);g=-(n+j)/(n-j);j=-2*n*j/(n-j);m.n11=l;m.n12=0;m.n13=a;m.n14=0;m.n21=0;m.n22=o;m.n23=d;m.n24=0;m.n31=0;m.n32=0;m.n33=g;m.n34=j;m.n41=0;m.n42=0;m.n43=-1;m.n44=0;return m};THREE.Matrix4.makePerspective=function(a,b,d,g){var j;a=d*Math.tan(a*Math.PI/360);j=-a;return THREE.Matrix4.makeFrustum(j*b,a*b,j,a,d,g)}; -THREE.Matrix4.makeOrtho=function(a,b,d,g,j,n){var m,l,o,c;m=new THREE.Matrix4;l=b-a;o=d-g;c=n-j;a=(b+a)/l;d=(d+g)/o;j=(n+j)/c;m.n11=2/l;m.n12=0;m.n13=0;m.n14=-a;m.n21=0;m.n22=2/o;m.n23=0;m.n24=-d;m.n31=0;m.n32=0;m.n33=-2/c;m.n34=-j;m.n41=0;m.n42=0;m.n43=0;m.n44=1;return m}; -THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}}; -THREE.Face3=function(a,b,d,g,j){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=g instanceof THREE.Vector3?g:new THREE.Vector3;this.vertexNormals=g instanceof Array?g:[];this.material=j instanceof Array?j:[j]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}}; -THREE.Face4=function(a,b,d,g,j,n){this.a=a;this.b=b;this.c=d;this.d=g;this.centroid=new THREE.Vector3;this.normal=j instanceof THREE.Vector3?j:new THREE.Vector3;this.vertexNormals=j instanceof Array?j:[];this.material=n instanceof Array?n:[n]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0}; -THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={}}; +THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],f=-b[10]*b[1]+b[2]*b[9],j=b[6]*b[1]-b[2]*b[5],m=-b[10]*b[4]+b[6]*b[8],n=b[10]*b[0]-b[2]*b[8],l=-b[6]*b[0]+b[2]*b[4],o=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],E=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*m+b[2]*o;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*f;a.m[2]=b*j;a.m[3]=b*m;a.m[4]=b*n;a.m[5]=b*l;a.m[6]=b*o;a.m[7]=b*c;a.m[8]=b*E;return a}; +THREE.Matrix4.makeFrustum=function(a,b,d,f,j,m){var n,l,o;n=new THREE.Matrix4;l=2*j/(b-a);o=2*j/(f-d);a=(b+a)/(b-a);d=(f+d)/(f-d);f=-(m+j)/(m-j);j=-2*m*j/(m-j);n.n11=l;n.n12=0;n.n13=a;n.n14=0;n.n21=0;n.n22=o;n.n23=d;n.n24=0;n.n31=0;n.n32=0;n.n33=f;n.n34=j;n.n41=0;n.n42=0;n.n43=-1;n.n44=0;return n};THREE.Matrix4.makePerspective=function(a,b,d,f){var j;a=d*Math.tan(a*Math.PI/360);j=-a;return THREE.Matrix4.makeFrustum(j*b,a*b,j,a,d,f)}; +THREE.Matrix4.makeOrtho=function(a,b,d,f,j,m){var n,l,o,c;n=new THREE.Matrix4;l=b-a;o=d-f;c=m-j;a=(b+a)/l;d=(d+f)/o;j=(m+j)/c;n.n11=2/l;n.n12=0;n.n13=0;n.n14=-a;n.n21=0;n.n22=2/o;n.n23=0;n.n24=-d;n.n31=0;n.n32=0;n.n33=-2/c;n.n34=-j;n.n41=0;n.n42=0;n.n43=0;n.n44=1;return n}; +THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.tangent=new THREE.Vector4;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}}; +THREE.Face3=function(a,b,d,f,j){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=f instanceof THREE.Vector3?f:new THREE.Vector3;this.vertexNormals=f instanceof Array?f:[];this.material=j instanceof Array?j:[j]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}}; +THREE.Face4=function(a,b,d,f,j,m){this.a=a;this.b=b;this.c=d;this.d=f;this.centroid=new THREE.Vector3;this.normal=j instanceof THREE.Vector3?j:new THREE.Vector3;this.vertexNormals=j instanceof Array?j:[];this.material=m instanceof Array?m:[m]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0}; +THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={};this.hasTangents=false}; THREE.Geometry.prototype={computeCentroids:function(){var a,b,d;a=0;for(b=this.faces.length;a0){this.bbox={x:[this.vertices[0].position.x, -this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;athis.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.ythis.bbox.y[1])this.bbox.y[1]=vertex.position.y; -if(vertex.position.zthis.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(F){var D=[];b=0;for(d=F.length;b65535){c[l].counter+=1;o=c[l].hash+"_"+c[l].counter;if(this.geometryChunks[o]==undefined)this.geometryChunks[o]={faces:[],material:m,vertices:0}}this.geometryChunks[o].faces.push(g);this.geometryChunks[o].vertices+=n}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}}; -THREE.Camera=function(a,b,d,g){this.position=new THREE.Vector3(0,0,0);this.target={position:new THREE.Vector3(0,0,0)};this.up=new THREE.Vector3(0,1,0);this.matrix=new THREE.Matrix4;this.projectionMatrix=THREE.Matrix4.makePerspective(a,b,d,g);this.autoUpdateMatrix=true;this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.toString=function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)}; +d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,f,j,m,n,l=new THREE.Vector3,o=new THREE.Vector3;f=0;for(j=this.vertices.length;f0){this.bbox={x:[this.vertices[0].position.x,this.vertices[0].position.x], +y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;athis.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.ythis.bbox.y[1])this.bbox.y[1]=vertex.position.y;if(vertex.position.zthis.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(E){var C=[];b=0;for(d=E.length;b65535){c[l].counter+=1;o=c[l].hash+"_"+c[l].counter;if(this.geometryChunks[o]==undefined)this.geometryChunks[o]={faces:[],material:n,vertices:0}}this.geometryChunks[o].faces.push(f);this.geometryChunks[o].vertices+=m}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}}; +THREE.Camera=function(a,b,d,f){this.position=new THREE.Vector3(0,0,0);this.target={position:new THREE.Vector3(0,0,0)};this.up=new THREE.Vector3(0,1,0);this.matrix=new THREE.Matrix4;this.projectionMatrix=THREE.Matrix4.makePerspective(a,b,d,f);this.autoUpdateMatrix=true;this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.toString=function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)}; THREE.AmbientLight=function(a){THREE.Light.call(this,a)};THREE.AmbientLight.prototype=new THREE.Light;THREE.AmbientLight.prototype.constructor=THREE.AmbientLight;THREE.DirectionalLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3(0,1,0);this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.DirectionalLight; THREE.PointLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3;this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.PointLight; THREE.Object3D=function(){this.id=THREE.Object3DCounter.value++;this.position=new THREE.Vector3;this.rotation=new THREE.Vector3;this.scale=new THREE.Vector3(1,1,1);this.matrix=new THREE.Matrix4;this.translationMatrix=new THREE.Matrix4;this.rotationMatrix=new THREE.Matrix4;this.scaleMatrix=new THREE.Matrix4;this.screen=new THREE.Vector3;this.autoUpdateMatrix=this.visible=true;this.updateMatrix=function(){this.matrixPosition=THREE.Matrix4.translationMatrix(this.position.x,this.position.y,this.position.z); this.rotationMatrix=THREE.Matrix4.rotationXMatrix(this.rotation.x);this.rotationMatrix.multiplySelf(THREE.Matrix4.rotationYMatrix(this.rotation.y));this.rotationMatrix.multiplySelf(THREE.Matrix4.rotationZMatrix(this.rotation.z));this.scaleMatrix=THREE.Matrix4.scaleMatrix(this.scale.x,this.scale.y,this.scale.z);this.matrix.copy(this.matrixPosition);this.matrix.multiplySelf(this.rotationMatrix);this.matrix.multiplySelf(this.scaleMatrix)}};THREE.Object3DCounter={value:0}; THREE.Particle=function(a){THREE.Object3D.call(this);this.material=a instanceof Array?a:[a];this.autoUpdateMatrix=false};THREE.Particle.prototype=new THREE.Object3D;THREE.Particle.prototype.constructor=THREE.Particle;THREE.Line=function(a,b){THREE.Object3D.call(this);this.geometry=a;this.material=b instanceof Array?b:[b]};THREE.Line.prototype=new THREE.Object3D;THREE.Line.prototype.constructor=THREE.Line; THREE.Mesh=function(a,b,d){THREE.Object3D.call(this);this.geometry=a;this.material=b instanceof Array?b:[b];this.overdraw=this.doubleSided=this.flipSided=false;d&&this.normalizeUVs();this.geometry.computeBoundingBox()};THREE.Mesh.prototype=new THREE.Object3D;THREE.Mesh.prototype.constructor=THREE.Mesh; -THREE.Mesh.prototype.normalizeUVs=function(){var a,b,d,g,j;a=0;for(b=this.geometry.uvs.length;acolor: "+ this.color+"
opacity: "+this.opacity+"
blending: "+this.blending+"
linewidth: "+this.linewidth+"
linecap: "+this.linecap+"
linejoin: "+this.linejoin+"
)"}}; THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map= @@ -82,91 +85,93 @@ undefined)this.uniforms=a.uniforms;if(a.shading!==undefined)this.shading=a.shadi THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleBasicMaterial (
color: "+this.color+"
map: "+this.map+"
opacity: "+this.opacity+"
blending: "+ this.blending+"
)"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleCircleMaterial (
color: "+this.color+"
opacity: "+this.opacity+"
blending: "+this.blending+"
)"}}; THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}}; -THREE.Texture=function(a,b,d,g,j,n){this.image=a;this.mapping=b!==undefined?b:new THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdgeWrapping;this.wrap_t=g!==undefined?g:THREE.ClampToEdgeWrapping;this.mag_filter=j!==undefined?j:THREE.LinearFilter;this.min_filter=n!==undefined?n:THREE.LinearMipMapLinearFilter;this.toString=function(){return"THREE.Texture (
image: "+this.image+"
wrap_s: "+this.wrap_s+"
wrap_t: "+this.wrap_t+"
mag_filter: "+this.mag_filter+"
min_filter: "+ +THREE.Texture=function(a,b,d,f,j,m){this.image=a;this.mapping=b!==undefined?b:new THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdgeWrapping;this.wrap_t=f!==undefined?f:THREE.ClampToEdgeWrapping;this.mag_filter=j!==undefined?j:THREE.LinearFilter;this.min_filter=m!==undefined?m:THREE.LinearMipMapLinearFilter;this.toString=function(){return"THREE.Texture (
image: "+this.image+"
wrap_s: "+this.wrap_s+"
wrap_t: "+this.wrap_t+"
mag_filter: "+this.mag_filter+"
min_filter: "+ this.min_filter+"
)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){}; THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){}; THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}}; -THREE.Projector=function(){function a(O,v){var f=0,k=1,e=O.z+O.w,p=v.z+v.w,h=-O.z+O.w,i=-v.z+v.w;if(e>=0&&p>=0&&h>=0&&i>=0)return true;else if(e<0&&p<0||h<0&&i<0)return false;else{if(e<0)f=Math.max(f,e/(e-p));else if(p<0)k=Math.min(k,e/(e-p));if(h<0)f=Math.max(f,h/(h-i));else if(i<0)k=Math.min(k,h/(h-i));if(k0&&y.z<1}R=r.geometry.faces;e=0;for(p=R.length;e0&&w.z<1){c=D[F]=D[F]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=r.rotation.z;c.scale.x=r.scale.x*Math.abs(c.x-(w.x+v.projectionMatrix.n11)/(w.w+v.projectionMatrix.n14));c.scale.y=r.scale.y*Math.abs(c.y-(w.y+v.projectionMatrix.n22)/(w.w+v.projectionMatrix.n24));c.material=r.material;b.push(c);F++}}}b.sort(function(W,J){return J.z-W.z});return b};this.unprojectVector=function(O,v){var f=new THREE.Matrix4; -f.multiply(THREE.Matrix4.makeInvert(v.matrix),THREE.Matrix4.makeInvert(v.projectionMatrix));f.multiplyVector3(O);return O}}; -THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,g,j,n;this.domElement=document.createElement("div");this.setSize=function(m,l){d=m;g=l;j=d/2;n=g/2};this.render=function(m,l){var o,c,F,D,w,x,I,G;a=b.projectScene(m,l);o=0;for(c=a.length;o0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}else if(V instanceof THREE.PointLight){Y.sub(V.position,T);Y.normalize();V=K.dot(Y)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}}}function Na(q,T,K){if(K.opacity!=0){Da(K.opacity);ya(K.blending);var t,C,V,aa,ca,da;if(K instanceof THREE.ParticleBasicMaterial){if(K.map){aa=K.map;ca=aa.width>>1;da=aa.height>>1;C=T.scale.x*n;V=T.scale.y*m;K=C*ca;t=V*da;X.set(q.x-K, -q.y-t,q.x+K,q.y+t);if(B.instersects(X)){l.save();l.translate(q.x,q.y);l.rotate(-T.rotation);l.scale(C,-V);l.translate(-ca,-da);l.drawImage(aa,0,0);l.restore()}}}else if(K instanceof THREE.ParticleCircleMaterial){if(S){P.r=Z.r+ia.r+ja.r;P.g=Z.g+ia.g+ja.g;P.b=Z.b+ia.b+ja.b;h.r=K.color.r*P.r;h.g=K.color.g*P.g;h.b=K.color.b*P.b;h.updateStyleString()}else h.__styleString=K.color.__styleString;K=T.scale.x*n;t=T.scale.y*m;X.set(q.x-K,q.y-t,q.x+K,q.y+t);if(B.instersects(X)){C=h.__styleString;if(D!=C)l.fillStyle= -D=C;l.save();l.translate(q.x,q.y);l.rotate(-T.rotation);l.scale(K,t);l.beginPath();l.arc(0,0,1,0,La,true);l.closePath();l.fill();l.restore()}}}}function Oa(q,T,K,t){if(t.opacity!=0){Da(t.opacity);ya(t.blending);l.beginPath();l.moveTo(q.positionScreen.x,q.positionScreen.y);l.lineTo(T.positionScreen.x,T.positionScreen.y);l.closePath();if(t instanceof THREE.LineBasicMaterial){h.__styleString=t.color.__styleString;q=t.linewidth;if(w!=q)l.lineWidth=w=q;q=h.__styleString;if(F!=q)l.strokeStyle=F=q;l.stroke(); -X.inflate(t.linewidth*2)}}}function Ha(q,T,K,t,C,V){if(C.opacity!=0){Da(C.opacity);ya(C.blending);O=q.positionScreen.x;v=q.positionScreen.y;f=T.positionScreen.x;k=T.positionScreen.y;e=K.positionScreen.x;p=K.positionScreen.y;l.beginPath();l.moveTo(O,v);l.lineTo(f,k);l.lineTo(e,p);l.lineTo(O,v);l.closePath();if(C instanceof THREE.MeshBasicMaterial)if(C.map)C.map.image.loaded&&C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,k,e,p,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u, -t.uvs[2].v);else if(C.env_map){if(C.env_map.image.loaded)if(C.env_map.mapping instanceof THREE.SphericalReflectionMapping){q=wa.matrix;Y.copy(t.vertexNormalsWorld[0]);R=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;y=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[1]);z=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;E=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[2]);W=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;J=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;qa(O,v,f,k,e,p, -C.env_map.image,R,y,z,E,W,J)}}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString);else if(C instanceof THREE.MeshLambertMaterial){if(C.map&&!C.wireframe){C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,k,e,p,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);ya(THREE.SubtractiveBlending)}if(S)if(!C.wireframe&&C.shading==THREE.SmoothShading&&t.vertexNormalsWorld.length==3){i.r=s.r=r.r=Z.r;i.g=s.g=r.g=Z.g;i.b=s.b=r.b=Z.b;xa(V,t.v1.positionWorld, -t.vertexNormalsWorld[0],i);xa(V,t.v2.positionWorld,t.vertexNormalsWorld[1],s);xa(V,t.v3.positionWorld,t.vertexNormalsWorld[2],r);M.r=(s.r+r.r)*0.5;M.g=(s.g+r.g)*0.5;M.b=(s.b+r.b)*0.5;u=Ia(i,s,r,M);qa(O,v,f,k,e,p,u,0,0,1,0,0,1)}else{P.r=Z.r;P.g=Z.g;P.b=Z.b;xa(V,t.centroidWorld,t.normalWorld,P);h.r=C.color.r*P.r;h.g=C.color.g*P.g;h.b=C.color.b*P.b;h.updateStyleString();C.wireframe?za(h.__styleString,C.wireframe_linewidth):Aa(h.__styleString)}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth): -Aa(C.color.__styleString)}else if(C instanceof THREE.MeshDepthMaterial){A=C.__2near;H=C.__farPlusNear;Q=C.__farMinusNear;i.r=i.g=i.b=1-A/(H-q.positionScreen.z*Q);s.r=s.g=s.b=1-A/(H-T.positionScreen.z*Q);r.r=r.g=r.b=1-A/(H-K.positionScreen.z*Q);M.r=(s.r+r.r)*0.5;M.g=(s.g+r.g)*0.5;M.b=(s.b+r.b)*0.5;u=Ia(i,s,r,M);qa(O,v,f,k,e,p,u,0,0,1,0,0,1)}else if(C instanceof THREE.MeshNormalMaterial){h.r=Ea(t.normalWorld.x);h.g=Ea(t.normalWorld.y);h.b=Ea(t.normalWorld.z);h.updateStyleString();C.wireframe?za(h.__styleString, -C.wireframe_linewidth):Aa(h.__styleString)}}}function za(q,T){if(F!=q)l.strokeStyle=F=q;if(w!=T)l.lineWidth=w=T;l.stroke();X.inflate(T*2)}function Aa(q){if(D!=q)l.fillStyle=D=q;l.fill()}function qa(q,T,K,t,C,V,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;K-=q;t-=T;C-=q;V-=T;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha);ka=(ta*K-ha*C)*ga;ha=(ta*t-ha*V)*ga;K=(ra*C-sa*K)*ga;t=(ra*V-sa*t)*ga;q=q-ka*ca-K*da;T=T-ha*ca-t*da;l.save();l.transform(ka, -ha,K,t,q,T);l.clip();l.drawImage(aa,0,0);l.restore()}function Da(q){if(o!=q)l.globalAlpha=o=q}function ya(q){if(c!=q){switch(q){case THREE.NormalBlending:l.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:l.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:l.globalCompositeOperation="darker"}c=q}}function Ia(q,T,K,t){ba[0]=I(0,x(255,~~(q.r*255)));ba[1]=I(0,x(255,~~(q.g*255)));ba[2]=I(0,x(255,~~(q.b*255)));ba[4]=I(0,x(255,~~(T.r*255)));ba[5]=I(0,x(255, -~~(T.g*255)));ba[6]=I(0,x(255,~~(T.b*255)));ba[8]=I(0,x(255,~~(K.r*255)));ba[9]=I(0,x(255,~~(K.g*255)));ba[10]=I(0,x(255,~~(K.b*255)));ba[12]=I(0,x(255,~~(t.r*255)));ba[13]=I(0,x(255,~~(t.g*255)));ba[14]=I(0,x(255,~~(t.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(q){return q<0?x((1+q)*0.5,0.5):0.5+x(q*0.5,0.5)}function Fa(q,T){var K=T.x-q.x,t=T.y-q.y,C=1/Math.sqrt(K*K+t*t);K*=C;t*=C;T.x+=K;T.y+=t;q.x-=K;q.y-=t}var Ba,Ja,$,ea,ma,Ga,Ka,ua;l.setTransform(1,0,0,-1,n,m); -this.autoClear&&this.clear();a=b.projectScene(fa,wa);(S=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba0){E.r+=B.color.r*U;E.g+=B.color.g*U;E.b+=B.color.b*U}}else if(B instanceof THREE.PointLight){i.sub(B.position,z.centroidWorld);i.normalize();U=z.normalWorld.dot(i)*B.intensity;if(U>0){E.r+=B.color.r*U;E.g+=B.color.g*U;E.b+=B.color.b*U}}}}function b(y,z,E,W,J,B){A=g(H++);A.setAttribute("d","M "+y.positionScreen.x+ -" "+y.positionScreen.y+" L "+z.positionScreen.x+" "+z.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+"z");if(J instanceof THREE.MeshBasicMaterial)v.__styleString=J.color.__styleString;else if(J instanceof THREE.MeshLambertMaterial)if(O){f.r=k.r;f.g=k.g;f.b=k.b;a(B,W,f);v.r=J.color.r*f.r;v.g=J.color.g*f.g;v.b=J.color.b*f.b;v.updateStyleString()}else v.__styleString=J.color.__styleString;else if(J instanceof THREE.MeshDepthMaterial){h=1-J.__2near/(J.__farPlusNear-W.z*J.__farMinusNear); -v.setRGB(h,h,h)}else J instanceof THREE.MeshNormalMaterial&&v.setRGB(j(W.normalWorld.x),j(W.normalWorld.y),j(W.normalWorld.z));J.wireframe?A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+J.wireframe_linewidth+"; stroke-opacity: "+J.opacity+"; stroke-linecap: "+J.wireframe_linecap+"; stroke-linejoin: "+J.wireframe_linejoin):A.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+J.opacity);l.appendChild(A)}function d(y,z,E,W,J,B,U){A=g(H++);A.setAttribute("d", -"M "+y.positionScreen.x+" "+y.positionScreen.y+" L "+z.positionScreen.x+" "+z.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(B instanceof THREE.MeshBasicMaterial)v.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshLambertMaterial)if(O){f.r=k.r;f.g=k.g;f.b=k.b;a(U,J,f);v.r=B.color.r*f.r;v.g=B.color.g*f.g;v.b=B.color.b*f.b;v.updateStyleString()}else v.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshDepthMaterial){h= -1-B.__2near/(B.__farPlusNear-J.z*B.__farMinusNear);v.setRGB(h,h,h)}else B instanceof THREE.MeshNormalMaterial&&v.setRGB(j(J.normalWorld.x),j(J.normalWorld.y),j(J.normalWorld.z));B.wireframe?A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+B.wireframe_linewidth+"; stroke-opacity: "+B.opacity+"; stroke-linecap: "+B.wireframe_linecap+"; stroke-linejoin: "+B.wireframe_linejoin):A.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+B.opacity);l.appendChild(A)} -function g(y){if(s[y]==null){s[y]=document.createElementNS("http://www.w3.org/2000/svg","path");R==0&&s[y].setAttribute("shape-rendering","crispEdges");return s[y]}return s[y]}function j(y){return y<0?Math.min((1+y)*0.5,0.5):0.5+Math.min(y*0.5,0.5)}var n=null,m=new THREE.Projector,l=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,F,D,w,x,I,G,L=new THREE.Rectangle,N=new THREE.Rectangle,O=false,v=new THREE.Color(16777215),f=new THREE.Color(16777215),k=new THREE.Color(0),e=new THREE.Color(0), -p=new THREE.Color(0),h,i=new THREE.Vector3,s=[],r=[],M=[],A,H,Q,u,R=1;this.domElement=l;this.autoClear=true;this.setQuality=function(y){switch(y){case "high":R=1;break;case "low":R=0}};this.setSize=function(y,z){o=y;c=z;F=o/2;D=c/2;l.setAttribute("viewBox",-F+" "+-D+" "+o+" "+c);l.setAttribute("width",o);l.setAttribute("height",c);L.set(-F,-D,F,D)};this.clear=function(){for(;l.childNodes.length>0;)l.removeChild(l.childNodes[0])};this.render=function(y,z){var E,W,J,B,U,X,S,P;this.autoClear&&this.clear(); -n=m.projectScene(y,z);u=Q=H=0;if(O=y.lights.length>0){S=y.lights;k.setRGB(0,0,0);e.setRGB(0,0,0);p.setRGB(0,0,0);E=0;for(W=S.length;E=0&&c.enableVertexAttribArray(f.attributes[h])}}function m(f,k){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,k);c.compileShader(e);if(!c.getShaderParameter(e, -c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));return null}return e}function l(f){switch(f){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST; -case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var o=document.createElement("canvas"),c,F,D,w=new THREE.Matrix4,x,I=new Float32Array(16),G=new Float32Array(16),L=new Float32Array(16),N=new Float32Array(9),O=new Float32Array(16);a=function(f,k){if(f){var e,p,h,i=pointLights=maxDirLights=maxPointLights=0;e=0;for(p=f.lights.length;e=0&&q>=0&&h>=0&&i>=0)return true;else if(g<0&&q<0||h<0&&i<0)return false;else{if(g<0)e=Math.max(e,g/(g-q));else if(q<0)k=Math.min(k,g/(g-q));if(h<0)e=Math.max(e,h/(h-i));else if(i<0)k=Math.min(k,h/(h-i));if(k0&&B.z<1}O=p.geometry.faces;g=0;for(q=O.length;g0&&x.z<1){c=C[E]=C[E]||new THREE.RenderableParticle;c.x=x.x/x.w;c.y=x.y/x.w;c.z=x.z;c.rotation=p.rotation.z;c.scale.x=p.scale.x*Math.abs(c.x-(x.x+u.projectionMatrix.n11)/(x.w+u.projectionMatrix.n14));c.scale.y=p.scale.y*Math.abs(c.y-(x.y+u.projectionMatrix.n22)/(x.w+u.projectionMatrix.n24));c.material=p.material;b.push(c);E++}}}b.sort(function(K,y){return y.z-K.z});return b};this.unprojectVector=function(M,u){var e=new THREE.Matrix4; +e.multiply(THREE.Matrix4.makeInvert(u.matrix),THREE.Matrix4.makeInvert(u.projectionMatrix));e.multiplyVector3(M);return M}}; +THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,f,j,m;this.domElement=document.createElement("div");this.setSize=function(n,l){d=n;f=l;j=d/2;m=f/2};this.render=function(n,l){var o,c,E,C,x,z,H,G;a=b.projectScene(n,l);o=0;for(c=a.length;o0){v.r+=aa.r*W;v.g+=aa.g*W;v.b+=aa.b*W}}else if(W instanceof THREE.PointLight){Y.sub(W.position,U);Y.normalize();W=N.dot(Y)*ca;if(W>0){v.r+=aa.r*W;v.g+=aa.g*W;v.b+=aa.b*W}}}}function Na(s,U,N){if(N.opacity!=0){Da(N.opacity);ya(N.blending);var v,F,W,aa,ca,da;if(N instanceof THREE.ParticleBasicMaterial){if(N.map){aa=N.map;ca=aa.width>>1;da=aa.height>>1;F=U.scale.x*m;W=U.scale.y*n;N=F*ca;v=W*da;X.set(s.x-N, +s.y-v,s.x+N,s.y+v);if(A.instersects(X)){l.save();l.translate(s.x,s.y);l.rotate(-U.rotation);l.scale(F,-W);l.translate(-ca,-da);l.drawImage(aa,0,0);l.restore()}}}else if(N instanceof THREE.ParticleCircleMaterial){if(T){R.r=Z.r+ia.r+ja.r;R.g=Z.g+ia.g+ja.g;R.b=Z.b+ia.b+ja.b;h.r=N.color.r*R.r;h.g=N.color.g*R.g;h.b=N.color.b*R.b;h.updateStyleString()}else h.__styleString=N.color.__styleString;N=U.scale.x*m;v=U.scale.y*n;X.set(s.x-N,s.y-v,s.x+N,s.y+v);if(A.instersects(X)){F=h.__styleString;if(C!=F)l.fillStyle= +C=F;l.save();l.translate(s.x,s.y);l.rotate(-U.rotation);l.scale(N,v);l.beginPath();l.arc(0,0,1,0,La,true);l.closePath();l.fill();l.restore()}}}}function Oa(s,U,N,v){if(v.opacity!=0){Da(v.opacity);ya(v.blending);l.beginPath();l.moveTo(s.positionScreen.x,s.positionScreen.y);l.lineTo(U.positionScreen.x,U.positionScreen.y);l.closePath();if(v instanceof THREE.LineBasicMaterial){h.__styleString=v.color.__styleString;s=v.linewidth;if(x!=s)l.lineWidth=x=s;s=h.__styleString;if(E!=s)l.strokeStyle=E=s;l.stroke(); +X.inflate(v.linewidth*2)}}}function Ha(s,U,N,v,F,W){if(F.opacity!=0){Da(F.opacity);ya(F.blending);M=s.positionScreen.x;u=s.positionScreen.y;e=U.positionScreen.x;k=U.positionScreen.y;g=N.positionScreen.x;q=N.positionScreen.y;l.beginPath();l.moveTo(M,u);l.lineTo(e,k);l.lineTo(g,q);l.lineTo(M,u);l.closePath();if(F instanceof THREE.MeshBasicMaterial)if(F.map)F.map.image.loaded&&F.map.mapping instanceof THREE.UVMapping&&qa(M,u,e,k,g,q,F.map.image,v.uvs[0].u,v.uvs[0].v,v.uvs[1].u,v.uvs[1].v,v.uvs[2].u, +v.uvs[2].v);else if(F.env_map){if(F.env_map.image.loaded)if(F.env_map.mapping instanceof THREE.SphericalReflectionMapping){s=wa.matrix;Y.copy(v.vertexNormalsWorld[0]);O=(Y.x*s.n11+Y.y*s.n12+Y.z*s.n13)*0.5+0.5;B=-(Y.x*s.n21+Y.y*s.n22+Y.z*s.n23)*0.5+0.5;Y.copy(v.vertexNormalsWorld[1]);P=(Y.x*s.n11+Y.y*s.n12+Y.z*s.n13)*0.5+0.5;Q=-(Y.x*s.n21+Y.y*s.n22+Y.z*s.n23)*0.5+0.5;Y.copy(v.vertexNormalsWorld[2]);K=(Y.x*s.n11+Y.y*s.n12+Y.z*s.n13)*0.5+0.5;y=-(Y.x*s.n21+Y.y*s.n22+Y.z*s.n23)*0.5+0.5;qa(M,u,e,k,g,q, +F.env_map.image,O,B,P,Q,K,y)}}else F.wireframe?za(F.color.__styleString,F.wireframe_linewidth):Aa(F.color.__styleString);else if(F instanceof THREE.MeshLambertMaterial){if(F.map&&!F.wireframe){F.map.mapping instanceof THREE.UVMapping&&qa(M,u,e,k,g,q,F.map.image,v.uvs[0].u,v.uvs[0].v,v.uvs[1].u,v.uvs[1].v,v.uvs[2].u,v.uvs[2].v);ya(THREE.SubtractiveBlending)}if(T)if(!F.wireframe&&F.shading==THREE.SmoothShading&&v.vertexNormalsWorld.length==3){i.r=r.r=p.r=Z.r;i.g=r.g=p.g=Z.g;i.b=r.b=p.b=Z.b;xa(W,v.v1.positionWorld, +v.vertexNormalsWorld[0],i);xa(W,v.v2.positionWorld,v.vertexNormalsWorld[1],r);xa(W,v.v3.positionWorld,v.vertexNormalsWorld[2],p);D.r=(r.r+p.r)*0.5;D.g=(r.g+p.g)*0.5;D.b=(r.b+p.b)*0.5;t=Ia(i,r,p,D);qa(M,u,e,k,g,q,t,0,0,1,0,0,1)}else{R.r=Z.r;R.g=Z.g;R.b=Z.b;xa(W,v.centroidWorld,v.normalWorld,R);h.r=F.color.r*R.r;h.g=F.color.g*R.g;h.b=F.color.b*R.b;h.updateStyleString();F.wireframe?za(h.__styleString,F.wireframe_linewidth):Aa(h.__styleString)}else F.wireframe?za(F.color.__styleString,F.wireframe_linewidth): +Aa(F.color.__styleString)}else if(F instanceof THREE.MeshDepthMaterial){w=F.__2near;I=F.__farPlusNear;S=F.__farMinusNear;i.r=i.g=i.b=1-w/(I-s.positionScreen.z*S);r.r=r.g=r.b=1-w/(I-U.positionScreen.z*S);p.r=p.g=p.b=1-w/(I-N.positionScreen.z*S);D.r=(r.r+p.r)*0.5;D.g=(r.g+p.g)*0.5;D.b=(r.b+p.b)*0.5;t=Ia(i,r,p,D);qa(M,u,e,k,g,q,t,0,0,1,0,0,1)}else if(F instanceof THREE.MeshNormalMaterial){h.r=Ea(v.normalWorld.x);h.g=Ea(v.normalWorld.y);h.b=Ea(v.normalWorld.z);h.updateStyleString();F.wireframe?za(h.__styleString, +F.wireframe_linewidth):Aa(h.__styleString)}}}function za(s,U){if(E!=s)l.strokeStyle=E=s;if(x!=U)l.lineWidth=x=U;l.stroke();X.inflate(U*2)}function Aa(s){if(C!=s)l.fillStyle=C=s;l.fill()}function qa(s,U,N,v,F,W,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;N-=s;v-=U;F-=s;W-=U;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha);ka=(ta*N-ha*F)*ga;ha=(ta*v-ha*W)*ga;N=(ra*F-sa*N)*ga;v=(ra*W-sa*v)*ga;s=s-ka*ca-N*da;U=U-ha*ca-v*da;l.save();l.transform(ka, +ha,N,v,s,U);l.clip();l.drawImage(aa,0,0);l.restore()}function Da(s){if(o!=s)l.globalAlpha=o=s}function ya(s){if(c!=s){switch(s){case THREE.NormalBlending:l.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:l.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:l.globalCompositeOperation="darker"}c=s}}function Ia(s,U,N,v){ba[0]=H(0,z(255,~~(s.r*255)));ba[1]=H(0,z(255,~~(s.g*255)));ba[2]=H(0,z(255,~~(s.b*255)));ba[4]=H(0,z(255,~~(U.r*255)));ba[5]=H(0,z(255, +~~(U.g*255)));ba[6]=H(0,z(255,~~(U.b*255)));ba[8]=H(0,z(255,~~(N.r*255)));ba[9]=H(0,z(255,~~(N.g*255)));ba[10]=H(0,z(255,~~(N.b*255)));ba[12]=H(0,z(255,~~(v.r*255)));ba[13]=H(0,z(255,~~(v.g*255)));ba[14]=H(0,z(255,~~(v.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(s){return s<0?z((1+s)*0.5,0.5):0.5+z(s*0.5,0.5)}function Fa(s,U){var N=U.x-s.x,v=U.y-s.y,F=1/Math.sqrt(N*N+v*v);N*=F;v*=F;U.x+=N;U.y+=v;s.x-=N;s.y-=v}var Ba,Ja,$,ea,ma,Ga,Ka,ua;l.setTransform(1,0,0,-1,m,n); +this.autoClear&&this.clear();a=b.projectScene(fa,wa);(T=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba0){Q.r+=A.color.r*V;Q.g+=A.color.g*V;Q.b+=A.color.b*V}}else if(A instanceof THREE.PointLight){i.sub(A.position,P.centroidWorld);i.normalize();V=P.normalWorld.dot(i)*A.intensity;if(V>0){Q.r+=A.color.r*V;Q.g+=A.color.g*V;Q.b+=A.color.b*V}}}}function b(B,P,Q,K,y,A){w=f(I++);w.setAttribute("d","M "+B.positionScreen.x+ +" "+B.positionScreen.y+" L "+P.positionScreen.x+" "+P.positionScreen.y+" L "+Q.positionScreen.x+","+Q.positionScreen.y+"z");if(y instanceof THREE.MeshBasicMaterial)u.__styleString=y.color.__styleString;else if(y instanceof THREE.MeshLambertMaterial)if(M){e.r=k.r;e.g=k.g;e.b=k.b;a(A,K,e);u.r=y.color.r*e.r;u.g=y.color.g*e.g;u.b=y.color.b*e.b;u.updateStyleString()}else u.__styleString=y.color.__styleString;else if(y instanceof THREE.MeshDepthMaterial){h=1-y.__2near/(y.__farPlusNear-K.z*y.__farMinusNear); +u.setRGB(h,h,h)}else y instanceof THREE.MeshNormalMaterial&&u.setRGB(j(K.normalWorld.x),j(K.normalWorld.y),j(K.normalWorld.z));y.wireframe?w.setAttribute("style","fill: none; stroke: "+u.__styleString+"; stroke-width: "+y.wireframe_linewidth+"; stroke-opacity: "+y.opacity+"; stroke-linecap: "+y.wireframe_linecap+"; stroke-linejoin: "+y.wireframe_linejoin):w.setAttribute("style","fill: "+u.__styleString+"; fill-opacity: "+y.opacity);l.appendChild(w)}function d(B,P,Q,K,y,A,V){w=f(I++);w.setAttribute("d", +"M "+B.positionScreen.x+" "+B.positionScreen.y+" L "+P.positionScreen.x+" "+P.positionScreen.y+" L "+Q.positionScreen.x+","+Q.positionScreen.y+" L "+K.positionScreen.x+","+K.positionScreen.y+"z");if(A instanceof THREE.MeshBasicMaterial)u.__styleString=A.color.__styleString;else if(A instanceof THREE.MeshLambertMaterial)if(M){e.r=k.r;e.g=k.g;e.b=k.b;a(V,y,e);u.r=A.color.r*e.r;u.g=A.color.g*e.g;u.b=A.color.b*e.b;u.updateStyleString()}else u.__styleString=A.color.__styleString;else if(A instanceof THREE.MeshDepthMaterial){h= +1-A.__2near/(A.__farPlusNear-y.z*A.__farMinusNear);u.setRGB(h,h,h)}else A instanceof THREE.MeshNormalMaterial&&u.setRGB(j(y.normalWorld.x),j(y.normalWorld.y),j(y.normalWorld.z));A.wireframe?w.setAttribute("style","fill: none; stroke: "+u.__styleString+"; stroke-width: "+A.wireframe_linewidth+"; stroke-opacity: "+A.opacity+"; stroke-linecap: "+A.wireframe_linecap+"; stroke-linejoin: "+A.wireframe_linejoin):w.setAttribute("style","fill: "+u.__styleString+"; fill-opacity: "+A.opacity);l.appendChild(w)} +function f(B){if(r[B]==null){r[B]=document.createElementNS("http://www.w3.org/2000/svg","path");O==0&&r[B].setAttribute("shape-rendering","crispEdges");return r[B]}return r[B]}function j(B){return B<0?Math.min((1+B)*0.5,0.5):0.5+Math.min(B*0.5,0.5)}var m=null,n=new THREE.Projector,l=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,E,C,x,z,H,G,J=new THREE.Rectangle,L=new THREE.Rectangle,M=false,u=new THREE.Color(16777215),e=new THREE.Color(16777215),k=new THREE.Color(0),g=new THREE.Color(0), +q=new THREE.Color(0),h,i=new THREE.Vector3,r=[],p=[],D=[],w,I,S,t,O=1;this.domElement=l;this.autoClear=true;this.setQuality=function(B){switch(B){case "high":O=1;break;case "low":O=0}};this.setSize=function(B,P){o=B;c=P;E=o/2;C=c/2;l.setAttribute("viewBox",-E+" "+-C+" "+o+" "+c);l.setAttribute("width",o);l.setAttribute("height",c);J.set(-E,-C,E,C)};this.clear=function(){for(;l.childNodes.length>0;)l.removeChild(l.childNodes[0])};this.render=function(B,P){var Q,K,y,A,V,X,T,R;this.autoClear&&this.clear(); +m=n.projectScene(B,P);t=S=I=0;if(M=B.lights.length>0){T=B.lights;k.setRGB(0,0,0);g.setRGB(0,0,0);q.setRGB(0,0,0);Q=0;for(K=T.length;Q0?"#define VERTEX_TEXTURES":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n"].join("\n");c.attachShader(g,n("fragment","#ifdef GL_ES\nprecision highp float;\n#endif\nuniform mat4 viewMatrix;\n"+ +e));c.attachShader(g,n("vertex",q+k));c.linkProgram(g);c.getProgramParameter(g,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(g,c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");g.uniforms={};g.attributes={};return g}function d(e,k){if(e.image.length==6){if(!e.image.__webGLTextureCube&&!e.image.__cubeMapInitialized&&e.image.loadCount==6){e.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,e.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP, +c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var g=0;g<6;++g)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,e.image[g]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);e.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+k);c.bindTexture(c.TEXTURE_CUBE_MAP, +e.image.__webGLTextureCube)}}function f(e,k){if(!e.__webGLTexture&&e.image.loaded){e.__webGLTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,e.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,e.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,l(e.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,l(e.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,l(e.mag_filter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,l(e.min_filter));c.generateMipmap(c.TEXTURE_2D); +c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+k);c.bindTexture(c.TEXTURE_2D,e.__webGLTexture)}function j(e,k){var g,q,h;g=0;for(q=k.length;g=0&&c.enableVertexAttribArray(e.attributes[h])}}function n(e,k){var g;if(e=="fragment")g=c.createShader(c.FRAGMENT_SHADER);else if(e=="vertex")g=c.createShader(c.VERTEX_SHADER); +c.shaderSource(g,k);c.compileShader(g);if(!c.getShaderParameter(g,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(g));return null}return g}function l(e){switch(e){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR; +case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var o=document.createElement("canvas"),c,E,C,x=new THREE.Matrix4,z,H=new Float32Array(16),G=new Float32Array(16),J=new Float32Array(16),L=new Float32Array(9),M=new Float32Array(16);a=function(e,k){if(e){var g,q,h,i=pointLights=maxDirLights=maxPointLights=0;g=0;for(q=e.lights.length;g= 0.0 )": -"",k?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",k?"pointDiffuse += mColor * pointDiffuseWeight;":"",k?"pointSpecular += mSpecular * pointSpecularWeight;":"",k?"}":"",f?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"vec3 dirVector = normalize( lDirection.xyz );":"",f?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": -"",f?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",f?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",f?"float dirSpecularWeight = 0.0;":"",f?"if ( dirDotNormalHalf >= 0.0 )":"",f?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",f?"dirDiffuse += mColor * dirDiffuseWeight;":"",f?"dirSpecular += mSpecular * dirSpecularWeight;":"",f?"}":"","vec4 totalLight = mAmbient;",f?"totalLight += dirDiffuse + dirSpecular;":"",k?"totalLight += pointDiffuse + pointSpecular;": +"",k?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",k?"pointDiffuse += mColor * pointDiffuseWeight;":"",k?"pointSpecular += mSpecular * pointSpecularWeight;":"",k?"}":"",e?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",e?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",e?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",e?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",e?"vec3 dirVector = normalize( lDirection.xyz );":"",e?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": +"",e?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",e?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",e?"float dirSpecularWeight = 0.0;":"",e?"if ( dirDotNormalHalf >= 0.0 )":"",e?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",e?"dirDiffuse += mColor * dirDiffuseWeight;":"",e?"dirSpecular += mSpecular * dirSpecularWeight;":"",e?"}":"","vec4 totalLight = mAmbient;",e?"totalLight += dirDiffuse + dirSpecular;":"",k?"totalLight += pointDiffuse + pointSpecular;": "","if ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mapColor.rgb * totalLight.xyz * vLightWeighting, cubeColor.rgb, mReflectivity ), mapColor.a );\n} else {\ngl_FragColor = vec4( mapColor.rgb * cubeColor.rgb * totalLight.xyz * vLightWeighting, mapColor.a );\n}\n} else if ( material == 1 ) {\nif ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mColor.rgb * mapColor.rgb * vLightWeighting, cubeColor.rgb, mReflectivity ), mColor.a * mapColor.a );\n} else {\ngl_FragColor = vec4( mColor.rgb * mapColor.rgb * cubeColor.rgb * vLightWeighting, mColor.a * mapColor.a );\n}\n} else {\nif ( mixEnvMap ) {\ngl_FragColor = mix( mColor * mapColor, cubeColor, mReflectivity );\n} else {\ngl_FragColor = mColor * mapColor * cubeColor;\n}\n}\n}"].join("\n"); -e=b(p,e);c.useProgram(e);j(e,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);f&&j(e,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);k&&j(e,["pointLightNumber","pointLightColor", -"pointLightPosition"]);c.uniform1i(e.uniforms.enableMap,0);c.uniform1i(e.uniforms.tMap,0);c.uniform1i(e.uniforms.enableCubeMap,0);c.uniform1i(e.uniforms.tCube,1);c.uniform1i(e.uniforms.mixEnvMap,0);c.uniform1i(e.uniforms.useRefract,0);n(e,["position","normal","uv"]);return e}(a.directional,a.point);this.setSize=function(f,k){o.width=f;o.height=k;c.viewport(0,0,o.width,o.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(f,k){var e,p,h,i,s,r=[], -M=[],A=[];i=[];s=[];c.uniform1i(f.uniforms.enableLighting,k.length);e=0;for(p=k.length;e0){E.__webGLUVBuffer=c.createBuffer(); -c.bindBuffer(c.ARRAY_BUFFER,E.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(y),c.STATIC_DRAW)}E.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(H),c.STATIC_DRAW);E.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);E.__webGLFaceCount=H.length;E.__webGLLineCount=Q.length}};this.renderBuffer= -function(f,k,e,p){var h,i,s,r,M,A,H,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);H=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)H.push(u);j(e.program,H);n(e.program,["position","normal","uv"])}u=e.program}else u=D;if(u!=F){c.useProgram(u);F=u}u==D&&this.setupLights(u,k);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){s=e.wireframe; -r=e.wireframe_linewidth;f=u;k=e.uniforms;var R;for(h in k){Q=k[h].type;H=k[h].value;R=f.uniforms[h];if(Q=="i")c.uniform1i(R,H);else if(Q=="f")c.uniform1f(R,H);else if(Q=="v3")c.uniform3f(R,H.x,H.y,H.z);else if(Q=="c")c.uniform3f(R,H.r,H.g,H.b);else if(Q=="t"){c.uniform1i(R,H);if(Q=k[h].texture)Q.image instanceof Array&&Q.image.length==6?d(Q,H):g(Q,H)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){h=e.color;i=e.opacity;s=e.wireframe; -r=e.wireframe_linewidth;M=e.map;A=e.env_map;k=e.combine==THREE.MixOperation;f=e.reflectivity;Q=e.env_map&&e.env_map.mapping instanceof THREE.CubeRefractionMapping;H=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(u.uniforms.mixEnvMap,k);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,H)}if(e instanceof THREE.MeshNormalMaterial){i=e.opacity;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1i(u.uniforms.material, -4)}else if(e instanceof THREE.MeshDepthMaterial){i=e.opacity;s=e.wireframe;r=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){h=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,i);c.uniform1f(u.uniforms.mShininess, -e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);A=e.env_map}if(M){g(M,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(A){d(A,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap, -0);i=u.attributes;c.bindBuffer(c.ARRAY_BUFFER,p.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,p.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.uv>=0)if(p.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,p.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(r);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,p.__webGLLineBuffer); -c.drawElements(c.LINES,p.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,p.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,p.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,k,e,p,h,i){var s,r,M,A,H;M=0;for(A=e.material.length;M=0;e--){p=f.__webGLObjects[e].object;k==p&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,k){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(k.matrix,f.matrix);I.set(k.matrix.flatten()); -G.set(w.flatten());L.set(k.projectionMatrix.flatten());x=THREE.Matrix4.makeInvert3x3(w).transpose();N.set(x.m);O.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,I);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,L);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,N);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,O)};this.loadCamera=function(f,k){c.uniform3f(f.uniforms.cameraPosition, -k.position.x,k.position.y,k.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,k){if(f){!k||k=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK); -c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]}; -THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; +g=b(q,g);c.useProgram(g);j(g,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);e&&j(g,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);k&&j(g,["pointLightNumber","pointLightColor", +"pointLightPosition"]);c.uniform1i(g.uniforms.enableMap,0);c.uniform1i(g.uniforms.tMap,0);c.uniform1i(g.uniforms.enableCubeMap,0);c.uniform1i(g.uniforms.tCube,1);c.uniform1i(g.uniforms.mixEnvMap,0);c.uniform1i(g.uniforms.useRefract,0);m(g,["position","normal","uv"]);return g}(a.directional,a.point);this.setSize=function(e,k){o.width=e;o.height=k;c.viewport(0,0,o.width,o.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(e,k){var g,q,h,i,r,p=[], +D=[],w=[];i=[];r=[];c.uniform1i(e.uniforms.enableLighting,k.length);g=0;for(q=k.length;g0){y.__webGLUVBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,y.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(Q),c.STATIC_DRAW)}y.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(S),c.STATIC_DRAW);y.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, +y.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(t),c.STATIC_DRAW);y.__webGLFaceCount=S.length;y.__webGLLineCount=t.length}};this.renderBuffer=function(e,k,g,q){var h,i,r,p,D,w,I,S,t;if(g instanceof THREE.MeshShaderMaterial){if(!g.program){g.program=b(g.fragment_shader,g.vertex_shader);I=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(t in g.uniforms)I.push(t);j(g.program,I);m(g.program,["position","normal","uv","tangent"])}t= +g.program}else t=C;if(t!=E){c.useProgram(t);E=t}t==C&&this.setupLights(t,k);this.loadCamera(t,e);this.loadMatrices(t);if(g instanceof THREE.MeshShaderMaterial){r=g.wireframe;p=g.wireframe_linewidth;e=t;k=g.uniforms;var O;for(h in k){S=k[h].type;I=k[h].value;O=e.uniforms[h];if(S=="i")c.uniform1i(O,I);else if(S=="f")c.uniform1f(O,I);else if(S=="v3")c.uniform3f(O,I.x,I.y,I.z);else if(S=="c")c.uniform3f(O,I.r,I.g,I.b);else if(S=="t"){c.uniform1i(O,I);if(S=k[h].texture)S.image instanceof Array&&S.image.length== +6?d(S,I):f(S,I)}}}if(g instanceof THREE.MeshPhongMaterial||g instanceof THREE.MeshLambertMaterial||g instanceof THREE.MeshBasicMaterial){h=g.color;i=g.opacity;r=g.wireframe;p=g.wireframe_linewidth;D=g.map;w=g.env_map;k=g.combine==THREE.MixOperation;e=g.reflectivity;S=g.env_map&&g.env_map.mapping instanceof THREE.CubeRefractionMapping;I=g.refraction_ratio;c.uniform4f(t.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(t.uniforms.mixEnvMap,k);c.uniform1f(t.uniforms.mReflectivity,e);c.uniform1i(t.uniforms.useRefract, +S);c.uniform1f(t.uniforms.mRefractionRatio,I)}if(g instanceof THREE.MeshNormalMaterial){i=g.opacity;c.uniform1f(t.uniforms.mOpacity,i);c.uniform1i(t.uniforms.material,4)}else if(g instanceof THREE.MeshDepthMaterial){i=g.opacity;r=g.wireframe;p=g.wireframe_linewidth;c.uniform1f(t.uniforms.mOpacity,i);c.uniform1f(t.uniforms.m2Near,g.__2near);c.uniform1f(t.uniforms.mFarPlusNear,g.__farPlusNear);c.uniform1f(t.uniforms.mFarMinusNear,g.__farMinusNear);c.uniform1i(t.uniforms.material,3)}else if(g instanceof +THREE.MeshPhongMaterial){h=g.ambient;e=g.specular;g=g.shininess;c.uniform4f(t.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(t.uniforms.mSpecular,e.r,e.g,e.b,i);c.uniform1f(t.uniforms.mShininess,g);c.uniform1i(t.uniforms.material,2)}else if(g instanceof THREE.MeshLambertMaterial)c.uniform1i(t.uniforms.material,1);else if(g instanceof THREE.MeshBasicMaterial)c.uniform1i(t.uniforms.material,0);else if(g instanceof THREE.MeshCubeMaterial){c.uniform1i(t.uniforms.material,5);w=g.env_map}if(D){f(D,0);c.uniform1i(t.uniforms.tMap, +0);c.uniform1i(t.uniforms.enableMap,1)}else c.uniform1i(t.uniforms.enableMap,0);if(w){d(w,1);c.uniform1i(t.uniforms.tCube,1);c.uniform1i(t.uniforms.enableCubeMap,1)}else c.uniform1i(t.uniforms.enableCubeMap,0);i=t.attributes;c.bindBuffer(c.ARRAY_BUFFER,q.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,q.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.tangent>=0){c.bindBuffer(c.ARRAY_BUFFER,q.__webGLTangentBuffer); +c.vertexAttribPointer(i.tangent,4,c.FLOAT,false,0,0)}if(i.uv>=0)if(q.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,q.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(r){c.lineWidth(p);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLLineBuffer);c.drawElements(c.LINES,q.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,q.__webGLFaceCount,c.UNSIGNED_SHORT, +0)}};this.renderPass=function(e,k,g,q,h,i){var r,p,D,w,I;D=0;for(w=g.material.length;D=0;g--){q=e.__webGLObjects[g].object;k==q&&e.__webGLObjects.splice(g,1)}};this.setupMatrices=function(e,k){e.autoUpdateMatrix&&e.updateMatrix();x.multiply(k.matrix,e.matrix);H.set(k.matrix.flatten());G.set(x.flatten());J.set(k.projectionMatrix.flatten());z=THREE.Matrix4.makeInvert3x3(x).transpose();L.set(z.m);M.set(e.matrix.flatten())};this.loadMatrices= +function(e){c.uniformMatrix4fv(e.uniforms.viewMatrix,false,H);c.uniformMatrix4fv(e.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(e.uniforms.projectionMatrix,false,J);c.uniformMatrix3fv(e.uniforms.normalMatrix,false,L);c.uniformMatrix4fv(e.uniforms.objectMatrix,false,M)};this.loadCamera=function(e,k){c.uniform3f(e.uniforms.cameraPosition,k.position.x,k.position.y,k.position.z)};this.setBlending=function(e){switch(e){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE); +break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(e,k){if(e){!k||k=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(e=="back")c.cullFace(c.BACK);else e=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)};this.supportsVertexTextures=function(){return c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0}}; +THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null}; +THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; diff --git a/build/ThreeDebug.js b/build/ThreeDebug.js index ab26a16b..ee845525 100644 --- a/build/ThreeDebug.js +++ b/build/ThreeDebug.js @@ -5,59 +5,62 @@ THREE.Color.prototype={setRGB:function(a,b,d){this.r=a;this.g=b;this.b=d;if(this THREE.Vector2.prototype={set:function(a,b){this.x=a;this.y=b;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},unit:function(){this.multiplyScalar(1/this.length());return this},length:function(){return Math.sqrt(this.x* this.x+this.y*this.y)},lengthSq:function(){return this.x*this.x+this.y*this.y},negate:function(){this.x=-this.x;this.y=-this.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},toString:function(){return"THREE.Vector2 ("+this.x+", "+this.y+")"}};THREE.Vector3=function(a,b,d){this.x=a||0;this.y=b||0;this.z=d||0}; THREE.Vector3.prototype={set:function(a,b,d){this.x=a;this.y=b;this.z=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;return this}, -cross:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},crossSelf:function(a){var b=this.x,d=this.y,g=this.z;this.x=d*a.z-g*a.y;this.y=g*a.x-b*a.z;this.z=b*a.y-d*a.x;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/= +cross:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},crossSelf:function(a){var b=this.x,d=this.y,f=this.z;this.x=d*a.z-f*a.y;this.y=f*a.x-b*a.z;this.z=b*a.y-d*a.x;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/= a;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},distanceTo:function(a){var b=this.x-a.x,d=this.y-a.y;a=this.z-a.z;return Math.sqrt(b*b+d*d+a*a)},distanceToSquared:function(a){var b=this.x-a.x,d=this.y-a.y;a=this.z-a.z;return b*b+d*d+a*a},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},normalize:function(){var a= Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z);a>0?this.multiplyScalar(1/a):this.set(0,0,0);return this},setLength:function(a){return this.normalize().multiplyScalar(a)},isZero:function(){return Math.abs(this.x)<1.0E-4&&Math.abs(this.y)<1.0E-4&&Math.abs(this.z)<1.0E-4},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},toString:function(){return"THREE.Vector3 ( "+this.x+", "+this.y+", "+this.z+" )"}}; -THREE.Vector4=function(a,b,d,g){this.x=a||0;this.y=b||0;this.z=d||0;this.w=g||1}; -THREE.Vector4.prototype={set:function(a,b,d,g){this.x=a;this.y=b;this.z=d;this.w=g;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w; +THREE.Vector4=function(a,b,d,f){this.x=a||0;this.y=b||0;this.z=d||0;this.w=f||1}; +THREE.Vector4.prototype={set:function(a,b,d,f){this.x=a;this.y=b;this.z=d;this.w=f;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w; return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}}; THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3}; -THREE.Ray.prototype={intersectScene:function(a){var b,d,g=a.objects,j=[];a=0;for(b=g.length;a0&&L>0&&l+L<1}var d,g,j,n,m,k,o,c,F,D, -w,x=a.geometry,I=x.vertices,G=[];d=0;for(g=x.faces.length;d= -0&&Math.min(j,o.getBottom())-Math.max(d,o.getTop())>=0};this.empty=function(){k=true;j=g=d=b=0;a()};this.isEmpty=function(){return k};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+g+", top: "+d+", bottom: "+j+", width: "+n+", height: "+m+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}}; +THREE.Ray.prototype={intersectScene:function(a){var b,d,f=a.objects,j=[];a=0;for(b=f.length;a0&&J>0&&l+J<1}var d,f,j,m,n,k,o,c,E,C, +x,z=a.geometry,H=z.vertices,G=[];d=0;for(f=z.faces.length;d= +0&&Math.min(j,o.getBottom())-Math.max(d,o.getTop())>=0};this.empty=function(){k=true;j=f=d=b=0;a()};this.isEmpty=function(){return k};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+f+", top: "+d+", bottom: "+j+", width: "+m+", height: "+n+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}}; THREE.Matrix4=function(){}; THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41= -a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var g=new THREE.Vector3,j=new THREE.Vector3,n=new THREE.Vector3;n.sub(a,b).normalize();g.cross(d,n).normalize();j.cross(n,g).normalize();this.n11=g.x;this.n12=g.y;this.n13=g.z;this.n14=-g.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=n.x;this.n32=n.y;this.n33=n.z;this.n34=-n.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,g=a.z,j=1/(this.n41*b+this.n42* -d+this.n43*g+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*g+this.n14)*j;a.y=(this.n21*b+this.n22*d+this.n23*g+this.n24)*j;a.z=(this.n31*b+this.n32*d+this.n33*g+this.n34)*j;return a},multiplyVector4:function(a){var b=a.x,d=a.y,g=a.z,j=a.w;a.x=this.n11*b+this.n12*d+this.n13*g+this.n14*j;a.y=this.n21*b+this.n22*d+this.n23*g+this.n24*j;a.z=this.n31*b+this.n32*d+this.n33*g+this.n34*j;a.w=this.n41*b+this.n42*d+this.n43*g+this.n44*j;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11* -a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,n=a.n14,m=a.n21,k=a.n22,o=a.n23,c=a.n24,F=a.n31,D=a.n32,w=a.n33,x=a.n34,I=a.n41,G=a.n42,L=a.n43,N=a.n44,O=b.n11,v=b.n12,f=b.n13,l=b.n14,e=b.n21,q=b.n22,h=b.n23,i=b.n24,s=b.n31,r=b.n32,M=b.n33,B=b.n34,H=b.n41,Q=b.n42,u=b.n43, -R=b.n44;this.n11=d*O+g*e+j*s+n*H;this.n12=d*v+g*q+j*r+n*Q;this.n13=d*f+g*h+j*M+n*u;this.n14=d*l+g*i+j*B+n*R;this.n21=m*O+k*e+o*s+c*H;this.n22=m*v+k*q+o*r+c*Q;this.n23=m*f+k*h+o*M+c*u;this.n24=m*l+k*i+o*B+c*R;this.n31=F*O+D*e+w*s+x*H;this.n32=F*v+D*q+w*r+x*Q;this.n33=F*f+D*h+w*M+x*u;this.n34=F*l+D*i+w*B+x*R;this.n41=I*O+G*e+L*s+N*H;this.n42=I*v+G*q+L*r+N*Q;this.n43=I*f+G*h+L*M+N*u;this.n44=I*l+G*i+L*B+N*R},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,n=this.n21,m=this.n22, -k=this.n23,o=this.n24,c=this.n31,F=this.n32,D=this.n33,w=this.n34,x=this.n41,I=this.n42,G=this.n43,L=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=n*a.n11+m*a.n21+k*a.n31+o*a.n41;this.n22=n*a.n12+m*a.n22+k*a.n32+o*a.n42;this.n23=n*a.n13+m*a.n23+k*a.n33+o*a.n43;this.n24=n*a.n14+m*a.n24+k*a.n34+o*a.n44;this.n31=c*a.n11+F*a.n21+D*a.n31+w*a.n41;this.n32=c*a.n12+F*a.n22+ -D*a.n32+w*a.n42;this.n33=c*a.n13+F*a.n23+D*a.n33+w*a.n43;this.n34=c*a.n14+F*a.n24+D*a.n34+w*a.n44;this.n41=x*a.n11+I*a.n21+G*a.n31+L*a.n41;this.n42=x*a.n12+I*a.n22+G*a.n32+L*a.n42;this.n43=x*a.n13+I*a.n23+G*a.n33+L*a.n43;this.n44=x*a.n14+I*a.n24+G*a.n34+L*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* +a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var f=new THREE.Vector3,j=new THREE.Vector3,m=new THREE.Vector3;m.sub(a,b).normalize();f.cross(d,m).normalize();j.cross(m,f).normalize();this.n11=f.x;this.n12=f.y;this.n13=f.z;this.n14=-f.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=m.x;this.n32=m.y;this.n33=m.z;this.n34=-m.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,f=a.z,j=1/(this.n41*b+this.n42* +d+this.n43*f+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*f+this.n14)*j;a.y=(this.n21*b+this.n22*d+this.n23*f+this.n24)*j;a.z=(this.n31*b+this.n32*d+this.n33*f+this.n34)*j;return a},multiplyVector4:function(a){var b=a.x,d=a.y,f=a.z,j=a.w;a.x=this.n11*b+this.n12*d+this.n13*f+this.n14*j;a.y=this.n21*b+this.n22*d+this.n23*f+this.n24*j;a.z=this.n31*b+this.n32*d+this.n33*f+this.n34*j;a.w=this.n41*b+this.n42*d+this.n43*f+this.n44*j;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11* +a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,f=a.n12,j=a.n13,m=a.n14,n=a.n21,k=a.n22,o=a.n23,c=a.n24,E=a.n31,C=a.n32,x=a.n33,z=a.n34,H=a.n41,G=a.n42,J=a.n43,L=a.n44,M=b.n11,u=b.n12,e=b.n13,l=b.n14,g=b.n21,q=b.n22,h=b.n23,i=b.n24,s=b.n31,p=b.n32,D=b.n33,w=b.n34,I=b.n41,S=b.n42,t=b.n43, +O=b.n44;this.n11=d*M+f*g+j*s+m*I;this.n12=d*u+f*q+j*p+m*S;this.n13=d*e+f*h+j*D+m*t;this.n14=d*l+f*i+j*w+m*O;this.n21=n*M+k*g+o*s+c*I;this.n22=n*u+k*q+o*p+c*S;this.n23=n*e+k*h+o*D+c*t;this.n24=n*l+k*i+o*w+c*O;this.n31=E*M+C*g+x*s+z*I;this.n32=E*u+C*q+x*p+z*S;this.n33=E*e+C*h+x*D+z*t;this.n34=E*l+C*i+x*w+z*O;this.n41=H*M+G*g+J*s+L*I;this.n42=H*u+G*q+J*p+L*S;this.n43=H*e+G*h+J*D+L*t;this.n44=H*l+G*i+J*w+L*O},multiplySelf:function(a){var b=this.n11,d=this.n12,f=this.n13,j=this.n14,m=this.n21,n=this.n22, +k=this.n23,o=this.n24,c=this.n31,E=this.n32,C=this.n33,x=this.n34,z=this.n41,H=this.n42,G=this.n43,J=this.n44;this.n11=b*a.n11+d*a.n21+f*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+f*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+f*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+f*a.n34+j*a.n44;this.n21=m*a.n11+n*a.n21+k*a.n31+o*a.n41;this.n22=m*a.n12+n*a.n22+k*a.n32+o*a.n42;this.n23=m*a.n13+n*a.n23+k*a.n33+o*a.n43;this.n24=m*a.n14+n*a.n24+k*a.n34+o*a.n44;this.n31=c*a.n11+E*a.n21+C*a.n31+x*a.n41;this.n32=c*a.n12+E*a.n22+ +C*a.n32+x*a.n42;this.n33=c*a.n13+E*a.n23+C*a.n33+x*a.n43;this.n34=c*a.n14+E*a.n24+C*a.n34+x*a.n44;this.n41=z*a.n11+H*a.n21+G*a.n31+J*a.n41;this.n42=z*a.n12+H*a.n22+G*a.n32+J*a.n42;this.n43=z*a.n13+H*a.n23+G*a.n33+J*a.n43;this.n44=z*a.n14+H*a.n24+G*a.n34+J*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14* -this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,g){var j=b[d];b[d]=b[g];b[g]=j}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this, +this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,f){var j=b[d];b[d]=b[f];b[f]=j}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this, "n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){return[this.n11,this.n21,this.n31,this.n41,this.n12,this.n22,this.n32,this.n42,this.n13,this.n23,this.n33,this.n43,this.n14,this.n24,this.n34,this.n44]}, -toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,b,d){var g=new THREE.Matrix4;g.n14=a;g.n24=b;g.n34=d;return g};THREE.Matrix4.scaleMatrix=function(a,b,d){var g=new THREE.Matrix4;g.n11=a;g.n22=b;g.n33=d;return g}; +toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,b,d){var f=new THREE.Matrix4;f.n14=a;f.n24=b;f.n34=d;return f};THREE.Matrix4.scaleMatrix=function(a,b,d){var f=new THREE.Matrix4;f.n11=a;f.n22=b;f.n33=d;return f}; THREE.Matrix4.rotationXMatrix=function(a){var b=new THREE.Matrix4;b.n22=b.n33=Math.cos(a);b.n32=Math.sin(a);b.n23=-b.n32;return b};THREE.Matrix4.rotationYMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n33=Math.cos(a);b.n13=Math.sin(a);b.n31=-b.n13;return b};THREE.Matrix4.rotationZMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n22=Math.cos(a);b.n21=Math.sin(a);b.n12=-b.n21;return b}; -THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,g=Math.cos(b),j=Math.sin(b),n=1-g,m=a.x,k=a.y,o=a.z;d.n11=n*m*m+g;d.n12=n*m*k-j*o;d.n13=n*m*o+j*k;d.n21=n*m*k+j*o;d.n22=n*k*k+g;d.n23=n*k*o-j*m;d.n31=n*m*o-j*k;d.n32=n*k*o+j*m;d.n33=n*o*o+g;return d}; +THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,f=Math.cos(b),j=Math.sin(b),m=1-f,n=a.x,k=a.y,o=a.z;d.n11=m*n*n+f;d.n12=m*n*k-j*o;d.n13=m*n*o+j*k;d.n21=m*n*k+j*o;d.n22=m*k*k+f;d.n23=m*k*o-j*n;d.n31=m*n*o-j*k;d.n32=m*k*o+j*n;d.n33=m*o*o+f;return d}; THREE.Matrix4.makeInvert=function(a){var b=new THREE.Matrix4;b.n11=a.n23*a.n34*a.n42-a.n24*a.n33*a.n42+a.n24*a.n32*a.n43-a.n22*a.n34*a.n43-a.n23*a.n32*a.n44+a.n22*a.n33*a.n44;b.n12=a.n14*a.n33*a.n42-a.n13*a.n34*a.n42-a.n14*a.n32*a.n43+a.n12*a.n34*a.n43+a.n13*a.n32*a.n44-a.n12*a.n33*a.n44;b.n13=a.n13*a.n24*a.n42-a.n14*a.n23*a.n42+a.n14*a.n22*a.n43-a.n12*a.n24*a.n43-a.n13*a.n22*a.n44+a.n12*a.n23*a.n44;b.n14=a.n14*a.n23*a.n32-a.n13*a.n24*a.n32-a.n14*a.n22*a.n33+a.n12*a.n24*a.n33+a.n13*a.n22*a.n34-a.n12* a.n23*a.n34;b.n21=a.n24*a.n33*a.n41-a.n23*a.n34*a.n41-a.n24*a.n31*a.n43+a.n21*a.n34*a.n43+a.n23*a.n31*a.n44-a.n21*a.n33*a.n44;b.n22=a.n13*a.n34*a.n41-a.n14*a.n33*a.n41+a.n14*a.n31*a.n43-a.n11*a.n34*a.n43-a.n13*a.n31*a.n44+a.n11*a.n33*a.n44;b.n23=a.n14*a.n23*a.n41-a.n13*a.n24*a.n41-a.n14*a.n21*a.n43+a.n11*a.n24*a.n43+a.n13*a.n21*a.n44-a.n11*a.n23*a.n44;b.n24=a.n13*a.n24*a.n31-a.n14*a.n23*a.n31+a.n14*a.n21*a.n33-a.n11*a.n24*a.n33-a.n13*a.n21*a.n34+a.n11*a.n23*a.n34;b.n31=a.n22*a.n34*a.n41-a.n24*a.n32* a.n41+a.n24*a.n31*a.n42-a.n21*a.n34*a.n42-a.n22*a.n31*a.n44+a.n21*a.n32*a.n44;b.n32=a.n14*a.n32*a.n41-a.n12*a.n34*a.n41-a.n14*a.n31*a.n42+a.n11*a.n34*a.n42+a.n12*a.n31*a.n44-a.n11*a.n32*a.n44;b.n33=a.n13*a.n24*a.n41-a.n14*a.n22*a.n41+a.n14*a.n21*a.n42-a.n11*a.n24*a.n42-a.n12*a.n21*a.n44+a.n11*a.n22*a.n44;b.n34=a.n14*a.n22*a.n31-a.n12*a.n24*a.n31-a.n14*a.n21*a.n32+a.n11*a.n24*a.n32+a.n12*a.n21*a.n34-a.n11*a.n22*a.n34;b.n41=a.n23*a.n32*a.n41-a.n22*a.n33*a.n41-a.n23*a.n31*a.n42+a.n21*a.n33*a.n42+a.n22* a.n31*a.n43-a.n21*a.n32*a.n43;b.n42=a.n12*a.n33*a.n41-a.n13*a.n32*a.n41+a.n13*a.n31*a.n42-a.n11*a.n33*a.n42-a.n12*a.n31*a.n43+a.n11*a.n32*a.n43;b.n43=a.n13*a.n22*a.n41-a.n12*a.n23*a.n41-a.n13*a.n21*a.n42+a.n11*a.n23*a.n42+a.n12*a.n21*a.n43-a.n11*a.n22*a.n43;b.n44=a.n12*a.n23*a.n31-a.n13*a.n22*a.n31+a.n13*a.n21*a.n32-a.n11*a.n23*a.n32-a.n12*a.n21*a.n33+a.n11*a.n22*a.n33;b.multiplyScalar(1/a.determinant());return b}; -THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],g=-b[10]*b[1]+b[2]*b[9],j=b[6]*b[1]-b[2]*b[5],n=-b[10]*b[4]+b[6]*b[8],m=b[10]*b[0]-b[2]*b[8],k=-b[6]*b[0]+b[2]*b[4],o=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],F=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*n+b[2]*o;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*g;a.m[2]=b*j;a.m[3]=b*n;a.m[4]=b*m;a.m[5]=b*k;a.m[6]=b*o;a.m[7]=b*c;a.m[8]=b*F;return a}; -THREE.Matrix4.makeFrustum=function(a,b,d,g,j,n){var m,k,o;m=new THREE.Matrix4;k=2*j/(b-a);o=2*j/(g-d);a=(b+a)/(b-a);d=(g+d)/(g-d);g=-(n+j)/(n-j);j=-2*n*j/(n-j);m.n11=k;m.n12=0;m.n13=a;m.n14=0;m.n21=0;m.n22=o;m.n23=d;m.n24=0;m.n31=0;m.n32=0;m.n33=g;m.n34=j;m.n41=0;m.n42=0;m.n43=-1;m.n44=0;return m};THREE.Matrix4.makePerspective=function(a,b,d,g){var j;a=d*Math.tan(a*Math.PI/360);j=-a;return THREE.Matrix4.makeFrustum(j*b,a*b,j,a,d,g)}; -THREE.Matrix4.makeOrtho=function(a,b,d,g,j,n){var m,k,o,c;m=new THREE.Matrix4;k=b-a;o=d-g;c=n-j;a=(b+a)/k;d=(d+g)/o;j=(n+j)/c;m.n11=2/k;m.n12=0;m.n13=0;m.n14=-a;m.n21=0;m.n22=2/o;m.n23=0;m.n24=-d;m.n31=0;m.n32=0;m.n33=-2/c;m.n34=-j;m.n41=0;m.n42=0;m.n43=0;m.n44=1;return m}; -THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}}; -THREE.Face3=function(a,b,d,g,j){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=g instanceof THREE.Vector3?g:new THREE.Vector3;this.vertexNormals=g instanceof Array?g:[];this.material=j instanceof Array?j:[j]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}}; -THREE.Face4=function(a,b,d,g,j,n){this.a=a;this.b=b;this.c=d;this.d=g;this.centroid=new THREE.Vector3;this.normal=j instanceof THREE.Vector3?j:new THREE.Vector3;this.vertexNormals=j instanceof Array?j:[];this.material=n instanceof Array?n:[n]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0}; -THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={}}; +THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],f=-b[10]*b[1]+b[2]*b[9],j=b[6]*b[1]-b[2]*b[5],m=-b[10]*b[4]+b[6]*b[8],n=b[10]*b[0]-b[2]*b[8],k=-b[6]*b[0]+b[2]*b[4],o=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],E=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*m+b[2]*o;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*f;a.m[2]=b*j;a.m[3]=b*m;a.m[4]=b*n;a.m[5]=b*k;a.m[6]=b*o;a.m[7]=b*c;a.m[8]=b*E;return a}; +THREE.Matrix4.makeFrustum=function(a,b,d,f,j,m){var n,k,o;n=new THREE.Matrix4;k=2*j/(b-a);o=2*j/(f-d);a=(b+a)/(b-a);d=(f+d)/(f-d);f=-(m+j)/(m-j);j=-2*m*j/(m-j);n.n11=k;n.n12=0;n.n13=a;n.n14=0;n.n21=0;n.n22=o;n.n23=d;n.n24=0;n.n31=0;n.n32=0;n.n33=f;n.n34=j;n.n41=0;n.n42=0;n.n43=-1;n.n44=0;return n};THREE.Matrix4.makePerspective=function(a,b,d,f){var j;a=d*Math.tan(a*Math.PI/360);j=-a;return THREE.Matrix4.makeFrustum(j*b,a*b,j,a,d,f)}; +THREE.Matrix4.makeOrtho=function(a,b,d,f,j,m){var n,k,o,c;n=new THREE.Matrix4;k=b-a;o=d-f;c=m-j;a=(b+a)/k;d=(d+f)/o;j=(m+j)/c;n.n11=2/k;n.n12=0;n.n13=0;n.n14=-a;n.n21=0;n.n22=2/o;n.n23=0;n.n24=-d;n.n31=0;n.n32=0;n.n33=-2/c;n.n34=-j;n.n41=0;n.n42=0;n.n43=0;n.n44=1;return n}; +THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.tangent=new THREE.Vector4;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}}; +THREE.Face3=function(a,b,d,f,j){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=f instanceof THREE.Vector3?f:new THREE.Vector3;this.vertexNormals=f instanceof Array?f:[];this.material=j instanceof Array?j:[j]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}}; +THREE.Face4=function(a,b,d,f,j,m){this.a=a;this.b=b;this.c=d;this.d=f;this.centroid=new THREE.Vector3;this.normal=j instanceof THREE.Vector3?j:new THREE.Vector3;this.vertexNormals=j instanceof Array?j:[];this.material=m instanceof Array?m:[m]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0}; +THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={};this.hasTangents=false}; THREE.Geometry.prototype={computeCentroids:function(){var a,b,d;a=0;for(b=this.faces.length;a0){this.bbox={x:[this.vertices[0].position.x, -this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;athis.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.ythis.bbox.y[1])this.bbox.y[1]=vertex.position.y; -if(vertex.position.zthis.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(F){var D=[];b=0;for(d=F.length;b65535){c[k].counter+=1;o=c[k].hash+"_"+c[k].counter;if(this.geometryChunks[o]==undefined)this.geometryChunks[o]={faces:[],material:m,vertices:0}}this.geometryChunks[o].faces.push(g);this.geometryChunks[o].vertices+=n}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}}; -THREE.Camera=function(a,b,d,g){this.position=new THREE.Vector3(0,0,0);this.target={position:new THREE.Vector3(0,0,0)};this.up=new THREE.Vector3(0,1,0);this.matrix=new THREE.Matrix4;this.projectionMatrix=THREE.Matrix4.makePerspective(a,b,d,g);this.autoUpdateMatrix=true;this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.toString=function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)}; +d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,f,j,m,n,k=new THREE.Vector3,o=new THREE.Vector3;f=0;for(j=this.vertices.length;f0){this.bbox={x:[this.vertices[0].position.x,this.vertices[0].position.x], +y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;athis.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.ythis.bbox.y[1])this.bbox.y[1]=vertex.position.y;if(vertex.position.zthis.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(E){var C=[];b=0;for(d=E.length;b65535){c[k].counter+=1;o=c[k].hash+"_"+c[k].counter;if(this.geometryChunks[o]==undefined)this.geometryChunks[o]={faces:[],material:n,vertices:0}}this.geometryChunks[o].faces.push(f);this.geometryChunks[o].vertices+=m}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}}; +THREE.Camera=function(a,b,d,f){this.position=new THREE.Vector3(0,0,0);this.target={position:new THREE.Vector3(0,0,0)};this.up=new THREE.Vector3(0,1,0);this.matrix=new THREE.Matrix4;this.projectionMatrix=THREE.Matrix4.makePerspective(a,b,d,f);this.autoUpdateMatrix=true;this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.toString=function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)}; THREE.AmbientLight=function(a){THREE.Light.call(this,a)};THREE.AmbientLight.prototype=new THREE.Light;THREE.AmbientLight.prototype.constructor=THREE.AmbientLight;THREE.DirectionalLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3(0,1,0);this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.DirectionalLight; THREE.PointLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3;this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.PointLight; THREE.Object3D=function(){this.id=THREE.Object3DCounter.value++;this.position=new THREE.Vector3;this.rotation=new THREE.Vector3;this.scale=new THREE.Vector3(1,1,1);this.matrix=new THREE.Matrix4;this.translationMatrix=new THREE.Matrix4;this.rotationMatrix=new THREE.Matrix4;this.scaleMatrix=new THREE.Matrix4;this.screen=new THREE.Vector3;this.autoUpdateMatrix=this.visible=true;this.updateMatrix=function(){this.matrixPosition=THREE.Matrix4.translationMatrix(this.position.x,this.position.y,this.position.z); this.rotationMatrix=THREE.Matrix4.rotationXMatrix(this.rotation.x);this.rotationMatrix.multiplySelf(THREE.Matrix4.rotationYMatrix(this.rotation.y));this.rotationMatrix.multiplySelf(THREE.Matrix4.rotationZMatrix(this.rotation.z));this.scaleMatrix=THREE.Matrix4.scaleMatrix(this.scale.x,this.scale.y,this.scale.z);this.matrix.copy(this.matrixPosition);this.matrix.multiplySelf(this.rotationMatrix);this.matrix.multiplySelf(this.scaleMatrix)}};THREE.Object3DCounter={value:0}; THREE.Particle=function(a){THREE.Object3D.call(this);this.material=a instanceof Array?a:[a];this.autoUpdateMatrix=false};THREE.Particle.prototype=new THREE.Object3D;THREE.Particle.prototype.constructor=THREE.Particle;THREE.Line=function(a,b){THREE.Object3D.call(this);this.geometry=a;this.material=b instanceof Array?b:[b]};THREE.Line.prototype=new THREE.Object3D;THREE.Line.prototype.constructor=THREE.Line; THREE.Mesh=function(a,b,d){THREE.Object3D.call(this);this.geometry=a;this.material=b instanceof Array?b:[b];this.overdraw=this.doubleSided=this.flipSided=false;d&&this.normalizeUVs();this.geometry.computeBoundingBox()};THREE.Mesh.prototype=new THREE.Object3D;THREE.Mesh.prototype.constructor=THREE.Mesh; -THREE.Mesh.prototype.normalizeUVs=function(){var a,b,d,g,j;a=0;for(b=this.geometry.uvs.length;acolor: "+ this.color+"
opacity: "+this.opacity+"
blending: "+this.blending+"
linewidth: "+this.linewidth+"
linecap: "+this.linecap+"
linejoin: "+this.linejoin+"
)"}}; THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map= @@ -82,92 +85,94 @@ undefined)this.uniforms=a.uniforms;if(a.shading!==undefined)this.shading=a.shadi THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleBasicMaterial (
color: "+this.color+"
map: "+this.map+"
opacity: "+this.opacity+"
blending: "+ this.blending+"
)"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleCircleMaterial (
color: "+this.color+"
opacity: "+this.opacity+"
blending: "+this.blending+"
)"}}; THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}}; -THREE.Texture=function(a,b,d,g,j,n){this.image=a;this.mapping=b!==undefined?b:new THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdgeWrapping;this.wrap_t=g!==undefined?g:THREE.ClampToEdgeWrapping;this.mag_filter=j!==undefined?j:THREE.LinearFilter;this.min_filter=n!==undefined?n:THREE.LinearMipMapLinearFilter;this.toString=function(){return"THREE.Texture (
image: "+this.image+"
wrap_s: "+this.wrap_s+"
wrap_t: "+this.wrap_t+"
mag_filter: "+this.mag_filter+"
min_filter: "+ +THREE.Texture=function(a,b,d,f,j,m){this.image=a;this.mapping=b!==undefined?b:new THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdgeWrapping;this.wrap_t=f!==undefined?f:THREE.ClampToEdgeWrapping;this.mag_filter=j!==undefined?j:THREE.LinearFilter;this.min_filter=m!==undefined?m:THREE.LinearMipMapLinearFilter;this.toString=function(){return"THREE.Texture (
image: "+this.image+"
wrap_s: "+this.wrap_s+"
wrap_t: "+this.wrap_t+"
mag_filter: "+this.mag_filter+"
min_filter: "+ this.min_filter+"
)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){}; THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){}; THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}}; -THREE.Projector=function(){function a(O,v){var f=0,l=1,e=O.z+O.w,q=v.z+v.w,h=-O.z+O.w,i=-v.z+v.w;if(e>=0&&q>=0&&h>=0&&i>=0)return true;else if(e<0&&q<0||h<0&&i<0)return false;else{if(e<0)f=Math.max(f,e/(e-q));else if(q<0)l=Math.min(l,e/(e-q));if(h<0)f=Math.max(f,h/(h-i));else if(i<0)l=Math.min(l,h/(h-i));if(l0&&y.z<1}R=r.geometry.faces;e=0;for(q=R.length;e0&&w.z<1){c=D[F]=D[F]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=r.rotation.z;c.scale.x=r.scale.x*Math.abs(c.x-(w.x+v.projectionMatrix.n11)/(w.w+v.projectionMatrix.n14));c.scale.y=r.scale.y*Math.abs(c.y-(w.y+v.projectionMatrix.n22)/(w.w+v.projectionMatrix.n24));c.material=r.material;b.push(c);F++}}}b.sort(function(W,J){return J.z-W.z});return b};this.unprojectVector=function(O,v){var f=new THREE.Matrix4; -f.multiply(THREE.Matrix4.makeInvert(v.matrix),THREE.Matrix4.makeInvert(v.projectionMatrix));f.multiplyVector3(O);return O}}; -THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,g,j,n;this.domElement=document.createElement("div");this.setSize=function(m,k){d=m;g=k;j=d/2;n=g/2};this.render=function(m,k){var o,c,F,D,w,x,I,G;a=b.projectScene(m,k);o=0;for(c=a.length;o0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}else if(V instanceof THREE.PointLight){Y.sub(V.position,U);Y.normalize();V=K.dot(Y)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}}}function Na(p,U,K){if(K.opacity!=0){Da(K.opacity);ya(K.blending);var t,C,V,aa,ca,da;if(K instanceof THREE.ParticleBasicMaterial){if(K.map){aa=K.map;ca=aa.width>>1;da=aa.height>>1;C=U.scale.x*n;V=U.scale.y*m;K=C*ca;t=V*da;X.set(p.x-K, -p.y-t,p.x+K,p.y+t);if(!z.instersects(X))return;k.save();k.translate(p.x,p.y);k.rotate(-U.rotation);k.scale(C,-V);k.translate(-ca,-da);k.drawImage(aa,0,0);k.restore()}k.beginPath();k.moveTo(p.x-10,p.y);k.lineTo(p.x+10,p.y);k.moveTo(p.x,p.y-10);k.lineTo(p.x,p.y+10);k.closePath();k.strokeStyle="rgb(255,255,0)";k.stroke()}else if(K instanceof THREE.ParticleCircleMaterial){if(T){P.r=Z.r+ia.r+ja.r;P.g=Z.g+ia.g+ja.g;P.b=Z.b+ia.b+ja.b;h.r=K.color.r*P.r;h.g=K.color.g*P.g;h.b=K.color.b*P.b;h.updateStyleString()}else h.__styleString= -K.color.__styleString;K=U.scale.x*n;t=U.scale.y*m;X.set(p.x-K,p.y-t,p.x+K,p.y+t);if(z.instersects(X)){C=h.__styleString;if(D!=C)k.fillStyle=D=C;k.save();k.translate(p.x,p.y);k.rotate(-U.rotation);k.scale(K,t);k.beginPath();k.arc(0,0,1,0,La,true);k.closePath();k.fill();k.restore()}}}}function Oa(p,U,K,t){if(t.opacity!=0){Da(t.opacity);ya(t.blending);k.beginPath();k.moveTo(p.positionScreen.x,p.positionScreen.y);k.lineTo(U.positionScreen.x,U.positionScreen.y);k.closePath();if(t instanceof THREE.LineBasicMaterial){h.__styleString= -t.color.__styleString;p=t.linewidth;if(w!=p)k.lineWidth=w=p;p=h.__styleString;if(F!=p)k.strokeStyle=F=p;k.stroke();X.inflate(t.linewidth*2)}}}function Ha(p,U,K,t,C,V){if(C.opacity!=0){Da(C.opacity);ya(C.blending);O=p.positionScreen.x;v=p.positionScreen.y;f=U.positionScreen.x;l=U.positionScreen.y;e=K.positionScreen.x;q=K.positionScreen.y;k.beginPath();k.moveTo(O,v);k.lineTo(f,l);k.lineTo(e,q);k.lineTo(O,v);k.closePath();if(C instanceof THREE.MeshBasicMaterial)if(C.map)C.map.image.loaded&&C.map.mapping instanceof -THREE.UVMapping&&qa(O,v,f,l,e,q,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);else if(C.env_map){if(C.env_map.image.loaded)if(C.env_map.mapping instanceof THREE.SphericalReflectionMapping){p=wa.matrix;Y.copy(t.vertexNormalsWorld[0]);R=(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;y=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[1]);A=(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;E=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[2]);W= -(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;J=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;qa(O,v,f,l,e,q,C.env_map.image,R,y,A,E,W,J)}}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString);else if(C instanceof THREE.MeshLambertMaterial){if(C.map&&!C.wireframe){C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,l,e,q,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);ya(THREE.SubtractiveBlending)}if(T)if(!C.wireframe&&C.shading==THREE.SmoothShading&& -t.vertexNormalsWorld.length==3){i.r=s.r=r.r=Z.r;i.g=s.g=r.g=Z.g;i.b=s.b=r.b=Z.b;xa(V,t.v1.positionWorld,t.vertexNormalsWorld[0],i);xa(V,t.v2.positionWorld,t.vertexNormalsWorld[1],s);xa(V,t.v3.positionWorld,t.vertexNormalsWorld[2],r);M.r=(s.r+r.r)*0.5;M.g=(s.g+r.g)*0.5;M.b=(s.b+r.b)*0.5;u=Ia(i,s,r,M);qa(O,v,f,l,e,q,u,0,0,1,0,0,1)}else{P.r=Z.r;P.g=Z.g;P.b=Z.b;xa(V,t.centroidWorld,t.normalWorld,P);h.r=C.color.r*P.r;h.g=C.color.g*P.g;h.b=C.color.b*P.b;h.updateStyleString();C.wireframe?za(h.__styleString, -C.wireframe_linewidth):Aa(h.__styleString)}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString)}else if(C instanceof THREE.MeshDepthMaterial){B=C.__2near;H=C.__farPlusNear;Q=C.__farMinusNear;i.r=i.g=i.b=1-B/(H-p.positionScreen.z*Q);s.r=s.g=s.b=1-B/(H-U.positionScreen.z*Q);r.r=r.g=r.b=1-B/(H-K.positionScreen.z*Q);M.r=(s.r+r.r)*0.5;M.g=(s.g+r.g)*0.5;M.b=(s.b+r.b)*0.5;u=Ia(i,s,r,M);qa(O,v,f,l,e,q,u,0,0,1,0,0,1)}else if(C instanceof THREE.MeshNormalMaterial){h.r= -Ea(t.normalWorld.x);h.g=Ea(t.normalWorld.y);h.b=Ea(t.normalWorld.z);h.updateStyleString();C.wireframe?za(h.__styleString,C.wireframe_linewidth):Aa(h.__styleString)}}}function za(p,U){if(F!=p)k.strokeStyle=F=p;if(w!=U)k.lineWidth=w=U;k.stroke();X.inflate(U*2)}function Aa(p){if(D!=p)k.fillStyle=D=p;k.fill()}function qa(p,U,K,t,C,V,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;K-=p;t-=U;C-=p;V-=U;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha); -ka=(ta*K-ha*C)*ga;ha=(ta*t-ha*V)*ga;K=(ra*C-sa*K)*ga;t=(ra*V-sa*t)*ga;p=p-ka*ca-K*da;U=U-ha*ca-t*da;k.save();k.transform(ka,ha,K,t,p,U);k.clip();k.drawImage(aa,0,0);k.restore()}function Da(p){if(o!=p)k.globalAlpha=o=p}function ya(p){if(c!=p){switch(p){case THREE.NormalBlending:k.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:k.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:k.globalCompositeOperation="darker"}c=p}}function Ia(p,U,K,t){ba[0]=I(0,x(255, -~~(p.r*255)));ba[1]=I(0,x(255,~~(p.g*255)));ba[2]=I(0,x(255,~~(p.b*255)));ba[4]=I(0,x(255,~~(U.r*255)));ba[5]=I(0,x(255,~~(U.g*255)));ba[6]=I(0,x(255,~~(U.b*255)));ba[8]=I(0,x(255,~~(K.r*255)));ba[9]=I(0,x(255,~~(K.g*255)));ba[10]=I(0,x(255,~~(K.b*255)));ba[12]=I(0,x(255,~~(t.r*255)));ba[13]=I(0,x(255,~~(t.g*255)));ba[14]=I(0,x(255,~~(t.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(p){return p<0?x((1+p)*0.5,0.5):0.5+x(p*0.5,0.5)}function Fa(p,U){var K=U.x-p.x,t=U.y-p.y, -C=1/Math.sqrt(K*K+t*t);K*=C;t*=C;U.x+=K;U.y+=t;p.x-=K;p.y-=t}var Ba,Ja,$,ea,ma,Ga,Ka,ua;k.setTransform(1,0,0,-1,n,m);this.autoClear&&this.clear();a=b.projectScene(fa,wa);k.fillStyle="rgba(0, 255, 255, 0.5)";k.fillRect(z.getX(),z.getY(),z.getWidth(),z.getHeight());(T=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba0){E.r+=z.color.r*S;E.g+=z.color.g*S;E.b+=z.color.b*S}}else if(z instanceof THREE.PointLight){i.sub(z.position,A.centroidWorld);i.normalize();S=A.normalWorld.dot(i)*z.intensity;if(S>0){E.r+=z.color.r*S;E.g+=z.color.g*S;E.b+=z.color.b*S}}}}function b(y,A,E,W,J,z){B=g(H++);B.setAttribute("d","M "+y.positionScreen.x+ -" "+y.positionScreen.y+" L "+A.positionScreen.x+" "+A.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+"z");if(J instanceof THREE.MeshBasicMaterial)v.__styleString=J.color.__styleString;else if(J instanceof THREE.MeshLambertMaterial)if(O){f.r=l.r;f.g=l.g;f.b=l.b;a(z,W,f);v.r=J.color.r*f.r;v.g=J.color.g*f.g;v.b=J.color.b*f.b;v.updateStyleString()}else v.__styleString=J.color.__styleString;else if(J instanceof THREE.MeshDepthMaterial){h=1-J.__2near/(J.__farPlusNear-W.z*J.__farMinusNear); -v.setRGB(h,h,h)}else J instanceof THREE.MeshNormalMaterial&&v.setRGB(j(W.normalWorld.x),j(W.normalWorld.y),j(W.normalWorld.z));J.wireframe?B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+J.wireframe_linewidth+"; stroke-opacity: "+J.opacity+"; stroke-linecap: "+J.wireframe_linecap+"; stroke-linejoin: "+J.wireframe_linejoin):B.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+J.opacity);k.appendChild(B)}function d(y,A,E,W,J,z,S){B=g(H++);B.setAttribute("d", -"M "+y.positionScreen.x+" "+y.positionScreen.y+" L "+A.positionScreen.x+" "+A.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(z instanceof THREE.MeshBasicMaterial)v.__styleString=z.color.__styleString;else if(z instanceof THREE.MeshLambertMaterial)if(O){f.r=l.r;f.g=l.g;f.b=l.b;a(S,J,f);v.r=z.color.r*f.r;v.g=z.color.g*f.g;v.b=z.color.b*f.b;v.updateStyleString()}else v.__styleString=z.color.__styleString;else if(z instanceof THREE.MeshDepthMaterial){h= -1-z.__2near/(z.__farPlusNear-J.z*z.__farMinusNear);v.setRGB(h,h,h)}else z instanceof THREE.MeshNormalMaterial&&v.setRGB(j(J.normalWorld.x),j(J.normalWorld.y),j(J.normalWorld.z));z.wireframe?B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+z.wireframe_linewidth+"; stroke-opacity: "+z.opacity+"; stroke-linecap: "+z.wireframe_linecap+"; stroke-linejoin: "+z.wireframe_linejoin):B.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+z.opacity);k.appendChild(B)} -function g(y){if(s[y]==null){s[y]=document.createElementNS("http://www.w3.org/2000/svg","path");R==0&&s[y].setAttribute("shape-rendering","crispEdges");return s[y]}return s[y]}function j(y){return y<0?Math.min((1+y)*0.5,0.5):0.5+Math.min(y*0.5,0.5)}var n=null,m=new THREE.Projector,k=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,F,D,w,x,I,G,L=new THREE.Rectangle,N=new THREE.Rectangle,O=false,v=new THREE.Color(16777215),f=new THREE.Color(16777215),l=new THREE.Color(0),e=new THREE.Color(0), -q=new THREE.Color(0),h,i=new THREE.Vector3,s=[],r=[],M=[],B,H,Q,u,R=1;this.domElement=k;this.autoClear=true;this.setQuality=function(y){switch(y){case "high":R=1;break;case "low":R=0}};this.setSize=function(y,A){o=y;c=A;F=o/2;D=c/2;k.setAttribute("viewBox",-F+" "+-D+" "+o+" "+c);k.setAttribute("width",o);k.setAttribute("height",c);L.set(-F,-D,F,D)};this.clear=function(){for(;k.childNodes.length>0;)k.removeChild(k.childNodes[0])};this.render=function(y,A){var E,W,J,z,S,X,T,P;this.autoClear&&this.clear(); -n=m.projectScene(y,A);u=Q=H=0;if(O=y.lights.length>0){T=y.lights;l.setRGB(0,0,0);e.setRGB(0,0,0);q.setRGB(0,0,0);E=0;for(W=T.length;E=0&&c.enableVertexAttribArray(f.attributes[h])}}function m(f,l){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,l);c.compileShader(e);if(!c.getShaderParameter(e, -c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));return null}return e}function k(f){switch(f){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST; -case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var o=document.createElement("canvas"),c,F,D,w=new THREE.Matrix4,x,I=new Float32Array(16),G=new Float32Array(16),L=new Float32Array(16),N=new Float32Array(9),O=new Float32Array(16);a=function(f,l){if(f){var e,q,h,i=pointLights=maxDirLights=maxPointLights=0;e=0;for(q=f.lights.length;e=0&&q>=0&&h>=0&&i>=0)return true;else if(g<0&&q<0||h<0&&i<0)return false;else{if(g<0)e=Math.max(e,g/(g-q));else if(q<0)l=Math.min(l,g/(g-q));if(h<0)e=Math.max(e,h/(h-i));else if(i<0)l=Math.min(l,h/(h-i));if(l0&&B.z<1}O=p.geometry.faces;g=0;for(q=O.length;g0&&x.z<1){c=C[E]=C[E]||new THREE.RenderableParticle;c.x=x.x/x.w;c.y=x.y/x.w;c.z=x.z;c.rotation=p.rotation.z;c.scale.x=p.scale.x*Math.abs(c.x-(x.x+u.projectionMatrix.n11)/(x.w+u.projectionMatrix.n14));c.scale.y=p.scale.y*Math.abs(c.y-(x.y+u.projectionMatrix.n22)/(x.w+u.projectionMatrix.n24));c.material=p.material;b.push(c);E++}}}b.sort(function(K,y){return y.z-K.z});return b};this.unprojectVector=function(M,u){var e=new THREE.Matrix4; +e.multiply(THREE.Matrix4.makeInvert(u.matrix),THREE.Matrix4.makeInvert(u.projectionMatrix));e.multiplyVector3(M);return M}}; +THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,f,j,m;this.domElement=document.createElement("div");this.setSize=function(n,k){d=n;f=k;j=d/2;m=f/2};this.render=function(n,k){var o,c,E,C,x,z,H,G;a=b.projectScene(n,k);o=0;for(c=a.length;o0){v.r+=aa.r*W;v.g+=aa.g*W;v.b+=aa.b*W}}else if(W instanceof THREE.PointLight){Y.sub(W.position,V);Y.normalize();W=N.dot(Y)*ca;if(W>0){v.r+=aa.r*W;v.g+=aa.g*W;v.b+=aa.b*W}}}}function Na(r,V,N){if(N.opacity!=0){Da(N.opacity);ya(N.blending);var v,F,W,aa,ca,da;if(N instanceof THREE.ParticleBasicMaterial){if(N.map){aa=N.map;ca=aa.width>>1;da=aa.height>>1;F=V.scale.x*m;W=V.scale.y*n;N=F*ca;v=W*da;X.set(r.x-N, +r.y-v,r.x+N,r.y+v);if(!A.instersects(X))return;k.save();k.translate(r.x,r.y);k.rotate(-V.rotation);k.scale(F,-W);k.translate(-ca,-da);k.drawImage(aa,0,0);k.restore()}k.beginPath();k.moveTo(r.x-10,r.y);k.lineTo(r.x+10,r.y);k.moveTo(r.x,r.y-10);k.lineTo(r.x,r.y+10);k.closePath();k.strokeStyle="rgb(255,255,0)";k.stroke()}else if(N instanceof THREE.ParticleCircleMaterial){if(U){R.r=Z.r+ia.r+ja.r;R.g=Z.g+ia.g+ja.g;R.b=Z.b+ia.b+ja.b;h.r=N.color.r*R.r;h.g=N.color.g*R.g;h.b=N.color.b*R.b;h.updateStyleString()}else h.__styleString= +N.color.__styleString;N=V.scale.x*m;v=V.scale.y*n;X.set(r.x-N,r.y-v,r.x+N,r.y+v);if(A.instersects(X)){F=h.__styleString;if(C!=F)k.fillStyle=C=F;k.save();k.translate(r.x,r.y);k.rotate(-V.rotation);k.scale(N,v);k.beginPath();k.arc(0,0,1,0,La,true);k.closePath();k.fill();k.restore()}}}}function Oa(r,V,N,v){if(v.opacity!=0){Da(v.opacity);ya(v.blending);k.beginPath();k.moveTo(r.positionScreen.x,r.positionScreen.y);k.lineTo(V.positionScreen.x,V.positionScreen.y);k.closePath();if(v instanceof THREE.LineBasicMaterial){h.__styleString= +v.color.__styleString;r=v.linewidth;if(x!=r)k.lineWidth=x=r;r=h.__styleString;if(E!=r)k.strokeStyle=E=r;k.stroke();X.inflate(v.linewidth*2)}}}function Ha(r,V,N,v,F,W){if(F.opacity!=0){Da(F.opacity);ya(F.blending);M=r.positionScreen.x;u=r.positionScreen.y;e=V.positionScreen.x;l=V.positionScreen.y;g=N.positionScreen.x;q=N.positionScreen.y;k.beginPath();k.moveTo(M,u);k.lineTo(e,l);k.lineTo(g,q);k.lineTo(M,u);k.closePath();if(F instanceof THREE.MeshBasicMaterial)if(F.map)F.map.image.loaded&&F.map.mapping instanceof +THREE.UVMapping&&qa(M,u,e,l,g,q,F.map.image,v.uvs[0].u,v.uvs[0].v,v.uvs[1].u,v.uvs[1].v,v.uvs[2].u,v.uvs[2].v);else if(F.env_map){if(F.env_map.image.loaded)if(F.env_map.mapping instanceof THREE.SphericalReflectionMapping){r=wa.matrix;Y.copy(v.vertexNormalsWorld[0]);O=(Y.x*r.n11+Y.y*r.n12+Y.z*r.n13)*0.5+0.5;B=-(Y.x*r.n21+Y.y*r.n22+Y.z*r.n23)*0.5+0.5;Y.copy(v.vertexNormalsWorld[1]);P=(Y.x*r.n11+Y.y*r.n12+Y.z*r.n13)*0.5+0.5;Q=-(Y.x*r.n21+Y.y*r.n22+Y.z*r.n23)*0.5+0.5;Y.copy(v.vertexNormalsWorld[2]);K= +(Y.x*r.n11+Y.y*r.n12+Y.z*r.n13)*0.5+0.5;y=-(Y.x*r.n21+Y.y*r.n22+Y.z*r.n23)*0.5+0.5;qa(M,u,e,l,g,q,F.env_map.image,O,B,P,Q,K,y)}}else F.wireframe?za(F.color.__styleString,F.wireframe_linewidth):Aa(F.color.__styleString);else if(F instanceof THREE.MeshLambertMaterial){if(F.map&&!F.wireframe){F.map.mapping instanceof THREE.UVMapping&&qa(M,u,e,l,g,q,F.map.image,v.uvs[0].u,v.uvs[0].v,v.uvs[1].u,v.uvs[1].v,v.uvs[2].u,v.uvs[2].v);ya(THREE.SubtractiveBlending)}if(U)if(!F.wireframe&&F.shading==THREE.SmoothShading&& +v.vertexNormalsWorld.length==3){i.r=s.r=p.r=Z.r;i.g=s.g=p.g=Z.g;i.b=s.b=p.b=Z.b;xa(W,v.v1.positionWorld,v.vertexNormalsWorld[0],i);xa(W,v.v2.positionWorld,v.vertexNormalsWorld[1],s);xa(W,v.v3.positionWorld,v.vertexNormalsWorld[2],p);D.r=(s.r+p.r)*0.5;D.g=(s.g+p.g)*0.5;D.b=(s.b+p.b)*0.5;t=Ia(i,s,p,D);qa(M,u,e,l,g,q,t,0,0,1,0,0,1)}else{R.r=Z.r;R.g=Z.g;R.b=Z.b;xa(W,v.centroidWorld,v.normalWorld,R);h.r=F.color.r*R.r;h.g=F.color.g*R.g;h.b=F.color.b*R.b;h.updateStyleString();F.wireframe?za(h.__styleString, +F.wireframe_linewidth):Aa(h.__styleString)}else F.wireframe?za(F.color.__styleString,F.wireframe_linewidth):Aa(F.color.__styleString)}else if(F instanceof THREE.MeshDepthMaterial){w=F.__2near;I=F.__farPlusNear;S=F.__farMinusNear;i.r=i.g=i.b=1-w/(I-r.positionScreen.z*S);s.r=s.g=s.b=1-w/(I-V.positionScreen.z*S);p.r=p.g=p.b=1-w/(I-N.positionScreen.z*S);D.r=(s.r+p.r)*0.5;D.g=(s.g+p.g)*0.5;D.b=(s.b+p.b)*0.5;t=Ia(i,s,p,D);qa(M,u,e,l,g,q,t,0,0,1,0,0,1)}else if(F instanceof THREE.MeshNormalMaterial){h.r= +Ea(v.normalWorld.x);h.g=Ea(v.normalWorld.y);h.b=Ea(v.normalWorld.z);h.updateStyleString();F.wireframe?za(h.__styleString,F.wireframe_linewidth):Aa(h.__styleString)}}}function za(r,V){if(E!=r)k.strokeStyle=E=r;if(x!=V)k.lineWidth=x=V;k.stroke();X.inflate(V*2)}function Aa(r){if(C!=r)k.fillStyle=C=r;k.fill()}function qa(r,V,N,v,F,W,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;N-=r;v-=V;F-=r;W-=V;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha); +ka=(ta*N-ha*F)*ga;ha=(ta*v-ha*W)*ga;N=(ra*F-sa*N)*ga;v=(ra*W-sa*v)*ga;r=r-ka*ca-N*da;V=V-ha*ca-v*da;k.save();k.transform(ka,ha,N,v,r,V);k.clip();k.drawImage(aa,0,0);k.restore()}function Da(r){if(o!=r)k.globalAlpha=o=r}function ya(r){if(c!=r){switch(r){case THREE.NormalBlending:k.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:k.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:k.globalCompositeOperation="darker"}c=r}}function Ia(r,V,N,v){ba[0]=H(0,z(255, +~~(r.r*255)));ba[1]=H(0,z(255,~~(r.g*255)));ba[2]=H(0,z(255,~~(r.b*255)));ba[4]=H(0,z(255,~~(V.r*255)));ba[5]=H(0,z(255,~~(V.g*255)));ba[6]=H(0,z(255,~~(V.b*255)));ba[8]=H(0,z(255,~~(N.r*255)));ba[9]=H(0,z(255,~~(N.g*255)));ba[10]=H(0,z(255,~~(N.b*255)));ba[12]=H(0,z(255,~~(v.r*255)));ba[13]=H(0,z(255,~~(v.g*255)));ba[14]=H(0,z(255,~~(v.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(r){return r<0?z((1+r)*0.5,0.5):0.5+z(r*0.5,0.5)}function Fa(r,V){var N=V.x-r.x,v=V.y-r.y, +F=1/Math.sqrt(N*N+v*v);N*=F;v*=F;V.x+=N;V.y+=v;r.x-=N;r.y-=v}var Ba,Ja,$,ea,ma,Ga,Ka,ua;k.setTransform(1,0,0,-1,m,n);this.autoClear&&this.clear();a=b.projectScene(fa,wa);k.fillStyle="rgba(0, 255, 255, 0.5)";k.fillRect(A.getX(),A.getY(),A.getWidth(),A.getHeight());(U=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba0){Q.r+=A.color.r*T;Q.g+=A.color.g*T;Q.b+=A.color.b*T}}else if(A instanceof THREE.PointLight){i.sub(A.position,P.centroidWorld);i.normalize();T=P.normalWorld.dot(i)*A.intensity;if(T>0){Q.r+=A.color.r*T;Q.g+=A.color.g*T;Q.b+=A.color.b*T}}}}function b(B,P,Q,K,y,A){w=f(I++);w.setAttribute("d","M "+B.positionScreen.x+ +" "+B.positionScreen.y+" L "+P.positionScreen.x+" "+P.positionScreen.y+" L "+Q.positionScreen.x+","+Q.positionScreen.y+"z");if(y instanceof THREE.MeshBasicMaterial)u.__styleString=y.color.__styleString;else if(y instanceof THREE.MeshLambertMaterial)if(M){e.r=l.r;e.g=l.g;e.b=l.b;a(A,K,e);u.r=y.color.r*e.r;u.g=y.color.g*e.g;u.b=y.color.b*e.b;u.updateStyleString()}else u.__styleString=y.color.__styleString;else if(y instanceof THREE.MeshDepthMaterial){h=1-y.__2near/(y.__farPlusNear-K.z*y.__farMinusNear); +u.setRGB(h,h,h)}else y instanceof THREE.MeshNormalMaterial&&u.setRGB(j(K.normalWorld.x),j(K.normalWorld.y),j(K.normalWorld.z));y.wireframe?w.setAttribute("style","fill: none; stroke: "+u.__styleString+"; stroke-width: "+y.wireframe_linewidth+"; stroke-opacity: "+y.opacity+"; stroke-linecap: "+y.wireframe_linecap+"; stroke-linejoin: "+y.wireframe_linejoin):w.setAttribute("style","fill: "+u.__styleString+"; fill-opacity: "+y.opacity);k.appendChild(w)}function d(B,P,Q,K,y,A,T){w=f(I++);w.setAttribute("d", +"M "+B.positionScreen.x+" "+B.positionScreen.y+" L "+P.positionScreen.x+" "+P.positionScreen.y+" L "+Q.positionScreen.x+","+Q.positionScreen.y+" L "+K.positionScreen.x+","+K.positionScreen.y+"z");if(A instanceof THREE.MeshBasicMaterial)u.__styleString=A.color.__styleString;else if(A instanceof THREE.MeshLambertMaterial)if(M){e.r=l.r;e.g=l.g;e.b=l.b;a(T,y,e);u.r=A.color.r*e.r;u.g=A.color.g*e.g;u.b=A.color.b*e.b;u.updateStyleString()}else u.__styleString=A.color.__styleString;else if(A instanceof THREE.MeshDepthMaterial){h= +1-A.__2near/(A.__farPlusNear-y.z*A.__farMinusNear);u.setRGB(h,h,h)}else A instanceof THREE.MeshNormalMaterial&&u.setRGB(j(y.normalWorld.x),j(y.normalWorld.y),j(y.normalWorld.z));A.wireframe?w.setAttribute("style","fill: none; stroke: "+u.__styleString+"; stroke-width: "+A.wireframe_linewidth+"; stroke-opacity: "+A.opacity+"; stroke-linecap: "+A.wireframe_linecap+"; stroke-linejoin: "+A.wireframe_linejoin):w.setAttribute("style","fill: "+u.__styleString+"; fill-opacity: "+A.opacity);k.appendChild(w)} +function f(B){if(s[B]==null){s[B]=document.createElementNS("http://www.w3.org/2000/svg","path");O==0&&s[B].setAttribute("shape-rendering","crispEdges");return s[B]}return s[B]}function j(B){return B<0?Math.min((1+B)*0.5,0.5):0.5+Math.min(B*0.5,0.5)}var m=null,n=new THREE.Projector,k=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,E,C,x,z,H,G,J=new THREE.Rectangle,L=new THREE.Rectangle,M=false,u=new THREE.Color(16777215),e=new THREE.Color(16777215),l=new THREE.Color(0),g=new THREE.Color(0), +q=new THREE.Color(0),h,i=new THREE.Vector3,s=[],p=[],D=[],w,I,S,t,O=1;this.domElement=k;this.autoClear=true;this.setQuality=function(B){switch(B){case "high":O=1;break;case "low":O=0}};this.setSize=function(B,P){o=B;c=P;E=o/2;C=c/2;k.setAttribute("viewBox",-E+" "+-C+" "+o+" "+c);k.setAttribute("width",o);k.setAttribute("height",c);J.set(-E,-C,E,C)};this.clear=function(){for(;k.childNodes.length>0;)k.removeChild(k.childNodes[0])};this.render=function(B,P){var Q,K,y,A,T,X,U,R;this.autoClear&&this.clear(); +m=n.projectScene(B,P);t=S=I=0;if(M=B.lights.length>0){U=B.lights;l.setRGB(0,0,0);g.setRGB(0,0,0);q.setRGB(0,0,0);Q=0;for(K=U.length;Q0?"#define VERTEX_TEXTURES":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n"].join("\n");c.attachShader(g,n("fragment","#ifdef GL_ES\nprecision highp float;\n#endif\nuniform mat4 viewMatrix;\n"+ +e));c.attachShader(g,n("vertex",q+l));c.linkProgram(g);c.getProgramParameter(g,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(g,c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");g.uniforms={};g.attributes={};return g}function d(e,l){if(e.image.length==6){if(!e.image.__webGLTextureCube&&!e.image.__cubeMapInitialized&&e.image.loadCount==6){e.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,e.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP, +c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var g=0;g<6;++g)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,e.image[g]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);e.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+l);c.bindTexture(c.TEXTURE_CUBE_MAP, +e.image.__webGLTextureCube)}}function f(e,l){if(!e.__webGLTexture&&e.image.loaded){e.__webGLTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,e.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,e.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,k(e.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,k(e.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,k(e.mag_filter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,k(e.min_filter));c.generateMipmap(c.TEXTURE_2D); +c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+l);c.bindTexture(c.TEXTURE_2D,e.__webGLTexture)}function j(e,l){var g,q,h;g=0;for(q=l.length;g=0&&c.enableVertexAttribArray(e.attributes[h])}}function n(e,l){var g;if(e=="fragment")g=c.createShader(c.FRAGMENT_SHADER);else if(e=="vertex")g=c.createShader(c.VERTEX_SHADER); +c.shaderSource(g,l);c.compileShader(g);if(!c.getShaderParameter(g,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(g));return null}return g}function k(e){switch(e){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR; +case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var o=document.createElement("canvas"),c,E,C,x=new THREE.Matrix4,z,H=new Float32Array(16),G=new Float32Array(16),J=new Float32Array(16),L=new Float32Array(9),M=new Float32Array(16);a=function(e,l){if(e){var g,q,h,i=pointLights=maxDirLights=maxPointLights=0;g=0;for(q=e.lights.length;g= 0.0 )": -"",l?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",l?"pointDiffuse += mColor * pointDiffuseWeight;":"",l?"pointSpecular += mSpecular * pointSpecularWeight;":"",l?"}":"",f?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"vec3 dirVector = normalize( lDirection.xyz );":"",f?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": -"",f?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",f?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",f?"float dirSpecularWeight = 0.0;":"",f?"if ( dirDotNormalHalf >= 0.0 )":"",f?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",f?"dirDiffuse += mColor * dirDiffuseWeight;":"",f?"dirSpecular += mSpecular * dirSpecularWeight;":"",f?"}":"","vec4 totalLight = mAmbient;",f?"totalLight += dirDiffuse + dirSpecular;":"",l?"totalLight += pointDiffuse + pointSpecular;": +"",l?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",l?"pointDiffuse += mColor * pointDiffuseWeight;":"",l?"pointSpecular += mSpecular * pointSpecularWeight;":"",l?"}":"",e?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",e?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",e?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",e?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",e?"vec3 dirVector = normalize( lDirection.xyz );":"",e?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": +"",e?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",e?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",e?"float dirSpecularWeight = 0.0;":"",e?"if ( dirDotNormalHalf >= 0.0 )":"",e?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",e?"dirDiffuse += mColor * dirDiffuseWeight;":"",e?"dirSpecular += mSpecular * dirSpecularWeight;":"",e?"}":"","vec4 totalLight = mAmbient;",e?"totalLight += dirDiffuse + dirSpecular;":"",l?"totalLight += pointDiffuse + pointSpecular;": "","if ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mapColor.rgb * totalLight.xyz * vLightWeighting, cubeColor.rgb, mReflectivity ), mapColor.a );\n} else {\ngl_FragColor = vec4( mapColor.rgb * cubeColor.rgb * totalLight.xyz * vLightWeighting, mapColor.a );\n}\n} else if ( material == 1 ) {\nif ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mColor.rgb * mapColor.rgb * vLightWeighting, cubeColor.rgb, mReflectivity ), mColor.a * mapColor.a );\n} else {\ngl_FragColor = vec4( mColor.rgb * mapColor.rgb * cubeColor.rgb * vLightWeighting, mColor.a * mapColor.a );\n}\n} else {\nif ( mixEnvMap ) {\ngl_FragColor = mix( mColor * mapColor, cubeColor, mReflectivity );\n} else {\ngl_FragColor = mColor * mapColor * cubeColor;\n}\n}\n}"].join("\n"); -e=b(q,e);c.useProgram(e);j(e,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);f&&j(e,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);l&&j(e,["pointLightNumber","pointLightColor", -"pointLightPosition"]);c.uniform1i(e.uniforms.enableMap,0);c.uniform1i(e.uniforms.tMap,0);c.uniform1i(e.uniforms.enableCubeMap,0);c.uniform1i(e.uniforms.tCube,1);c.uniform1i(e.uniforms.mixEnvMap,0);c.uniform1i(e.uniforms.useRefract,0);n(e,["position","normal","uv"]);return e}(a.directional,a.point);this.setSize=function(f,l){o.width=f;o.height=l;c.viewport(0,0,o.width,o.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(f,l){var e,q,h,i,s,r=[], -M=[],B=[];i=[];s=[];c.uniform1i(f.uniforms.enableLighting,l.length);e=0;for(q=l.length;e0){E.__webGLUVBuffer=c.createBuffer(); -c.bindBuffer(c.ARRAY_BUFFER,E.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(y),c.STATIC_DRAW)}E.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(H),c.STATIC_DRAW);E.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);E.__webGLFaceCount=H.length;E.__webGLLineCount=Q.length}};this.renderBuffer= -function(f,l,e,q){var h,i,s,r,M,B,H,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);H=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)H.push(u);j(e.program,H);n(e.program,["position","normal","uv"])}u=e.program}else u=D;if(u!=F){c.useProgram(u);F=u}u==D&&this.setupLights(u,l);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){s=e.wireframe; -r=e.wireframe_linewidth;f=u;l=e.uniforms;var R;for(h in l){Q=l[h].type;H=l[h].value;R=f.uniforms[h];if(Q=="i")c.uniform1i(R,H);else if(Q=="f")c.uniform1f(R,H);else if(Q=="v3")c.uniform3f(R,H.x,H.y,H.z);else if(Q=="c")c.uniform3f(R,H.r,H.g,H.b);else if(Q=="t"){c.uniform1i(R,H);if(Q=l[h].texture)Q.image instanceof Array&&Q.image.length==6?d(Q,H):g(Q,H)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){h=e.color;i=e.opacity;s=e.wireframe; -r=e.wireframe_linewidth;M=e.map;B=e.env_map;l=e.combine==THREE.MixOperation;f=e.reflectivity;Q=e.env_map&&e.env_map.mapping instanceof THREE.CubeRefractionMapping;H=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(u.uniforms.mixEnvMap,l);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,H)}if(e instanceof THREE.MeshNormalMaterial){i=e.opacity;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1i(u.uniforms.material, -4)}else if(e instanceof THREE.MeshDepthMaterial){i=e.opacity;s=e.wireframe;r=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){h=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,i);c.uniform1f(u.uniforms.mShininess, -e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);B=e.env_map}if(M){g(M,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(B){d(B,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap, -0);i=u.attributes;c.bindBuffer(c.ARRAY_BUFFER,q.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,q.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.uv>=0)if(q.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,q.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(r);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLLineBuffer); -c.drawElements(c.LINES,q.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,q.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,l,e,q,h,i){var s,r,M,B,H;M=0;for(B=e.material.length;M=0;e--){q=f.__webGLObjects[e].object;l==q&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,l){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(l.matrix,f.matrix);I.set(l.matrix.flatten()); -G.set(w.flatten());L.set(l.projectionMatrix.flatten());x=THREE.Matrix4.makeInvert3x3(w).transpose();N.set(x.m);O.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,I);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,L);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,N);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,O)};this.loadCamera=function(f,l){c.uniform3f(f.uniforms.cameraPosition, -l.position.x,l.position.y,l.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,l){if(f){!l||l=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK); -c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]}; -THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; +g=b(q,g);c.useProgram(g);j(g,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);e&&j(g,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);l&&j(g,["pointLightNumber","pointLightColor", +"pointLightPosition"]);c.uniform1i(g.uniforms.enableMap,0);c.uniform1i(g.uniforms.tMap,0);c.uniform1i(g.uniforms.enableCubeMap,0);c.uniform1i(g.uniforms.tCube,1);c.uniform1i(g.uniforms.mixEnvMap,0);c.uniform1i(g.uniforms.useRefract,0);m(g,["position","normal","uv"]);return g}(a.directional,a.point);this.setSize=function(e,l){o.width=e;o.height=l;c.viewport(0,0,o.width,o.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(e,l){var g,q,h,i,s,p=[], +D=[],w=[];i=[];s=[];c.uniform1i(e.uniforms.enableLighting,l.length);g=0;for(q=l.length;g0){y.__webGLUVBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,y.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(Q),c.STATIC_DRAW)}y.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(S),c.STATIC_DRAW);y.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, +y.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(t),c.STATIC_DRAW);y.__webGLFaceCount=S.length;y.__webGLLineCount=t.length}};this.renderBuffer=function(e,l,g,q){var h,i,s,p,D,w,I,S,t;if(g instanceof THREE.MeshShaderMaterial){if(!g.program){g.program=b(g.fragment_shader,g.vertex_shader);I=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(t in g.uniforms)I.push(t);j(g.program,I);m(g.program,["position","normal","uv","tangent"])}t= +g.program}else t=C;if(t!=E){c.useProgram(t);E=t}t==C&&this.setupLights(t,l);this.loadCamera(t,e);this.loadMatrices(t);if(g instanceof THREE.MeshShaderMaterial){s=g.wireframe;p=g.wireframe_linewidth;e=t;l=g.uniforms;var O;for(h in l){S=l[h].type;I=l[h].value;O=e.uniforms[h];if(S=="i")c.uniform1i(O,I);else if(S=="f")c.uniform1f(O,I);else if(S=="v3")c.uniform3f(O,I.x,I.y,I.z);else if(S=="c")c.uniform3f(O,I.r,I.g,I.b);else if(S=="t"){c.uniform1i(O,I);if(S=l[h].texture)S.image instanceof Array&&S.image.length== +6?d(S,I):f(S,I)}}}if(g instanceof THREE.MeshPhongMaterial||g instanceof THREE.MeshLambertMaterial||g instanceof THREE.MeshBasicMaterial){h=g.color;i=g.opacity;s=g.wireframe;p=g.wireframe_linewidth;D=g.map;w=g.env_map;l=g.combine==THREE.MixOperation;e=g.reflectivity;S=g.env_map&&g.env_map.mapping instanceof THREE.CubeRefractionMapping;I=g.refraction_ratio;c.uniform4f(t.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(t.uniforms.mixEnvMap,l);c.uniform1f(t.uniforms.mReflectivity,e);c.uniform1i(t.uniforms.useRefract, +S);c.uniform1f(t.uniforms.mRefractionRatio,I)}if(g instanceof THREE.MeshNormalMaterial){i=g.opacity;c.uniform1f(t.uniforms.mOpacity,i);c.uniform1i(t.uniforms.material,4)}else if(g instanceof THREE.MeshDepthMaterial){i=g.opacity;s=g.wireframe;p=g.wireframe_linewidth;c.uniform1f(t.uniforms.mOpacity,i);c.uniform1f(t.uniforms.m2Near,g.__2near);c.uniform1f(t.uniforms.mFarPlusNear,g.__farPlusNear);c.uniform1f(t.uniforms.mFarMinusNear,g.__farMinusNear);c.uniform1i(t.uniforms.material,3)}else if(g instanceof +THREE.MeshPhongMaterial){h=g.ambient;e=g.specular;g=g.shininess;c.uniform4f(t.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(t.uniforms.mSpecular,e.r,e.g,e.b,i);c.uniform1f(t.uniforms.mShininess,g);c.uniform1i(t.uniforms.material,2)}else if(g instanceof THREE.MeshLambertMaterial)c.uniform1i(t.uniforms.material,1);else if(g instanceof THREE.MeshBasicMaterial)c.uniform1i(t.uniforms.material,0);else if(g instanceof THREE.MeshCubeMaterial){c.uniform1i(t.uniforms.material,5);w=g.env_map}if(D){f(D,0);c.uniform1i(t.uniforms.tMap, +0);c.uniform1i(t.uniforms.enableMap,1)}else c.uniform1i(t.uniforms.enableMap,0);if(w){d(w,1);c.uniform1i(t.uniforms.tCube,1);c.uniform1i(t.uniforms.enableCubeMap,1)}else c.uniform1i(t.uniforms.enableCubeMap,0);i=t.attributes;c.bindBuffer(c.ARRAY_BUFFER,q.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,q.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.tangent>=0){c.bindBuffer(c.ARRAY_BUFFER,q.__webGLTangentBuffer); +c.vertexAttribPointer(i.tangent,4,c.FLOAT,false,0,0)}if(i.uv>=0)if(q.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,q.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(p);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLLineBuffer);c.drawElements(c.LINES,q.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,q.__webGLFaceCount,c.UNSIGNED_SHORT, +0)}};this.renderPass=function(e,l,g,q,h,i){var s,p,D,w,I;D=0;for(w=g.material.length;D=0;g--){q=e.__webGLObjects[g].object;l==q&&e.__webGLObjects.splice(g,1)}};this.setupMatrices=function(e,l){e.autoUpdateMatrix&&e.updateMatrix();x.multiply(l.matrix,e.matrix);H.set(l.matrix.flatten());G.set(x.flatten());J.set(l.projectionMatrix.flatten());z=THREE.Matrix4.makeInvert3x3(x).transpose();L.set(z.m);M.set(e.matrix.flatten())};this.loadMatrices= +function(e){c.uniformMatrix4fv(e.uniforms.viewMatrix,false,H);c.uniformMatrix4fv(e.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(e.uniforms.projectionMatrix,false,J);c.uniformMatrix3fv(e.uniforms.normalMatrix,false,L);c.uniformMatrix4fv(e.uniforms.objectMatrix,false,M)};this.loadCamera=function(e,l){c.uniform3f(e.uniforms.cameraPosition,l.position.x,l.position.y,l.position.z)};this.setBlending=function(e){switch(e){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE); +break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(e,l){if(e){!l||l=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(e=="back")c.cullFace(c.BACK);else e=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)};this.supportsVertexTextures=function(){return c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0}}; +THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null}; +THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; diff --git a/build/ThreeExtras.js b/build/ThreeExtras.js index 7b6c8d57..2bd1f685 100644 --- a/build/ThreeExtras.js +++ b/build/ThreeExtras.js @@ -12,44 +12,47 @@ THREE.Vector4=function(a,b,d,e){this.x=a||0;this.y=b||0;this.z=d||0;this.w=e||1} THREE.Vector4.prototype={set:function(a,b,d,e){this.x=a;this.y=b;this.z=d;this.w=e;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w; return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}}; THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3}; -THREE.Ray.prototype={intersectScene:function(a){var b,d,e=a.objects,g=[];a=0;for(b=e.length;a0&&H>0&&n+H<1}var d,e,g,j,l,f,q,c,t,D, -r,u=a.geometry,v=u.vertices,w=[];d=0;for(e=u.faces.length;d= -0&&Math.min(g,q.getBottom())-Math.max(d,q.getTop())>=0};this.empty=function(){f=true;g=e=d=b=0;a()};this.isEmpty=function(){return f};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+e+", top: "+d+", bottom: "+g+", width: "+j+", height: "+l+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}}; +THREE.Ray.prototype={intersectScene:function(a){var b,d,e=a.objects,g=[];a=0;for(b=e.length;a0&&G>0&&o+G<1}var d,e,g,j,l,f,p,c,t,C, +r,u=a.geometry,v=u.vertices,w=[];d=0;for(e=u.faces.length;d= +0&&Math.min(g,p.getBottom())-Math.max(d,p.getTop())>=0};this.empty=function(){f=true;g=e=d=b=0;a()};this.isEmpty=function(){return f};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+e+", top: "+d+", bottom: "+g+", width: "+j+", height: "+l+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}}; THREE.Matrix4=function(){}; THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41= a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var e=new THREE.Vector3,g=new THREE.Vector3,j=new THREE.Vector3;j.sub(a,b).normalize();e.cross(d,j).normalize();g.cross(j,e).normalize();this.n11=e.x;this.n12=e.y;this.n13=e.z;this.n14=-e.dot(a);this.n21=g.x;this.n22=g.y;this.n23=g.z;this.n24=-g.dot(a);this.n31=j.x;this.n32=j.y;this.n33=j.z;this.n34=-j.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,e=a.z,g=1/(this.n41*b+this.n42* d+this.n43*e+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*e+this.n14)*g;a.y=(this.n21*b+this.n22*d+this.n23*e+this.n24)*g;a.z=(this.n31*b+this.n32*d+this.n33*e+this.n34)*g;return a},multiplyVector4:function(a){var b=a.x,d=a.y,e=a.z,g=a.w;a.x=this.n11*b+this.n12*d+this.n13*e+this.n14*g;a.y=this.n21*b+this.n22*d+this.n23*e+this.n24*g;a.z=this.n31*b+this.n32*d+this.n33*e+this.n34*g;a.w=this.n41*b+this.n42*d+this.n43*e+this.n44*g;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11* -a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,e=a.n12,g=a.n13,j=a.n14,l=a.n21,f=a.n22,q=a.n23,c=a.n24,t=a.n31,D=a.n32,r=a.n33,u=a.n34,v=a.n41,w=a.n42,H=a.n43,I=a.n44,z=b.n11,m=b.n12,h=b.n13,n=b.n14,i=b.n21,y=b.n22,k=b.n23,o=b.n24,B=b.n31,A=b.n32,P=b.n33,J=b.n34,Q=b.n41,T=b.n42,E=b.n43, -U=b.n44;this.n11=d*z+e*i+g*B+j*Q;this.n12=d*m+e*y+g*A+j*T;this.n13=d*h+e*k+g*P+j*E;this.n14=d*n+e*o+g*J+j*U;this.n21=l*z+f*i+q*B+c*Q;this.n22=l*m+f*y+q*A+c*T;this.n23=l*h+f*k+q*P+c*E;this.n24=l*n+f*o+q*J+c*U;this.n31=t*z+D*i+r*B+u*Q;this.n32=t*m+D*y+r*A+u*T;this.n33=t*h+D*k+r*P+u*E;this.n34=t*n+D*o+r*J+u*U;this.n41=v*z+w*i+H*B+I*Q;this.n42=v*m+w*y+H*A+I*T;this.n43=v*h+w*k+H*P+I*E;this.n44=v*n+w*o+H*J+I*U},multiplySelf:function(a){var b=this.n11,d=this.n12,e=this.n13,g=this.n14,j=this.n21,l=this.n22, -f=this.n23,q=this.n24,c=this.n31,t=this.n32,D=this.n33,r=this.n34,u=this.n41,v=this.n42,w=this.n43,H=this.n44;this.n11=b*a.n11+d*a.n21+e*a.n31+g*a.n41;this.n12=b*a.n12+d*a.n22+e*a.n32+g*a.n42;this.n13=b*a.n13+d*a.n23+e*a.n33+g*a.n43;this.n14=b*a.n14+d*a.n24+e*a.n34+g*a.n44;this.n21=j*a.n11+l*a.n21+f*a.n31+q*a.n41;this.n22=j*a.n12+l*a.n22+f*a.n32+q*a.n42;this.n23=j*a.n13+l*a.n23+f*a.n33+q*a.n43;this.n24=j*a.n14+l*a.n24+f*a.n34+q*a.n44;this.n31=c*a.n11+t*a.n21+D*a.n31+r*a.n41;this.n32=c*a.n12+t*a.n22+ -D*a.n32+r*a.n42;this.n33=c*a.n13+t*a.n23+D*a.n33+r*a.n43;this.n34=c*a.n14+t*a.n24+D*a.n34+r*a.n44;this.n41=u*a.n11+v*a.n21+w*a.n31+H*a.n41;this.n42=u*a.n12+v*a.n22+w*a.n32+H*a.n42;this.n43=u*a.n13+v*a.n23+w*a.n33+H*a.n43;this.n44=u*a.n14+v*a.n24+w*a.n34+H*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* +a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,e=a.n12,g=a.n13,j=a.n14,l=a.n21,f=a.n22,p=a.n23,c=a.n24,t=a.n31,C=a.n32,r=a.n33,u=a.n34,v=a.n41,w=a.n42,G=a.n43,H=a.n44,A=b.n11,m=b.n12,h=b.n13,o=b.n14,i=b.n21,x=b.n22,k=b.n23,n=b.n24,B=b.n31,y=b.n32,L=b.n33,F=b.n34,O=b.n41,V=b.n42,E=b.n43, +S=b.n44;this.n11=d*A+e*i+g*B+j*O;this.n12=d*m+e*x+g*y+j*V;this.n13=d*h+e*k+g*L+j*E;this.n14=d*o+e*n+g*F+j*S;this.n21=l*A+f*i+p*B+c*O;this.n22=l*m+f*x+p*y+c*V;this.n23=l*h+f*k+p*L+c*E;this.n24=l*o+f*n+p*F+c*S;this.n31=t*A+C*i+r*B+u*O;this.n32=t*m+C*x+r*y+u*V;this.n33=t*h+C*k+r*L+u*E;this.n34=t*o+C*n+r*F+u*S;this.n41=v*A+w*i+G*B+H*O;this.n42=v*m+w*x+G*y+H*V;this.n43=v*h+w*k+G*L+H*E;this.n44=v*o+w*n+G*F+H*S},multiplySelf:function(a){var b=this.n11,d=this.n12,e=this.n13,g=this.n14,j=this.n21,l=this.n22, +f=this.n23,p=this.n24,c=this.n31,t=this.n32,C=this.n33,r=this.n34,u=this.n41,v=this.n42,w=this.n43,G=this.n44;this.n11=b*a.n11+d*a.n21+e*a.n31+g*a.n41;this.n12=b*a.n12+d*a.n22+e*a.n32+g*a.n42;this.n13=b*a.n13+d*a.n23+e*a.n33+g*a.n43;this.n14=b*a.n14+d*a.n24+e*a.n34+g*a.n44;this.n21=j*a.n11+l*a.n21+f*a.n31+p*a.n41;this.n22=j*a.n12+l*a.n22+f*a.n32+p*a.n42;this.n23=j*a.n13+l*a.n23+f*a.n33+p*a.n43;this.n24=j*a.n14+l*a.n24+f*a.n34+p*a.n44;this.n31=c*a.n11+t*a.n21+C*a.n31+r*a.n41;this.n32=c*a.n12+t*a.n22+ +C*a.n32+r*a.n42;this.n33=c*a.n13+t*a.n23+C*a.n33+r*a.n43;this.n34=c*a.n14+t*a.n24+C*a.n34+r*a.n44;this.n41=u*a.n11+v*a.n21+w*a.n31+G*a.n41;this.n42=u*a.n12+v*a.n22+w*a.n32+G*a.n42;this.n43=u*a.n13+v*a.n23+w*a.n33+G*a.n43;this.n44=u*a.n14+v*a.n24+w*a.n34+G*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14* this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14* this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,e){var g=b[d];b[d]=b[e];b[e]=g}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this, "n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){return[this.n11,this.n21,this.n31,this.n41,this.n12,this.n22,this.n32,this.n42,this.n13,this.n23,this.n33,this.n43,this.n14,this.n24,this.n34,this.n44]}, toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,b,d){var e=new THREE.Matrix4;e.n14=a;e.n24=b;e.n34=d;return e};THREE.Matrix4.scaleMatrix=function(a,b,d){var e=new THREE.Matrix4;e.n11=a;e.n22=b;e.n33=d;return e}; THREE.Matrix4.rotationXMatrix=function(a){var b=new THREE.Matrix4;b.n22=b.n33=Math.cos(a);b.n32=Math.sin(a);b.n23=-b.n32;return b};THREE.Matrix4.rotationYMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n33=Math.cos(a);b.n13=Math.sin(a);b.n31=-b.n13;return b};THREE.Matrix4.rotationZMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n22=Math.cos(a);b.n21=Math.sin(a);b.n12=-b.n21;return b}; -THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,e=Math.cos(b),g=Math.sin(b),j=1-e,l=a.x,f=a.y,q=a.z;d.n11=j*l*l+e;d.n12=j*l*f-g*q;d.n13=j*l*q+g*f;d.n21=j*l*f+g*q;d.n22=j*f*f+e;d.n23=j*f*q-g*l;d.n31=j*l*q-g*f;d.n32=j*f*q+g*l;d.n33=j*q*q+e;return d}; +THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,e=Math.cos(b),g=Math.sin(b),j=1-e,l=a.x,f=a.y,p=a.z;d.n11=j*l*l+e;d.n12=j*l*f-g*p;d.n13=j*l*p+g*f;d.n21=j*l*f+g*p;d.n22=j*f*f+e;d.n23=j*f*p-g*l;d.n31=j*l*p-g*f;d.n32=j*f*p+g*l;d.n33=j*p*p+e;return d}; THREE.Matrix4.makeInvert=function(a){var b=new THREE.Matrix4;b.n11=a.n23*a.n34*a.n42-a.n24*a.n33*a.n42+a.n24*a.n32*a.n43-a.n22*a.n34*a.n43-a.n23*a.n32*a.n44+a.n22*a.n33*a.n44;b.n12=a.n14*a.n33*a.n42-a.n13*a.n34*a.n42-a.n14*a.n32*a.n43+a.n12*a.n34*a.n43+a.n13*a.n32*a.n44-a.n12*a.n33*a.n44;b.n13=a.n13*a.n24*a.n42-a.n14*a.n23*a.n42+a.n14*a.n22*a.n43-a.n12*a.n24*a.n43-a.n13*a.n22*a.n44+a.n12*a.n23*a.n44;b.n14=a.n14*a.n23*a.n32-a.n13*a.n24*a.n32-a.n14*a.n22*a.n33+a.n12*a.n24*a.n33+a.n13*a.n22*a.n34-a.n12* a.n23*a.n34;b.n21=a.n24*a.n33*a.n41-a.n23*a.n34*a.n41-a.n24*a.n31*a.n43+a.n21*a.n34*a.n43+a.n23*a.n31*a.n44-a.n21*a.n33*a.n44;b.n22=a.n13*a.n34*a.n41-a.n14*a.n33*a.n41+a.n14*a.n31*a.n43-a.n11*a.n34*a.n43-a.n13*a.n31*a.n44+a.n11*a.n33*a.n44;b.n23=a.n14*a.n23*a.n41-a.n13*a.n24*a.n41-a.n14*a.n21*a.n43+a.n11*a.n24*a.n43+a.n13*a.n21*a.n44-a.n11*a.n23*a.n44;b.n24=a.n13*a.n24*a.n31-a.n14*a.n23*a.n31+a.n14*a.n21*a.n33-a.n11*a.n24*a.n33-a.n13*a.n21*a.n34+a.n11*a.n23*a.n34;b.n31=a.n22*a.n34*a.n41-a.n24*a.n32* a.n41+a.n24*a.n31*a.n42-a.n21*a.n34*a.n42-a.n22*a.n31*a.n44+a.n21*a.n32*a.n44;b.n32=a.n14*a.n32*a.n41-a.n12*a.n34*a.n41-a.n14*a.n31*a.n42+a.n11*a.n34*a.n42+a.n12*a.n31*a.n44-a.n11*a.n32*a.n44;b.n33=a.n13*a.n24*a.n41-a.n14*a.n22*a.n41+a.n14*a.n21*a.n42-a.n11*a.n24*a.n42-a.n12*a.n21*a.n44+a.n11*a.n22*a.n44;b.n34=a.n14*a.n22*a.n31-a.n12*a.n24*a.n31-a.n14*a.n21*a.n32+a.n11*a.n24*a.n32+a.n12*a.n21*a.n34-a.n11*a.n22*a.n34;b.n41=a.n23*a.n32*a.n41-a.n22*a.n33*a.n41-a.n23*a.n31*a.n42+a.n21*a.n33*a.n42+a.n22* a.n31*a.n43-a.n21*a.n32*a.n43;b.n42=a.n12*a.n33*a.n41-a.n13*a.n32*a.n41+a.n13*a.n31*a.n42-a.n11*a.n33*a.n42-a.n12*a.n31*a.n43+a.n11*a.n32*a.n43;b.n43=a.n13*a.n22*a.n41-a.n12*a.n23*a.n41-a.n13*a.n21*a.n42+a.n11*a.n23*a.n42+a.n12*a.n21*a.n43-a.n11*a.n22*a.n43;b.n44=a.n12*a.n23*a.n31-a.n13*a.n22*a.n31+a.n13*a.n21*a.n32-a.n11*a.n23*a.n32-a.n12*a.n21*a.n33+a.n11*a.n22*a.n33;b.multiplyScalar(1/a.determinant());return b}; -THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],e=-b[10]*b[1]+b[2]*b[9],g=b[6]*b[1]-b[2]*b[5],j=-b[10]*b[4]+b[6]*b[8],l=b[10]*b[0]-b[2]*b[8],f=-b[6]*b[0]+b[2]*b[4],q=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],t=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*j+b[2]*q;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*e;a.m[2]=b*g;a.m[3]=b*j;a.m[4]=b*l;a.m[5]=b*f;a.m[6]=b*q;a.m[7]=b*c;a.m[8]=b*t;return a}; -THREE.Matrix4.makeFrustum=function(a,b,d,e,g,j){var l,f,q;l=new THREE.Matrix4;f=2*g/(b-a);q=2*g/(e-d);a=(b+a)/(b-a);d=(e+d)/(e-d);e=-(j+g)/(j-g);g=-2*j*g/(j-g);l.n11=f;l.n12=0;l.n13=a;l.n14=0;l.n21=0;l.n22=q;l.n23=d;l.n24=0;l.n31=0;l.n32=0;l.n33=e;l.n34=g;l.n41=0;l.n42=0;l.n43=-1;l.n44=0;return l};THREE.Matrix4.makePerspective=function(a,b,d,e){var g;a=d*Math.tan(a*Math.PI/360);g=-a;return THREE.Matrix4.makeFrustum(g*b,a*b,g,a,d,e)}; -THREE.Matrix4.makeOrtho=function(a,b,d,e,g,j){var l,f,q,c;l=new THREE.Matrix4;f=b-a;q=d-e;c=j-g;a=(b+a)/f;d=(d+e)/q;g=(j+g)/c;l.n11=2/f;l.n12=0;l.n13=0;l.n14=-a;l.n21=0;l.n22=2/q;l.n23=0;l.n24=-d;l.n31=0;l.n32=0;l.n33=-2/c;l.n34=-g;l.n41=0;l.n42=0;l.n43=0;l.n44=1;return l}; -THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}}; +THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],e=-b[10]*b[1]+b[2]*b[9],g=b[6]*b[1]-b[2]*b[5],j=-b[10]*b[4]+b[6]*b[8],l=b[10]*b[0]-b[2]*b[8],f=-b[6]*b[0]+b[2]*b[4],p=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],t=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*j+b[2]*p;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*e;a.m[2]=b*g;a.m[3]=b*j;a.m[4]=b*l;a.m[5]=b*f;a.m[6]=b*p;a.m[7]=b*c;a.m[8]=b*t;return a}; +THREE.Matrix4.makeFrustum=function(a,b,d,e,g,j){var l,f,p;l=new THREE.Matrix4;f=2*g/(b-a);p=2*g/(e-d);a=(b+a)/(b-a);d=(e+d)/(e-d);e=-(j+g)/(j-g);g=-2*j*g/(j-g);l.n11=f;l.n12=0;l.n13=a;l.n14=0;l.n21=0;l.n22=p;l.n23=d;l.n24=0;l.n31=0;l.n32=0;l.n33=e;l.n34=g;l.n41=0;l.n42=0;l.n43=-1;l.n44=0;return l};THREE.Matrix4.makePerspective=function(a,b,d,e){var g;a=d*Math.tan(a*Math.PI/360);g=-a;return THREE.Matrix4.makeFrustum(g*b,a*b,g,a,d,e)}; +THREE.Matrix4.makeOrtho=function(a,b,d,e,g,j){var l,f,p,c;l=new THREE.Matrix4;f=b-a;p=d-e;c=j-g;a=(b+a)/f;d=(d+e)/p;g=(j+g)/c;l.n11=2/f;l.n12=0;l.n13=0;l.n14=-a;l.n21=0;l.n22=2/p;l.n23=0;l.n24=-d;l.n31=0;l.n32=0;l.n33=-2/c;l.n34=-g;l.n41=0;l.n42=0;l.n43=0;l.n44=1;return l}; +THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.tangent=new THREE.Vector4;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}}; THREE.Face3=function(a,b,d,e,g){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.material=g instanceof Array?g:[g]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}}; THREE.Face4=function(a,b,d,e,g,j){this.a=a;this.b=b;this.c=d;this.d=e;this.centroid=new THREE.Vector3;this.normal=g instanceof THREE.Vector3?g:new THREE.Vector3;this.vertexNormals=g instanceof Array?g:[];this.material=j instanceof Array?j:[j]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0}; -THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={}}; +THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={};this.hasTangents=false}; THREE.Geometry.prototype={computeCentroids:function(){var a,b,d;a=0;for(b=this.faces.length;a0){this.bbox={x:[this.vertices[0].position.x, -this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;athis.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.ythis.bbox.y[1])this.bbox.y[1]=vertex.position.y; -if(vertex.position.zthis.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(t){var D=[];b=0;for(d=t.length;b65535){c[f].counter+=1;q=c[f].hash+"_"+c[f].counter;if(this.geometryChunks[q]==undefined)this.geometryChunks[q]={faces:[],material:l,vertices:0}}this.geometryChunks[q].faces.push(e);this.geometryChunks[q].vertices+=j}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}}; +d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,e,g,j,l,f=new THREE.Vector3,p=new THREE.Vector3;e=0;for(g=this.vertices.length;e0){this.bbox={x:[this.vertices[0].position.x,this.vertices[0].position.x], +y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;athis.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.ythis.bbox.y[1])this.bbox.y[1]=vertex.position.y;if(vertex.position.zthis.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(t){var C=[];b=0;for(d=t.length;b65535){c[f].counter+=1;p=c[f].hash+"_"+c[f].counter;if(this.geometryChunks[p]==undefined)this.geometryChunks[p]={faces:[],material:l,vertices:0}}this.geometryChunks[p].faces.push(e);this.geometryChunks[p].vertices+=j}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}}; THREE.Camera=function(a,b,d,e){this.position=new THREE.Vector3(0,0,0);this.target={position:new THREE.Vector3(0,0,0)};this.up=new THREE.Vector3(0,1,0);this.matrix=new THREE.Matrix4;this.projectionMatrix=THREE.Matrix4.makePerspective(a,b,d,e);this.autoUpdateMatrix=true;this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.toString=function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)}; THREE.AmbientLight=function(a){THREE.Light.call(this,a)};THREE.AmbientLight.prototype=new THREE.Light;THREE.AmbientLight.prototype.constructor=THREE.AmbientLight;THREE.DirectionalLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3(0,1,0);this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.DirectionalLight; THREE.PointLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3;this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.PointLight; @@ -86,127 +89,132 @@ THREE.Texture=function(a,b,d,e,g,j){this.image=a;this.mapping=b!==undefined?b:ne this.min_filter+"
)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){}; THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){}; THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}}; -THREE.Projector=function(){function a(z,m){var h=0,n=1,i=z.z+z.w,y=m.z+m.w,k=-z.z+z.w,o=-m.z+m.w;if(i>=0&&y>=0&&k>=0&&o>=0)return true;else if(i<0&&y<0||k<0&&o<0)return false;else{if(i<0)h=Math.max(h,i/(i-y));else if(y<0)n=Math.min(n,i/(i-y));if(k<0)h=Math.max(h,k/(k-o));else if(o<0)n=Math.min(n,k/(k-o));if(n0&&K.z<1}U=A.geometry.faces;i=0;for(y=U.length;i0&&r.z<1){c=D[t]=D[t]||new THREE.RenderableParticle;c.x=r.x/r.w;c.y=r.y/r.w;c.z=r.z;c.rotation=A.rotation.z;c.scale.x=A.scale.x*Math.abs(c.x-(r.x+m.projectionMatrix.n11)/(r.w+m.projectionMatrix.n14));c.scale.y=A.scale.y*Math.abs(c.y-(r.y+m.projectionMatrix.n22)/(r.w+m.projectionMatrix.n24));c.material=A.material;b.push(c);t++}}}b.sort(function(Y,R){return R.z-Y.z});return b};this.unprojectVector=function(z,m){var h=new THREE.Matrix4; -h.multiply(THREE.Matrix4.makeInvert(m.matrix),THREE.Matrix4.makeInvert(m.projectionMatrix));h.multiplyVector3(z);return z}}; -THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,e,g,j;this.domElement=document.createElement("div");this.setSize=function(l,f){d=l;e=f;g=d/2;j=e/2};this.render=function(l,f){var q,c,t,D,r,u,v,w;a=b.projectScene(l,f);q=0;for(c=a.length;q0){F.r+=ca.r*Z;F.g+=ca.g*Z;F.b+=ca.b*Z}}else if(Z instanceof THREE.PointLight){$.sub(Z.position,X);$.normalize();Z=S.dot($)*ea;if(Z>0){F.r+=ca.r*Z;F.g+=ca.g*Z;F.b+=ca.b*Z}}}}function Na(C,X,S){if(S.opacity!=0){Ea(S.opacity);za(S.blending);var F,O,Z,ca,ea,fa;if(S instanceof THREE.ParticleBasicMaterial){if(S.map){ca=S.map;ea=ca.width>>1;fa=ca.height>>1;O=X.scale.x*j;Z=X.scale.y*l;S=O*ea;F=Z*fa;p.set(C.x-S,C.y-F,C.x+S, -C.y+F);if(M.instersects(p)){f.save();f.translate(C.x,C.y);f.rotate(-X.rotation);f.scale(O,-Z);f.translate(-ea,-fa);f.drawImage(ca,0,0);f.restore()}}}else if(S instanceof THREE.ParticleCircleMaterial){if(s){x.r=G.r+V.r+ba.r;x.g=G.g+V.g+ba.g;x.b=G.b+V.b+ba.b;k.r=S.color.r*x.r;k.g=S.color.g*x.g;k.b=S.color.b*x.b;k.updateStyleString()}else k.__styleString=S.color.__styleString;S=X.scale.x*j;F=X.scale.y*l;p.set(C.x-S,C.y-F,C.x+S,C.y+F);if(M.instersects(p)){O=k.__styleString;if(D!=O)f.fillStyle=D=O;f.save(); -f.translate(C.x,C.y);f.rotate(-X.rotation);f.scale(S,F);f.beginPath();f.arc(0,0,1,0,ga,true);f.closePath();f.fill();f.restore()}}}}function Oa(C,X,S,F){if(F.opacity!=0){Ea(F.opacity);za(F.blending);f.beginPath();f.moveTo(C.positionScreen.x,C.positionScreen.y);f.lineTo(X.positionScreen.x,X.positionScreen.y);f.closePath();if(F instanceof THREE.LineBasicMaterial){k.__styleString=F.color.__styleString;C=F.linewidth;if(r!=C)f.lineWidth=r=C;C=k.__styleString;if(t!=C)f.strokeStyle=t=C;f.stroke();p.inflate(F.linewidth* -2)}}}function Ia(C,X,S,F,O,Z){if(O.opacity!=0){Ea(O.opacity);za(O.blending);z=C.positionScreen.x;m=C.positionScreen.y;h=X.positionScreen.x;n=X.positionScreen.y;i=S.positionScreen.x;y=S.positionScreen.y;f.beginPath();f.moveTo(z,m);f.lineTo(h,n);f.lineTo(i,y);f.lineTo(z,m);f.closePath();if(O instanceof THREE.MeshBasicMaterial)if(O.map)O.map.image.loaded&&O.map.mapping instanceof THREE.UVMapping&&ra(z,m,h,n,i,y,O.map.image,F.uvs[0].u,F.uvs[0].v,F.uvs[1].u,F.uvs[1].v,F.uvs[2].u,F.uvs[2].v);else if(O.env_map){if(O.env_map.image.loaded)if(O.env_map.mapping instanceof -THREE.SphericalReflectionMapping){C=xa.matrix;$.copy(F.vertexNormalsWorld[0]);U=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;K=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;$.copy(F.vertexNormalsWorld[1]);L=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;N=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;$.copy(F.vertexNormalsWorld[2]);Y=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;R=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;ra(z,m,h,n,i,y,O.env_map.image,U,K,L,N,Y,R)}}else O.wireframe?Aa(O.color.__styleString,O.wireframe_linewidth): -Ba(O.color.__styleString);else if(O instanceof THREE.MeshLambertMaterial){if(O.map&&!O.wireframe){O.map.mapping instanceof THREE.UVMapping&&ra(z,m,h,n,i,y,O.map.image,F.uvs[0].u,F.uvs[0].v,F.uvs[1].u,F.uvs[1].v,F.uvs[2].u,F.uvs[2].v);za(THREE.SubtractiveBlending)}if(s)if(!O.wireframe&&O.shading==THREE.SmoothShading&&F.vertexNormalsWorld.length==3){o.r=B.r=A.r=G.r;o.g=B.g=A.g=G.g;o.b=B.b=A.b=G.b;ya(Z,F.v1.positionWorld,F.vertexNormalsWorld[0],o);ya(Z,F.v2.positionWorld,F.vertexNormalsWorld[1],B);ya(Z, -F.v3.positionWorld,F.vertexNormalsWorld[2],A);P.r=(B.r+A.r)*0.5;P.g=(B.g+A.g)*0.5;P.b=(B.b+A.b)*0.5;E=Ja(o,B,A,P);ra(z,m,h,n,i,y,E,0,0,1,0,0,1)}else{x.r=G.r;x.g=G.g;x.b=G.b;ya(Z,F.centroidWorld,F.normalWorld,x);k.r=O.color.r*x.r;k.g=O.color.g*x.g;k.b=O.color.b*x.b;k.updateStyleString();O.wireframe?Aa(k.__styleString,O.wireframe_linewidth):Ba(k.__styleString)}else O.wireframe?Aa(O.color.__styleString,O.wireframe_linewidth):Ba(O.color.__styleString)}else if(O instanceof THREE.MeshDepthMaterial){J=O.__2near; -Q=O.__farPlusNear;T=O.__farMinusNear;o.r=o.g=o.b=1-J/(Q-C.positionScreen.z*T);B.r=B.g=B.b=1-J/(Q-X.positionScreen.z*T);A.r=A.g=A.b=1-J/(Q-S.positionScreen.z*T);P.r=(B.r+A.r)*0.5;P.g=(B.g+A.g)*0.5;P.b=(B.b+A.b)*0.5;E=Ja(o,B,A,P);ra(z,m,h,n,i,y,E,0,0,1,0,0,1)}else if(O instanceof THREE.MeshNormalMaterial){k.r=Fa(F.normalWorld.x);k.g=Fa(F.normalWorld.y);k.b=Fa(F.normalWorld.z);k.updateStyleString();O.wireframe?Aa(k.__styleString,O.wireframe_linewidth):Ba(k.__styleString)}}}function Aa(C,X){if(t!=C)f.strokeStyle= -t=C;if(r!=X)f.lineWidth=r=X;f.stroke();p.inflate(X*2)}function Ba(C){if(D!=C)f.fillStyle=D=C;f.fill()}function ra(C,X,S,F,O,Z,ca,ea,fa,sa,la,ta,ua){var ma,ja;ma=ca.width-1;ja=ca.height-1;ea*=ma;fa*=ja;sa*=ma;la*=ja;ta*=ma;ua*=ja;S-=C;F-=X;O-=C;Z-=X;sa-=ea;la-=fa;ta-=ea;ua-=fa;ja=1/(sa*ua-ta*la);ma=(ua*S-la*O)*ja;la=(ua*F-la*Z)*ja;S=(sa*O-ta*S)*ja;F=(sa*Z-ta*F)*ja;C=C-ma*ea-S*fa;X=X-la*ea-F*fa;f.save();f.transform(ma,la,S,F,C,X);f.clip();f.drawImage(ca,0,0);f.restore()}function Ea(C){if(q!=C)f.globalAlpha= -q=C}function za(C){if(c!=C){switch(C){case THREE.NormalBlending:f.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:f.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:f.globalCompositeOperation="darker"}c=C}}function Ja(C,X,S,F){da[0]=v(0,u(255,~~(C.r*255)));da[1]=v(0,u(255,~~(C.g*255)));da[2]=v(0,u(255,~~(C.b*255)));da[4]=v(0,u(255,~~(X.r*255)));da[5]=v(0,u(255,~~(X.g*255)));da[6]=v(0,u(255,~~(X.b*255)));da[8]=v(0,u(255,~~(S.r*255)));da[9]=v(0,u(255, -~~(S.g*255)));da[10]=v(0,u(255,~~(S.b*255)));da[12]=v(0,u(255,~~(F.r*255)));da[13]=v(0,u(255,~~(F.g*255)));da[14]=v(0,u(255,~~(F.b*255)));pa.putImageData(Da,0,0);wa.drawImage(ka,0,0);return qa}function Fa(C){return C<0?u((1+C)*0.5,0.5):0.5+u(C*0.5,0.5)}function Ga(C,X){var S=X.x-C.x,F=X.y-C.y,O=1/Math.sqrt(S*S+F*F);S*=O;F*=O;X.x+=S;X.y+=F;C.x-=S;C.y-=F}var Ca,Ka,aa,ha,oa,Ha,La,va;f.setTransform(1,0,0,-1,j,l);this.autoClear&&this.clear();a=b.projectScene(ia,xa);(s=ia.lights.length>0)&&Ma(ia);Ca=0; -for(Ka=a.length;Ca0){N.r+=M.color.r*W;N.g+=M.color.g*W;N.b+=M.color.b*W}}else if(M instanceof THREE.PointLight){o.sub(M.position,L.centroidWorld);o.normalize();W=L.normalWorld.dot(o)*M.intensity;if(W>0){N.r+=M.color.r*W;N.g+=M.color.g*W;N.b+=M.color.b*W}}}}function b(K,L,N,Y,R,M){J=e(Q++);J.setAttribute("d","M "+K.positionScreen.x+ -" "+K.positionScreen.y+" L "+L.positionScreen.x+" "+L.positionScreen.y+" L "+N.positionScreen.x+","+N.positionScreen.y+"z");if(R instanceof THREE.MeshBasicMaterial)m.__styleString=R.color.__styleString;else if(R instanceof THREE.MeshLambertMaterial)if(z){h.r=n.r;h.g=n.g;h.b=n.b;a(M,Y,h);m.r=R.color.r*h.r;m.g=R.color.g*h.g;m.b=R.color.b*h.b;m.updateStyleString()}else m.__styleString=R.color.__styleString;else if(R instanceof THREE.MeshDepthMaterial){k=1-R.__2near/(R.__farPlusNear-Y.z*R.__farMinusNear); -m.setRGB(k,k,k)}else R instanceof THREE.MeshNormalMaterial&&m.setRGB(g(Y.normalWorld.x),g(Y.normalWorld.y),g(Y.normalWorld.z));R.wireframe?J.setAttribute("style","fill: none; stroke: "+m.__styleString+"; stroke-width: "+R.wireframe_linewidth+"; stroke-opacity: "+R.opacity+"; stroke-linecap: "+R.wireframe_linecap+"; stroke-linejoin: "+R.wireframe_linejoin):J.setAttribute("style","fill: "+m.__styleString+"; fill-opacity: "+R.opacity);f.appendChild(J)}function d(K,L,N,Y,R,M,W){J=e(Q++);J.setAttribute("d", -"M "+K.positionScreen.x+" "+K.positionScreen.y+" L "+L.positionScreen.x+" "+L.positionScreen.y+" L "+N.positionScreen.x+","+N.positionScreen.y+" L "+Y.positionScreen.x+","+Y.positionScreen.y+"z");if(M instanceof THREE.MeshBasicMaterial)m.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshLambertMaterial)if(z){h.r=n.r;h.g=n.g;h.b=n.b;a(W,R,h);m.r=M.color.r*h.r;m.g=M.color.g*h.g;m.b=M.color.b*h.b;m.updateStyleString()}else m.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshDepthMaterial){k= -1-M.__2near/(M.__farPlusNear-R.z*M.__farMinusNear);m.setRGB(k,k,k)}else M instanceof THREE.MeshNormalMaterial&&m.setRGB(g(R.normalWorld.x),g(R.normalWorld.y),g(R.normalWorld.z));M.wireframe?J.setAttribute("style","fill: none; stroke: "+m.__styleString+"; stroke-width: "+M.wireframe_linewidth+"; stroke-opacity: "+M.opacity+"; stroke-linecap: "+M.wireframe_linecap+"; stroke-linejoin: "+M.wireframe_linejoin):J.setAttribute("style","fill: "+m.__styleString+"; fill-opacity: "+M.opacity);f.appendChild(J)} -function e(K){if(B[K]==null){B[K]=document.createElementNS("http://www.w3.org/2000/svg","path");U==0&&B[K].setAttribute("shape-rendering","crispEdges");return B[K]}return B[K]}function g(K){return K<0?Math.min((1+K)*0.5,0.5):0.5+Math.min(K*0.5,0.5)}var j=null,l=new THREE.Projector,f=document.createElementNS("http://www.w3.org/2000/svg","svg"),q,c,t,D,r,u,v,w,H=new THREE.Rectangle,I=new THREE.Rectangle,z=false,m=new THREE.Color(16777215),h=new THREE.Color(16777215),n=new THREE.Color(0),i=new THREE.Color(0), -y=new THREE.Color(0),k,o=new THREE.Vector3,B=[],A=[],P=[],J,Q,T,E,U=1;this.domElement=f;this.autoClear=true;this.setQuality=function(K){switch(K){case "high":U=1;break;case "low":U=0}};this.setSize=function(K,L){q=K;c=L;t=q/2;D=c/2;f.setAttribute("viewBox",-t+" "+-D+" "+q+" "+c);f.setAttribute("width",q);f.setAttribute("height",c);H.set(-t,-D,t,D)};this.clear=function(){for(;f.childNodes.length>0;)f.removeChild(f.childNodes[0])};this.render=function(K,L){var N,Y,R,M,W,p,s,x;this.autoClear&&this.clear(); -j=l.projectScene(K,L);E=T=Q=0;if(z=K.lights.length>0){s=K.lights;n.setRGB(0,0,0);i.setRGB(0,0,0);y.setRGB(0,0,0);N=0;for(Y=s.length;N=0&&c.enableVertexAttribArray(h.attributes[k])}}function l(h,n){var i;if(h=="fragment")i=c.createShader(c.FRAGMENT_SHADER);else if(h=="vertex")i=c.createShader(c.VERTEX_SHADER);c.shaderSource(i,n);c.compileShader(i);if(!c.getShaderParameter(i, -c.COMPILE_STATUS)){alert(c.getShaderInfoLog(i));return null}return i}function f(h){switch(h){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST; -case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var q=document.createElement("canvas"),c,t,D,r=new THREE.Matrix4,u,v=new Float32Array(16),w=new Float32Array(16),H=new Float32Array(16),I=new Float32Array(9),z=new Float32Array(16);a=function(h,n){if(h){var i,y,k,o=pointLights=maxDirLights=maxPointLights=0;i=0;for(y=h.lights.length;i= 0.0 )": -"",n?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",n?"pointDiffuse += mColor * pointDiffuseWeight;":"",n?"pointSpecular += mSpecular * pointSpecularWeight;":"",n?"}":"",h?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",h?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",h?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",h?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",h?"vec3 dirVector = normalize( lDirection.xyz );":"",h?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": -"",h?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",h?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",h?"float dirSpecularWeight = 0.0;":"",h?"if ( dirDotNormalHalf >= 0.0 )":"",h?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",h?"dirDiffuse += mColor * dirDiffuseWeight;":"",h?"dirSpecular += mSpecular * dirSpecularWeight;":"",h?"}":"","vec4 totalLight = mAmbient;",h?"totalLight += dirDiffuse + dirSpecular;":"",n?"totalLight += pointDiffuse + pointSpecular;": +THREE.Projector=function(){function a(A,m){var h=0,o=1,i=A.z+A.w,x=m.z+m.w,k=-A.z+A.w,n=-m.z+m.w;if(i>=0&&x>=0&&k>=0&&n>=0)return true;else if(i<0&&x<0||k<0&&n<0)return false;else{if(i<0)h=Math.max(h,i/(i-x));else if(x<0)o=Math.min(o,i/(i-x));if(k<0)h=Math.max(h,k/(k-n));else if(n<0)o=Math.min(o,k/(k-n));if(o0&&N.z<1}S=y.geometry.faces;i=0;for(x=S.length;i0&&r.z<1){c=C[t]=C[t]||new THREE.RenderableParticle;c.x=r.x/r.w;c.y=r.y/r.w;c.z=r.z;c.rotation=y.rotation.z;c.scale.x=y.scale.x*Math.abs(c.x-(r.x+m.projectionMatrix.n11)/(r.w+m.projectionMatrix.n14));c.scale.y=y.scale.y*Math.abs(c.y-(r.y+m.projectionMatrix.n22)/(r.w+m.projectionMatrix.n24));c.material=y.material;b.push(c);t++}}}b.sort(function(Q,K){return K.z-Q.z});return b};this.unprojectVector=function(A,m){var h=new THREE.Matrix4; +h.multiply(THREE.Matrix4.makeInvert(m.matrix),THREE.Matrix4.makeInvert(m.projectionMatrix));h.multiplyVector3(A);return A}}; +THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,e,g,j;this.domElement=document.createElement("div");this.setSize=function(l,f){d=l;e=f;g=d/2;j=e/2};this.render=function(l,f){var p,c,t,C,r,u,v,w;a=b.projectScene(l,f);p=0;for(c=a.length;p0){I.r+=ca.r*Z;I.g+=ca.g*Z;I.b+=ca.b*Z}}else if(Z instanceof THREE.PointLight){$.sub(Z.position,Y);$.normalize();Z=R.dot($)*ea;if(Z>0){I.r+=ca.r*Z;I.g+=ca.g*Z;I.b+=ca.b*Z}}}}function Na(D,Y,R){if(R.opacity!=0){Ea(R.opacity);za(R.blending);var I,P,Z,ca,ea,fa;if(R instanceof THREE.ParticleBasicMaterial){if(R.map){ca=R.map;ea=ca.width>>1;fa=ca.height>>1;P=Y.scale.x*j;Z=Y.scale.y*l;R=P*ea;I=Z*fa;q.set(D.x-R,D.y-I,D.x+R, +D.y+I);if(M.instersects(q)){f.save();f.translate(D.x,D.y);f.rotate(-Y.rotation);f.scale(P,-Z);f.translate(-ea,-fa);f.drawImage(ca,0,0);f.restore()}}}else if(R instanceof THREE.ParticleCircleMaterial){if(s){z.r=J.r+W.r+ba.r;z.g=J.g+W.g+ba.g;z.b=J.b+W.b+ba.b;k.r=R.color.r*z.r;k.g=R.color.g*z.g;k.b=R.color.b*z.b;k.updateStyleString()}else k.__styleString=R.color.__styleString;R=Y.scale.x*j;I=Y.scale.y*l;q.set(D.x-R,D.y-I,D.x+R,D.y+I);if(M.instersects(q)){P=k.__styleString;if(C!=P)f.fillStyle=C=P;f.save(); +f.translate(D.x,D.y);f.rotate(-Y.rotation);f.scale(R,I);f.beginPath();f.arc(0,0,1,0,ga,true);f.closePath();f.fill();f.restore()}}}}function Oa(D,Y,R,I){if(I.opacity!=0){Ea(I.opacity);za(I.blending);f.beginPath();f.moveTo(D.positionScreen.x,D.positionScreen.y);f.lineTo(Y.positionScreen.x,Y.positionScreen.y);f.closePath();if(I instanceof THREE.LineBasicMaterial){k.__styleString=I.color.__styleString;D=I.linewidth;if(r!=D)f.lineWidth=r=D;D=k.__styleString;if(t!=D)f.strokeStyle=t=D;f.stroke();q.inflate(I.linewidth* +2)}}}function Ia(D,Y,R,I,P,Z){if(P.opacity!=0){Ea(P.opacity);za(P.blending);A=D.positionScreen.x;m=D.positionScreen.y;h=Y.positionScreen.x;o=Y.positionScreen.y;i=R.positionScreen.x;x=R.positionScreen.y;f.beginPath();f.moveTo(A,m);f.lineTo(h,o);f.lineTo(i,x);f.lineTo(A,m);f.closePath();if(P instanceof THREE.MeshBasicMaterial)if(P.map)P.map.image.loaded&&P.map.mapping instanceof THREE.UVMapping&&ra(A,m,h,o,i,x,P.map.image,I.uvs[0].u,I.uvs[0].v,I.uvs[1].u,I.uvs[1].v,I.uvs[2].u,I.uvs[2].v);else if(P.env_map){if(P.env_map.image.loaded)if(P.env_map.mapping instanceof +THREE.SphericalReflectionMapping){D=xa.matrix;$.copy(I.vertexNormalsWorld[0]);S=($.x*D.n11+$.y*D.n12+$.z*D.n13)*0.5+0.5;N=-($.x*D.n21+$.y*D.n22+$.z*D.n23)*0.5+0.5;$.copy(I.vertexNormalsWorld[1]);T=($.x*D.n11+$.y*D.n12+$.z*D.n13)*0.5+0.5;U=-($.x*D.n21+$.y*D.n22+$.z*D.n23)*0.5+0.5;$.copy(I.vertexNormalsWorld[2]);Q=($.x*D.n11+$.y*D.n12+$.z*D.n13)*0.5+0.5;K=-($.x*D.n21+$.y*D.n22+$.z*D.n23)*0.5+0.5;ra(A,m,h,o,i,x,P.env_map.image,S,N,T,U,Q,K)}}else P.wireframe?Aa(P.color.__styleString,P.wireframe_linewidth): +Ba(P.color.__styleString);else if(P instanceof THREE.MeshLambertMaterial){if(P.map&&!P.wireframe){P.map.mapping instanceof THREE.UVMapping&&ra(A,m,h,o,i,x,P.map.image,I.uvs[0].u,I.uvs[0].v,I.uvs[1].u,I.uvs[1].v,I.uvs[2].u,I.uvs[2].v);za(THREE.SubtractiveBlending)}if(s)if(!P.wireframe&&P.shading==THREE.SmoothShading&&I.vertexNormalsWorld.length==3){n.r=B.r=y.r=J.r;n.g=B.g=y.g=J.g;n.b=B.b=y.b=J.b;ya(Z,I.v1.positionWorld,I.vertexNormalsWorld[0],n);ya(Z,I.v2.positionWorld,I.vertexNormalsWorld[1],B);ya(Z, +I.v3.positionWorld,I.vertexNormalsWorld[2],y);L.r=(B.r+y.r)*0.5;L.g=(B.g+y.g)*0.5;L.b=(B.b+y.b)*0.5;E=Ja(n,B,y,L);ra(A,m,h,o,i,x,E,0,0,1,0,0,1)}else{z.r=J.r;z.g=J.g;z.b=J.b;ya(Z,I.centroidWorld,I.normalWorld,z);k.r=P.color.r*z.r;k.g=P.color.g*z.g;k.b=P.color.b*z.b;k.updateStyleString();P.wireframe?Aa(k.__styleString,P.wireframe_linewidth):Ba(k.__styleString)}else P.wireframe?Aa(P.color.__styleString,P.wireframe_linewidth):Ba(P.color.__styleString)}else if(P instanceof THREE.MeshDepthMaterial){F=P.__2near; +O=P.__farPlusNear;V=P.__farMinusNear;n.r=n.g=n.b=1-F/(O-D.positionScreen.z*V);B.r=B.g=B.b=1-F/(O-Y.positionScreen.z*V);y.r=y.g=y.b=1-F/(O-R.positionScreen.z*V);L.r=(B.r+y.r)*0.5;L.g=(B.g+y.g)*0.5;L.b=(B.b+y.b)*0.5;E=Ja(n,B,y,L);ra(A,m,h,o,i,x,E,0,0,1,0,0,1)}else if(P instanceof THREE.MeshNormalMaterial){k.r=Fa(I.normalWorld.x);k.g=Fa(I.normalWorld.y);k.b=Fa(I.normalWorld.z);k.updateStyleString();P.wireframe?Aa(k.__styleString,P.wireframe_linewidth):Ba(k.__styleString)}}}function Aa(D,Y){if(t!=D)f.strokeStyle= +t=D;if(r!=Y)f.lineWidth=r=Y;f.stroke();q.inflate(Y*2)}function Ba(D){if(C!=D)f.fillStyle=C=D;f.fill()}function ra(D,Y,R,I,P,Z,ca,ea,fa,sa,la,ta,ua){var ma,ja;ma=ca.width-1;ja=ca.height-1;ea*=ma;fa*=ja;sa*=ma;la*=ja;ta*=ma;ua*=ja;R-=D;I-=Y;P-=D;Z-=Y;sa-=ea;la-=fa;ta-=ea;ua-=fa;ja=1/(sa*ua-ta*la);ma=(ua*R-la*P)*ja;la=(ua*I-la*Z)*ja;R=(sa*P-ta*R)*ja;I=(sa*Z-ta*I)*ja;D=D-ma*ea-R*fa;Y=Y-la*ea-I*fa;f.save();f.transform(ma,la,R,I,D,Y);f.clip();f.drawImage(ca,0,0);f.restore()}function Ea(D){if(p!=D)f.globalAlpha= +p=D}function za(D){if(c!=D){switch(D){case THREE.NormalBlending:f.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:f.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:f.globalCompositeOperation="darker"}c=D}}function Ja(D,Y,R,I){da[0]=v(0,u(255,~~(D.r*255)));da[1]=v(0,u(255,~~(D.g*255)));da[2]=v(0,u(255,~~(D.b*255)));da[4]=v(0,u(255,~~(Y.r*255)));da[5]=v(0,u(255,~~(Y.g*255)));da[6]=v(0,u(255,~~(Y.b*255)));da[8]=v(0,u(255,~~(R.r*255)));da[9]=v(0,u(255, +~~(R.g*255)));da[10]=v(0,u(255,~~(R.b*255)));da[12]=v(0,u(255,~~(I.r*255)));da[13]=v(0,u(255,~~(I.g*255)));da[14]=v(0,u(255,~~(I.b*255)));pa.putImageData(Da,0,0);wa.drawImage(ka,0,0);return qa}function Fa(D){return D<0?u((1+D)*0.5,0.5):0.5+u(D*0.5,0.5)}function Ga(D,Y){var R=Y.x-D.x,I=Y.y-D.y,P=1/Math.sqrt(R*R+I*I);R*=P;I*=P;Y.x+=R;Y.y+=I;D.x-=R;D.y-=I}var Ca,Ka,aa,ha,oa,Ha,La,va;f.setTransform(1,0,0,-1,j,l);this.autoClear&&this.clear();a=b.projectScene(ia,xa);(s=ia.lights.length>0)&&Ma(ia);Ca=0; +for(Ka=a.length;Ca0){U.r+=M.color.r*X;U.g+=M.color.g*X;U.b+=M.color.b*X}}else if(M instanceof THREE.PointLight){n.sub(M.position,T.centroidWorld);n.normalize();X=T.normalWorld.dot(n)*M.intensity;if(X>0){U.r+=M.color.r*X;U.g+=M.color.g*X;U.b+=M.color.b*X}}}}function b(N,T,U,Q,K,M){F=e(O++);F.setAttribute("d","M "+N.positionScreen.x+ +" "+N.positionScreen.y+" L "+T.positionScreen.x+" "+T.positionScreen.y+" L "+U.positionScreen.x+","+U.positionScreen.y+"z");if(K instanceof THREE.MeshBasicMaterial)m.__styleString=K.color.__styleString;else if(K instanceof THREE.MeshLambertMaterial)if(A){h.r=o.r;h.g=o.g;h.b=o.b;a(M,Q,h);m.r=K.color.r*h.r;m.g=K.color.g*h.g;m.b=K.color.b*h.b;m.updateStyleString()}else m.__styleString=K.color.__styleString;else if(K instanceof THREE.MeshDepthMaterial){k=1-K.__2near/(K.__farPlusNear-Q.z*K.__farMinusNear); +m.setRGB(k,k,k)}else K instanceof THREE.MeshNormalMaterial&&m.setRGB(g(Q.normalWorld.x),g(Q.normalWorld.y),g(Q.normalWorld.z));K.wireframe?F.setAttribute("style","fill: none; stroke: "+m.__styleString+"; stroke-width: "+K.wireframe_linewidth+"; stroke-opacity: "+K.opacity+"; stroke-linecap: "+K.wireframe_linecap+"; stroke-linejoin: "+K.wireframe_linejoin):F.setAttribute("style","fill: "+m.__styleString+"; fill-opacity: "+K.opacity);f.appendChild(F)}function d(N,T,U,Q,K,M,X){F=e(O++);F.setAttribute("d", +"M "+N.positionScreen.x+" "+N.positionScreen.y+" L "+T.positionScreen.x+" "+T.positionScreen.y+" L "+U.positionScreen.x+","+U.positionScreen.y+" L "+Q.positionScreen.x+","+Q.positionScreen.y+"z");if(M instanceof THREE.MeshBasicMaterial)m.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshLambertMaterial)if(A){h.r=o.r;h.g=o.g;h.b=o.b;a(X,K,h);m.r=M.color.r*h.r;m.g=M.color.g*h.g;m.b=M.color.b*h.b;m.updateStyleString()}else m.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshDepthMaterial){k= +1-M.__2near/(M.__farPlusNear-K.z*M.__farMinusNear);m.setRGB(k,k,k)}else M instanceof THREE.MeshNormalMaterial&&m.setRGB(g(K.normalWorld.x),g(K.normalWorld.y),g(K.normalWorld.z));M.wireframe?F.setAttribute("style","fill: none; stroke: "+m.__styleString+"; stroke-width: "+M.wireframe_linewidth+"; stroke-opacity: "+M.opacity+"; stroke-linecap: "+M.wireframe_linecap+"; stroke-linejoin: "+M.wireframe_linejoin):F.setAttribute("style","fill: "+m.__styleString+"; fill-opacity: "+M.opacity);f.appendChild(F)} +function e(N){if(B[N]==null){B[N]=document.createElementNS("http://www.w3.org/2000/svg","path");S==0&&B[N].setAttribute("shape-rendering","crispEdges");return B[N]}return B[N]}function g(N){return N<0?Math.min((1+N)*0.5,0.5):0.5+Math.min(N*0.5,0.5)}var j=null,l=new THREE.Projector,f=document.createElementNS("http://www.w3.org/2000/svg","svg"),p,c,t,C,r,u,v,w,G=new THREE.Rectangle,H=new THREE.Rectangle,A=false,m=new THREE.Color(16777215),h=new THREE.Color(16777215),o=new THREE.Color(0),i=new THREE.Color(0), +x=new THREE.Color(0),k,n=new THREE.Vector3,B=[],y=[],L=[],F,O,V,E,S=1;this.domElement=f;this.autoClear=true;this.setQuality=function(N){switch(N){case "high":S=1;break;case "low":S=0}};this.setSize=function(N,T){p=N;c=T;t=p/2;C=c/2;f.setAttribute("viewBox",-t+" "+-C+" "+p+" "+c);f.setAttribute("width",p);f.setAttribute("height",c);G.set(-t,-C,t,C)};this.clear=function(){for(;f.childNodes.length>0;)f.removeChild(f.childNodes[0])};this.render=function(N,T){var U,Q,K,M,X,q,s,z;this.autoClear&&this.clear(); +j=l.projectScene(N,T);E=V=O=0;if(A=N.lights.length>0){s=N.lights;o.setRGB(0,0,0);i.setRGB(0,0,0);x.setRGB(0,0,0);U=0;for(Q=s.length;U0?"#define VERTEX_TEXTURES":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n"].join("\n");c.attachShader(i,l("fragment","#ifdef GL_ES\nprecision highp float;\n#endif\nuniform mat4 viewMatrix;\n"+ +h));c.attachShader(i,l("vertex",x+o));c.linkProgram(i);c.getProgramParameter(i,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(i,c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");i.uniforms={};i.attributes={};return i}function d(h,o){if(h.image.length==6){if(!h.image.__webGLTextureCube&&!h.image.__cubeMapInitialized&&h.image.loadCount==6){h.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,h.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP, +c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var i=0;i<6;++i)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,h.image[i]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);h.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+o);c.bindTexture(c.TEXTURE_CUBE_MAP, +h.image.__webGLTextureCube)}}function e(h,o){if(!h.__webGLTexture&&h.image.loaded){h.__webGLTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,h.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,h.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,f(h.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,f(h.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,f(h.mag_filter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,f(h.min_filter));c.generateMipmap(c.TEXTURE_2D); +c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+o);c.bindTexture(c.TEXTURE_2D,h.__webGLTexture)}function g(h,o){var i,x,k;i=0;for(x=o.length;i=0&&c.enableVertexAttribArray(h.attributes[k])}}function l(h,o){var i;if(h=="fragment")i=c.createShader(c.FRAGMENT_SHADER);else if(h=="vertex")i=c.createShader(c.VERTEX_SHADER); +c.shaderSource(i,o);c.compileShader(i);if(!c.getShaderParameter(i,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(i));return null}return i}function f(h){switch(h){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR; +case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}var p=document.createElement("canvas"),c,t,C,r=new THREE.Matrix4,u,v=new Float32Array(16),w=new Float32Array(16),G=new Float32Array(16),H=new Float32Array(9),A=new Float32Array(16);a=function(h,o){if(h){var i,x,k,n=pointLights=maxDirLights=maxPointLights=0;i=0;for(x=h.lights.length;i= 0.0 )": +"",o?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",o?"pointDiffuse += mColor * pointDiffuseWeight;":"",o?"pointSpecular += mSpecular * pointSpecularWeight;":"",o?"}":"",h?"vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );":"",h?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",h?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",h?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",h?"vec3 dirVector = normalize( lDirection.xyz );":"",h?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );": +"",h?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",h?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",h?"float dirSpecularWeight = 0.0;":"",h?"if ( dirDotNormalHalf >= 0.0 )":"",h?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",h?"dirDiffuse += mColor * dirDiffuseWeight;":"",h?"dirSpecular += mSpecular * dirSpecularWeight;":"",h?"}":"","vec4 totalLight = mAmbient;",h?"totalLight += dirDiffuse + dirSpecular;":"",o?"totalLight += pointDiffuse + pointSpecular;": "","if ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mapColor.rgb * totalLight.xyz * vLightWeighting, cubeColor.rgb, mReflectivity ), mapColor.a );\n} else {\ngl_FragColor = vec4( mapColor.rgb * cubeColor.rgb * totalLight.xyz * vLightWeighting, mapColor.a );\n}\n} else if ( material == 1 ) {\nif ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mColor.rgb * mapColor.rgb * vLightWeighting, cubeColor.rgb, mReflectivity ), mColor.a * mapColor.a );\n} else {\ngl_FragColor = vec4( mColor.rgb * mapColor.rgb * cubeColor.rgb * vLightWeighting, mColor.a * mapColor.a );\n}\n} else {\nif ( mixEnvMap ) {\ngl_FragColor = mix( mColor * mapColor, cubeColor, mReflectivity );\n} else {\ngl_FragColor = mColor * mapColor * cubeColor;\n}\n}\n}"].join("\n"); -i=b(y,i);c.useProgram(i);g(i,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);h&&g(i,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);n&&g(i,["pointLightNumber","pointLightColor", -"pointLightPosition"]);c.uniform1i(i.uniforms.enableMap,0);c.uniform1i(i.uniforms.tMap,0);c.uniform1i(i.uniforms.enableCubeMap,0);c.uniform1i(i.uniforms.tCube,1);c.uniform1i(i.uniforms.mixEnvMap,0);c.uniform1i(i.uniforms.useRefract,0);j(i,["position","normal","uv"]);return i}(a.directional,a.point);this.setSize=function(h,n){q.width=h;q.height=n;c.viewport(0,0,q.width,q.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(h,n){var i,y,k,o,B,A=[], -P=[],J=[];o=[];B=[];c.uniform1i(h.uniforms.enableLighting,n.length);i=0;for(y=n.length;i0){N.__webGLUVBuffer=c.createBuffer(); -c.bindBuffer(c.ARRAY_BUFFER,N.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(K),c.STATIC_DRAW)}N.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,N.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);N.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,N.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(T),c.STATIC_DRAW);N.__webGLFaceCount=Q.length;N.__webGLLineCount=T.length}};this.renderBuffer= -function(h,n,i,y){var k,o,B,A,P,J,Q,T,E;if(i instanceof THREE.MeshShaderMaterial){if(!i.program){i.program=b(i.fragment_shader,i.vertex_shader);Q=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(E in i.uniforms)Q.push(E);g(i.program,Q);j(i.program,["position","normal","uv"])}E=i.program}else E=D;if(E!=t){c.useProgram(E);t=E}E==D&&this.setupLights(E,n);this.loadCamera(E,h);this.loadMatrices(E);if(i instanceof THREE.MeshShaderMaterial){B=i.wireframe; -A=i.wireframe_linewidth;h=E;n=i.uniforms;var U;for(k in n){T=n[k].type;Q=n[k].value;U=h.uniforms[k];if(T=="i")c.uniform1i(U,Q);else if(T=="f")c.uniform1f(U,Q);else if(T=="v3")c.uniform3f(U,Q.x,Q.y,Q.z);else if(T=="c")c.uniform3f(U,Q.r,Q.g,Q.b);else if(T=="t"){c.uniform1i(U,Q);if(T=n[k].texture)T.image instanceof Array&&T.image.length==6?d(T,Q):e(T,Q)}}}if(i instanceof THREE.MeshPhongMaterial||i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshBasicMaterial){k=i.color;o=i.opacity;B=i.wireframe; -A=i.wireframe_linewidth;P=i.map;J=i.env_map;n=i.combine==THREE.MixOperation;h=i.reflectivity;T=i.env_map&&i.env_map.mapping instanceof THREE.CubeRefractionMapping;Q=i.refraction_ratio;c.uniform4f(E.uniforms.mColor,k.r*o,k.g*o,k.b*o,o);c.uniform1i(E.uniforms.mixEnvMap,n);c.uniform1f(E.uniforms.mReflectivity,h);c.uniform1i(E.uniforms.useRefract,T);c.uniform1f(E.uniforms.mRefractionRatio,Q)}if(i instanceof THREE.MeshNormalMaterial){o=i.opacity;c.uniform1f(E.uniforms.mOpacity,o);c.uniform1i(E.uniforms.material, -4)}else if(i instanceof THREE.MeshDepthMaterial){o=i.opacity;B=i.wireframe;A=i.wireframe_linewidth;c.uniform1f(E.uniforms.mOpacity,o);c.uniform1f(E.uniforms.m2Near,i.__2near);c.uniform1f(E.uniforms.mFarPlusNear,i.__farPlusNear);c.uniform1f(E.uniforms.mFarMinusNear,i.__farMinusNear);c.uniform1i(E.uniforms.material,3)}else if(i instanceof THREE.MeshPhongMaterial){k=i.ambient;h=i.specular;i=i.shininess;c.uniform4f(E.uniforms.mAmbient,k.r,k.g,k.b,o);c.uniform4f(E.uniforms.mSpecular,h.r,h.g,h.b,o);c.uniform1f(E.uniforms.mShininess, -i);c.uniform1i(E.uniforms.material,2)}else if(i instanceof THREE.MeshLambertMaterial)c.uniform1i(E.uniforms.material,1);else if(i instanceof THREE.MeshBasicMaterial)c.uniform1i(E.uniforms.material,0);else if(i instanceof THREE.MeshCubeMaterial){c.uniform1i(E.uniforms.material,5);J=i.env_map}if(P){e(P,0);c.uniform1i(E.uniforms.tMap,0);c.uniform1i(E.uniforms.enableMap,1)}else c.uniform1i(E.uniforms.enableMap,0);if(J){d(J,1);c.uniform1i(E.uniforms.tCube,1);c.uniform1i(E.uniforms.enableCubeMap,1)}else c.uniform1i(E.uniforms.enableCubeMap, -0);o=E.attributes;c.bindBuffer(c.ARRAY_BUFFER,y.__webGLVertexBuffer);c.vertexAttribPointer(o.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,y.__webGLNormalBuffer);c.vertexAttribPointer(o.normal,3,c.FLOAT,false,0,0);if(o.uv>=0)if(y.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,y.__webGLUVBuffer);c.enableVertexAttribArray(o.uv);c.vertexAttribPointer(o.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(o.uv);if(B){c.lineWidth(A);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.__webGLLineBuffer); -c.drawElements(c.LINES,y.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,y.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,y.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(h,n,i,y,k,o){var B,A,P,J,Q;P=0;for(J=i.material.length;P=0;i--){y=h.__webGLObjects[i].object;n==y&&h.__webGLObjects.splice(i,1)}};this.setupMatrices=function(h,n){h.autoUpdateMatrix&&h.updateMatrix();r.multiply(n.matrix,h.matrix);v.set(n.matrix.flatten()); -w.set(r.flatten());H.set(n.projectionMatrix.flatten());u=THREE.Matrix4.makeInvert3x3(r).transpose();I.set(u.m);z.set(h.matrix.flatten())};this.loadMatrices=function(h){c.uniformMatrix4fv(h.uniforms.viewMatrix,false,v);c.uniformMatrix4fv(h.uniforms.modelViewMatrix,false,w);c.uniformMatrix4fv(h.uniforms.projectionMatrix,false,H);c.uniformMatrix3fv(h.uniforms.normalMatrix,false,I);c.uniformMatrix4fv(h.uniforms.objectMatrix,false,z)};this.loadCamera=function(h,n){c.uniform3f(h.uniforms.cameraPosition, -n.position.x,n.position.y,n.position.z)};this.setBlending=function(h){switch(h){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(h,n){if(h){!n||n=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(h=="back")c.cullFace(c.BACK);else h=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK); -c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]}; -THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; -var GeometryUtils={merge:function(a,b){var d=b instanceof THREE.Mesh,e=a.vertices.length,g=d?b.geometry:b,j=a.vertices,l=g.vertices,f=a.faces,q=g.faces,c=a.uvs;g=g.uvs;d&&b.updateMatrix();for(var t=0,D=l.length;t0){K.__webGLUVBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,K.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(U),c.STATIC_DRAW)}K.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,K.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(V),c.STATIC_DRAW);K.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, +K.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(E),c.STATIC_DRAW);K.__webGLFaceCount=V.length;K.__webGLLineCount=E.length}};this.renderBuffer=function(h,o,i,x){var k,n,B,y,L,F,O,V,E;if(i instanceof THREE.MeshShaderMaterial){if(!i.program){i.program=b(i.fragment_shader,i.vertex_shader);O=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(E in i.uniforms)O.push(E);g(i.program,O);j(i.program,["position","normal","uv","tangent"])}E= +i.program}else E=C;if(E!=t){c.useProgram(E);t=E}E==C&&this.setupLights(E,o);this.loadCamera(E,h);this.loadMatrices(E);if(i instanceof THREE.MeshShaderMaterial){B=i.wireframe;y=i.wireframe_linewidth;h=E;o=i.uniforms;var S;for(k in o){V=o[k].type;O=o[k].value;S=h.uniforms[k];if(V=="i")c.uniform1i(S,O);else if(V=="f")c.uniform1f(S,O);else if(V=="v3")c.uniform3f(S,O.x,O.y,O.z);else if(V=="c")c.uniform3f(S,O.r,O.g,O.b);else if(V=="t"){c.uniform1i(S,O);if(V=o[k].texture)V.image instanceof Array&&V.image.length== +6?d(V,O):e(V,O)}}}if(i instanceof THREE.MeshPhongMaterial||i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshBasicMaterial){k=i.color;n=i.opacity;B=i.wireframe;y=i.wireframe_linewidth;L=i.map;F=i.env_map;o=i.combine==THREE.MixOperation;h=i.reflectivity;V=i.env_map&&i.env_map.mapping instanceof THREE.CubeRefractionMapping;O=i.refraction_ratio;c.uniform4f(E.uniforms.mColor,k.r*n,k.g*n,k.b*n,n);c.uniform1i(E.uniforms.mixEnvMap,o);c.uniform1f(E.uniforms.mReflectivity,h);c.uniform1i(E.uniforms.useRefract, +V);c.uniform1f(E.uniforms.mRefractionRatio,O)}if(i instanceof THREE.MeshNormalMaterial){n=i.opacity;c.uniform1f(E.uniforms.mOpacity,n);c.uniform1i(E.uniforms.material,4)}else if(i instanceof THREE.MeshDepthMaterial){n=i.opacity;B=i.wireframe;y=i.wireframe_linewidth;c.uniform1f(E.uniforms.mOpacity,n);c.uniform1f(E.uniforms.m2Near,i.__2near);c.uniform1f(E.uniforms.mFarPlusNear,i.__farPlusNear);c.uniform1f(E.uniforms.mFarMinusNear,i.__farMinusNear);c.uniform1i(E.uniforms.material,3)}else if(i instanceof +THREE.MeshPhongMaterial){k=i.ambient;h=i.specular;i=i.shininess;c.uniform4f(E.uniforms.mAmbient,k.r,k.g,k.b,n);c.uniform4f(E.uniforms.mSpecular,h.r,h.g,h.b,n);c.uniform1f(E.uniforms.mShininess,i);c.uniform1i(E.uniforms.material,2)}else if(i instanceof THREE.MeshLambertMaterial)c.uniform1i(E.uniforms.material,1);else if(i instanceof THREE.MeshBasicMaterial)c.uniform1i(E.uniforms.material,0);else if(i instanceof THREE.MeshCubeMaterial){c.uniform1i(E.uniforms.material,5);F=i.env_map}if(L){e(L,0);c.uniform1i(E.uniforms.tMap, +0);c.uniform1i(E.uniforms.enableMap,1)}else c.uniform1i(E.uniforms.enableMap,0);if(F){d(F,1);c.uniform1i(E.uniforms.tCube,1);c.uniform1i(E.uniforms.enableCubeMap,1)}else c.uniform1i(E.uniforms.enableCubeMap,0);n=E.attributes;c.bindBuffer(c.ARRAY_BUFFER,x.__webGLVertexBuffer);c.vertexAttribPointer(n.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,x.__webGLNormalBuffer);c.vertexAttribPointer(n.normal,3,c.FLOAT,false,0,0);if(n.tangent>=0){c.bindBuffer(c.ARRAY_BUFFER,x.__webGLTangentBuffer); +c.vertexAttribPointer(n.tangent,4,c.FLOAT,false,0,0)}if(n.uv>=0)if(x.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,x.__webGLUVBuffer);c.enableVertexAttribArray(n.uv);c.vertexAttribPointer(n.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(n.uv);if(B){c.lineWidth(y);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,x.__webGLLineBuffer);c.drawElements(c.LINES,x.__webGLLineCount,c.UNSIGNED_SHORT,0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,x.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,x.__webGLFaceCount,c.UNSIGNED_SHORT, +0)}};this.renderPass=function(h,o,i,x,k,n){var B,y,L,F,O;L=0;for(F=i.material.length;L=0;i--){x=h.__webGLObjects[i].object;o==x&&h.__webGLObjects.splice(i,1)}};this.setupMatrices=function(h,o){h.autoUpdateMatrix&&h.updateMatrix();r.multiply(o.matrix,h.matrix);v.set(o.matrix.flatten());w.set(r.flatten());G.set(o.projectionMatrix.flatten());u=THREE.Matrix4.makeInvert3x3(r).transpose();H.set(u.m);A.set(h.matrix.flatten())};this.loadMatrices= +function(h){c.uniformMatrix4fv(h.uniforms.viewMatrix,false,v);c.uniformMatrix4fv(h.uniforms.modelViewMatrix,false,w);c.uniformMatrix4fv(h.uniforms.projectionMatrix,false,G);c.uniformMatrix3fv(h.uniforms.normalMatrix,false,H);c.uniformMatrix4fv(h.uniforms.objectMatrix,false,A)};this.loadCamera=function(h,o){c.uniform3f(h.uniforms.cameraPosition,o.position.x,o.position.y,o.position.z)};this.setBlending=function(h){switch(h){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE); +break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(h,o){if(h){!o||o=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(h=="back")c.cullFace(c.BACK);else h=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)};this.supportsVertexTextures=function(){return c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0}}; +THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null}; +THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null}; +var GeometryUtils={merge:function(a,b){var d=b instanceof THREE.Mesh,e=a.vertices.length,g=d?b.geometry:b,j=a.vertices,l=g.vertices,f=a.faces,p=g.faces,c=a.uvs;g=g.uvs;d&&b.updateMatrix();for(var t=0,C=l.length;t= 0.0 )\npointSpecularWeight = pow( pointDotNormalHalf, uShininess );\npointDiffuse += vec4( uDiffuseColor, 1.0 ) * pointDiffuseWeight;\npointSpecular += vec4( uSpecularColor, 1.0 ) * pointSpecularWeight;\nvec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );\nvec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );\nvec4 lDirection = viewMatrix * vec4( uDirLightPos, 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\nvec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );\nfloat dirDotNormalHalf = dot( normal, dirHalfVector );\nfloat dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );\nfloat dirSpecularWeight = 0.0;\nif ( dirDotNormalHalf >= 0.0 )\ndirSpecularWeight = pow( dirDotNormalHalf, uShininess );\ndirDiffuse += vec4( uDiffuseColor, 1.0 ) * dirDiffuseWeight;\ndirSpecular += vec4( uSpecularColor, 1.0 ) * dirSpecularWeight;\nvec4 totalLight = vec4( uAmbientColor, 1.0 );\ntotalLight += dirDiffuse + dirSpecular;\ntotalLight += pointDiffuse + pointSpecular;\ngl_FragColor = vec4( totalLight.xyz * vLightWeighting * aoTex, 1.0 );\n}", +vertex_shader:"attribute vec4 tangent;\nuniform vec3 uDirLightPos;\nuniform vec3 uDirLightColor;\nuniform vec3 uPointLightPos;\nuniform vec3 uPointLightColor;\nuniform vec3 uAmbientLightColor;\n#ifdef VERTEX_TEXTURES\nuniform sampler2D tDisplacement;\nuniform float uDisplacementScale;\nuniform float uDisplacementBias;\n#endif\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;\nvarying vec3 vPointLightVector;\nvarying vec3 vViewPosition;\nvoid main() {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvNormal = normalize( normalMatrix * normal );\nvTangent = normalize( normalMatrix * tangent.xyz );\nvBinormal = cross( vNormal, vTangent ) * tangent.w;\nvBinormal = normalize( vBinormal );\nvUv = uv;\nvLightWeighting = uAmbientLightColor;\nvec4 lPosition = viewMatrix * vec4( uPointLightPos, 1.0 );\nvPointLightVector = normalize( lPosition.xyz - mvPosition.xyz );\nfloat pointLightWeighting = max( dot( vNormal, vPointLightVector ), 0.0 );\nvLightWeighting += uPointLightColor * pointLightWeighting;\nvec4 lDirection = viewMatrix * vec4( uDirLightPos, 0.0 );\nfloat directionalLightWeighting = max( dot( vNormal, normalize( lDirection.xyz ) ), 0.0 );\nvLightWeighting += uDirLightColor * directionalLightWeighting;\n#ifdef VERTEX_TEXTURES\nvec3 dv = texture2D( tDisplacement, uv ).xyz;\nfloat df = uDisplacementScale * dv.x + uDisplacementBias;\nvec4 displacedPosition = vec4( vNormal.xyz * df, 0.0 ) + mvPosition;\ngl_Position = projectionMatrix * displacedPosition;\n#else\ngl_Position = projectionMatrix * mvPosition;\n#endif\n}"}}}, +Cube=function(a,b,d,e,g,j,l,f){function p(w,G,H,A,m,h,o,i){var x=e||1,k=g||1,n=x+1,B=k+1;m=m/x;h=h/k;var y=c.vertices.length,L;if(w=="x"&&G=="y"||w=="y"&&G=="x")L="z";else if(w=="x"&&G=="z"||w=="z"&&G=="x")L="y";else if(w=="z"&&G=="y"||w=="y"&&G=="z")L="x";for(iy=0;iy0||(c=this.vertices.push(new THREE.Vertex(new THREE.Vector3(t,l,D)))-1);q.push(c)}b.push(q)}var r,u,v;a=b.length;for(d=0;d0)for(e=0;e1){r=this.vertices[j].position.clone(); -u=this.vertices[f].position.clone();v=this.vertices[q].position.clone();r.normalize();u.normalize();v.normalize();this.faces.push(new THREE.Face3(j,f,q,[new THREE.Vector3(r.x,r.y,r.z),new THREE.Vector3(u.x,u.y,u.z),new THREE.Vector3(v.x,v.y,v.z)]));this.uvs.push([c,t,w])}}}this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};Sphere.prototype=new THREE.Geometry;Sphere.prototype.constructor=Sphere; +var Sphere=function(a,b,d){THREE.Geometry.call(this);var e,g=Math.max(3,b||8),j=Math.max(2,d||6);b=[];for(d=0;d0||(c=this.vertices.push(new THREE.Vertex(new THREE.Vector3(t,l,C)))-1);p.push(c)}b.push(p)}var r,u,v;a=b.length;for(d=0;d0)for(e=0;e1){r=this.vertices[j].position.clone(); +u=this.vertices[f].position.clone();v=this.vertices[p].position.clone();r.normalize();u.normalize();v.normalize();this.faces.push(new THREE.Face3(j,f,p,[new THREE.Vector3(r.x,r.y,r.z),new THREE.Vector3(u.x,u.y,u.z),new THREE.Vector3(v.x,v.y,v.z)]));this.uvs.push([c,t,w])}}}this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};Sphere.prototype=new THREE.Geometry;Sphere.prototype.constructor=Sphere; THREE.Loader=function(a){this.statusDomElement=(this.showStatus=a)?this.addStatusElement():null}; THREE.Loader.prototype={addStatusElement:function(){var a=document.createElement("div");a.style.fontSize="0.8em";a.style.textAlign="left";a.style.background="#b00";a.style.color="#fff";a.style.width="140px";a.style.padding="0.25em 0.25em 0.25em 0.5em";a.style.position="absolute";a.style.right="0px";a.style.top="0px";a.style.zIndex=1E3;a.innerHTML="Loading ...";return a},updateProgress:function(a){var b="Loaded ";b+=a.total?(100*a.loaded/a.total).toFixed(0)+"%":(a.loaded/1E3).toFixed(2)+" KB";this.statusDomElement.innerHTML= b},loadAsciiOld:function(a,b){var d=document.createElement("script");d.type="text/javascript";d.onload=b;d.src=a;document.getElementsByTagName("head")[0].appendChild(d)},loadAscii:function(a,b,d){var e=(new Date).getTime();a=new Worker(a);a.onmessage=function(g){THREE.Loader.prototype.createModel(g.data,b,d)};a.postMessage(e)},loadBinary:function(a,b,d){var e=(new Date).getTime();a=new Worker(a);var g=this.showProgress?THREE.Loader.prototype.updateProgress:null;a.onmessage=function(j){THREE.Loader.prototype.loadAjaxBuffers(j.data.buffers, j.data.materials,b,d,g)};a.onerror=function(j){alert("worker.onerror: "+j.message+"\n"+j.data);j.preventDefault()};a.postMessage(e)},loadAjaxBuffers:function(a,b,d,e,g){var j=new XMLHttpRequest,l=e+"/"+a,f=0;j.onreadystatechange=function(){if(j.readyState==4)j.status==200||j.status==0?THREE.Loader.prototype.createBinModel(j.responseText,d,e,b):alert("Couldn't load ["+l+"] ["+j.status+"]");else if(j.readyState==3){if(g){if(f==0)f=j.getResponseHeader("Content-Length");g({total:f,loaded:j.responseText.length})}}else if(j.readyState== -2)f=j.getResponseHeader("Content-Length")};j.open("GET",l,true);j.overrideMimeType("text/plain; charset=x-user-defined");j.setRequestHeader("Content-Type","text/plain");j.send(null)},createBinModel:function(a,b,d,e){var g=function(j){function l(p,s){var x=t(p,s),G=t(p,s+1),V=t(p,s+2),ba=t(p,s+3),ga=(ba<<1&255|V>>7)-127;x=(V&127)<<16|G<<8|x;if(x==0&&ga==-127)return 0;return(1-2*(ba>>7))*(1+x*Math.pow(2,-23))*Math.pow(2,ga)}function f(p,s){var x=t(p,s),G=t(p,s+1),V=t(p,s+2);return(t(p,s+3)<<24)+(V<< -16)+(G<<8)+x}function q(p,s){var x=t(p,s);return(t(p,s+1)<<8)+x}function c(p,s){var x=t(p,s);return x>127?x-256:x}function t(p,s){return p.charCodeAt(s)&255}function D(p){var s,x,G;s=f(a,p);x=f(a,p+i);G=f(a,p+y);p=q(a,p+k);THREE.Loader.prototype.f3(I,s,x,G,p)}function r(p){var s,x,G,V,ba,ga;s=f(a,p);x=f(a,p+i);G=f(a,p+y);V=q(a,p+k);ba=f(a,p+o);ga=f(a,p+B);p=f(a,p+A);THREE.Loader.prototype.f3n(I,h,s,x,G,V,ba,ga,p)}function u(p){var s,x,G,V;s=f(a,p);x=f(a,p+P);G=f(a,p+J);V=f(a,p+Q);p=q(a,p+T);THREE.Loader.prototype.f4(I, -s,x,G,V,p)}function v(p){var s,x,G,V,ba,ga,$,ka;s=f(a,p);x=f(a,p+P);G=f(a,p+J);V=f(a,p+Q);ba=q(a,p+T);ga=f(a,p+E);$=f(a,p+U);ka=f(a,p+K);p=f(a,p+L);THREE.Loader.prototype.f4n(I,h,s,x,G,V,ba,ga,$,ka,p)}function w(p){var s,x;s=f(a,p);x=f(a,p+N);p=f(a,p+Y);THREE.Loader.prototype.uv3(I,n[s*2],n[s*2+1],n[x*2],n[x*2+1],n[p*2],n[p*2+1])}function H(p){var s,x,G;s=f(a,p);x=f(a,p+R);G=f(a,p+M);p=f(a,p+W);THREE.Loader.prototype.uv4(I,n[s*2],n[s*2+1],n[x*2],n[x*2+1],n[G*2],n[G*2+1],n[p*2],n[p*2+1])}var I=this, -z=0,m,h=[],n=[],i,y,k,o,B,A,P,J,Q,T,E,U,K,L,N,Y,R,M,W;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(I,e,j);m={signature:a.substr(z,8),header_bytes:t(a,z+8),vertex_coordinate_bytes:t(a,z+9),normal_coordinate_bytes:t(a,z+10),uv_coordinate_bytes:t(a,z+11),vertex_index_bytes:t(a,z+12),normal_index_bytes:t(a,z+13),uv_index_bytes:t(a,z+14),material_index_bytes:t(a,z+15),nvertices:f(a,z+16),nnormals:f(a,z+16+4),nuvs:f(a,z+16+8),ntri_flat:f(a,z+16+12),ntri_smooth:f(a,z+16+16),ntri_flat_uv:f(a, -z+16+20),ntri_smooth_uv:f(a,z+16+24),nquad_flat:f(a,z+16+28),nquad_smooth:f(a,z+16+32),nquad_flat_uv:f(a,z+16+36),nquad_smooth_uv:f(a,z+16+40)};z+=m.header_bytes;i=m.vertex_index_bytes;y=m.vertex_index_bytes*2;k=m.vertex_index_bytes*3;o=m.vertex_index_bytes*3+m.material_index_bytes;B=m.vertex_index_bytes*3+m.material_index_bytes+m.normal_index_bytes;A=m.vertex_index_bytes*3+m.material_index_bytes+m.normal_index_bytes*2;P=m.vertex_index_bytes;J=m.vertex_index_bytes*2;Q=m.vertex_index_bytes*3;T=m.vertex_index_bytes* -4;E=m.vertex_index_bytes*4+m.material_index_bytes;U=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes;K=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes*2;L=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes*3;N=m.uv_index_bytes;Y=m.uv_index_bytes*2;R=m.uv_index_bytes;M=m.uv_index_bytes*2;W=m.uv_index_bytes*3;z+=function(p){var s,x,G,V=m.vertex_coordinate_bytes*3,ba=p+m.nvertices*V;for(p=p;p>7)-127;z=(W&127)<<16|J<<8|z;if(z==0&&ga==-127)return 0;return(1-2*(ba>>7))*(1+z*Math.pow(2,-23))*Math.pow(2,ga)}function f(q,s){var z=t(q,s),J=t(q,s+1),W=t(q,s+2);return(t(q,s+3)<<24)+(W<< +16)+(J<<8)+z}function p(q,s){var z=t(q,s);return(t(q,s+1)<<8)+z}function c(q,s){var z=t(q,s);return z>127?z-256:z}function t(q,s){return q.charCodeAt(s)&255}function C(q){var s,z,J;s=f(a,q);z=f(a,q+i);J=f(a,q+x);q=p(a,q+k);THREE.Loader.prototype.f3(H,s,z,J,q)}function r(q){var s,z,J,W,ba,ga;s=f(a,q);z=f(a,q+i);J=f(a,q+x);W=p(a,q+k);ba=f(a,q+n);ga=f(a,q+B);q=f(a,q+y);THREE.Loader.prototype.f3n(H,h,s,z,J,W,ba,ga,q)}function u(q){var s,z,J,W;s=f(a,q);z=f(a,q+L);J=f(a,q+F);W=f(a,q+O);q=p(a,q+V);THREE.Loader.prototype.f4(H, +s,z,J,W,q)}function v(q){var s,z,J,W,ba,ga,$,ka;s=f(a,q);z=f(a,q+L);J=f(a,q+F);W=f(a,q+O);ba=p(a,q+V);ga=f(a,q+E);$=f(a,q+S);ka=f(a,q+N);q=f(a,q+T);THREE.Loader.prototype.f4n(H,h,s,z,J,W,ba,ga,$,ka,q)}function w(q){var s,z;s=f(a,q);z=f(a,q+U);q=f(a,q+Q);THREE.Loader.prototype.uv3(H,o[s*2],o[s*2+1],o[z*2],o[z*2+1],o[q*2],o[q*2+1])}function G(q){var s,z,J;s=f(a,q);z=f(a,q+K);J=f(a,q+M);q=f(a,q+X);THREE.Loader.prototype.uv4(H,o[s*2],o[s*2+1],o[z*2],o[z*2+1],o[J*2],o[J*2+1],o[q*2],o[q*2+1])}var H=this, +A=0,m,h=[],o=[],i,x,k,n,B,y,L,F,O,V,E,S,N,T,U,Q,K,M,X;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(H,e,j);m={signature:a.substr(A,8),header_bytes:t(a,A+8),vertex_coordinate_bytes:t(a,A+9),normal_coordinate_bytes:t(a,A+10),uv_coordinate_bytes:t(a,A+11),vertex_index_bytes:t(a,A+12),normal_index_bytes:t(a,A+13),uv_index_bytes:t(a,A+14),material_index_bytes:t(a,A+15),nvertices:f(a,A+16),nnormals:f(a,A+16+4),nuvs:f(a,A+16+8),ntri_flat:f(a,A+16+12),ntri_smooth:f(a,A+16+16),ntri_flat_uv:f(a, +A+16+20),ntri_smooth_uv:f(a,A+16+24),nquad_flat:f(a,A+16+28),nquad_smooth:f(a,A+16+32),nquad_flat_uv:f(a,A+16+36),nquad_smooth_uv:f(a,A+16+40)};A+=m.header_bytes;i=m.vertex_index_bytes;x=m.vertex_index_bytes*2;k=m.vertex_index_bytes*3;n=m.vertex_index_bytes*3+m.material_index_bytes;B=m.vertex_index_bytes*3+m.material_index_bytes+m.normal_index_bytes;y=m.vertex_index_bytes*3+m.material_index_bytes+m.normal_index_bytes*2;L=m.vertex_index_bytes;F=m.vertex_index_bytes*2;O=m.vertex_index_bytes*3;V=m.vertex_index_bytes* +4;E=m.vertex_index_bytes*4+m.material_index_bytes;S=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes;N=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes*2;T=m.vertex_index_bytes*4+m.material_index_bytes+m.normal_index_bytes*3;U=m.uv_index_bytes;Q=m.uv_index_bytes*2;K=m.uv_index_bytes;M=m.uv_index_bytes*2;X=m.uv_index_bytes*3;A+=function(q){var s,z,J,W=m.vertex_coordinate_bytes*3,ba=q+m.nvertices*W;for(q=q;q + + + three.js - webgl normal map + + + + + +

+		
+		
+ three.js - webgl (normal + ao + displacement) map demo. + ninja head from AMD GPU MeshMapper + +
displacement mapping needs vertex textures (GPU with Shader Model 3.0)
+ on Windows use Chrome --use-gl=desktop or Firefox 4
+ please star this Chrome issue to get ANGLE support +
+
+ +
+
+ Sorry, your browser doesn't support WebGL + and Web Workers.
+
+ Please try in + Chrome 9+ / + Firefox 4+ / + Safari OSX 10.6+ +
+
+ + + + + + + + diff --git a/examples/obj/ninja/.htaccess b/examples/obj/ninja/.htaccess new file mode 100644 index 00000000..d9f67316 --- /dev/null +++ b/examples/obj/ninja/.htaccess @@ -0,0 +1,7 @@ + +SetOutputFilter DEFLATE + + + +SetOutputFilter DEFLATE + diff --git a/examples/obj/ninja/NinjaLo_bin.bin b/examples/obj/ninja/NinjaLo_bin.bin new file mode 100644 index 0000000000000000000000000000000000000000..2d6ff9dcfad200a7543aa123d480df16476b9043 GIT binary patch literal 335347 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%0D1s7GoM3seCAwLCV=2;ZSYd69X3n1>vu+!xWm}>~ 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 Three.js converter +// http://github.com/alteredq/three.js/blob/master/utils/exporters/convert_obj_threejs_slim.py + + +var model = { + 'materials': [ { + "a_dbg_color" : 0xeeeeee, + "a_dbg_index" : 0, + "a_dbg_name" : "default" + }], + + 'buffers': 'NinjaLo_bin.bin', + + 'end': (new Date).getTime() + } + +postMessage( model ); diff --git a/examples/textures/normal/ninja/ao.jpg b/examples/textures/normal/ninja/ao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc791d0135bfd9c840f670bbee086b7077e675be GIT binary patch literal 72545 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

ss)wJ`ibA{>%89< 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≻Tgy5dz7C{-fi#mBQyW*VPbM>8{>jvCwx_|H_aq!!Vwgxq zX8oP~+V)wlnC2j}5blxcS}C74k=K^|Iztx4`zGWn4QHsPx86nE^wrouixz|Sr}|*w z6Bpsm&qmeVmMJ9$kTS}7fC1BukLmc;eNMd|W#xJ9Ib}iuU5Z{s`{hP!p6XSg6GZNH z`1W`O%lmsznsVML$PYAJA1!H(J!5XmYIYl36n@Gs z8B{z#R<#*8c)ShvJn*tjk<8<~pu?BeYxc$e*MqM9e}-aFE_{e`ebMv0^Ut?DS%L~h z_5TQdrnKGq0&X80eAy<}1YXm%FY;18bzwVNWT`7*V?RG_oa_&5j+r=dk1wA7d6hkN z8v0o|*g6!zuLr!`W&n`7jX_Q%mWbs=H%6_Q@K+EApy8JXU2DVqs=q?pp{~h<{}B*u zwWxna7#=Ra58g`}cFU>GO1l`xP<5Mp&p8aToS2UXF<()k_sw2z9_;p4_jRidk`o8} zUI}2u#ATeQRV`2sX<;-S+7YDa{Y|qHNAZ zXU@lRwG&uUlOBU%KxlLO^^x_N0_<>zlBL>id<4g#1Z84U(vNGT%8Z4K$o1(;|Q z)Ki~pH+q!rDfF;jIt{n>`{hh#5~0i;Gi~OiBom!<7urN8>sfQz;9iH;9mgU@57)j^ zZSlpWoQWUoqeC^&snP!tJh_BeeqQi3$q)T~Ucs|w-*t@Dl<|A%isux`IS;OX`+bH3 zP6qRUdQ=(dCKha48juT8^ai^!z)WjTwVD(9mk85YQ6s)}(&Z{#oMZn?Mw%iO3J{ME z`T2KCnt(>$#4yU$ZX3_!_IK$W8sDb9u3s}9De~PClti@*MRIm+VjZ;d=#+Urcud!p ztKSwrMjDqaE!!kOM-VM1BMPM_PK;LDGLY*=kcsr%T9(M5u<4OAqTuw~9#D!WUg-V& zE+7E*8?twyKbB)UTFgksDCu4{aEKvo=f^up&Z&cS}&((Iwp; z&!pI2!ek*rAWtp+s2xYtKIO0a2c*g8nb}SZtaj+$9}TSDMSWuHF*E)H^BYr`0dfzG z4<-5Jza3bAlaj4zo?`o*axdVDYV{9JG^}=s4ZQ|igQf3YmU*c>Y`mGKkP8^&=e*#c zFP4Tr^6(dxTq3q^<&i&>kdA$HI(1%h!MhwQskB5f{Mvl#pTGlNzy^LU)|*K4X}u%T zquLrrGs8316k|iH9v;5hFFRDK=U*_RH!t2R2F-!6ZSUmM~v(_Wf#`B;~?u@sz$63PL=a})fg;;3s zfg3=rOe}ZBcVBbL>LhbLch|_5cR&-k@8+2sol85lgg-TcdX3^b?S9dMN=Y$LjaS(? zu>T)tRYJ?`zuqwag-=n1sb5M%c@NwO;4%%^8%LOVe<2R9L{_4Jzvg&z<{ATrX({IO z|EE`5Aj2VqI9f$l_2_Pd+_m^K_EX|Mtx_@g!PHF(l0yoc)fRekYMB3KyM8lHeD8M! zXBPV6eMM+5acBnb%8Bw}WCK@fJecvV#NPs{nqu-wu4%Wrb&41y6E2b^qy@`DQ<)*L zAN!0v)Py(9HvTL?PJLv>SWhj<;+})kZxiuO9wLW1HNX3ZZeIpesZ?ITornfPybXWDHC%2Xmo&< zpv&dSp;k32Q<;>TE91c=q)Bq`J%&ys6A#poXV3Yc_oHom%$kLPjJvTe1kv8}UX}G` zGOJ+}X3)^^yrj=~hI^Ys#HwNd-xJe?*MjOJU?#m5HL&T^XXxFxkCVop8`3!^}}K zrLUVqxA;ypX~54`$ntB%?kC!2=doERP8B=8W)XP}v;ZOpJ|MUgN*0fnzpJn#oC#4m zeFCp~p?%@4gnOrsN#MSgrN!}utI(Tv$p`WNlY3&3B3bb>C#H>sQsSCizRAf3E9?o! z&sXx!{A(Z1a}dlXJIYhY01D++=y5VLH7V3fGO4XL>gQhnaQkC2@-QQ(izq)!kE-7F zO&dwdZM|@b!4z3QX}8;mWq4QVMEGu7?W+R1i>=scT!oj`P`BH(keS4~==&#qYSZY8 z$RL!4J_8RRtU0lPkg&jQ#%rfzB(KW2ej{)Low!w{;*JKaO@dC1sHDDG+PnCw-Nx6i zn^E<-#=N=^Q(T)3`DKE9FJ{`T@(|NuQ3Qtpu}KCKcf^6R8YCaxFZRP;Q|@PaOrKs9 zl=Qp1ooa5T$Ek{5)v1RCT4%|uyvXR%_Q|EH2KvW(g9jI;`h+_BNFJ&N0>CFEO;wzoiTDetWI^`s$97RO)~8oY;lY)fP{`a>>8~ISXIYlsEiHpYTPAOJBcF*iP|3{d zHq2AEaFZvUSMoQ%aId4fjSV!v{*8amOk@**8`!vSUV7(iNli3B2(A{P4mU1gTLu_M zs8@iTW<*rI<^v8v952tBsZmwN2iJFAe~xLkYP_B~PKX9ifm=QW4CUOl*aub1lI?2% ztFvpkAKkT&1+;cgxq6Q-my-E>9B~qB9A&N$Q9AcjsA$m;Ji=~FKSD^1II%Y~h+Ea@ zx_tP14JGsKV;af3v3@k-l!iR*_565}DB(I&qnpSwSCA)~+q5oO5OCxU9f;c}naNH{ z8gXKH=$SztGO?BH`!G(m4C;K_lZ*nfz7E|tdOP?}vdmp|&ft*%8F9@bYejad9EZ%{ znt4)8%H-mncLom=t)ra7Xa47I0kfG-P~nA7=qgHERwkGaty~#fc)Kl!<4u>yF}0(+ z8RgWfY2+FPx4(rS%~JKW>qbuV%-$Dp11}GfW}@pfD&z=1HAvA*+0kn%T$xWZ#9jMk zOS-NhTwB>qEKJ#TH0vChi3%^)udHhCDDMVmmRT^|OUrZV>Z6F5JhpyG)>{oirl()2QpXz=+NN2? z(BT=@heRFA#LbCh&lX-RGta&!r}^&Zz+yd}k=v(`-3-BiA?9!DF=RjN5LIC+&gA6A zz49TVYbqN&t2nX2>Vou{d@?CMkpYD!t(*QjYY z<H;duHr7uT=8RRfOXI-|tfE*;P*v}LGVNgeQ7&hZ;O<1*mA3bOX;5Vcjx z#yTZoo9P)`S?IyOU*^`8WuZ~ykOs9#90o?!&daY8@t)XbV5x`o4IJKo@(%@z2{ z@x2qSy4RFXYLSB$4$_Ub5aq1hh24D=I`(`%>t*{tsP?}B-~Sg{^TScH(mMEK+Xpt; zDsK6Z-NmeC=yo9A<22o6)gkv(Y8=sdMTAZ*nD(v+tshq6R-oD+=xsBLN9=5+uUju+ zp7=eB@yzj8kGdZRa55bATrS-cdj5p+=7HXppSK8N5NCm50R^lb!Acd_=U)tWbKKU^ z8JsiM22(jGc7Vx5z|T^U7Z+UHH~+fu;oSA^SsG0A9sBrBHm&uqbG~4tGE$C z!Js)?Lw|D9pcX6#_dL#Nyz%In+qw`=PAsh00Fum>r(q_XB+*}N%_$}EgG=cs{b>0W zrmdX>PddtZjuWrHaeCg9_|Vo$di`~9iYv;u&oI#YfjRBi*So>Oo^Q-C>+bZVS&;=G zHrQf8`wOO#7WE5X^rvMpOpJjz*Ikr#6g#WU3$pvIL`XENC^e0FAA_9$s&8j=cXWXw&c=s&0<~-_N2MwQ^8CSt_>isc zbZmFkr^CbpzhSQxs%CR<4WpVSNqKkYlc$VN7=YheJPeMRMp}UpLf7ZkGF>m*0?bb3 z*)FV4^i_5ywF(jX|MJR~J#=ZiTGC$M=-?MRUziG z{gva<4@RqLI<@)LsaO)yZ&P+M-oszZ%_g6#j*6^t1WnC+dJ2h2eHJrqL@|(VYtNG1 z7OR$YDXL*Y6sr9sXwUTdE!1|pVLcRZqk6xD6(KP!BRMLXQ5ZVUYD|T%KV@Csp-Rih zdmfqk>z=UNAEa*P)MT!Ul)3LY6=nLz52V-<)$)Jv97sgCjV8>V7m957-Z~NBZ0sS5 z90kN&6tqsf358$1i_Psu0-!2ZlEvwB*|qsr(OKoPN7Qay5rdjOO>{{XM1(c#ECIv)u2LA|80oNq(lvTkg5xz%61j_8~^PJ2TzO z+>PtL$x?a7!4^1?{p6ti-LdgW5mIQMDMztCP<3tYjva(Fqw206WQr64dU}^C(52jH z(f{aY>e}PM8^>_^*s_WbczbV^>Td`A?ml4tj&_aU<6EY|KB&LFjQ>3geI&@7^PCPn z_6Tyfn4jrgB13m0wadsn6`B4em-VX$g1WrgoYzQ0z*)B@Vb z>k3Z&-lUoLR95w53;vrr88;D~Y`&caazUOTmqnXyc00a$U&4Ykh)WxeG=NTxBo2+T z(Pn*hj(pSk+HX||VfN<90S}VmnrE9Ldv&`}ZW8HDNN=u{#+pR1oUUv7WXJ5_sj(sG zq-3(dAnnT7&BKD#JF%jqp?0%1iu0 zs-(bs#Q-#X*QvQsI3nbmf4$YPrJ`{J6G_X2J5J?{d#oIPV9 z@irg+9{XUf%(kKe6~BLKf30u-Lq?Q8Z&jzLhrHWex!IQ_9u0drEtOb2+r>1EA5)H& z%w{+IGy!uESewM*UFWQBGpYL7_tEk=5vI7WsHtW^nK1qw<+Jx=N+->Ekx6sGNCNhi z?C9v&YUVM)$KGIKu^K5~H($x=Xc7)p*yY9DEU}MqafxrT+If)pbGw@HJ zEBz-SMXsxOdi#O^j)R07Y7o1b6`yA}Qq45wb-wm%ZZcTlmV572unNa{@1gU|(SFfY z;3$9%lj5dAIaZ{dRtwo^^C_V2ufZLAZ(4W%M__mSFi^j80+otHUGwPEJpX564Q>ZK zYMJd?e&kTwQ>Xs29?=jwoG1ZO*-nb7@L$|-psB`f`1q;UK=9+wpA6qT3z0AF3=E=RL!5& zT{@F*tjx6SoIm8{7Z=FS<&Nb}oy^VvWNCaoXxXVRw@HcyfQ9Y`PB;XGPDsfp59A-q zh+410N!8b5Z7FTM_+G6I6k(y8&2(!3>?avb%De>^R-sQ_RiU>)z&be2(xdhHgz4ii zpV{X?|8{uxt8tnfvfUH?oK2nu+_0cuKIcg|SwMeF7A-%huBIgqPl#Ei2XqV2u3+2D zGV~ChHJKmMZ^}%)aYMsR^2P{14?mjnrl^?M8sb|P{*LjEv2a?g8mmP0DwTee&7KCr zW#E`KemTFM-+yvqF6q+ACX9pCAb$g9$afo#$CDi)2~dXX^)$sDXiPkxe_@S4p?1 z$0b%#v&V$St?#^h1ywIZM@2{W7wh$f!=YTg4Gi4fLjKSc*v|@r;=7R@4=H`^WSjV3 zL%GCJf4T)u?doaLv$U1N~hK$;>ad(Z8oe5@!TzQj2jJ zQ9_Nspw2oI?t$Y$`L)WU;kft9v@@xW&xP`=K8`BmX*-~! zw<7msk>_mB=|pBP@lunn=N|ly7i8BFY+E09a@a>i9sPwh$h>*GFIxf|xeljrqHvHC zo(vRN3u5|wLkKjEc+!Yi_joPizIfMCHfD~p$JUoPX%VcO3N~t9mW3+W&mc3p-)ZbLG^}JGrTS*ytOT28sm~ooy)O(fbCH8B!)4EE<$88 z{K5iF1Yt#U-&PG6@fLmV71z0pRJI7bgqtA7*d`D8HfaQhzV&XmfPTqrKa1&Z5!5R>245V45WLM(p{rdLeK$28pZ%=MoM>g3yhHN?(Xkz_c_16 z;JzR1?40e%o_zMM>v~<@4x>O9^7CnFgmnM$GV`ep|2>_7CIqfy+(?=$s-iT?InS@Y zRFu-}jm-)EC!?H{*GO2zl!;bRDowe|ep<3dv^WytQo)G736dxL`u2a-~RV8m#wpyq|oG^F>2bG*6?3i6>v}}$(N7*LZ91;pU?Wh@CML$S)q=L zuM<~hW1BWx2EQ=WkBZ)|IpI=U#L?>Mc+QE%) zd>MDqQDhm*D8(@iVAF=cUk8*H&<0tj9+16DlBn}!o+qnXEWi( zvR=k$^^uH+KBox8A(bMO(UP~E34+PIZPDhgM*#g+*}S^wcTs5(0_xklR;fDug!V-T?;l_VSz zL$w^0vn5;ZX8sTbcGgXlfbwVgYu4?eax&Y&dC}rgS8xRB)#Z9#dF;2o)qTw(WKtB7 znmYXy-uHf%Y&*M`Vf7bfNCK`dz0LcSZt9qQhEKivcaQ z8f{1|dc}Q1ZuEC5dY+H24Kgy)X=Qd(`pAn)oh^!o!mI#r)`Ru~!RMHt7gwGGS7^kh zA%$~{hIs@OoHaI3)KLQ^)pvZfm=M%LSD|2TO7tTVMp^#~EzvaL7Ju?4x3kLHU)|RQ zSmR<*TXT|YDen!+qlB=K_Vv*$EFbM72bzKuNtF*SO%%@32mUs-{{3C5sE3}2(*g0w zG@F5ZtSD3%xr`HZCYweR3JJD{gA*iA4O$>aA|xiZd=ZkBxNpB&Ky_@_k^8oAk7Ai zcONb5R7;t=PYY#kmHE0+Nll7IMj#`Uf0&Sw(aoCiuYStyc>g@pj92>`X^OqR1+|~o zOkd(J_@oTtflQn5s|vyC7GK1^`oqCLCX1Vl#f1A=&r<=}NXKRA8GS+{MqKx$aj)m3 z3)i*Js0hAbP!Gs-bU8z`AZK5S;cziu%po^1i=&+b()cio^~KGTnzu43sn+kGf=esP zDOxyP%gGZSghh5Ho}suGWKH88{H=nbafYR>A%1&XYm||wC-W-%OrT$cmgDSYz0r6g z{+zZX$LxoAC5p|Pit07T2wyLJ-81pok`vXt)|{5yDyhd=8k}3GGDtfj>haks{hu_r zX4+sPZCEFs=ynu{gFZl0a$s@%>GZ&Ua6QU>a}r3Y;Wk;i(D%ZI2EiH~Igi=NB z09~=U7z@f(?VfuvC8oE$dKWX+c_ zTMCi|Ba>V=QfFRFpK`w>?*HKpXev?kO3G(u4aG@cDMxNSI>1yH`wnA=X=L&Ri!Koc zU#6(N5zRJHF(F!8IKo@h+6)Oy1b&tLp|2Thb=fQu81vt-bE*I8>r~dW&VU~XzHwq@ zq$nLUm>)P5In8{d@@f#Oc}Ep%q%l;_Ih$Sa4l@%&B#Hb~Z#wv=%T1XY{;Pge1$(sn zKni#$1vMQO10H8L%p-DrK7HD5aoE7>Z6_XFH!}O)j&r%yK6^r#v9$QwF^A62Q2jI{ z?&|&*K{o1^)dO5>$6IzF#;5z|!&HB`~ z!sEZznEGh63*c`h63O-k_7Q63)7sIsm+;jvYmqp9vMA;w9fK-H9p_ z1^YQ48S5|AwT!sLN)U$wGm&!Z;?P1zTSTL?SLgpJZH6Pv~O z7de^V74Y?YT+*(&eP_wpe62wh%A>Kf)+D{lcp9 zD+CongY_Sp9H`m4wIlWI3&pN?$F}t5mMR# zePeCUD0V-Sz&=RtW+>jQ^gBuDrY5DuH>seJ+sza|>_Me>nXj2+B%Z>FG*(uNNQv%d zt|SXz`qf^h*qL>NXNC|5)O{esRHcVwum5Kz-@urn(DHng?a6)pwd<8u<{7ZG4{mQm^Es ztK3V0_CJ1W@@EI8D-zb|w+IK7t&qIEn{X{~q%-$`t;KgqBsNZNC=e2s~qUyVv?b6&mq!HMN>eu5u;h1hw|xdw$1r?ia~x_w{mek~-h(d3G>Y>T~CbN>3{T zUO^q^a$tb(KOBGFV&)>=#rqbei>^26{_9%KHTV*zF+3}M#R(4$EGB0aEz1Qf4MaFX zP>g!2fXHYnE5|w!Ek>(DTZ0FSGT=8qh(Iscw0r9X_~gYq4yEqsQ`0x% z!wj$WUr_AjrHo|%;AsV^=4f)F11Q6E_|E!ChBG5t{}sWAJ&-$izStd8Gwzn^YlCQ~ z6lZn(&Y@d0(_M}+u`}foh?XqjnI(s4Q7O9M&w9h)!ku14#MqJ=Wh)cLy?#o@T5FrO zX^K8J^MR8L@qPoSx$_K@tp0qA3uW;>ZR9$%qRC}_1;ng!(d`_#DqA5`*tAc0Ph&(M z=v(R^js^48wKBs}tD4tTKLMtnabAn=&w15`=hHRL72t(Ia}tR&IV>n?-YD+sTvmJ) z4A52oC`NJ7`|sOI^F%#m3X)pOlrltFG?OsvJq6=o|7rPTP2Y4E8yp_^5y13z{8DClG1oX4~0 zlHy2s*nH!j|7FGU$%#{@3~u-QmU4yRkk-TI{No2(fQaK{nx(1kIH-_%@v4Myu)!(2 zufJ{2U3t6kdyOifr|GIZ$~LdI=NlPKB-pg`44_|g8vNaX9ndRf_ z(?t+j9C%|?Pbx24#c3(gQ|9M-BLR&MWTS^_b9Vf_MCuW3XuCv@NRP1&g3I=+P+-39 ze`x2pXN~tPM7T_A(_nJzgk~$rh>#*U3 zQS5!rDgqwX%BxHo_rLzRJVOSF6GhJsmONvwo0?fwhk*;JtM1elTt=^Q~Oj9WBQMciYgUOD*#KwuL2H-Ar5b85Y##nQ>3kVZQArINwKGDbYmoX4fJ`FHPFkJcdBpbd|dD z;G1Y?1*}E4Sf%V1wgE~%F*dHQ6URfz2m*K_8lByX%-2#?U?sX@OLt}LMfqeXkQ!Sf zFfd89(8i;^yuk?K7R5Zwdz)se!>lac{7>#6xRoakzAHx$jY!4BxA*O1{`&dfe7j4x zu5OW{L$Ue^U~H$sCVa$xBG_8X4E%?6i4?z>;M!!c|FOCKIn=(Zg2tXkC-yKsGk6PS zio7H?Zfr({HK4R~t0~X%r*J zp6EXE{f9;`Dzj>KPgo)l(2v<(FUlRw`^X*=EqpDwGN!2&93^c-&T^nWo%HW@^m^r$ zHTFwr@OR)7r~T@h+mZ2qXwfWW^FoUo#S6{ufh4nYnn7oq<^|cn`nhfCmmfw~OYHhz z7#9A@(y|7dX0HVkuK2iU#A;62pzy}03ce?uyYmZcbx=An2O)Rh)gawiQ-cltj!-5; zjHE8PTAp^4p4~p|Lh?`=Cz+GAP`T7MXX9OA*>T)4mD!Q!dMl@j@Sugw_EA6FTC?|2p6JMV?0zPg3>?Gp1q^3-qNkf1`QRuwOp2ITML{<}zPpc0d6xfT2GJ6pS<8jY z2q}i%(NvqZiar#M&w^t4U-%ZJu;g$xY!b>cd6YTEb+g4<_kP+}XMm573r5dTQ|0@o z)jR#@@fD=NGO7I_U%-A8?aqE7kwPg!+GEnO4v+IdXkfr0aT zH0_R#0;LCaP*k1wlvDPnpn^n>3L#u$i`<}^z6M9)25n8pf;6Toyj7&Cc$r@24i?k1 zF2-WQ-C^C>SeiYsTx`Bb5Ih~&z#w02~P>+$Mp(xrlC`o6wHaO z=Zb@q*Bq?aT1Sh_*$eH62w|(DKmITLPm=Qt~aQNLF5*V<7m_B zZ|4HrdPXVkrjiOjDQ8BM_5Ax-DvC;6&c;E)nX4rOE+TpFW{mXTaOJ@+1L+2WBd*X9 zw!0=M@)G#~suvY^E_CHeaXm1cVcLbQ{WyCwu5Mw7ay)oC0Y06U^=0RGF=aUqyuIZ1 zp}Za}mu$*)b1lA#h~1jqu9a5*?vq?c%#noGJ6}L~uJ#|=(!80F%?(U=`F-t!di)gk ziR$94_Szi`$e1LC9#WCe;(Tw`bwc>hCs_CN=q5@CAq*_p_lC8OXe6Z%TLA1T|3A#}GdsOjWC9l5Wn`li-;vjRix5iG2*+<{2gFfFr5v=e;_WH9Wo>tb| z+MwC_S({590;|-|H}uIiVTdv@_tvtpgoGGmx>l7FSb^1nb!0tDcf&#PdGbOha5wQk zH1$2>hfka5oF!-AA|v2j;KSGFV9@qfoHrcZlnz(TY|exJdBivPl+OE7v|(%E#~E?# ze2U2P%fxmqL==2Ioym}*SM6Ne*wRveqF_7{A$-Y^iYcHmh^a2G?@C}F^A8L{2t>Fi z4QVYrrea)_#=fmG+)E*D4ynQtllt?n8Q4_EHK8bZ!sQqsa~eagavN+T7)k3Eug7%59eh7szRVs0Y^hC?8xwQB>b0MA zAg3jm2%yW^w^5hRZ{0>9O25KpCWY`0i~Slukjfo{Loqp1o-zVNas!OcnEy^alkTh7 zxbP%5)%LY|GB41k&m9wPUdY zYe61T$EXU@TvPaJHn%Q2^^i=_Qx=MIQ`0K~w5jSxtL8C^HZwbV1oqIN81B$wwlT zv}oScxRL}wq1vUN+wl}LJ*hciiBwwKMxuiGqvgeCyI1OfqLV1lQ*8Jpt_#*)I6Aeg zC~ay5ZPWBm^WL^vhyF~yte*Li`^0kBV`T#8=~2O|5n$(miKIYWOW}tYap)CYtH`pt z-t$F**a(>o6ddsj8fTJIqnNTVOtVnrFxpN3OsYU+>@J|y7hga07L~ihO$c~NpU}uN zpD~722CCzy_RO!Iu%t+qAOBr)_U}i8p+j=M5*OitwuVL{_4~-6CHA9+=xzAhDFd%@ z+FFP=Z_)I?vX|)_4wL(=v2->pNV$6DWmrQZOigkDqAe9J?X&-`fqK z7q$FVb# z@mdn1XpYaPltS1!K#}K*(gzJ&z#MoPNhbN+sxecM>O8GXg_NB|##x|wK7cd}cGud6 zFltzdz}0$QTw||(QguhkmNbC3u%T-+lS2urFZBB43K8dX59zBRRaPTFT!_` zt9Z<={4O3#0eTbv8gPGoRbhNecSKm>16EV9b87sPoz;&8JEt%p_Ac@+OSreeDH)?nA_kQ`!F#j^^8Xny&0x=Zos#>Q10jB(L7`K~6BrS+y zeDl8DpS=yiIzHNXrx8Rq({jHTrtDkD{O=_vZBDk=8_~yuiQ%ddTHOeP04|}|T#33V zi?LI#g6|_V^HmMGqD1(DuG&I#a9$ZV#Aag@hiQoG`F{QnZB07pseS1nsZ0!2r*oZE@md*bScww2 zlSZGOqq}o+yNlMJlwXP&&m6TE{mLOd5gg~RcFxrva_RFfrpcJ{`f08#SPa)ual28S z@U~g$)@k*%XKT>IQ0ROg{qaAhjNcZ>c%MgyjN8Do1@$w%Lb9yDY0OnzejC zBhB-!%JYF70i*xu^t&5rzrwa|x~JSXA+0URZFQh#$5^$4*{h1LPYE?!5hwaH8H$YG zE%fd;v$jm-Txq4qm7jRuu9cB#HvM(c6a-L9?klX>=8jDV z8g2{#!`g%9My-qod;KYFcVh)et~iYc18pM)SMu8+fsggiS9xC@NpHYZjA-mL!rGl5?$1!ifK5zW@8cj za}_I_Jgq)yG4?uiwdplXjn)rlb^)0w7w0mf8*ofw+_VpULC17&TVuQ*TjoC&CS^6P ze43aGz`x}??R|dVyFUKI>pnm=DUk-4#AuC%7dnTvXHwBK(8B7Ea4=;&4JZ5$&D@~l z!%_K0e+t;+kfQWc;A*iLD@IVZFY&fv;<)o;-G5 zqwOSSn}YOl3L9+@_i09MLm8B{?DeDb5^5418%-7x^zEdG9qco?M__6hyfj}K@AL(S z*(4!{Exg9A1?L&ZJQD1g_BflSr|4I4D}&AFDFdWp$Uqqtth>uw66 zQtMc0U8JS;5T!QFLF{ckBVbik^Zdcc zTBZIsBAfrAG4A-J5WY%Sr?XZ64-IH3O?4_M-U?^1{g<27y*;Ucsy~(O*%jr|n7dgR zEySlvweL9wrZ#PR+Fz9k9STwmVcf1U1GmMlG3)#tg}tbCTAo_PU$f0D(n zWdF6F`|6^+;DA4arR}lvk3mGIOIh7ggdJbs`fr=5bv&SkqZRBH;^4J1hKG&d9-qyh zj6Y+-^~Elj!P9p;tiSIQOjXun6i<3V(_^(oZB|XG&6}6wvQppHbKiGr^=|*kDLi6d zdk0Rc$z*UE(gT%zJW+L=Hz8PX6FXc>Y>H1gabPBWns)=Dpyw_|+i@cbZ>IYgvEi3O zxej?B>@n~%w`l;> zuC6*ijFK91X*Vh;-@{(jj1J{x52HWR0utlfeS512@SESf023AZrBXw_6KHC?X>;{W z|FwqoKobv%|7snv)&j>xjm;C53qwW~YBt@}qv*F2<}Mt%=5yBTWQ7>ukO=8ql2fH! zhm5ipF~ew^))4bbYV8BET8WK6#jbXgt*Y-`-|%K`!xVoS>$#)vKw=6o@)?IiM&%eo z!5~EufkYu@ua`PR?WT6#Uu-0G+<7G-Gkn!z`(67z&Ok||i@G#&ma@b_eyj3y;umT- zTGQ^&$Q8mD8~q%)wJ}o_cYb7u;;QuSMSD~0R`6O-Pm8$l=!XA?<`1d&A(MoAlz(Uk zXl2>S^o`t`;c{~L7<&;uK}IWpO#h)N>Nhn1;}(e4xt_c`$AHf!KkD9Iter&8*H95g zpu}-H%`&_9&RN*WHnhzEITJt^!H@ai*dr?+r*f`xr&O-#q)isFudD@ILWg=eds?bj zGFI7%77nZV(c$mHy#teuyte{*YA>Z|EopTEJfn3DT}4UVcb=uP8JolkZ(00jlW^H`|xzK6Gc#=I2+HHtqUGf)6$wJq+@OOys!|D=-n& z5dDAiYPz0~%N@?*e`vGaD7U|2$?U1Ma5(SWe2qno6;nlPg6;il5w-%$Znf4kH1 znzxOY5?>b4D*Z#xq4-*qT1#!AUA$`5LP*V}74m%7v9=M>-39U11O^WE59-;25-Z+O z_PU{Ll5E=VC3Rm^7?iz2u_W%RgqKH2C59^`}az{xw^EOlB0b;@w(Nw@62ClCJ z;q4nhuT^^5>3!y6z<1S$vNXT2E7CZRTg)1l&CMCrgH>YFWh!x6QwDu2G0VG{Pi9yY z*(;gs(MzL#Za=rjH3qNp@Cf|Anqz{2?P82&cGh5J#+!>?^|u3qMT}ZXLSKlYqIHH< z@eO+@NH?i;%mFMg16Y7cCZFctu~ELg8(a6e19c6zP&Vvwp|n{wAmNt{(E@38XO5n@ zZ@e62cXFdz-r^)flW5{d$GM$y4q(&6HjIICaCK&X204hliEy^2z*RHA-nTc%8TYFs zd3pMZU9B6;nO`W@`?)TSq8DW3DHqSimkDto*Q^T6Cei!tu9sPfX%VMKgvr^F=LMO@ z72z^$tQ*;4m3nCq8ZhFD1y=KK(Bmh*5Xy4%72J9Er}03`NK$3+t`+|hr%w0aL2gkgV4_!1NmRoyem%RxDTy*xloE-cRzhj*Og}Pik?mEuT=ng#{n~W9&5^_t zy^r8x!FCU zy&A8XO{SjNPw={T6diX9ziY^K>I zt5jvmATkO+!mV)K_~-h-<)h=EFubmU_omJdE?e2UnBy(%6>JBPq&|Rh8GS$L0YGyU z@o^J8JjPKPPXva*v_oLg1;G2+Pg;N!U8aGFC{I$>Yh!X$oD)@*2wo}w>--45%%q?( zI{UF^H7=>N9Sh#eN|G%#`@Mp!+{Md^7yD+|(3CeRKU>J@(y3luWK&ZUe1;sNW-syp z+|wEEnk+2Fp>}T%46*x4p-nQ|VKTWAO~qqhmUhuTS14x7yypR%%%9@%l*!o%U)J4# z0MTHA5M^G3v_g$>I?!w8{#`qH8?*fiku%x6F4;BNqtW~)wFwlz$akp^T1=2EPCGrN zis`Q_?~u$$Q?hqnENWbWMJ-Im!3!M>2GvhrNk=4eH82N8D>>mWTC|F*NaBTnLi-)! z>Z2#e@d&vsT{)5Wy~~l+-+K)Watr2PNz|Qk+~09XI}+q;W`SyJ%(xi@4s^2g?4Tr9 zPj*eZ_RZDH-C!MSWC~fck07#Du8W7ZHqD9p;@8+JfnWPe!am-fOip&~aF51)HTZi1 zf33f85~fUlUBfM)9JQq;Se)aCF2lxnXvjPFLRUHI-_}@qvn{v9=9vy_IMjaL^e&PJ zhdG@8Si9F-p}}^H$Bs>HQUFG@R4iP#kyKLVEVmn!n1cb8z1Lfw>_aJ0{*IsHoU_aB zWlsAZfhTi?^JuYV5IUa^3QbhpDUkO%>7sjDc@&H5P- z&}Hdj1V&3sr3JJQ>p5~`_68kNZ$8zF?KSh8wz7})i;~QL?C>mw-a2v#Wnq-DyFocv zCD##*O3wUxm^tnQBzx&tFS5N3ISsN0@!w2?Ro%f5XQf?Rrp($LJzf|NfRdz!HZd>Y z_^Y}*ImLEnB<`KIS^ftzuPO)ajpF{~T+V$*^UP%zpje>~YOh{JN3aYf$ZWR*hNblEb=7k4mGU zL*V(($09Nz(XNc*-+^ePSL7&z<2S05u3!v1m|DH<#GKn;(G({Xj!sro z5fw6&RJ~c8y?LaGjVj~u7(p`9Cp?z?y!}p+0*j3-B@Lc&IE|M|6bM#6sfaV8hiph{ zI#4f5oz|AHF+L~)T>&=?<}%tw7tbfhkK>7B`J;f8mYlXb1sdJhkR#95uTICae5y=h zO9QXG(JvpSuTQ>t@DR*Da#ll)d^U_Yb&W&OaL`aYc>WJsx45_Uo%9PF6&g~2hJDU? z!8bfTe%IeTXtXz^qD|i=@%ikhyI4lH81z&2iP%W_T~_Rzkcb8umRl*79yDpFn|Zlw z#T+Aj8F>PQkH{SgY4wgc1H3Q}0(jO*z>ZP?tl|SZMfJ42NryCGbD=}IkqN>m`K(8; z%IAfY*Mw{o=mk2(Y+x=Si=10*KPE~5JiFUPM?Qmq(ip^2*{^I7H7 z-alc$NvGubF1k+`lut5Are_~hC4~wW@P&;k=uSy1ay-rgqJT5~hk3{CNS<3H`J~&e&I9ylT3bVg9c^}YN*~6jo}A9_ zV#b70PLKC-DjuE#g%bSkSXvJy)frkK&?S2jb5W8V$*GU{kF&o^-D0$Wn^%PlG|R}B zXxs1%`}Ds*4}ny8o_ku(8x#ecv}lEKkRiZ_cysgwNF_cASd+eER0^9B_LEWw!AmKM zKs(axo-fdSF|0TYR^JJ*=X-_JKb$7jdd6S`?wt z_4e6CCUstzefGJ&&5TNw7yHiW2KpGto8mHoAuyvg>?HLX4~xp$4MG{EDTh|8u-l&38eIHI0DH=d#S@up90~O49UsAxO83@n`s@ zM3wP;VqUfswqT4&VmLV3Z&o|so^S}wni{em1D~LkBlQ}3-bO~?ImD8FB-M*tRAKA3 z*h6S9UP{PDW4*E;Y@#d$a zOH|~?zu$7=YNoP_t{1jWPgGy%sb0-DFoSBk)^^?*-$91*Ig;b)Grt%yA&K7hGa&_x ztq@ek6`<>E%(&ez`x3E|({_;~frvfPaS+rH9gDO^`}2)h%6lyfHMs^GnkJ2dIGAUf zY-f37Ww)-#`|Gm^N4*R<>tykKp8))-OoeRyH8l#s$^u-JB$VaY>wQ?iNk&q9L`5!3|iJ z+SFDL~vLjgK%$Uii z-k5AT6wI)*clyygw!E+$e(LmaMhgkNg? z87SKKBU$$ESHE-Z`yUCJ!5o%9`_D@h>s8FLfz%H=x*sy1lSrN3w*J+;%z@;5 zgs|mZOBx4C>?`n4Yjs{|eHQEGsyFqAjRAVizuNc8kYPL}!9CnS`r?K&f(OD15;@6~ zay0I|_K^^B@lTO|V|PqMLTF68#?}&f&!;&2S5a<`7!^HK4Cosv&&mrkoifOX+ngWw z6hgrr71t@^(%0|yAo=)qqIUe9e8tK_=}?NI-YY-h!;Omy%i9OcG^bL<>vWR6`+%Ez zBfz40+h^H_Y9*!r&|GKPSGlnC>MhCx#Lw!|3Vk=8_!o4j87*GThK<+pJw^ogt`N^H z*zwgs#$E%Uq%x zPCu&lW}WM7{D*dMW%k4kXpcmtE=A@%hCoSy|qoxBBG4c%q5|T=s zV7B7gB+dFZ>%G>K;!;<`5%A4;Z|s|oC?0wJe`o_=f zwq=!Q{*lL`&gdBqtPh3fkK+lWvx0ko7S!f@&n-B6cP8!#1B;@J!c!tK>V-CB{3TPM z-7wE_$q3?=Hn@aP0l4(LH7PGm?cAI9CG0Zm-9SK;5_odahNWdlWX1J|f5Wrqp0tR| zifr32bTbKfZ?N6!tc%^3^vqPO&)Vt>CWvdW59gqOCoP1;a=R#wCmVzisq)*5PK2Y zlAxkwghlZ?tw0R(H7P^6oDhj@v`%_upS@vBMkHrkAN$&mJx%r#b$sj&QZAxgcOSFK zLOpaJAzkV)h+AsNU@6?$teQ0!M{K?1ZquD$OL^*S2C4|2j;gM-W{4U!ggAm9OZZsC zwhN5%O|RgHI=8L_#|a{~9hnSal^$w*`;eA#$^)efded4CXjA$FD~XEKNvme6?`SK6 zwc+KO-OTRf)A1{hJ`S8M_ZnWKnn>KK`O*cucMHru_qxNP^cZNC(|MNKP`+JGoTRNP zR+u+Kl=7F~A1vsUJ(B6TUrZ0=Q5^ItjT4%sLN+{$jf)1Cx3xf3eEkP{M;q21R=f5Z z*Y^LRNmxkjFV$!a1cT|tZV)B94g1i~PC}rpmLKtbSoBGqLhmQe`4Rf@NQ>hOZP`&` zCucybuP&!fREyzh>X7cAX|c7x-B};GU-Nku3)}{My8Gp}XVL(nWW;-GL#lQDPxzAV zy9wT;){Wtnu|#jJ?chg0+CYTCsB>@KuRyyxP-_qU?_W>Y<+-|3;l=W7jEnkWfjRuZ zww16w(`k-BCAdmYQLoa!3gGA^$UZY=sLg_vg*rKox$bAIjRxSmd5CB&#Y7wq};hDXC zph-4vZyBw>rAA9ToLkMe?+GvW z-Au;f@PcG6w@v>FGkvp$Je5t+|p|&1#BX z^~32vI;Ug7?uLZ;C=eH;nXo?Px6^4y z{ewnmpln5PXN3(7Spg?GyA+OjZzT+Dh!yJ)L~3dL2_Jl`;cV_K06Dl$XlSbh-IK^v zsksA4B4&pr{HC`vNZclKy<*y&uk7=dcd`NGVv3WTd1#)9x4t$EX&I(;(G>tnGOH|pYwR_uR`m-N9WN%ATg>ZECXb)?xG%DIiwtsU%(KHrXxi43MGS~o z`Xljp-Lz7qUVR$P9p#D0T<@S1kJQs|0qZkB6hP-dvEjpC2= z+uDR_gW!$6mJz_2v>9T@@|V{7Z15clT!7vGI5t0}(*PyXQ{$Vj_LM+y!;{VJ&PIP= z7kd-Af|nZ*TG95xarc6D#V#LBM0RSLDR%6$kkewb@%Gy>DG__%nGespTCVDT!`KB9 zZ`)hRQ9*`sL6OVmHsjs5C~bj`|h-L;YLO~23~+k(_8XYH(XO{Zs_ zG*O>ry6TVfwi{8@P=1xOV7m9_);e0lc=l^f?p%K0oJrKmuErP?SC(^w=N4x z+ncwGRl)F3yNTgOzN|8^xYy4^bGGxo&Fh$^>kt2-jmteAOa(Xt<{7WU-ELtQZzQ+x z831Rfkhqi$y^%9IgYN-#o~XlOG;6;4Q_X`kf!(IT&5jD{D8_5prfmp{T18#8!l57G z&$>xPB9f>$ps%?nG(u*_(F^sALh0;x#YY>i?)G7S2AO7?6%1)zVBy+61hE zmyAx1*53=-L3-vj_=-xu5$^~4SJ}lUuLZ+bH7vN^X8)iddCpJ;OojsY?S$Nam;Tg~ zKY*EROy=O}w+d}(4pSL7!K8lT<+-v`xvO!MjE`gH$$q2+RmArZ>wU_yZ)~WXcl4MT~nQiTsFC(^#6-ugw-PH(4r>Gh1 zcZ&WfYyLe@%!6bPQVQPIn)EYQ8Y4xfK8qtuJa$(EsC6X8nZGcCOCpUr<|7JXO+SfR zZ#VvMsVn!^Nxo5K+>z8H>XvmIUR~}-iP5oNp!bAk!r;~ATYJV=IVmY%x_kptYDF4z*$bZFAeNXwetpcZuG{;;7|G(WGmGsS6|*{!$s`H z;+BCYR;zEVJG*9P!z1%61A#^b+%M>T)b!7Y;o5ek{w2ZfSfbzSH8b z)Our^Y9Wcn9>0JRXW8d89&43gy|jMC81k|Iy<>Ld=!ATzo8CT?6~|AtU8{Wf z6nd}G^Nr|E!;@P)nmOK?BOSW5ZqBl^+uEz{>Ytrd68Ozj5eS<4pN0sNKSc z*_3WqT9ewDtUCJi*I{I&pjg`A*b0w?#nTU5YK#Af)6QLQQ_$VEZuJ?u1G_jtLaTFzS<7h11ZuoV%sa&j#Oe_(xk(d^@Z3IkD+uAlSIP zdE>$7{Ldo0bV$iJDEq>*v~$LIKqW$tP5;33n2xb)?S653ONai-Tks@6S7;;S{Fihs zkpqXg(ktu5-j~I`orelmOUym0;qE~Zt$sfCs)n|n6T`cssJF7>D(+QxDFsELEmlAN{p7QoL#<{WxZa8uBzafn|x6V z{i6z<3)l|g(;DJ?HP7cAi5Puu;6Mp>oezIuoG!~^%wSQd5%Ey|Z{-gBB$F%}4nRV* zO|9&4pl{iFbmE7>-@h=z^ri>V?)Cf{7Wwqn!S$2~xGEC(IaRXu)$N$w_XZ3S=haY7 z334`DynlH)aSaSbTk+Lo@UR5c!lJH8{}<%c*0A-=j9?sq87Qd{${`Yh7sd#4WQ>Ca ze8aDq>mNbOF`^?(m0w{vL+^`0VaSY)vbt*9NQM7HdkLcRMv2H`ENE<;w`EZ=N!o1FH;u%l_u#o@7*%V=loN#37g+f!5S>6}P zJh2BwF6eCq2z__RD@Msbm4YAKKsKF{Pxg6LG1FWm@TI%bzYpIMZgo>F2M)}3$!JUY3~cqFlfaS_>vA6VO&>{zIDr^90D=R;-!5a7rLDb?rKj;~O9BvV+DrpT5Fv*C8>=2T*%}-s1160!7=?R^;>fu_^w14Iaht zC9-j;R9y&MXuJJbECQc#UlaS0jT-McR&S39pOYX5pCHPJfHPl{+l026k0}y^49(Gv z93?i=a|i1znWJG#4ar#^6CE5|0^q=zw+pwZ)+WDIk%-dp5dn5$Vu0t>rB;e9Zf{`m zalf^BgT||R?&qzFfIW!>j+vgyFAmD0WVgQv?({q;>&;p$#@S=-nA=-a<@(B=5a6H3 z>S!QL5f?G$LiO~b&<{MCV^pk+ctw90eu@^R4<`wt3e#d4_*TBwrp$4gdYtQ9$L%`4 z{~2UYxvAX~-%JlUUjFN5?K$*Gh*iVrE#B-*b+J&)F&RJ345Wxa{-3|jPbbUM%ff{;(J2#Zu>!&^7YB<=blj>}=ka>MOAR zExV~~H5J1~*Q?a{j*f=qKuteB7_!XO%8(l&nHojK3efVX(>>09uS~0}Ov|=j#UEEM zZV&r5n7+Hxjbz_V1oVd9>)L!(q=|6(?r&X7|Lb?^RmJf*Z^Y8kRxuezwWZDNzC zmUcz2_p;fps^o{LrRRuT`wXSOu0$ojg#HTai$o7IPd?tXIy*cTGG&c)%2jcxvDMaD z;z|iBba+F5HrIi?^C4ncF)@kI*eC?akW|{-ktX}qnLCI>QbF2n>hn&eF~Q)f<g4p*`>zD40mUjqT+Rl_GLdaA!y}jC1 zU`~-3r$vh(z7y>6pmA!7pwXFksyIgyTexTPJN2of_SmV*?b}N5;z*=pA=guL<0bN+ z&4-C54y$C)b#DR`R+BYguxKbo_L^Mh7v!TaqaK3+5mQW7V7Y>8lVh#zsIT1D zMVNV=ZFkh8Kb*`5=b>1A_Io>=25S?4%Sc|?uh71eQnOIW0egF^Ov(EZsVp98_)pFV zCZX9AQtx9{n z@?tCXA6;0xyfn>0Fx9krZIyWbi_|?zR>+&X%ty_;h3;V9=Pr0|xaZO-g|x!oOw4J` zJ3Rb)o6PO9y=x{)BEM$;MjO=ErWfN6OdwD@FDy#HbXgT4zJF%}BV)j<4BJm~NZ;sv za-UO9krzF|{ATn#heBD%75@_Um#?Mk#t>sbIMfzAPc8R(aGIfteQbU|-G6h-t>S1A z6nL<|9FUGiapa}`Sg&fo<#u@IeE{~kpztbi;H_5F;yYrGAJ6oyY)f&Qv}_INB)gL^ z`bQoSKdiimpZ*al6f5)uEPlx&9oh2T(os2J(jKHoBhn{Z5TWE=U!Z2tEpMxhQy#t| zWVSPgo<<2N275+ZxOk&|#M2-xId5b0*g40b(KO{CR8yIrJb}a(kb0=fB{YGw+#0V7 z6UYipyIXE5spM2Z%uHLNR9!`epV5|AgXFy*l`c%FGmL-7d!41fU;fPCK9`7!B5|3j zdeHU6w7yDjvZlMOuruVEa9nnGw(14f#b?qO1=vr2Tqzjy6mBsi4NPZz&T)68^64DII-oZJL@C`=tzr&aIMwVaB?( z+TZ}LJ=UcKj(^N9&`F|TxDro!jX?128rI?0A*V*5Zqvh6Dfzo?`jqTgF(wu=vJOq$ z=?dAXN~ub?AJN@cyO+8uJ_=KS?~0iAF-ubHeWmG}y6$fq90;3hZj)kxz?t0QZRJE@ zqLJQxrr@|rbgUN7r>i3N3`w2gCdyE42El7g6C41g8^B0$Q^#CWfBuh|S=+RND=gzH zs&G|l_I!YS7oJO%)w|xT(H~#?vGqsD2!?Sd_M5~mVa8j$5X7Z{G;cS2Z8`UT&tGr< zC-_mM_Yoaw`GMB%sld$3w^^B55x?BcG4)XXe`{4*L~g9-2EMUsK&crcA9O@A{wJo} zGtS-GW+M4fWzhkuYPTuLqe1Kiqkbwr7!+XFaiV;GXJT0ByI~Sq6J~LdOT+olyuwfUp!ce-q^@ykYHCB z2L-mZhZH+atou5$4-1fU!FEN9izTgmwL79`gNSb(kmdS$S0Rxm?aLkRZ*zBbAvP}( z=l|aMlt|}U*?ZBa+tZCe@|Hc++A|$fljl1eqPV`y7jBoiMs(cg_+`AUGEJ7l)-`g4 z81c+0q=Y16&NgW&S6p)MZO&$H_~m z8{tEijpDgGq^Bh~S*>SDgs9Ki3U_ZV+>Xm@30-hg`9qb7n5cv>tD>P0M2~_t{&py1_3<{IFy4@sgVgD!3d!9nf^@by(1u zGuDY?zpv7uYLb)Oti$ryu6PNNT`1K1SK}(alDNZxZ8(|vrKZW|(}KKRDX3fe#%a$P8#+wzk{Ap1`rFR$8v#C6h?8U#ZNWc;7|2 zek-%oRv}2RcafAM^)X|v!$TaujC8q#set%#n42z{$6$FT0|czE%Qfo-F~XaYbf}lQ zpo*fI29MGL>h>v1kXG9_L5Ud-x1h`oYFUR31sSu6TNNEOOXJn}1-#Cl?jHSis|Qe)-73h? zcKXCT;D)z(h`7SdJ$ANakC?4p-R{fu2eFUeLtkDdn^uKe*}clT{PJ5^@mSx= z>Ma@`p7>rf!fVZUNnm}1Z-h`l*a(e!eeZSTDemJBnQv2}sSBH86?+bEzw;)+40OnqQ@Z@24juw&>!q z3C~SYR6t@BRQ>v}=I(UcD@bKc4!ZRy=x4@R_V1GT6~?C~tD0YxYT@iw>!LjVU=C>UYRxcWbM!$tc$?*X!uR^@Hbr zs*Y}>fJ^Tk31@R~?d4bVo*6q7BniX?OYw~?K*i-_p&m|f0gWcMOOYIZ(jCv0$LcXv zrb2tX#X=f(%MuMI){j$S6CwWB408BF_8u~ZC=*W#GC}&w2fAXx9pt{YIWqf#yB9&S z$zAVibr%k2zf@1prg5l^u)&bJXjP&Ktvc?`#Y3{WIX|;L<+Oz`dVChqu)Gi`$3XJ; zvd~h#d)<8{sgF^(JUCv-dVXjc9Cov86;y=DJ4}Ke;ITW{v6cC%&13<6mb_OdEu@us zA8Tiuqq9YI&r=`#yZBd{t8SUXV~>{C_aQH>Vyy>%RrS$>Gf7hy7`8o^Pyl|711cWR zwN@a)zFsh=VRh&FiFnW<^$Fxr9W3jgJPo<)HJFh!bZv^kNHK;4TzhP zxHaL?b2|*wXDIXSaJ1i<@miBQt=f{Xjfj#v!gmcIhqCqzV<&&=zfN?4cT``l{WzJ3 z>a}pt1{Oz!D+hXBJL6u*h7b!c*EPmE5Y|=fmbrZMV(=C%i_+y4hJI7DGT7EhII$%| zg!h1E8*wFio6w|!jt{INHK!Hlw*J-aD|?{s+8D;C!WRv@Kk(|QW)W8yGVvbnM?QKN zuk2+*m%-$1mrs+Tr+_sJz}(voQ@wP6kHV~W@y9vQre(gC=E%9K{G_C)LxAr>71rov z=O)_-F7t#Oepsovh@v9b@QWru!t%Y(HxaY+aaEXD)@IN1s-{i3`Ym0Y9aRL4u7h|C zDOn332gsjCTRkSWMtYw9ub}ya1I>J$-mlL|^T>ZbX#Y3Q8RK#-8WtSZyd9CY9(mbK z^|@u|3k=(vloHQ>F4nj%X={hZHC$`gh!w6-3Ubr}*+; zjP`Ex!r{7gEvN9X_=VeaE2~!s?j4J4W?wKvive9Ie}A)`^KhA%Ez8dW#uPL%q5UMJ zEXsc8*(`)BYg+zpXi-D}H2gPckMSqkPO8zvD-gGf2pqSGO51+yoAs`_D}3ac*I0|0YllFycB=$W8E=-H`w%3dfu@Mu zPpQxlDoK-dBDjjEqZC=80p7SSxnJ<3gq^g3C>F-cm@W1CN6I_-Yz??b&zg4MttNtM zHDi>4g>8SAACY5P3l-`^c0qV=s2?Hi+JiYzOQmNH|Cve2+;naalq zUAH9?j0@t8^i4PEenkQ?St+)ez$7y@NU%#=w*HClk|dF%s9suHNXGk}#PQ|Eeb2Gi z!7PU&U`iy~Or?d+(%5jc>dK+Apd43pv5NOc=;+B9OL0rhUp)kweC<&jQLM2VYg(yQlzT5mWcK0?H@MUb zysoje_N8iZyX|)wb-StZmmm$WN8>XtLN66o8YoqApPaTQvaB*F^}DLHO(<`zqGjQ? zmm?}k#d^DHvNm4b|27e3sit>Fj8gFNk?Pr|h%fIJFWC!Ys7oyEWEUdEL6Z zQ3Gg@3t4!skO+IyqsekpBYbJezI~>3X%$iJJL-%j+@lK6J=Dn2$U&JB{0c@mJVXy> zv^rX)M#x{qhFH`!JS zP;=CR%%xYkTGy0DfGYMX1Es>_>r3taieR`Lnxfl(RUDtvSY)`@bu-b1sszv|8k31J zFg(8dEF#R7a(LvoVvLFXw51mC&HwF?B~y@L_w|ze(KpqiDp8{_HC|6PQ=$yo%a~F( zbXr&o-R~cV#aUtuuhjSgDrF~0MJKk58qH#LmRD=7V@@Iz=8Hc&dZ38(x&9UX$BIiz z&*aIp^uWSD>4x2T)R@llpY`n-i0ySV>*d5Ro8D%PXusB}t$kOu+pm}Y%AqGH4cTq6g1BCxj(z_3E{ssEGW2Hptni=g-_t;t7A&PwLT<@Z=~lkSq+|q`^LTw6boQJ$e5* z*}Wn!{9D5I?q0Q%LVoH&U<8gFihC4O?xip?H$H->zJQ)`l^k_oz;9yVDZ__hhRYQ3 z_7WN)qWbBJD9_c`&sI`s()Fv)eE@2RRDTELMIZwX&5sKiZW;1QMCumTZC__J`LFq5 z(<&E}a(|m4jB7~6^UL5-cO>1Nmm^-mH!T>4IsZ<2_gY-;aGNw2%t%zSCbt%#oi6_p zGItj8HHfOIm|+}lScTWBru{25_L#)$p76Ucc9F?)Uu?a#z73i;ZSJw5_^-R<2ru#a z&P5?p`l$h$M}Bd3a(TPE7FIH$rH-jX zC!VSq)9TOI_=7^3BH36e9+@hXcucNy(?OmkR%t*cY zkTKHH=;CQ;+m>Bm6rLPp$MYog^(asbezc)C$5~nQQ?%YT@ny)X6Uf0LlH=3`*H=ch z4USvEXUty5i%CklO?+`1_O}UiBAiv`LMyQq2YmDM=+9~L%m#J(88!7&zF>gMYg}yk z8Rx1tdGYLkAi7EuULd?Rf$yiEs7!hYx9^`MH$0m^-8P3q%xNhhZyyCR8^wI{bkmB14UO=9&3@`PqgK-3H%;ThrC)bnQ79 zzt~{=IVkh~?UMw1(R0DC@@e-{rhN(_tjjQsy%3#md=mnB@g)zkfcr~SJIK!1AMwOB zBnS0AEnso>H7#)d%W;z@q_GFdGHCg<98b3JF*S6(Ko^Q$VZtI4ukhPr5TefI4tlxb zPO50hR#iaEkl;%MB_mb_e9c*lnXZ!8W57-HZ#o_ia(I=Xw9S_*!^# z_FWaekQMEf5D-)>VRrK~*$NN<4&!eb!{0 z6%oSqQ@+AW8~>SGNNK9Jh88`qt9>J8oIxp?tyCwu$LD@Oqo(1}(=L6_vLZ_p#+apJ zZKJVfZ(tbv&J8&9Uf}D0Xm*|JnkbV-a!Rc<2y7$@@UO0IHt<+jT)=`En>zN87bBUd zKg3hB8DJla>9eu#=Uqw1iIF`l_({Gm+lo~5{~>N7{>ye9MtjhUQ=CVXT8ue5INTHy z$YlD1x^dA`fkW*%I)PCX@vA5E@$+==ZKQulk11fVlGc7zP^^qydLLd&^W<>ZN$g88(D^1%nI;j5Rkpe;j$*MX{|@|1iA=$ZdwoqR zbYPAr`+30;BM+*ePaEEiEJryA`yfkEJ>`50(o*&tEtD&ZCWRL?-`?>-*duK? zP4%%<@>AB_RsKT@2(an-v;b z$Frb{&8iizvc6ldwtRb`qJMp{@lSt#~&? zHDj8}$XX;Y)jjy|#DS`j?7_Du|qpK>!Uk?G`Jdkf&BA)rQF0+Z_EwnB*HACo#21m&0?NGL6C;Io$K?Rd@>D>8h=)UM^ zO56p~L&sPfQ~>BmR^^kI#oS4GEjxJo`y03jd_1j2X0cLayH_m_&a>up_)P&HcLCfQ`Ii~#cNWOIYs^U>CWZ;e4ZsX5uxrue& zxDfHjUx8oY6=m;3@CFJxv7v|hCrBSS==G2^g;t;SE(xG)ooS!ccWI|K^Ugv3>2z^8 z@we}hF8T9_%kzdb&qbhpnW10oRzOxd$=;;`rr{KlaGT>Nk5RWC6PYAo%!34sB)*NO zqF<2Q>z8+o^ikQ1++dDTq$UhpGu3A#KVWG6>Z436su)E4VHEP4Zz+MA-`B;4WvX>$ zt`a}sMc?Ad5lu^PnUj>Z(=!vUOt;U1_}7e&$-D0E>SxaHo(Qr*91B;~fHrVdkezu}aaXlyi!ey4rwYGG1?`^Cv z)jM2-ZZ=(Tm*-nr&Qu9zy<~y(*4H0wcnQ^%r(;}}I(aT;?L^2#Slrpc&QIoG#ujco z{dUtVgZMTTp@aiL*aUUYFJrDlaEBhHd%^K$<}u<#aQ1Wi1PBFg`7l;vo1BiIwcH|Rl&x8IGwfQ+#s?Qrl)r5stAXPoh7Jz!Gx=~;Zj?L@7vgC;zmb! zfo|;#3qn7!-Z2FCyRh4R=5j{<)=PV6XK?sz5}FXn?+~Yu@b!1K0Q_GMgm;lQ?=`I# zEgGq6+u}#1!*d-_mO--P4H_AzT%wil%h!u)!plwry&AF^da6m-O+)L8lq8JT7-aqG z|D-z3obKaYnPsEjU&hSbb^ZLr3U~T+1vMu#S;jDX9maR&Qm%B z?lXBHP0HC!mv?Pm#@-%!%0@bd2q8#Gc8QIK5_52^>t+Je*IW)x62*n&$uoYv8S%-R zg=uF1n|ux))f0jj$OJE>rkEhKyH%(= z(q~k@f~oMubyMU5#jJ-e38q`JS$m4XS~G&DKXIEXl{76$t;}q>Yf9-^OD?}ldUO@F z87H6>rtAql=Kpm(l%SS6PT)&jTsK*v4+`~vPJ^a?r`1vOYYN-|D=hFeB6J6`kKBi| z{cG$pJ^iH0B8CPTA9VIK6FcV%E^Zr{8^biIWY+S-jWc#)q=!OpQHI-$STzZmh!FCP zr%H-FZD;UinxoA`hhJ8yoEu73b_Px1_})N}ZDX0O zL0^zdIw&MqnIWSR(ajLEE;T;vVPi{Xq1D&6GxPSHhjvf1P$4MtbPYe=-J#Dhw5te8 zW$+nFJjP5H`sSvPfxeLTs&MIIb~U;+zv3^tV!eDLpjvc-_ysL`-@|;lRo4KLbH6Qc z1EFSyGW1Eti{nZXxHK^>g^!v4>1XR4ep&Stgoz0 zB{Ad=8U_r_T3JZ&6p%jyhT(N^QAoMmcdf#Xea+ygtCw!I1Fk!KgzH|%BA2MNN;%(9 zIYHOQK_gG$-7GZrD?RHM{QY z@kHF?UN0!*H9~>#NK!d2ud+bT-aNoVLIzMPrJ|)>SlEhklbF5v`+uRi=x*Q{EBjO# z^%I~)ha;giNaz)@N`oXm)*lGx3Sy^kBF<~uSq5=F-G26=N7Cp0w*#XiUAka^2Qx}H z&w|+vMFHFX%ul>+$>{~^c}{V=;@UfqyrF6p+fGokHe8qYBL%#{C}l|(dg_-~9@rn* zS_O+ZCCxYB32$GOAPMtE>|nS?cX@rM1QX6A#D&Rpk}pglp>15$^?9b)t~keGQV%Hg zBonyzbp#GC*H*e@+_2&Cl2NVqfWkNj#PnD&6UvdIx+*Spc4XSE7g~VMi(a3ezAd}a~bi6rvES{61u`2#u6W2-;AIYt$uDNs{T#{`t=j>&C?*d`A zOHt$;g)*j^N}c?fIT;R3tgYg^s-oH*l3cJ8$eiZ1b}o96JE*%isZ&j=laZP7AKFmJ zCQTk(hv=fsGo%&&iRbxEZplyruASgdxSHYY?vbOUv_JV39PzX^LBU__P}R-8gZOfB z0}NH)7-w}(pUqYr)w#7EKI3=C5?r8sa!w4m&S6wIKWg%wADGFjoTNFbFM|Yd(43UhK905pPTE+b0 z9hX;neN>cJp31sLhy{HGf}HouRwj>0QBabP6=b;TF=I6qyP#q+3Y7`C+*^r>!$OSq(?|~{)j!|s9mgbnqF}*7lpTvhaO#S#4ZTY% zfOeA`i#mxt@@|Cv%w)c$v<-1dR^Q?mLFp7ntOeG;2+o%?r1bhJa6GPr)P+nu74hif z4O@-&HMfqPK6NF)h9!P4e)|oiOt^oEVrL-n?!;i8DW>MV0*CteWSU;zCLFq(?-NEj zfDOUlJVJp#Ie>MuCq^2p8_L+;bmh(qeaqKzzW)$(9C5*jXsk=2EmTF};@p0oX7|0A z;(7hTrmMw2u}EypSLc{>uZfF!)^U1!Jj+LDRpFSWrKoTD=oTbmf8 zUSI!vxd9Sw)wpAJ0_VWi?`j7Co_c>Hn;dOzMX5fn7JyJ%;X`849i*@GJ@^tY8pdG| z8|Q35B2xm9oOcQqx$8KsLk$Rbr_cRA$>`sPwg;a}-cm`YpY2Y;6!AkSFlj`KnGW;S z9&(E}MHAydgiEud`2~BKLLHj=!9@!ZZCr4>Eu7eVq}ViFOG_MPu5p{LomCf;@Abbm!6t88T@#3U(?x>TPhz;}1E%)XdO(G<;$t~Qe~O1(%j07+tn`G=KiGFrqoSFn zKOg@h%tBzf(JcBgy75ZUIy-n-SH%%|F@4G^^U>Y0k@O$Z>zJnNxx@`t3}(6C6RnO~ z2lq;T)1AFLEIyp?w3*_xYv)KxVCZ=!h1CXf6s#OiuAtnMMu~I=ylQRKSx646{%20O zMrd7uj~`RSF9L4Kktl=N5S1%8q63|>(qTM}M)`-_PZ^v7;kx!>LnjcMXWLIGmHl`n zMQ{SU!2nLi?sb=m=()c6R3z_=kC`2_DTKeg-NieM@bz~bGt%r*V^HaAgXtGpA44Mfg*Q))F4kmVnNT%MWdu!kz-Hm@dJkM0YwBkuw#IUl zY9snazmaft(K{uS#8k`kbd?=pp^c^Be3nMD8K4?b?L`ZwWMVIW&KVN9mDRWqN4fbD z8WVY+XQ#O7WP=~V`+pp)(@h6zIM~gcg;#HulFEG1Q;g`Kz2ktgD`b`!n4u}?u~0_$lI?^a(N!3m5a zex?`PXGWQA#$+5T5>)%P`0MGV!{qDk1;2b=82fBx_f9*q|%<9BY z_CA{Ma`xG|&Fd>l7Gqo6RQ6#}+BwGtct$(^jZci{VAbgcT~^5@!?+(6>ao|e`Cg@u zCsKOQQ@Zy3gZ}H0eL+9c!zV|jGWWZxTu(pJw`o-JY|RR)b{}TU;vEur`py5jL`eG4 z&bAT29zAfDtf)5NDeA9uJbt1Y93=J%;Vwu*OA6!4XNJ2(Cr9*_3^i%=labV>SAm$K z19&rG8YUjj=e;uTkV5XxZP+kqoCNLxuc9Uh<%_@b(79_W&#~$kp5_o%8G26{fd0x& zf!^;KFn+wj7PxBoCIXt~6RvN{P8$9rsX&^HI zMp3f&9{*ILI1Bx4l4RD+fP%gZKX50!yWgJ)$x&!OQsk@AlWd<+I{f(`xP|pbGY(Y? zZCV^7`E~x77#h=4LRo>~a?!8fG`Go(dj=6ibz#fQE)33g?HROb)b;CmksquUcBrl? z-7OQ2am;lv*JfWjJ*_aB&H@Zsn9pv+C{b+s&&dyS*yUa;Nx5Jwy_wx_-@LX<*S@Yh z3`PxWy}5=MrL!m3DBTifM`Yzs>G2w4%%{-3?f6(0`K&)^&#Ici5Sr^@Dn0H!y93DN z`^&AXF&tu~DVFp;b|XLMnQ`?b-KLDF-$tjCOm{-;99>O{K24ih;MVtn=2G zrO(rEk_X)#q~)wZY$xs>O8$ByR%N*HHfQVx@Be6biR%n4QL*2!#J#xF`7JTSpq*H$ z5)0x0eUVeKsRig^xJ&~_8VYj4P`^m&`#ECg97Po{;|ARxxHSowx?X!`w=BHZYJpua zFrYB?qX)6G{YvjFQF-^YTQ~4HjnT` zU3804nVKsCd7JOKGRfV#6G!G?ArvuCV7Y@b&@8)Gn9ZW(P}pZm*5@-1J#Ou)J_%w3 z7FmzL*Ao%{^%xdk{Z~{+bMnP;=tWrmtzgynu)44I*3YSr6nh$1L>M9|{OwUT5e7(3=j951qws|FGaoXcn7zmUx(_a=8;`HehLD*|pO} zqjrBGGpoOGXAx;oCDKz&fdY5j8@;bZ83Zfbtvc7NJ1a+?c{?A4qa^cMK0A(g;2t+V zIE@^%w2z3J+6LH$$SQX|=<6dCkjuW7yRlZcf#e5)K5+5gUUSSgvF#vqZQ9G}btHK#CBS;%FZaV$@03cIo4%q3r z;W#YW_>7Rmazk&WiCRX2XgXCBzWi`w-!G{m>Gi2T(&JmBqv4NRP%Yk}5AF9`0+A>1 z;EEHcZ!^xAeetW(R3uif!Xm-$U+332lhBBMrifJ4MJOcY{mp)Io|=4E__HRGPPbnI z(SplFSCX^9$6Mr#R=FpQ@06>wVIjRM5Ztvtr%CN~zp@H3;{5eTT+ggH8%dtx<1^dp z!7Mjh%m1N`Q32M<1ui*@1xbk#E ze;e~kVu5h`LRTdJ$8A7dcxu1W7(k`&#D8{eGwZX`fW56~;h{2zvootv&EV27FeZf! z&sBq%FmChhyA(emHIwzXC-qGP{bH!XhcGeWYe57(Ac|m^5%vX$>SDGk-u~)B_P6O6 z0MdRl!&R{azC=aWT%Zyqm(9o8gKo1$#`cM{|pfyl$A8_-v6Tir-9`zrqis6s7@K z|9X*RA1~AX`4UJ8VjIB8YR;!^0+KW4x0!x}$Q8h9Heyqcs-Y&b>bA ztjAGn<& zeUJ4|=(rO{X7i8FL$k(jnR>hUjI*P!R915=D@0N^{qGp=snh3zN2x!+Gfzt4dc9^d zfkF#xHcGtWa#JQWZPP(c8_s3p3upG%qUKt z)rCaL)cEvf>o&{?+ItB{h28|{ewK-KcQl)U@$?3XNhab1ve*1(p{oL~C3d|qQ&^sD zeQ7A=IO!Qe5j@<9jTCSxL77gjD<1lX?{k+l*ID^kEPENK0swcTkDTDpf;ZcC(fzZ) zW~h`}%!vIHF?ee~qN5&OYaX+qso6s2WX-2u z3{ij1IUeS@mWe^B6xZEbAu&dhjTsIrR&)7@d)OdsNJt4pQ<|=&u1WdSnOejwAwG;f zgg8(>whu%V#4+$y(U-w|ZB?b&RqD+d#|i7iZ~l7!Yw2pma(nh<)3r)6@SG8U!-Bs| zeYaaiP*M-?M92!9;0}dhRgtn&cMR4oPZ(bj$xAQnFFtB;TbGNBfk{T0{i60TG-?d5 z%5a~r`h*o$3^?@s?YYLH5GuH%8^xHP5H1zLwKnLZZ}yyi^iAMx`t~V(Wx1MPe^Y0_ zz}1%v;6;Vn7cR2PX$SsdmU+S$Ak8?J`RGnOB-Rs*{nB~6WK0d~H`0{k{o$AY(BPD? zR@U=$OLIPfezjM{7IDhXo#|exq|3LZ%z=zn7>Lx)4SHD2Uw+ zMY@pB1=X{gU{a~su{M_O4=1)6Q0QD2sq$f=XWh~%icVDOXM78I7R{ zrK0ZZBikv3)0R*}9~Q>A+w$8VBJb2}O`5cV>kp=lsMWbVwC%VM(xx56K#aMx;QV&1 zZp3d-4#C$%Ts3HDT{Nr^vAf(qf#Or8yI{?Sy>^k_B)(~Zm(-V#dD@8}>eq3@LSert-TMGTuUUzg_2&Ir7;X z$!9BF2#Z)nP#3jF!9G;y1-^t+_+t0Wlpoz5XFr0E3P>ey4yQY1V9s=vQ9yTK{RWA# z(zVX^O_^#<4C;14RFQnXFO;8K6M3>D^BofXU|WI+l!V8=oE9wUVO4*bz&EjFCg6%@ zIp=V5x|j23F=bSha04(t57C-l16#hrVqBPp->60o)*Sh=lh`}2U!=}!xs<22{@5OI zA+{P1mhe5h{WQ5fDJUibvnU;>Yrvkh-WEDsCzvWkX*WNw+NEKp7fflE`q1?sIJx6Z zsJRfjr9(q4&EXph+lUR-!1d*y>~&$l;anK!FDq`=*?Dj_H@Z?SrOW(SA7GV*Y@@qI zTPV)5B@L;P!%$xT>X=)TRxq0WSXlLFN)wQ2$?F@}NRkPG4e*vWsymw^t2!=$h?LlP z(tm+|S{&O{AyG7tLz8r`7NmMU9J%2(8xuz2+lH<6(#@6{g25KHg|6lSmxOQ`# zX2mTK9N?}6Z1;+D`VTGDe81-d;Yx5<|rdasM!2|>EuDh+!&zyITp zAp9xL;fW*l@UU>z;iJtKA+F;#v!g4P5=1y-e9~gr%8|FsK}J6;pCoB2Ej^O9m zI9cmpuw2J`H)^R;ue1!VfE|6hPqymL$ewlR2kh}VK;VL!d+^_% zei=I{#`?GnL=d^%r|pSIpLL23{^jCqN48Nd2yM*lT%CPgF8U#}C+%QFWC#tS90eSe zW;bAD+u9)i*!bbcM}4=H^h(5KABb#DJ=bbWt7v(B<4zH6)9pcjSdpwx07VvemX37> z0^4iuScu8wLn77Mt!}^jOOxz3SDD84?Ka2ph-vS}E%XYFk%X`mm0YOlM#5g4>n44m z1OykVUkI%Kq1eH?Z1_lMTb zqNnTmoC0BfmG32o21e5ww&s&)RK8ha(prj>d)ozJ`KIhV0354dWm%sX0VbNR4`mg# zKBLH5U&|Y^Dib0>m8o}H{uHtYW_9kkM7y-{MX8fZN`oGP5`0(R&xGrPVLvB zfB}z(IWle(Zo??zj4JY@^tD^Q)wP%9Ri;HI+O(p#e!9>n8&`e@rKLsNx*L0joXJ`t z%MK=gfZr_Ik)t#p9Vu2Nzk%)Zvu{OE8ifd0;Z5d-w&qmXt2y4)4jJ-%#IQf%7i0Z# z1KqN(ik{zR+-5r-x}muDx`y?oa@K@O4bbVlrf}jy3pD{iA)8#D(Y8+dibM+l7R+v{ z3_0$gfCoB5PyJhz*&$lV7a=D47Vf{K=ZMGd^wnM7Jx{OG%vgWyS;pP8%Cp_SGMa8X zoa`MgSmHpoJY$7t&BXg?;53$N0cGH99M2?D`!Fj>pNHT?vil!bS(eaSU#=&4kMR+Q zPz`NUti&A>Y3_Dl!)A@2gGT<(&gp+nf|aU$%TL8oSH^mvqcaO40@~dy#9dIp+k4LV zfdpj*U89(;%8G?Wl{o@xMcb9t2%tbBQXp+H}|4tn7F>qh=&?k)C>9D1I=_ zqDRjc`hY*@S)R7uWdEUcpe}#x2z$313<91zweE#}?v!E$b^K|M-B>gGy2o5hjaUK7 zVq&HYh1%4q76+AQ{po{yyp0>~I~uAU6BFMLA{UGNLAn_tPkNP5im-y(g8R*wZxm|uSI|jdt7_J->RZ-^A9kUuJOcU10 z1zY<@k}+3<-YIWjzqr?zgN?m9?s;a+lxs_-Dj+kY|509gAaA|;H;LFe{iex8frKhD z-iTkTSjcmJOdtbnLT#T>R%czTQs(WbGc)sWa>Wei&SNg#q_7{c$@_*60h@vj(ny`> z{=mIoFh`Uf%7N?7%A|OG%f~Qq!jH|kwK?=4%2z2NcSQ6X&uXK=1?f75ndsJwL&q$i zv@`EYm3uFgv7bu$e^N-Iw(5@QJ3t);N<>T~jC<}}fj4y#!RJ}RlFyQ=XDB*xtok7j zbgg*86F)oKn655h6d>+BxqG7nRLg=yx|3IZ3KRx8qBCXzG4w6pSNN_?`1gQW|8Po) z4o(HhNxpirkN0bOI+~!@mCT(6oYI~qf>jC#>$MWOBlg>Aw*{-$L4{Wp%{Hlx`=6S; zOg!{YbmL5k#>BjEu7n8MoYjxU9Wx~_)kv_U)U@(b=q8oPV_iwz7yphW{D)R)2OfI9 zmN*S`w-2D}0dQxBNzCBRh>(@_xNeI*Xko4L0UQ7#o~S9$gRh%8?H!(m5PHWe{4I_5 zb^yvB9y(!6HaPt3!s;*}<%@+%GOWD9IeE zr_0MJt+nShdQ#;@555#*0n#bzKURY389%=rS5gsX(PP}4triw7J6bx_>I!x#RvA`W z=WBMNkhBE!?E~bkP}PLhuWD4agN^Byh;e7o*fx=E-a>je!Oi7i&WemE*wxMp1Yo4~ z$Ka>ya((UHqll3YV(9JcZjxnFZREB*u~+v(Qk*LT&C(9Q7ym1Yhi-uyVa=z4LEK|m zHLO+%;Zz!6zll)6Rw+fZ#@Mek&GrkUEdR!WG|Q0YaPwYs99){MwF;LIK{}fj>|0UD zL=#kO{2yt_miwwisaDyvhSH~^v%Lq#oRj(h2H3^&QY2yYF}vVOyoy`x0nmnHV`mIk z-w^I|a=H~>@STThyj9WwpeuGUafNCe(w_ivAgBwfjtCt9;9h0UI8_14xiLHA_PI0b zSt0Dm6nn}{TQSB3sWMU5K59i3XoRmVNNvKbZOuf@)IlepaVdmTe<@~V_VI0&hLzf| z`b9wJaUSqIlM8g+6X=2PK{5otZw3fUTd^6W`&XkR@78^9jxnSfEEnhde`pk*QdR>u zgzE?EBnk^WSC2NUx9)QPp;6Coxq9rG)Uhf^AG)YKz53OjC}gJ3t+ThLq zRd(_D21HRnXmQKdC50T~%KoB6_f%s!@57hBecACic3Cxe3P>$1bangK6TtS02A2~6 zgoYDEjd5X$J&jWeXBEgJu2;LH*!bvTuc4GlE8F2wxUN0HM_bPk`g#`pSsw5abN;*5b;n{Qh7l>P^! z5eN(W|4BaRWPNJ@l#i8c)qZxUk#|y(jCm@P0z}~!>6T3%K8C__*WUlVv8>q?HMC|5 z_McvB<}4YcHsT8*kGgdgK3X+4Q33pAGzLrS${C)H{!;s7TLLbmVS6FZP;heF=7mtZ zRm5Dc!J(?~jXEm>+C_InXHY2U^EFEj=7*(iG4>;RC0bh8@W6=;ew<8uhf`vQG16kB zP6ZVM@V#m~u4m*lpFfvVynr8&&LSJ4Z96`xDsSiAu|4x8HzE%9ma? zkQ#Bx=@-NFwB?(rQzDP2V}Gxaaudvap`jax`n8?U&1e-KxSaV&)-@(v;-`2Q?YtwT zyxnts3DC>w+nSXF9%mmo^Y462yY|d$#5sk_mgwxFdV!VtaGCJnpEyK%WQ~E4#Obhn zF9)zlAz58K&Oy4`LDE;#x5cO$2W?5D0%jdbFsoDJ=K`VLS2=wnoVl)J(1JL@x*!dl zDfN-XgIEn#bJ#S6$S2tgzt{Q9eeAir`aa|m{A^a)4$ZFWpYyWV9>ikbduq9}WN z#PV_MLHS+(#GKEsgmqHdXbPs=BcqObHbj`YTXhWmk6 zAwOw4Ya@)Fkd;X~(#4FW>oRSKc2gVWNSz@hIhJUXoBUsgw2 zT>M`-9WB3MO?uf2TAIkv!gaCoyfWdN=1odNdpb55;ClBfHCr5NNQsF->6Qut$N(j; z<3Bk3+7KHMuO-nsuWSUQVtNWuKUGbn!z zd77ekU$i}tXljKSo&{99v~YRLjY|a;(Q2kB)>#eIC7JXb_pd!znbG~*R3L8mwB)Tb zBJX^f{I)}5t9!N>N8Ov8Q|kSP$F9mT41elRwF(idXo%K3ovA2WHd3TLM*3!RGru4Y zXvpS>_Srptxu9Z?Nq#pi$yeMGU%XJQ!MW>0zE9??H<9CbhV(-a%Q2|Dp2>anTFD4# zmFlOVFL5ooB+mkscycOaXlS)mM(@&M?J-?FU30Oog^^wXMY%V>jHW2+`+i$6y3g&h z)0R{6dlzKWg=UlQ-IV0#>{#Ag7QBwAAiRkFQnNEOKOM=*G-%w> zN&ouEkHGlSk@?W1o*FAV2%4mch1B$}0BCEpw<0ECc%=Ma!rqm+0EGm*W;CYq?7jAI z`i6AWHv~CN4+%$H^M0aswAfUFva`YCErjGBhOb(2X+Caw;@@3fqwJhYmyp~|UrQgq zAA}L=SMJM*JG2$!-Ua1eKkTy&fy8do6A0o*y)8T*37qYZm4LEWKwRq)OX|}9> zk8jpaAnfs61Z>3qg9R2UE#<#5%eEkW%&r@m)U7<84&!{phOI;J{tEic@(9YMI29k^ z=KRQzkyG=#H}-&oM>QutEQ`WB-}~!}mg>u|@?gameq6Y|v4X{ZwNt6-uLhh$`l9XU zG!N7oB+DdyowimC~g(Q&>v(Rs4cm0y0nN!{T0*J z2ox)AJX&1SfUO{V_S84wHp{gQR$=TuL}&b(^(YV5?SxjZc^BWo01?mdHZS}uFUp4~F-J!>!uPr3bCxvc#*_ zL^=ycZa}pH#{*AzuItW4fz|+uLC(=!2|3C=f95a+*|sDBR%ak9&Qtt|Nx5GP{wgVa zPo!>tH6g5Iv)Y`cpVnFpKf2rq2>;uT@kM9R^6{3g4uo*~D@<*cmsYKVLfvIZF%Ks@ z7nTsO4qvM*)^81TRr%*N+pbd|9^8ui4=^&uU_QtiAk;P%y%9FVujqg+KWBxxwaFAc0EYFS)lFF(|E?ft{3c9ez8rjRO~9TXn#~@WMbimBD6{& zabSTNC9f}i-PNkzZc5#DRQ>e{@wx6ow`qAI@7>XXv3sckgZT88nmj;z|6Nfw9$xQv z?wQ}+Q{=`bn-brSB-OkrKP!SgvAvCWy_f8*VyCG9ZVQafFqkeXU`@>tx3tGbmh+To zZs7Wu&kZ=OXvU~64*iMuzkSBh$TVYHC$vWgWQG|kd~xS|GwU&XZ}{q$N2za{IQSDM zlJj{AlZ8b-8k)nn79Wiv(L0qonLCOI3W|i;{%!5BOWtSTA&NJ?^A>AW$v&&Zxyx!> z6#A@1rz$8ueJf@Fg(F${y5VGYF3L6!ddS{CU}<=SS@q8MD)pn*Ps~c<=t$b+hLM;; z2*;T*@wXqkor^%Vps_XEw9rxdGl0&eOroz&ugv`DI=rV?xCL#MCA93Y44UU1_tyhi zIxktb+T3D$g$B;Bkk=c37Pe=UjO0%~T{X8DhY}L)%u8z|Plvdx+!+8gFySU~U$oV2 zJzwZ2A`iy=qfZr%V9%QfHl2i{XEW(lG`~&r%zPUiu(Dx_}jO!`U z^5NyPk8bWUYl^=`-DSFRJj-0B!&Pv~Y-A_vhJ;(f5T~D$EZ(^0&r?MmEyp|k{ z2zmF8W2WfYM?WnC<=1K)wE2#GMcdyQCQ4wJh-iB1PfK-W*M*UDc0mg;Tm=TupFp`q$Jwdz<0dRmgZi9kzJE0v z`c#X)jY22h&pp-Nn3UaucOdMv49zJ6wIUy?SaMY+^$HfUzg>7uuY9ViNG@h3Llj{! zRI6{jP&M7nt5=cFUZNsYl>WMC^li+h0$4O!CE*-;5_MoBPCEBcG>w^p^p`<_1UgyA*KUTVuank9WHiMDN&$kTFoN`n{B z404)i8ROQGN5d)*i4_wU{iSTK!BCoC6#jt?=fuKP>z}r)ViLl9`25z!Xc>XfTOSQQ+#^IHJc;#Qg?#lgnO`2zZpyT%EbIsHK z;XSv}<^G3^3u18 zxh`)36J^%6YeM)0^7)m+m{5(yDOtA(*+N|pId2fWm(8px-1(Z|YwJAv^3RRic3%2I z?I#VDvJcQQMvFP3q|Pt7^a0LO0XHHdThUQpF}An*VEkbuX4%>g3TbTS)MUCv0j(A{ z2#-wGtSJr{iOOfpKMXBM?S=QYFttv!w8GaEg7PAxxHopf-(&#T5?;$dL1!hyI#;%* znrbQ4{dSIHp2#{v85oyo?-Gwz!E{OCDrklC{Xaa6@aq|A?k&K}!zv=2+A1l7&l1zE zfgMeQaNo*7G%$^uwtU34t3<$JdV_Bkwg>}FyhqHCf_z#?>IJJq@pTBuXL&}FywuCe zL*nCr*<$a33?r;n1dhs1GE`&#y@ojb5{-+rY*Y@p56Ch;C!#% zUj-4r1r$u-4l_ikF*#pHzKh^TPJw6+G?e$f3ewMws~w=e^>g1*Ko;{C;1XFe%27dD zga~i0$jeCqJZJ141KLttM&TV2iV0ckQWw-p_1idFm7_;B~@vFc; zGe56#qd`k9IzZ(tImwTox2u=D00Md<*WQ1%6MTHinmMP%!uUi{fafncfMviA*UzS3zRmGR&m=@o zL|6;$geV6&0(8;N+PQ>|0Id-LTSXe4Ph@7gw3((2ZN-oq4tnd6`et`<=so1N|& zU9h49}Zf@ysXUbe{4M z7!HuCSg!O(o@@R`iU0t6yHHU-jKR(t(bVO9mGd5!j(q-O3D3x zVOwy@!qXQjc8kv=>3Yj=)KqL1TmI8YF)~X09{MK5%_0IJ@dM_g-aPjVsUVFsn%iWX zm1Hf=x8fE4bL@IAQP008sFZI1A;>u8Rt5tl3z4a!4!OXDK@Bk0t#xACso;zRIEHlL ztSrnSpz;;b(=IzFiBmlpx)wf#wb2m&=jfi_jGrpj4W4WUz8dUj{aE*fkS#7if2VhQ zP#6)~p=2yM0-E4jz%Jh_^jqAR4ZHfFZLsB0tw(#kCiV2K^sV6FNrYuhO@pAJ*dnF! zQpMq82MEAOd$f(J)7Xl7mUx!>!QVg(P~@=lmP8j^Gt)}f3iiehE6Y6x-!mpw*0e>2 zBv1EV`!e}wFhv3#NmMrLOR!=rVX1scuV{KEq1;15u7)tA*qQ*Qo=Zhch0o*EW>30C zXBwP`+GXI6?t7c=9NacOJ*=63#B+Q;K=L|&=b~je2IOMCJKYO;R|94b)qD`fI^d$% z>mqaIIMC4l()y8kzVh%XX_EU3D%?kIzj3p}K_XNXf9e7!@7a8lCx&{u@fNL<%qJAk z&E(COQSWaJ|J~zl?6oe93q^%K#w}`3+mCT$vv>ci=Z$kyDNFb>!T$i77V&#Z`qF?} zC1e5Yvwi4wDBI-=oTn!@ejDi;ITJzzyJXAW^DMsMQ7im1I54)o(tIY%HnabExqc@2^lLFVgw42Q z$mwx_tEDKHE|*%aivEAfoE}Pge0A8?u!9Cl!z9GLUFiDkuPvPPeGmJ&^SP~vMa9W> z>HFwW_Quvw6Z++RCI8t@#6pSs z>md^WT%|9r6fD3=gprax(fZ!Ar8ihqs4D1L-B=91mcC^wb|Pg8u0#E#l2gs`uMOT& z4;mjh8cgABsIBRpTcz};!q{F#qu=N!s3U4>O=)dE?M^wkG4HTnYW!vDNw2X6p-WTp z%b6GV&|Lv*T!a^;+-tSnT1fPP#OT>wMznFdj-#*pRTRa5mCV7L&46LqvfpLFU2FW+ z=-TF2?Caa^MHh=>FxtU$L#XayGJt(|;-{tZZMUlbg~q)>&z@bH$I|wtw+FtS9#i6??C_u_OD_WMOSO0eZ^zUoPAl@jHDiM^{Q5b zTkbiD@}qwW9hetxgWnslnyZIjH0`TtGsojZm0|$4-mL;9#AZdX*GkIkcvi}8$KR26 zoImPwPrB94-8TnWls$EZh1_=1>0>wAXy0*%5J#we--E?O`@kQB}oO zV(CP)*IEkfMLAef@IO3o+uAH!LK;g3JBTeTh(QbNfG5=N@KkJAGj)ylT!+Z&G@@Q& z`Rj8PCl?gts$z3Yzr^m9z_Q|<$$o%5ZWNm7vR*wl(-qyKGe}XS z56u;3JsTI;a^6$R7tZ71PLJ-Y-%5K|-@iEsT=vrLnu9QmBXl3sUo*b-QZr=gs;GS* zC++$s?E9UrPToq#8wg33Zb8pWE7mi>&Q7IEm+7BY_*t;RO^(77r2u;?WNSPb;5SIYd0% z`RemzoxS#`i}HDRo>;QA z(6W1rwlJX&7<0o0n)3`Il=r%C^#ub4)fo?}=8?m%8o(KjT^L9+%gmYZP3E+HhN6^= z7eRpjWwX8Bg~7A-kpoMnTyL4E>WX}bn6QgsQ{FJMRjT%&Ow#VB=LbD1J|mlcYb3m< z-UJMOwx2gnd)D*s4*X8xH>|~hHY(;-`p@+Tf@v3XH`SHyX2mMFX-PpodQ2Sb;ilX# znLYCcN2M?Kiv@|Aib{j@!utU9>1fWOMcD$qa0G>ry@;D4q81@#(2!bc@NH`{?mdC4 zN>_)oUD`110vV8NK#MDBy)k}R(P|^NXRE=m>&%GK7|G!Ic{DP$P^!0Cc*1$-t5%W! z(TMjK9pLl_lKH<=ftrzcT#pjG132>}(`OiJeSR156lWS)KqG+R1`1)^+P)&YE!G3 z_Sx%QaIWmhL0Yo>a)yEPIbzs`)|_}uhO_(AU(BCLEh zV$LIG7GAi)a>hsnwX?ru1NF&!xVAne_Lo>4`n=V7pXaL1e4>IcNfbj&tj(wKF|lXh z_RBP9J~5YXGDpM+*x%#5e`2oalD!deoy&0KGyw0D^4L?dUqmfP#{yEVcY z#5S-SG`8!%QXk<9WVqs&*tEo_20S(mPkEO=4orxIVe5Xqj;Fp?xs; zlk7(uLcrtM0WR?I!$_h+*SD{|3j*yk>I#%~JzNsDP=8&k~%WfvQ9?e?bb0)>T-gbsszYsA!_G>1IyjY4<~hk zDsDz3n9}lUHq=a)B%4V0?kBno<%d@O6>a*MU`RJpd+UY#a$}d zG(Z-FGkG(_24!E;UINkzm$IZ~_qn$#BTA8vpRFvIG}imI17mg3V9GIAR(y1{oJ++W(64{b4{R^c5b zScO??r3p({_P6<|NHo(LJQ5;{cGbXXZ3S2lC@N}*>z3&(IIkb=wC3X6K%Hy!2;gHG zj}w&(>F4B^G$>u~&78z1ssd@guM2tZ^iJqNJ>9cFj|3A!9mfPzq~|oV&~Luo?O^LRze<6L7A@@Bj@7tBCaCl{#iesF)=qm1%^X<4&9`qQ z%BZj$(|nT8HWr`$X{==j$P<#qf0sR$I@qWG4O{&%d1P@r4n`OIy(ikc7lyn>M|a(k z4tDA2L#%E=^-Aha*{;0uny}5*bzK-Q5ub$|9@lp~{9JPdu@GAw(sX;^5ks=A3%5T{ z8SC{D2j!XIJwU) zB|?@gli@eaw4Qy=V7^nb@Md07Cj^-7u=XQfuRKz#ZfkM!vShz!OD&{<%JR#yO>vv} zDM&>3QR;W2^(&bVE18_E3)!^&-(+3M4UYh7;UnDYAN8o2r_=uFSbq)NatvBB-~3vOF(R{1?81re`Jm-vt-HmGMzbe_n`Wk`wbA zc!qObnYLHdJQM9|LB7Vtulg-DE))!KQRelQP{vSds6WTSubkZp0^z}^S?WgTSPCDH zH(mhv#>wLBl_^F|GFAHrc>Nbg%_}+;<2?u7Po&$jH=tVJd1w#c&wqH;y}hF}OQV}7 z(dvs{khc-N%HxP8IPWy5pS*_23aL#``U(mWD@oi~QXNEt*LwXX}=jHIrxqHJ%7tx&RVcWbt*lH`m z_-msK^M)@(54Ng!I()ds@T5A5p#b|-4SNuei(CfcZWDq|%BxP7Hl@sKAWT^Q1`>{S zg`kVqUHUS?B}da<59uv&9Bi}I4&ip^7jdOhRL!4dh@Cth>xU2}_;GeKYBQ0n-_t9u zF*I$9mJJY+;R4N%rDwC9&UgJK!xdcdV**b9?h27%xLOj4e*jIMA9w_{UM2n3^%Dm= z;0Ro}MDef<;ve3FqFH~uapWWZm2Wc>h5KwjKb4`~)+W;sq3%-s z8)FzQFSD$YL5iD`K7N3a*{n+??Q3=Ydm4>Q(o+FG}udopbUKg=r&Z{7tN2ccK?fbhV-?h9*2TANZ2^v^*L!7#pZ zG)Z%G7l{K8Nc$|^#Hf?BJN9>c2lV?x!gZt2!*RFk)`uRS(z_xw|E_Hm%QU^6%IDb> zHC{M*h08J>ZSs;|m2ZGG66=fBZI(IQeIS+N^G3#39y*8N$2xYQtj#*{g!#F8&7vN( zJB0&XM3*m1J{4l+1r*QKs_mMKRJKUL`)NJ477OwY`J7*Ry0%Gje&+J@ z1D_j8ReT{Ni}ZI>KF-c8<{@Ld)l_Ges?yH&FtjPA0Vmbc8;BLFFCM?(0@QS# zal5~+o10c9p*C;4Q4qp?<_Va5{wPYTbxZWKW|lCReb_3$a)zlee(h#itT^^hxcm_twRRVBbcG z;k(@X3D>@&2tim7ueg>{h#bgiZHgjBhoynJ1ZwZ_-XHhQg5JrFBH!MfUKE;35>H=9 ze5=v@;mP1TJq1e8vK2jZ)zK0VKQ%Dnqwx$GmpGYN-EC4(5faM98MPLnV8FB#wMB^F@w{rOd^4I{}lgs0a$P7GEP=NTPX zJSY~rpWK8M$I4MSJyxgY`uTlYi26apjElN;`X;BKDm6aM(F6>~O2)a&o;=x8e`zLS zR-dl6{4nd(gjYyM!$MGS*kOpMRq@I@h@-^Hb9Dl>VNo z?AOKIu{nB4Kn_f~Py2CLFlJ7wt-r8)N7pVZy#lE<#j^0p<3fqg01jJoZIYJDm`?O^ z<(%{|S&3Ym9hj}331}AyFz4p`X-sDVm7%IGhky!uTNa)bv_huc(0#Aikd-Z#e3_8-L z6?JM&*L|qJ8kZ^x6&ydhU2q*Vsx6vf4)VMngD8G?iko8a*M+mu@GyFr!wsz`s&`UQ z%&^PL>hxpX%dGR1GmK)9$PYMfa(S+_^#5LlDucFA$$k3{$gw{=|sfWhA@$|Gj+Uw`LUS6rTg`JHPvfjpAL zZR_n`Q)nwT-8cS)*>ZbK6xc*=C%W3c|_Kjo6Oo7Ap zFZa6~i-%ieEiL&BDEhN}?jgv^r33rOqVTPaLqRfG$;yTq3F3fi#g-2)Giak$D zS{KN!Jd$z$i(h+LKK8qRLC~ascyghiDFPiV6{oDHHVQC^Ym-m$ zScU&#X%k4=7uw#x9dF`bvwzXC8qQ9!Wol0U+s{iB%Z+np3m+7E-?JJ+oZJdfIlua~UC+B1f*D+p9s! z=pkFpxT0gti04xg&W}~OX6M_aIOE=HZmEr=0W;Mocg#oyzw~t?K6yPU8tRI)22|=O zjIHH;BH3ieXE@i^igUm50{(Vg$qQWTk|(oa5YH}q9vY?Ss^9{~jnc>yIU?#~1-5YT z3L~$4T5#bRrnc{}Pve!Dv6P%3|F^iAISaSG-CSY?6n|o@KzondY zm-|y{ojqQQu?Mz$>6d~paH0_SCWXzAErhrbBK8D<5s;wZ#yMEhu-MqV)~+wdO0dN?gP1p^qxT! zCum?WYuxSYY5EWMex17n-1(TCw^vx%QBlAe9Hm(LpOS?bu5#LCkG@YynS*d*xJ$hL zj;Qz??~{lq2DjBsoxm+@_o-#PHftx@tQvfWMXt2azlHyXhPjhiS*)kduoU2eAUn3( z@MxJDkzU(nHGf)&1ct2elX=dc+VVKxTD1LlXtiGPt?`gsf71z>OZ_t zH_aG}50BX8P0Vp!iZ~jK?g@Z@IuJdyKwoU5Cvv|DHMmZJ`v+UOBehp9>)|t~bn?hT z4kApSdc?w{e(80zP^zD>^lm^zYt^eDyK;=Br;~y=>K`68kRBU=p||g1BIN0nq~%~* zvt93NA-|u}j~U54#dgB7RzJx`Z>z)S4>lvafU8G<;^zl1ihf`Z+}B$^{=@raLe7B- zNBq_LgqHS54wV$+xIG*ex#v2;C3+MVSJAC4&-xavFj968Xa`1`WlmBdOw=;gQJ;_C z>%QHvJkC%i47w~#;|hYAiwgoaMg_Dp@JOz^9Kz+(#l7z zp4v?&Ni4Mon){(4lH5|9JLzRu-Qa(CHC0C{pVaSCk-wX&qtzx;8lETN9}Mb{Z^A?V zLZ}?ey!Z@5HLGM(9(|xtxHPUSOJPT&j{LH)V_4a73 z7?#8mfq^UDKE9i7O>;IIj>l*8c)m~Y;JP&E${|2-ouq@pMf?`K)989Ih*zHo2TGK# zHid*>nMQeeItFsQ4a?_#b3<(m#0 zFTdJbjeDVM4$)l2>j>Zf%BXa{zEydzbDdJ`A}>x9_KvneJ3?^=!1JfzDL#NpULry> z48Oln3vZ_?A;RS|1+%Z8jb^a3ipu;(j!GxelD*qGt_yd_r8M<}Dq4VpMf;xCoM}~%5qWH6(R_@zjIgtMFM)Hnas>hN)ai#s%54eOS~AVJk=4i_ z3;C}p;KaUWc>{B65nGO_3iYZwfh;bH9Kc7*T-H*-A6^qi+l)Kdr5I*(al@EhX#V z{^e+>&WI8)H$VPmZ?m<0oumiCp7F(ST?AKkmPwU%y+5VZOV_sIaO%NsVVbu#Tf*Dl zfjgQhT#zbmL_I5(a~O|2Hll{*ofv>&Zt;g6=W?2AzNDRNL(@BM=Y^U8YuroQy;c^~ z^6EE5oJ=^e=`SapLG8`S6StCOW5Md3rq&I@u4y!3$C2ZwvvR8$NZ%Y|ZkAefr$Yc8 zzbN4Mt+;@Ws`7pK>V=Fn;yY9%jC0&~0LZg5<=y(a64mRtfcF8+9C27x$Nbnq=_231 zN2bEFi)lfoYewdI3kP@@yjJJnKhA1cPvTWLPVPJqhsSm`BB8BtD09o<1;5HWosyQs zBwM@Nuaf|=J>V||%?^DzmkbQC7guGC(p(UYv3vU6r|SX4y#PcmqBW8DZGn~+KJ>A- zq*|9(B#B(Cg_7jQ2G}|lc=Wb-ng6|aw z<@9Il=vAjIYdDdfR?>9~KJEv5mjp$#=oJY<6TTkJjv4KAwv9WDDv8WjqJ=!a)#LyJ zU;baNSG3{5Zyw{QAq^QZBzL4D)<0lN=NN5EcYi>oEzeu!eGyepnAqZ+^(EH!f{a9f z>1c&3ca(lI_qN~T+Mn{y(q2600y!e-XJQ%ZvAk=eJn&yF%GmETx~n*EkD^GLrW9}3 zlP;(m>c>Tf$3>)+dFcZZfkWz83=JdRe?wpAh{KvaJ+H-v!P6A;<^lgEcu(}mzuF|Azjn8xY4j&W$ST_V)O>2qG9Pvm6Y zBSodlKkVeKYp5xdX@IUC~^ z7w4G*<%kIaz&vPOI*6}mLFXki6!~0?P^>WTMX-*~G?T0{WT3mzHcphi^yB_!#DF%} zrOS+c^S&ix?}*jKo154-eS#BV$@oGyPfTOL;|0(3RzK|Alm^S49B4B~LcuZJ@e_!S zl%2}-aA;f|X7XV!(PNe}gmPhwXsMpyV#nY|Hrqs@-Oa(tY(okz-OZayUu|A(Db52* z&gkueFs?2w7?Swc0cNU0M{+-Q%shrVHT*aEcktO+vkjpggZ8+Ni!A+R_zDTxRKKz)d^SSx3Q@|CtrO{!I}BY1@MRQ zk{<13yRq$5EAHj9_oPe-YuOAp{fSPCD2hE-k6tcQW{V#?h}3u^@z6h!ICSi~0DGRU zp>KDc#a|(q|2o0~A1Oakv8Oi3%19N~E(uey$@-uY<#OyLv>Vbs+bo{K*}hY3po>an zI8@lwaxlcx&-HxZ1ytQP=7%G|Pkt*KR#;Jzp&+1%7}v1n`lCL;Zi|3KlN`U)Til}f z1puW_qsf#KeKEmDrLWl`3dS6RrOx)^bn&|A%Mt)h^6R?24mVCIq-iNp-j$%B} z|1V?;n4!A<(OFS}lZMT2C1sPnDYS7t6SZ4G1Sbb@LhYy7!mnjlW!_cG7dNGP-P1*%$O1cRHnSVzryUTKSLfD#j<j~jvOCk!5!29gU4Ru?MBQVoU~fJQzG=+Riq;4qGL-Nu-gNl$ZZF7rbn=-JAC@w^ zttd0PhvYNy*Z8Y=c%Sw}rxy-I5@K?-t?&=8o_u?9o$vY9MW@02x+adP;G69~WJ0NQ z0}+sy*=q=hl3%UT>3-sGjjj%bMeGN}mJvH*I2}88m=#WwH3%`4ydeR=Vk#3fZleA8 z{WF=K!SkRFz6HVAW#=#G7M54;2E@2&;=r$ecrJoj@TXq6)Ojx;d$@ZZ!C7GR4<>SZ zb9P6<6?=S)DG$yXF)PXMnzICKzKrkXf@yzjXUfo;Y+cKP0n&?lPs^a8N3VPT;l0=2 zN3_~HhQa}EtChBYTcV0MP2$dG-1M@g>j*D4YCAUSQ25*%X`l;rZfz zrC#$p&$=R^@YQ3etdx+PPL26d*S!Vm<&YyX6&WAr5raBxuH>8G3=Kg?A zePvWENCIhq^d3;Ae(TBpW|v*2Tr2>+G}8-FB?CS}#75LDGYF=sa~irA4G(StZ8lli ziytJ*=pO`)K^?4A9ukv^7CZF_rfX6iv=ytp#%H{IZtec``Qx_UTv<^RW1^)(pUMaE z>k^hr=}@tu6INtri~gGr>wCU5oE2XgU6eu|}h4kzAosguFZ# z#~0b*PoJGYY+q`*(>^@cBdVwZCdqO7gGC0@i6(=VBn#CZG{Wxra%0nx8uZq$oV zko+B&Of1~x=WpvO;*fu0fm>N2#wQWk9QIFqks28c+_iH6GT_JmdG679pl3_Ub4yRq$ znppxCS~r?wR20-|Sv!S2xz7zc=7&&H&xjw~kAO~zvTx69?1M3(cO{Mu zjt3>&-uZ=qwhxR|l~-Pwc@;}uYeZ#JU%k9yZd&xYj+cT=k`OyEEogacSH~NP>D#P$ zD*R#jencbVHi@d8r&CsVQ&=wgbQ~N96yobme{VV;=eXd+}-~DTkB7~ z$DaSFkQc+nxDzbQY&AAEb;?9vi5$Fe?!pi@1lJ;yB90$1rnc;VAc$0H`pi z-&nG2xKOZjV84Fc$+xV}9(RTv&4{aJDe?X<&jaaX7)R1aqSZFuAgtVn+MHicjg)qU}fW{^42G#B6du zk=(2sB=vLRhGT+XorD96nFzr4DVNXcj+7B0ZT)j1h(K&rdTKIAo`TQ9lP#Yb_cNEM6J#_`+op%_~dz$j8f4KyiV|tnu^8 z;GD(X#1sGEW~LshhH5^rZ;fugdTDeYmrukgh#KQ@vMv&tDymzP=KeBn03-{q^Xt|{ z^F`(AP$lzfD=rcv+6kIj?8y``+3VgAk)m?agEa4oAyq{=~ti2(C|z#ny4kM;Ril?h5VcM|;XxnZ7M-Y4dN! zjg~MpVK==*hSqwL%C)TG?y1UM z6#Gy(<;~A8|9J}SY*(Gg`RUJL2UO2Zt79jM3@sRu5ZqPaaRLRnecyG;gVX3AUUB!A zr4O!iS_j!@u@R$AN*j$Y(Xbv3pwJ|FnkRt%Mo!?_ly(sgbZje3u zlRGY+#!zL=z89GMhPOk^MUxdyVuxPE!dq{Lzd+R@pZ}e1)J8@0I7^EodF975|HE_E zW~HGi8fTOtLORsbM>!9t$Qs2>|NJnKsdb{Q^^UgGTY|Ba-n2m4IW-+moXBcPR8qb1 zt9z+u;eNgssfXII99x8|N}Sq(R&L!3CB#dD`JaX7FVFhKtumd+{E^QMx6o6aGGc80 zfJqu5XXRh@%n}AcE4dV3t%|Dmpw%IJ@7irj<%gEp!}ES$70?;BJT2I&dvv!SwuCpo ztS?XZ-31#e3;OUpFS_N@`>yN&L)=brlBPq1zi5uaFQ;%_IeN80P*8;FjlG$pym z`)(6pfIju8YIPtLM{3Jysh}FMwP>cMWq%<6_J%ZJN}Wu(>Lp>MrmCh}k-9yNgmEX^ zi~Xn3J{jrcS}4Q1!-wUhjfhY4k>AAY3XJXqq{@88%9ZQ&P}B*8LCgm--df-7R?x=9aQs=hH9bWxLr<_ug`|x;PugHwyhc4D7ml9yL>ZV) zCGGN-3!Xr;-76f?auOK6A_&2SE;y6bWpfn!d7HRG-7LA5M`xGeq>)d>$1aJE*QiUZhuk4^+q+T2JeVn zILJYD*-X$ft5<^J2Up;87Y$M?sH$C$W!)0+?3RxzQIE5+&bHRqiNI|`eSkugAS73_ z%>O0QNhB<*d&P7od#MzuLkP=Tde~~Lb+*Xr8FSQq+%(VF#(-+4aEkDBbj+l3G1btkOrPVEXHyBzLqf*#*(b{$}L>>3HBV8?glVUvER9M}e1W`>owpPq6Y|Z#fc56S6&z^0tcX`#S}$ z`=@>AnlfcS&AE&E{JH|DhLrnjX325GqLHvM%e}pZ@$}D8adf(;&EBG9=ob~@CjG*( zDqhV?t3nQi-e>oNyTd{%KQBPRG+7IO_=Zb}+NcFX?A(%MLNz+kO@+$eopMl3xCdt! zS*3cpOT!$-`R*LNktMgU^zStjsrq+Y?CR|OLR;Yy{?KH-Vz(M<%MhMHzE4@3h>8e% zuObpMSYADw`&mqcVXm9J;Xw$fb2?-pb5UAo9QelcWZC^I&qB&q9<9JRblP?*H>Krz zvRMb>4fRR>-se=+Q@<<-;6pa`yOP5OpVaaO&Yt08wJ$AZE*r&O*rl2B>GVMG7dK9P zF|3eK?ZTJ8gPrj@^i*=#$pk#rEXpLlMn_my;-l_lva7NZDj7?fAGh#}X(DT*A=I$^ zRbE*?Q557uF*X92%9&5l$m`Xdw;ZMiP8btdGBtXTHSxTxVN@>Z2U-+A5c z%O_b|%*R#mc*_Bd>Q~Ch8iP!ncmygSWkbkvMVzewLZ8znyH8#DFvM`bhy|-JU)@~G zAsby&D*c<7=N9_J-qn%dMi_lS{dWy{pxE$A(x&ZwVtiY3O+_j|h}F~fnFUFCi*JA) zlOI)xkg68w@JY;jK#egylE8#mV|tS)6KXC-BLb{A_!2QKgp?B1#SizGm%$!lnzrO?x`*`!Eu(l6^ zYyEX;iSdr(oVH2N#~8o^c#ok-*#Qd4aO&4_HBQ%}d8{v+-j<$=QjcOVJm@TEa!0iD zJaGFH%{~)(+sTiutVYan%}ZrvMUW*)UyF;Qy@I*~)efC3Iy~_BOEx2O5ah3e$d3P< zrT^^#lj70g{~P+gbRM$O%)Mf=6Kyc$#%_YsPXjwNFt@AWov__QO5Spat~+QH%sjiq zm%BTj*WP&84gr+XL<)I#U<@L+1I$y}Mh~Y(YiARc%8q??0xq7fqL80EnEe~lUj7yv@3l^CbpM{(xMg_n zxUi-opAzcw;=cmtcVVe=>-t;cmT#0mx7x2j1dkNPMI^O94ut;s)Tj>JL{P~ap?Urd z-c6iymfK61Xnpw39IPl3J&XW^+L4ZFCJsCT+(GNJG zKUISkfvQHGy0kv;y0J35m_RD*ambh&uDs%}dvIrGH+24g zW=^>tivhG|^8iWJtU}a_5PYFiOrcn1wFjJMm2qwJkB8iZz`u%Umvs@gbK(wLI|GI2 zDA}o#@V;J2Jl+Di`|!xw+wB?eFOBfRJs!jZiDx|c^&Ix4l4KtvFrYp|v0{wnk5mXV zANvbiuXz25okq#lfT81s=8OCG#57Q>m#ts*Q`!Bkfh4=cL2}Qp3Ne#3)$jGC&&!c9 zHw02A}V_eMvv`9!stCx|IzR}{0q>!1#Ab>HY4NU zIvVLxi~Qv|a`^HYY&*3W9ll+?n>1g{R5YXWsV3;nY~TP$Uq(O2|bye)wSDSZT+m(?Od%#YNy;)bf$Xj1Uk*p@n&)cY;C;xn zi9KKdB~$y(ybTt91IZkklPXvX9lPS6>iAU2BsQx}rvM8_c^wcR-uk}KaY!$gnsxv> zP74v0a^mF-4$ibV;zQra0qw{>{w9pBCPi~m)n=d4p@a&vpx#Ccs?yr($Z<8jcj9)V z@@OM9KK)nDa1Oo~BW1-|HWNXZ(Ms_m^Wd1+cqmWFs<;SPO5rSAy}6y@58ko*n#$=W zyh2kn*GtDiM1F;TK8DkiZz1zmmkdXX!HY6kp26)WxL8wGV%&{57xgpwRljp#2n|Jo zrCG4B>1%jo|}p-povSd(j`*b|mI*4;Shk)^=PRma!^MJ0=sF>l`d=&d_@lN)pC__BrJ%$$sWNC+i10d3k2 z1FTHiKwNKMMbno1@4CwSWrpwdz>*Y1F4g$M^K5E}~-teJcR)H<#8L^mn$A6f)6k_w9;kV+?2}+L%C(k4;^Fm#uAG#vQrMApt02p^V!0NzZ zlUL^@1gcwD7Cj@nMmw6!W;zWn_O2UkWv9|19C3S(Uz$ zus>aj35sWqyEsC4sQ{Vs0zS;%tu1wE9yHZf)WttT?Y19B^d{XvMLm>@%KS5O^%{k4 zmbR_Vz91i5w!fhr+CSZlT!ihE)ZehsW6)(*DY4+jczqoCidji_h$=b@QfgG0 zqq%BawM)z2#iqS1l8+ZEkZz!fSm(X1*rxP?+YjK$ajYY=!Y6r~sOrRTb zO+-5k+b2=ZDGO6t{p7)5M&!?Z9IgpV5-FI9^9Z@Ekc3_+@Q)Ne9uaHK-p`lyPs`#E z<80>tUbnCYs(lwKebf6e@A_MdP=|@+iy%{pL3V7Y-Wd|eSkL!S;!4PfI>29qpFX8_ zTrXNh1jPRVGnZrn{I37PPOYA+A9=1#{M7>}D=5)izVJC7$8D5xCOjih7%e7Qd97yY zO~q4D_-dxE1?~NUVH`D-lYk-nn}xQ=thuoGv8*S$ptkbPUc#Y)x{h@z*+YcGC1LaY z%PNJ+TQ)qHT_r6>v9H#8Vp!>49-UZxjRCTC1tQBIm1@$VsNj(A`gDG}ZlTdje`3qX zt}2LYV`DKFLIi?&j05S6a5LH9mQb|nj|qAI*uIeJ#~VwMZ^s{`Mrm7UGyyfNCKRqK z`Cg4w%wk{F{LtOWt|myG*(EgGs8i1S!T)d)RNfw!@N~sq(qfF`mdmR4QfZy?<0D%w z-YtQ|s~C&JEk@|V9FHR;tQ+E@tv}_U_JqteNcQP+OG9rCmrwg{muFB4M4(9cr1ciUv%~O0Z?=yY_ zcRI<3yRL4RhFd8(0Fo}fixHpoRNUOK@Rrb~W#0v{Y0DPivXc%^P2YnlSG5ssg zl@>|o0#$Ks!bie@iNGmTP2FEct=6&H4>;>blFOyt)F0D((^0K#-1e65?Fby>mIE*1 zcUG%CEwlN;MqFtER-7u=M{WZQd~>ZR-YL<;u(_Pnmo;;nj>(wGxF6B$r#Xv;ZGK%J zstwCCs@mCWqJR4jEk|NoT439#+2?Xrc8(#0C~U%f z_#`M-BoLtAibt~S*cg9DnBq_!e&S0I!1s8Z2iY+e9p34CRR7W2qo3suKON)LFjn_U z7#_pZT+#T73aPq#_3i(fwreVTZ{AFPC6NCub`bPArz67e{uwxac;jkEQoB6pY++CM zPc*OFsx37N@LE0uBum87{j$piuETJ%bbnVZf2i#G`D#C{?yhXvSM}_&9<#kx?M%DF zl#=80&{%!vx)Wg%#nDbv;s(4P?f-p6Ca%KQeWY3fo_PfMr=>ZC29so7o`+kQJj%5p z+?Q;w%6|2uGI=<0eID!Y7O!r|T6KNqm9!eJC9I05P2&nfRgp>RcY>7<3Dxe^PJMxx z@au$-2Bj|seiT~a1}!VU-Hwg19#s69XF~-CxL+IGx#q8zuMP@%JR@Hu|U29)aB{VhS^SHkX1>1ndwRwEeYVrcA<`{6>l?PhRKydH{ z;Ub3~tkH4`PBn6#R#I-9gE;f#tP<#vF0gZ+9gpOFp>yN;H!;5-HQ@f8#EaeRZ2Q8W z?h0I{Bl7{^PjKf4kUrNEg}~v~avTu_3lyCE*d;hcLm>vK6S%%yv&<$~if0D7XS&%HjK2qH@VX zjcFY)`gwSwC_Wmph%$YJcmIbbsrYXX*&g%yeUC5cXwSsn8XB6Y&I@0jZ0h-Kcx&=lzOWN#;H}#svOrNco%9so)LbUZQYdZ%sg%I1 z`?QWXQ*PuTso$nm6S4+Y^viW*-{z~Kz~EnXR`{T?#>%N=Un&{r$?lr*jZMG6JXLr& zKN)4bU7|f{Oj2j zUYod&LgH+OH3{ql9VKBSsN8F4NHMn5oNH5g)l9QSF_>WJgL!89r1()4cFQo353P@` zL|sRupoKwrcUY+6Lf$}ZChY_2LRfMdtl<$!h7M=MC^Qx(@~mmz=`|lJ2;z*}H<+c$ zMkmz>msBJVKiTOC3zx*2qiMG;jRI+e9B>9%bngx|UPP0nI?ERaMoKwEhlkwRnF_+2 z^usN*w+&vcWPcRV5=|#ph);3)4Jq0qU%$9tjES=njYT=54t*dd0rRcF_jZ)0{gZ9$@MTI?H}kn8`48+|T**&qwNkXARJ>aF3kU5xaOj6IHkTSDV$ z#*EeO(nDh=xKp1@Gh!&gAFtdyVq!*e{V>ypp&=}mFZ?b8ZG_h6a22>}Kn>RwR?HFP zGAbmh*;vrA^K=a6{l|0j8Jz3ei$xAUns_?%$o@w_=*vTwc%*D($`wuPa{j6~Xe-Y%6 zseO4jK(oK4F_#R2n0E=fS9%;>N$BpvrR3b~Th*qnvqc?uVAVt3^22t=lq4AGQ`}VZ zB+U0%Dg8_xiqIAo8<*}j2FBvu9dG~22%^>2e8!9ci<}^I!aO8o$wmJ|!=NH5CK(O=gm+IKj1@E}{m&n|0?sF`J3)=;rv>P10nj3NrZ` zeNuKEmPQ?8N;`A!EUokq>*LWhp?9RYMs4?>tQlToX zi%0+{;fV;9&ld|dk!fZ_92)0KGJVDGMMVqgrKa4wFp*}PeJjA`?=z!oGEM|nAoXDO zpd0m{d1!z8gT|7RM6W7zrd~KAPfDtuhh5T<0W2U=0bcWjYM*wgyE@zmB?t#@_r3&7KY4f8&O#vRp$oDuBO&6xMZ4lEvfEyDehiU49<_Ek+sSV(Wa+$}*x6O<3sGzT=2;&4Y9@pI8!W{@ z7U59W#w{dXUL!iY>#|5RNE?A}(R7sSuIidRQc(fMoKHCM|y`D z-JS}YU!W#k<=>)4lJZJ5+Bm5^#VC89`QOzp4>yfG8XV1!b^>ULnNdY6z6<{4zhrD( z$K<^n%eRv~-&G_!T3`S;zK%NkYP&|wzFU==t4otYtGfGnF$Av+neZvI{`C1ET5UQf zcXo|;U&SReas=Bgx`o4hCiCa+qJC=PzWDSH!0dsqc(#)RrRxY2SP?aTJ4Wo|)ANDmKQxg4DFP3c7ad4{e7H^XYFRbF z$LnMCTh1P<#3lF}_EyAZFi?`p+jUcUmP?ORSPGCJ47@Tq0Y9)H>ffU_ltbX$W zDMabF1y!qo<;l+@lJ&%i4~+gI$%DBcQ@O;z)vIT7))O*S)`^$_LL+D3$u66O*kC!) z5s#%EPNT`8$v8~osZre)b}YNk<@AA;4(*TQ0@>a9?kjQQsg6s1=BR4u_|?A8iz)P zLWNFCFC_($?A&~VFngS@XSjG%wUt21c@B>R!mj8&Qy&wLP9aIR`BgPGS7(AjE@?-#|#YC&JIY~)ZQ*|S`Y{< zbmG*$nNgA(WRT+35fYCVZ(RiNYkX$^%(k5v{by2&z5NqU?)4b5x5vSQ){WfM+A#Om z8VYKWMy1J;A`0nsv+L4qmHp=OIJ)|ni=P-vRby%*BSR|f;oU5`28>F?fM zR@733&@)4d1B9J+{2X3=t%WcA)Mgh|vWO7cK|>>YG35^VJ&DkL6d=gK2DI#+t^O-~ zb|~zQ6YK5Z(B^w{%Erbjd9KiOCzHp9oEht*lw*L<; zO&^tCOIu>w%G{5KGrk??3rHh_vAsKrr2HuU7n4g6fM=jqhraIQO5_;z@IEN7+8bCo8HpGl z)93U356$DY31xiux$D9?fVT6FA8pmY72a!(d>B4E9CNZoUw2@Jt34vHH({+MYSk{4{!xT1k6Ncx>( zW^p{J9Hrs#pQwcMywql(qb}T;t!fA3gJx*Uh_+`=MEVC;yLYAC5s)QE{NcYwakhXdPjaGZFyoBBxU zZg%u2&@9%-dq|oxw$W`Sszv>(nrZg)R&?xPpC=|_1q%AMjN4Am%Wx_m$^_k%jT>T* zwwZb(p$#l;Dm9~xE-Eh16y{GyJK2XOOIsdAYv})iduVCY;IWPMB2N!U_F8H( z$Vq0CBj4elX^a01Aj#IfE{=;j01DWUw>BrUP(5hjc4J!=r{_K$eGnu})c>+o)%r7> zSUPe(-QPfP#u$U?Lr>-`#=*jXXJ$ za!!c3n8Pn>&_!*2QVHy8{DQNa#@5EpKW7<(3 zVQ*+KFvY_&X!SX)$vP~b_6|bXkJDkI=nEvhIOq+*ysG{qXqMt{H$KyE zG?3g_EPjAJ^ygAT>A%;5@m=l+jj>Q~aj(;!>f`!}TM3f67*YH7%!^%Os=7$gz+l)P zna$JcvTtk08+Z*GzH$y?VR-$~m$V@}*k7~`VhXXIQdLwo3}?z(sy9O|R`H=HY# zl6m^d+-;jmH-ma;6h%1{WF!&ov%+z0(TX z{G#(aaQvCX>&36v6TeZu7R{YjBNcCHl>c=U5xM2Dp*lPebfw zb?Mya16D?g?Ux!yUUAJKdUan_H-JY|MRWK^AV&>TCOn2Y?BBT}GsAZeB^hlP$tdcG za?v*7U1(;aECvvhXPB;3vss-zXUfTyj3h}$cI&#ll$0V|%ZI#zZQsLaerk~e=gS3w zz<#z*S#+)aD+31S<`zesY*c(>cT)6oT}`>Uepn9C-XBocE315 z$x|FpAL^7}d+??N^dbI7#mBg1qE~ZTI&6NJOQByedxiH-Hqf zle6c`cakN&E-Kt2FcJ-V|9(UqSRTJ2ka}Y`97CCzUp&&3;JfgaOb}187t%)G=-#5Z zg+HXPuox^}VG&C>lV;OtNFL7U%H~(gw?dh$ge@!QxjV&OyWsOOKdph!KeEqs3O>3(p-oA>6D~yW zxd!^2T?Txp;{sgrj|l7p3J>Hd97PevJP5+UJp5;RWZpBr1C~;=r`L*D14DKu0xpch zvB(qWyNSav(>c=Q`Fu>B7jfrEL)LRywwqE8$~M{8Pw1Nan&^)C`5R=T6M4$J!R=o27pZ-3z52}!kJu%KbU@Cha z392)R?6S_o3F;j|AeA6Q8>>H~RkTM1jw%`qM{1W@g7e0eUD71Bz(&&q&^?8c02Y0$+(|5-JY z3)dJJVCZa@laMSdYIjwv`(%6Uu#v{p#9n5yZM2m(W>hGH_fC}u3XbC!(B6$bwuezWjKW{PIEKr^2ukN!S7T1w3iDH-0WrK=Whk+NyiFRWX7cR=4 zUFI<~220yHO}^a6Q;R=OrNE;4zhcZVG(o0dd&qVP2wSM>yP1Qv4626=&vRqkg0_l5}eI`8+LeGZPQI3>VnXs2K zH#Nka65qQq&0N+UdE}BI5`9wcS}->1Iz{~{B!DwP+onj7r64mBF1huohZ8G4!NGZ-s7a^Hl84~+zS$Ehd# z^6)Gk7)-y^5et!yds7!9NLNW=231j{EEJXhvUFD!kv^ucV)=h!n4(f+lPBSzi$`=0 z3Wq@tKzh<5+fno8+?;6heDkM92gkr`IWZ@}O^@V< z68Y`Nz!M@>KN5l6Wl&0P%0xs_N%H~lU*X^M_K3vjO835MgQL=w3PY4(t%%cYc#zw@ zXeWC<3xJM6b;L?PNxx97`$a0)?tq>CV6FvBHy!iAB~z7|s$xdwC(q&MAMxK?Ql(dl zb;{KS7U@!CwVc_yW5mmBiZ8 z;>y;?ZLau31lFig8(Rb$t)|BNsxi<^NvQ3gGsF-`wAZM)5~)rJW#Z+>c+IJZplUHy zjVE|J{?%O6RmPO{=-Uxly+QsF)L2Pqcw%%G?CM)-`Ya=uw2e!U|;{fau#?by`V zC{6<^Hayn(JN;EK$aJ`ju|dl|QD3%hIa)WIu{?81el3`F%qe8t@FFEwPBAE@c?%>G zNl=w?#V+@1XRp);Zw=Hu_aa-J5ALFOS>Kv!4KyqLDSs@NMx+(%Jz2~%ygSb{q-R6~ zZQ!+?mBrH%sy0D4$;zQ3ahXhiV&}b^{@`ietsk=uMdVI@vHlS8vVCnM2M#i^X}XNd z6mDi@lVJU}GgC!Lli6yLlF^o|3CtI82BFP1Rv$bT=g!62@bFa03o~%SF2#FOta9q@rK8igE9z55~|yS<4c~Y zAtbgFe+jvxqwIK~yHHiEwQ^i)SJzz^`(E%heTkoWDGKc>F^L_T2^S%a{A{w3qGgy_ zKkX)~uD^1gdgxwt{juA$Zp}!fp%zrC06iOhr({q~9zfoa+vqv70`WjN#=zMoW%9J) zw*$O5?O*q}PgZ~*UIrq%0eyOFpS=h+42G$wq-96FKU@L#1WoET!+~DWoNoQpjGfT9 zTP1Th7*-T*-p@}SR-(Z}Di~t>9V!!RE2~xb-5~Q%fB+k$dwf4>ww+;Kl|hGxd+y< zv$`j_-UjhBnK+13G=zI?52afwOllWh+nOgEc~hh4DldN2o_G+7)TvfpngIFeq0<^> z@0Th$uYuaY{6e%C3pF4jb^J1jYl`-T@UVV8Rd$=J4!}oUCs{V@m)CM8ZP`W@4{D{!D{YpsUC^1M8DjxkTKmM>yBdm-G~rUI%id8oYCMnqr{%OU z`{mlSxpwlfzN<>Nsf(hM(BaVo06&jevAk<4!$;KDp*6J;ZqT1OflVt^U@@qy*BFC; z!6w>I%G7+fS{6V|ZPFs^-iMZ1$xT+79M6{8(^GRKml3zI=VOq|no=WsWc!W1+}=mS z3&SvWUKI5oEjA!?%4pT{VojaAD0K^^qL{WRreM%fJQEtk>+tnDIffti31o&(#ydIC z{S~(GR9|RsMCfA2&oApfekR8VHlHzV#&3vpj}(IB{k4HrnjV?jC=ATmihBAzzeV^< z^neDemL7?Wk`#;ER#oSzAOn!-Lt$^z=H9a2VDFcm#>g>*zNmZ&r#l9Q*jygqnMc}+ zA=dciy2u5X@5bUO&ENdN7}@hE4WkD}hBh4bbhIzESd=oGvqE{YD5eT4BGRT6y{rWSR9JT7ogZB!vX?vU%^ym*Of1N0Pm+ zZ1=5e8L`~{U~%wKP^=_=L1XaJaWqBbiQC~gevrl|E|*hu4zlzL+DJP;Tc&E(zZ^eu z8}aKPv2g1m59H#E%jqj#Ft8oO^Sy>FH}#0bq5$%%<8f^PJuWkFIClHbzw(lafXk+C z?$BJOr>a0^(tcM+B!6WHQ@yv=sU_u)lv}IA_&%miI0Exff@b;~{4CBsQQFC|w#Y_E z=2fxpqfv$_TrplJa-q;pqiI>ry$rqOI*EQOcjXOw{iZd)n2(+`$yBc{2cTwAhRKw=gRdyu|f4zPzWgt8Z z9eTuU@x3yVT@igCvo9KCjIB{Tusv}(@p)vQSf>``84lM|A=CX9dT26k{Lv!jMV>T` zvOaL3YbP%GVK(N{%eO7ZC&1WOg}Zc@5oMrE%nknkF;Bjb$g*)dhc)!{HRF7Lf%QMb zu;p~(b!qL= zPZeazg#cC$J zcG(>)^&mMwgPv!pSmoFNwrWys6;p)`_4)lzfx#z8OuH%9@e`WzYdB$nH$d))9g4Js z?fsJNRbTD!jk^ggc$9;mJQE{un$v`JcAa3dC!>D&##k^(3}n_;WVB>G5ad;#8l!Ji zc4uMoPtL_SO)rzf10$@zYhwsiS84LM3p6|RRR0~Bjs;UueM-*cuP5h$Za#K?*H;J% z;EwY^rW*u^ZqpDAh`noC!io{nUFG&T=u_hs8KbQhcY44c_~Xfhd)#&(`EK7i zI-#*~LlH%T3%^r=x#``y>>^fbz8<)s-B!%zI)fJq&vK1qOJWa6!0si@I5SnMq^6lw zyXAxIQ!)EOY%=|(!>|27I{t9G+3fFjDbF#D&3 z*bvq1vp8i9mJ#aN5YS)rJv7WNexvdQ0SWsh`uMx*R1oP}_Lo&1=9z}6@_j%x`k%Gt zmsJLzetiEZg4u-4erzmb_%+M^AYVh>lC&xsLYJ~qk>ERP5U>++ugMIhhq^tPUChmZ zQW)LX48Dni6i!3N!D|MTZhB4fBbmpAnpx)gIw0Z*!)b>=Uk$pmE%Kzj5LiV7i?XkJ zdx701uM9NKZSlI4tqk~8`GaFSD6H8K=Y);%9eu9*s^!uLjTQ#2PAT(Htt2@5cCEbA zgT(@F_NuU@tfP)hV=V6099QtcYb|cy>OR3;JLX@4vUD~4dvk`VB1t2pJ!QEZ@jhk! z*_X`6ijMD{br(i?rPVXd_0j30ZNidcG09Ic6rENR1246sREEA%eG%&~YhkJ|#=gu< zGg5ea3bO7%oeh1LoU`#op&r8IY_D=+0aVpz;`%`R_atzqb7}PAhW+S_27Y2B>Aj|& zZhQk)=&>?*K>AWsA*b0cPV_CU*-$lsbc0z2Q_*irWogDsd0afZX<7Tza1=z)#1wOT9@J-verf~V+y%ICTc-D`-MrzK@Bg}geE77m(+J>8Fg_J95# zurPSOXC4z;sNrv*3Dh6LY`Sdqyc@u)9JNxZl(ka-TP%o9{0xPs-%>{XF(WYF(4o{yJg&n;L1< ztkYN8&+Ot;79L?+A?-_7l^(&CE>`=2?OMO4^v8biR+!{W3blS$= zR#bB`DayXxZsl1^Jp{l6np5=h*|9ku@@H356r<>#e}3q?41V6iI)WS>7;OKa*YGDP6SONKnj|#y!ss+o94z7K-t9V@PfGer4VN zCQpMjSvFPSl7MQ8@92I!8nye{VRP#vw6WKfjl=!8Y*k#i0`sdr;_Pg385OQ;zogs9 zh~&et&EZ8PqAJ4qXLIpEscsL8Tx<$I!x$^n-}q^2!+4ip7AqBDpy3UcUy?4wW=;8f zwotM4Yx}#G5!~s-MrUv@-BvN4l1*%@JE}BhoT?H>Qn8`8y9Qp1858)p=|a^K{C^qj z)JUZ4HNBcCAW=7e{oIfTR-dlm6tLu9_GAEUWm-Hqf1)dg-aeRw^FVRdh>OZ5ZiUx{ z&mvphzN3E`Me81*U#rARtZ0v;C6f%U`O(uc{<~vAJJpjC@|ph5#+nQyhi z8826vH`blt(Z5Al>|##jyxZAmE7#hWn+`Aq6=mp|tFIKrOa5|Em2WPmk43F6NjVd? z9T)>7BiULD@Z@;bsiBLxo7&i&jTUBcGJfWB-6RwN3W5;Xj{tlc!v-|lOeer^1@;5P z-$|Oqj{THM0*h?7FhMp1UW`<=MZGXL?s$FT0$T`kTq3$F(uHr#Zn6vG7Tr zwh=O?)DZa|W|sYi<-@_D+D2(kR9ZMzSqMh-z6A53@99}6Wh>{{NuVL=EE z1`#rqqi{cY{urNE>kg7)eGi4=e8(o%;LOQz31V-l%^nG?+3ngtb)jR?SRR;fFoHDC zH!752oP^uy-%qa$(4s`8Ta7wC)3xKlh6Vw2+DRwYc`!(FCFNv%z3zNXbwtV2u)C9^ z_4>_8BdV2+-zUO4ro(~YU!w_a9!V!_aNY2&M7vd|OXlQYR|8FdjA}&SoABb?8+#=| z(GNcY4oTyK@h+1!kfHs?9H_QO_Mpg(SM`~Uecy z0#`D$Q>I${as3*nYy&?@^hf%%&VOjsV)rj@mTPRkZ#_b#-icglhXv_8%`bLtUyxE&()9Z-=W29X zscH*X8nZ4kHhU!&?^o)tm@3c#X&3RbRk(9;ZS@-jTLTxF93$+kv+N~BK!YCBUSP! zRpu8^JQ$5~%l3tO{fCAv!3fsJPAtCeYqtn?_0=gB{#L${dVN0i1g3)zQDs<|7%IDo zYpK?7deD5tZUXquoM(p``)!?5tbhf|8C+xkP#xFILi~Fr>~oTM?D(H{!QIt7SOx>nVj_$EW$Y!;^{6xlQBSd1RR7}U~_Yo7( zYnmY-yk!Bml($?_h0g%kDk)N(3Ugli0sB+ue$=zU8y^Rp=Q}Worg{BL?~m2xcWjZY zHvRtrHbKe044I1dA@>339CkmYWm|k@w70bo-cHFNA1EUkHTDqHEj6nL(=|BKSfpL7 zk|-*}(1TuC<6qd@;opgG&ZDKJMUUA6^5exGAJlwja>vULd{HrS z?9J5H{{Vx$8>9R+_;(+M^jlF3N)O5_lkpwS=}Kp%cr>e1%(Ke)no7{RQS?g3ua^B^ z2a-|4(D+hz`L@g%<-~*!T7}&8G+anTgyy2&GuFPYF|smq)EHzORa=D_%~~u4SGd8+ z#cxkWO-7{>yq|F9s9YX%S7$hk)_m=gU9^?i=VD=a5=9`uCau~@^8=d9^BG0~t9El_ z14T$^eAR3_bGgx49moi)v8GdjS-Nzi0A{sgAfO_=dfx1fX~D%1$b&s8s4<$BRlz2q z3jL~jh?5EO0$HyWM*DSGr*{V zD~yv(yJ8xkdzK4@A6oX|7s{-9s;rt;CzX;Uz#yMmt0cuTe8c(E9Lpd))DokW<&AVk z7Tol(@QaSDR@K@whHO$DT~AlX<5aF-$oaXbVuf3hE2UDV)y~&Si&r#`u#3^N_|scg zC!>$V)m67a)|&As;c-HzPUbR&B6ro>81rg3)v>{p{syYD4u+V~1Jbor;AWvup=I?| z$KN$s^;t_Dtiq#c&+#o0#q)Ih>qQ7Ig~dTKRlk^Xy{X3S*mB46rzN2yrAoGnDqDi+ zX=stdJelO0wvuiDu{4odsON1?uz)&NGn83{NW-xkj19=#dR2EN&KOm}PDLw;IhTJetDo2DqaZ#_~%^l=Y%cbp7X;u7uHte=SW6fNB5W3rSSfqVVPzJ1RUg7p=drf zh8uBVuUf6l1YqwOAXmueA6%t~RcS}s#XIue(u=j5gWFYm#rJxi4o#S6+!2~$F&G*# z#o=)m_OvG2dfB%Lt)11^XS3*eE|2l=!5$*EXf*wCBAs}W(&+h8q4X%&KZxR}YMw2% zy>hT!2K6BEUa#UGgdejfkK}2!{{RkJB(iLes#Nlt!bd=Kn0Jq~P-GAGs6>X|T zH{6vDJsPg2qY8jzP6+Eutbf5i{BxsjlfqvTb#zhpBYUqoe<#gy+P}a*+Oxqb&8F(M zTB0u^JKGYZ{wPI#9v3*s^AGoYL?!H zr{`H3=f-~pcrpgN*ZfUoZ5pX3&AD9t0)vu$fX#Z2m;V3+p!i2=5WD!7;|r^{;JLrm zq!^IyI{{U(YQrE)Y2|N#}E{pb+YrSUb*`xbL4noGHXB=lI z2ac8X)`#$(*WkCq!+Ybqr5E#Cl(w)|1@cBRM_?;t{A}<)fHaYyd?N6y77D4gZWe__25;^6ia%;%MR?awIv~H+r*6TRUk4`s&@Z({n6? zGNYB|uN#M_$vbkU-P&K%IZZ-X-gYtcCyK8cmToHC_CUG7?^4?7$fqZhUu>rsK=+?4 z{qEvg!ohi3xf#OYjY|v&7XXTMk*cps<&{MyXHv+oB;iIDs?Bysb59VQS7-XU?; z5$NHh)8!)a@zB$jJRWMngm$KE!wx&s=DF2Bgpn}3VxJr1<~0`Yn+BUC_!u3l9#+|w z9`30$llRS2ytoW@hWgVkZ#F5x=CkFwVs}?XDmvWy{4{S&W&Or7pw@JxleVY0a>pdp zA9_#5y-HD0M;MhwMS%kBA!i*ENNfJ7U}9jb9tP@m|y6KMHso;NORaf#A&=-qIuk3mOcw ze|e8{^{#wJ8Ra=H4Po-gdrH=_UuHhPFb#r_gVBo5b>7%<|1I)7qi&CyCzfMt7Se``06? z>ZR3zezo%0JQgo7#!DNGmpxf--$mIjiFQ6)E3b&e;~i@9=97B1MXYNNG>ijr+PTe2 z{4RcftuC#ph_W|V1>>I^TWI#uOEtg*1J$}$-evd)CZiO6-8v4cT)j&^A@OCcqp^9w z0QDxK@ZXK}?M{Cx3$$kFKx+9{<4^4ieSLW*o1tAC1A@TUBkheK%6Lpv9A_76Gnw%YoVFLc;UBw~ETaHz zJ;&4hYK3*Wjf(0vZ)`x^Mo^y3+x+@hChEw=9Y|nsK^%i$$(|^1quB^_8Jgy!6@{zZJAeSMlstWV;vd?p;=lYW?+#tb4~Mk5 zGpSxDLP5bJ)b<(gpFv)O`&;~5ztU_W_i#Bf)cy`|j)@YZv zxU7$cpAxRTIe3=0auXKdFi+jCDs^RtpVjN^{uX|f#N0WR_=A$H(=1=TUle-Zs(yc& z_1}kY7G1p8UtxL?2R&=ad-Lv(;3t1NN^cFv7PhAIy24Lt6(q zLZoeDthd$K2-@GRZ|FWH*?{knTm*WDaMfnhRcP>5OdqX$<}WFyh=rOy4N!aGB^sz~@7>coG{9x2_$IdCyAxsh0x+P|hE^${kbm?%T zC$(zDJ{KA7SQZm8z^zzhV;Ik+d02{m@vJDRM&-kB2*If2a2Mr2TB`F9bGn%=*3fcm z6-k_R=ryV>CB_pus`FnoXNIcg=wN`~tyQ?W=aXC0qj#yM7geclO;>Qi>rpPO$az1l zW>0g^TCDe+eec$~qlSw|yMv_{Go^!CNisM72CYM@mHs^bHOEJ&6>Ns)rcGq2`}K_Q zO6StN1S-99!Do3bOgz1$7K86@ z6lWf_Kwb|x0($nS@2^yo^Hy_SVo*z0p+<}4Jd8Vbvo}PEjvARHkpb4Tmj3|c12o3J z!0Kw17JBp)nk-#BWaBkc&Dc&4=~eEpdi>Q`-iACH>V+p`)};pGXf?^lCZTJgoEEBW zJGVehF`9GHO=%iv*V&@$Tnzo{1ociaa@=jHlHPWv;}m4*#^mBntV5ktE}3J^FD{vJV$45DRjI{XOXy7 zDZF>#>sdEnYj*MRz`BU z??|_h<JEp#4RnvmJ?hrKfvW{g02@1^o;)i6nZ#*8R1&$@yrxoX(j$=(t2*8 zZj18cH7weOPstzz*UfhtXU7c@F>igS$Mu+>=ULMD*Y<i+=Y&!`f4UH>Sfe#EZ7)sT}bYxzFD^YqW(H)j0NSCGk`IP zEy(^xwlt61BgE*-ABcPqtQCG{x0v#Nj5zODRKQC1cK*IcHYdW)B;|6XsnuWIn*RXX ztbIda@iWDmW)|O9n**R`$gZ15`2PT}+bEAyu(!HQbGbRMnKWP8@8Q0owKa=-y9XmA z%MMh2E1K^-E%9gJpNh~Xk>d*)Sb>Byg>T5$iH+f`uNJRY4;en`EB)(J^W5jdyjBgl z<8tR8?{aDX0D(tO#P<7-+Cxx=GarY%J!x&9;$_eO09v{IW8-hcZCI6)U3irL01P8% z@~=ME{D0sd2*7SUL*m;jWl{eCEiM#)TJwJu{@cFHI6WygIsLgRBo?5SP*3=ft`Eaw4I}DTkJ6F|E z$!jE%N&Z? z!ybtOs2`D zf&I~p(|LXhE8eU5f5AO$9!r$bX;#H2=)d5e>1**9!Z%U{w($kCXR^u-XfKMiX}DcZ zB7HZC@JT)f>sle(U?gAXJAaw< zG1TqdcSjLO2S`Cw+cG$>q=RB zOWkLUjPUm{SNg2f{{Rp3Uy1FG(Sh>*qM(t^YmV@*#xD-|jn)Q~!y*0`uGuZ4o)wxF z46HaJxhGB0e(~{G?6)w=D|Hc`$1gotM+LfbfFn*a@*YxT8!Rv_k~lHre3OQyU!w?RMwHEjlQax zq;8eCAXUpL5MTf+32qp$2Q{H#bCZnJ)Ti#5RKnUOkd7)t=HAV?T3=>j$+p;s- zxMdAaC561rTS+q(1z5EI09jOQ-wFj?vgPZFu8o?@2Gm}L)seu-KU%A-YpHJ;MSNqu zRMmCJH0xr%Ua8^b>^^Lq^{s1bjmezXE2qvf2{p5C zbV}iC3e-~A^kachjgmI)r^(xz)U$Bh8o;u02sN!`GN{RF@~hLf$2@ShsAxRF1`RT0XqGkq#CD?4QLt>a6%IBIv9Eb7$&Y>~w^x#!lN4tT{T(Tq@GQa3^(^T@7`!AS|!qIpJCFvzZYwR}H%EuVhw zMR8;3`)oUpbLVqhzBtHov)K=e;jy&x?Fd3f3D0WgHLnvi+ndZJXVGqFtEb0IUB%YP>Pwf-&-s4oilSR>P zjyDkOr}V4;0JI-4XwJQ46~;pTy*u9X&p zZz=`EjVxf7KBqN%PSJE91L$$-);96M1WSXC0IHfd#Qy*WTxthTx7TgjT;phzb^Pd? zl%Z&C-?__*#%6h)M)2IqG1*4{0DG}3_(T2`wyPey;bdjgYGxAH#K=$b|R zTAiw0LirB46`iMubvrh;oCir41a$;ePYwyZH>);K?>ISyCh&njKDX%k&_8nr4v+$@&cuYpU zH$3u+pHi`xOuv@KQZLbQ2j2IAA`)3aYDeF|zxG!#)q zVlbkLC;+Xm1?fWW_}|Q*yMyjza9_7>-F=QL9w?-qRfZ+YI|Wgmq}O$(TF0l^M`anv zjd8ow^(XN;uhjf1;eYMC^Xs*j?y&Zk_^0+)%G}R=l55^P+{+Q{sPZl4`4%7K1e)bO zBzU_|@OOtU_03Ljkz2yf$Jh+lNq2Iw#!EK}GhZ|Q)4nFu{w8?iP53e4sm>>qKA_4t zR0ll$F`vL!^^FB@eXHB?eG&1P>|fO=wzqmOQ#ar@hVQ;Ad_lkX;o`WM!X;?*nB^QQ zjxqr!AL31Q-xt0p>k#U3d^`AUW^c9Y!L=ic2gw9|=Il82!0vdfz9!Z5uY>;p58~7G zt5V|HB)7A+hz90RPyeDI9HE)YPIFj#KyHa1vxd^Cp(MxjJ z`T^}%v=0H^{4DW2dS#vS-02sjh*`R$dLQ%6eBI$68+iNTH;gCOb!}qi>T9WTT4@Q| z3FrqvJpkZW*8UE#yVSfRWodjFrMHoGGj-!1(2-syGc%zX&MJQV6PDJ|Z}@jVsB-=u z;taO~hOdpRs^PIxjVVIOC^_i~N4G4k>Wy2CGAo-_f@s4l3=lmqH(Eu*>v|Lf z#K$ihj-KMZ@IpZgj+B=g92$fsDWU~fVB}YAWlFs+N}GO1=6o~7xc(N;B|2{KZqkoN zkDC4;{8rWc9d@wGGi(ilta?|zcn{-tldnXG*Ge4lK|I$7@k91@7yf3e;nfK#<&X{< zyq0?}6nG~07ZJ+@k+&e{2kBmY>QVPXrxLr#rs&p}JWw*b{!i84-4*0U}3Ws!5btP8Z1b*?2v!Jj1@H0die zJ)gOx-YPR7C!El^B;@z2wToz(dz|*9q(j9nN3A0{><_{W)kZlvs}sHwsYt*#TGpCp z9c6HI1+)248er!X=)PgnrAUtMe;T(d9&JTtOJs}~5$jr! zT1rwjr9NE5`nHKojD(~n)hl|TDEK+6i$@{ljx#WgL%zcl@`H~Q41 zQio3s(Q3?EXj9V_dfwSHz^fw69&jrO*JiZqUPU{51jr?L^{Fppio!E-E2^Rlv15P- zty+}%5qzUH;or4)#9doY(j)M$hj8)Bc7J~8c?;=J2}*dn$~_ISGleWWsVAYI@sswL zjw{LhHQ*Ul<>e;3UO+yJ>t18w?}nZ*_?4@PWbmNk3fpTp=KQtIIhk0&Ix zeHZYu8xI5N=T=K7+TnlHqb74-PhPD&uL%8&Z!gXHpF@yJ4W&t>-&SV)F8zRKzlJ-l zRv8$O2?StQv-oTFDe#to5}S=aFhJ+!1lOHwpSOR;{{RFjgF^5wlXV)50dpJw0PL(Q zit!ix6)X0RSj-9Vv%~P<{r>rGLRjylE@#)if3vJnd?ld^^R}VejG-f8u|tN5Eq|GVvmX-B_pTH2(lo>}2p? zg{>DcY4Hv*k}3(b4F{Eq+T43>74hb?`+NAR>Dbv>NTW5*>Yujf#2K>Di4>mY>!ObZ z=TBOgg@0DgS{@ehZEt#`QGRUuZchqmQ~a~(khXh;6;kWrFM}`8{{Y0fLG-|{hllN} z@kLv7R}I&WO>1c%x0l6hEv3ki4xx>2J{8XBtJ1|=@BaXTdX)Sn3>W2(?)sjAJJ?bUeY5o^X<-Aw>58M=Q zvD&cpI5p*7Fa3@DW2H#<7BI{<^kfG=hAZp;01STIzW{aSSZ{TgvUcMaP>?@5@3cRN z-vqpFqx(O_dNs&#kOj&De>%bOHhqA1#$a1Zs$Z(QI-}xWig^dQnqeo(x4d1x`&;op zIyAr8E8-W5?mXQ@T}s)(d5b%KZC;7s{{Z+Wo~?LM?=2mH``J=!?fpYu_$}ag{M}2$ z8a<%(mgO`2>xS`P?a})*_&BtG@Rud)u5lfbZU^$>w1*jInC&v`1e)&C{Pz4#D*hz# zhJN{QcxhY8FZ`@|XM_I$;GWuDm{WIPgZ-ugy&uEhv5$jvuo~jVJ_p?hKdo?nCjS6} zs{B5;-4BI49eZ()y3PWM;5F~~DtC=8%g3YmN+?0#7L>88bo@of>pogZ`LELC)5^R@ z&E4D_Q|{9JPpS0J+3Ua>QYto^7}_`(t&4w$9thLd5b3b-{pGKPwJ-Q6f5tsjlNu~Q z_ETBM_Sg8ka^%l;$0ydZmkIG5eQV=B=FaL~7;&aCUZq5z_>a&9&^$F4%N3*?eJLjJ z--oUf2EqpCrYqqcKlaP`i5U$(=l=kKR{oLuclfs0fpKi@fyfn%_%Ak&u*6;Zv|(Su zelVoH$*2DSZy#P?d^+&G>xMQ986VvOp?`zE7QKsTvl#yXbQ<}B{{a39DXiLC1+&l| zM+1^@Ij(y9{t9{VR@wGxJ`lEYI(e*rrApzhD~xRl$y@u+{F%=W4Lm?}{mH2IyzG5F z;!oM5!rGKgvc^6~O_k+dI{lKYph+dPw=0a}ZFzA20D`0b(h~xfzYO#lbI{2Q#Qu&b zi}vRIseEN9g5$wjC7eyv!EG+@&76w#vh2T(@bwgGN)nHof8=pIr^a3ytItNHB^Cbw zPhrc%gB22m3#WXfAc5YoqR&=@4ob znvJsE*~+gQjH?QUWfE{X_pV>T@LuT2_GWf5H$Zz=Pi;7FyrR6EJy_MJ%^sS3&w}HA z8>_-uuds}{>B)0KUDNO8x`>)`$<8xVu9m92;8m+(8)By@r=X`QvbpmVaa9?WE|eH> z1yz?v=Y_5Hj{~JI+0nl6p<*Q#dQ|as5;?TdL2tYIRr?(m10^eFD;sv?kUq63NRVtn zQ#@Rrh_{QJm64pfRAZp$=}R7x#rPen{`5oh8dubzfpP%I^{#hXtJvtn%C9iUG{-;* zI0CBc8ug}!3lB6iM3Dq(vFDXuYsp~n$g{} z9F{eH#z%JOYOa~3F~hp#{VRV>(#HdD6`fhaDC2bL#n}^S!dAcvYj(*T0lT$Vw6$1= z1Dd%SoNXOD*OOLiOl}IryJ-n*j-9ILxnvu2RAF754@$5)R}9i@#Z!l3Xyz>0CW&Oo zH4>ZyPe|HR=qo!d&l?wOh>FqzDnk%O7&RnO1sg#6(#*LW3YROp9Mm5q?#k>*H4Ubl(Qh*v{_Bc(gcp3>l<-JE*XbIuczaZyRB1Q-p0P0{97 zF?fDvZnmTq56z0p)phiNNog_1CpFJ&zBIDaB4?W93=VQ@!@e|r({@@!QdsGiLF6Ee zBUfe@EOUI%M0@#eONhqFLY!`TN5pT9njeMWk*2;(fKCaonf@;R(YmLJT1y=+;gTXw zSRPGqTK9}RRpb3woXs=Hepu5cy#wJ#?8B}2j^;g2#Za_RWFIFTezok=j48&{m;JoY zzQW|0RzXcy#mRGa{{Vn;{{RWT5bOT{6}7~Y;u#XmNDPvZ_x*)^hv4r6X?_Fn{2D%y zYO$&y-Lzvg{{V;H1k*e%YL=E3sECVz6>))GCHyK>kTL08m8(Tdl0P@x^Rd~?vkR!{ z6|y`tlfDU$Z%I1xfV^Ab9A{+;V@N&S+37FpWIrbFWkk*oy- z&TbQNIPD*&`OQP5N;I#DUl4qEBqB+)Zw{x~m51Qb0K(hxWd1XoRFeKc z^IVxrmpR;eoYSvX5vOM>Te7*^!PuN`WsHs&35xa-ZP}|kwC%0;T5NrX;LE=id^Of1 z@Q00@OK$CpEkRCE$EHtDq3QJIy&G53hO1z+!T!1*nl>G4%Kiv^N4NN|;iT|~jhoE5 zC_c?}-*}KX=lkA=zeDfpo(cPHs=k4$9M5WYhsXNF?A7wQi^Jpa?u^~zJrnHz07kc7 zo|pX|tt{6e&DJ^7RPnfbN~B}(Ri^azv0b0TQau|_tG0)SFUFy0tiuk!EQ8S2x&e&h zu%)*;4zwp6L36`;2CcMw@(p>pPBx|{l&DsJy`=eN=h|M9TKe5|J{QEE9>ZX<)bl(7 z{{UviE_i=+{ir`U%TG%f{x;E#^@!9UQRdr%Uyw4LPuCrPI^*lo2_)p#3E~YfXF0A-$y1mn+`fO67iYxHr z)Cwr2M0p%X8Wv_aRRbiSN@+PeEx_6Eew^~$wxsAbMhci~#K*7s^a7UVK&nqc>0jC$3&ZP&IC72>O4EMy{{Y7;U3`_J=#Q4hRCVjQ zbm{1FzZU#)Y2bec-fP#7fea+7gUdH%9^}`J{>{D&)Gs5y__^X3x8LgWx7peA^2eS? z&tu!z3eo+judh5`;w=;5cAF{Ap?0rwtDNiy9Q%Fa{{R86M%3-CJP+Ur8phuVWofeB zG#y(3R1Q0wSKO&ao4eXSn_B(L^Jl_l7^u|6RI4ZMQD2R&{^W8#9@8y+QRDm19{7lZ zqWDKEYORg3-j&NYJxT%q{{U%*I#1h%3l4`m-wY^Kke0_OZHIxn6+Q9MX%}_Ylwn^jLG+n zeFbUZCDXOYw6%-{SPQVnU=R3L(DvU6^q&a$b{#Il%~2tXpkHe8p=6Tyqr^Izjquo6 z`3l~Q#4qy=UybFQL;b&>B~|xx0NW$qks7+ zz)NX~7=hlVv`wqXt8-fd=PSl)5~_gXwSLLZ%^M%g3aYD#a(%{Mn3CIY7$oyte~kPe z;olcoJ*KH-gs|d3FhQ!n6@DgNczWj3!oC;MrPTG!Ns8(EYy<|A11#)M2#eL2@GCCT z`{K8SF74s?r=w}>ZF<3AztXN6SmBVI2;|(LsXdz*Cyuzz@Pefj=IwLuGD2t_FA^acLd>wN4ntHVMz~x;>AbZsh2mDyqJTW@QB+SSUDr@Pd z(=GKIKeOFL9awT0SC{-q{hhS!RiwVq*T|UVwt>MvO2&9;MqK!JXWOGcQONv4%d<*< z+4=Mn>CbIGeZ5iBd^`Bxr0dZvQ(T2^G7EEFi>K>Q-5`<)gAZe08tR%4iTn+zd3R9D z3oCrG4B-6@cD@1l>#FG25y7fRN&}6@wPvvt=Pp{SmS2H6{{V(qd}Sw!%4DS%t-r|n zrVGT8c{Msqo|VG*JK`>p;wxmD3zf?baBHczy$k~@aoUvVxSxgQIZh`5UDK-<7Q32( z$I_6g1mGr+rkwG6(LXtF;c{ev2>=m!OeN@S7#ig(NcKx z+NfQOX0;|c=~>syT{K+L1?Ms~WaQKG@p^2$!fz*({TEd@9 zD(3?n`d4iwuwjBa)@|mMi8lr7?OW2VZ4afv=5LdgvzbU5J{TIY6TCzeY*vKYa8Zys zs;vV=*#q#drBO&L&YmMiT(Q(hAUVglHM3=?wm{wuVA~{eaCkn|p=krI3Sf%os~AZi zHH*sWHrhH1d&O*FhtoA~Ik@#5>mt>dU@}&XyqO<#*PBwBM}uDjI&88CW0Ei`XsyE> zs}IhS2!xA*4>XNwEKRyMBDr4nxy=~L_GR09Rww@etyb34kD04F(^HlMwqg0!oEnT0 zu1bv8Emc-0LRBJ&<)5T(xQJ4 zX!?*Kc~73q1$`YJIKvgL*k%lF%MI)C1toizzB>_Mcjq_=lEFU7tyW@rtYx ze9ZU)@8BN02hRv_M@)*Lb@1oKx^dt3IS$^8mHHEL@E1drAKj0|Ycl)xbI|7-Ku&#D zx@dTVlHXTjwzrJ5Cck;F$o&1E!9Fh4ShL$q=ljwUf1N`w!0!>?eAA&*{>ZPs)Anl7 zqWMTc^jcXzXYCT)?J$$aWv=h|h&d(g8C?17XN&k~=|(pB9|h^(v$m$#4w7@%irKOK zn~4Cus~@PZxM27Zp{74{ew%9bx4{h%5BT>#m0?rFT%|1!AO0f!d;6`Q6IuSvv4N9k z{{W8F)%~2)7#4W^EA5E>3TVN1eVm^`Q$g@=N|0f!fXB6QOT=uotDTsC7jb*@GvWDv zXL%GImh3+Y&Ak1e^@yAccw3Wz3fJEQ;Et0a*tR+M#Z7PU2SxKllUQUATF3q(PE!ST z&!fV4tB9)~dEEF@NBx&I9Yb&0qISAHX%HP=J`?6QsR(}pWH={0OjtKGW zGg8lc;VmIPX`{&ZuP(QVb?d%d9VY%pc&L-5aVM@9Cc0aH z*^|TiTwFrA$M-lD>l(MkFAZ2LEF}&;mBIMO@+`W{{SlI@6n|^4z;1>&2anh*II$MGFdQ_?B|SoR(;9Gdg`UA=~Aoi72SXY)J*=J>C!eq6$3vUS7cGt z{q#J$0i4t_NC!EgpC6S~p5$-f^sQqP4qLKwKcJ}QyHp1!pG?&ook?Q{4P4)fynUu< z7LRdvbgQ%;tz9(m^Qi2Rv@r9i(u&mH)V0_x5Xn5jN4c*&_=)k;L-5tCjMvD!M@`(C z@t=$T0JRLW+)1bC6K*3QzIYYm^6H)@@!qNsnXaXgzF5;IpQUG`_k-vzE8pv zs+C+%yA!?mmHS0&z9f=MeI`bZBgXQ2*DK(khTb;#tE&&QLm`cy_m?sQxA66^PWVmx zC+ZsG$EoNy7PQf(Y9>O@IRmaM>ttv@fDZi5aPk$4fW!X(H zV}eP`zxBDp{3G}s;SY!K#2N`JAU|cgvy{ni zbB>`{fI|=Nk)Gou2o zxwkR{$5Bnvhnj%;)`5Uy2l-c%IdaJHDaq1>k0QMA^W1oY$9ha@wY5JEC|nMwWU2jY z0h2=_=5vWh$n)C{{VMY>HXO~pUI!!crGW({7B#oClTPR@i=(%IN#!p ztyY}8ryH+ZSjyJ4#l5s>m~uu?`WmUFPV(A_+>7fNch##Y zG{479sav`vQ@`cSW%$QT7usi^82#n8Tz|X#L$Blbd)ACcYmjLr2_hJsLn{n0BOs4T z_w&4`51wT;ur-&vQZ0Ht;{9Um*P1^8eDpCq%cDH{inFWf@1|eLXxZ8hV`JS$yIf@ zI<79)bt5^yJzKZjjvD9T?7lDY)+ViL=bHML;oY}&Z#B>LlZF`xEu=k?n@@p{u>+npbgf)sJ+85 z9QkNUkIlEA#=TGWhVdQejeJ{S@QcF=CAz!0PqdZEScg%&9e~T9K%m#2{7}?%`>k+k z8c9E4(;!=0FyGukjGuGV{cGRw?<=c=%W(ASt4^!-)BgYjZmFmKDZXXhL7&;Ujv%RD z1g`!Va!1xy=6@)wf7{2N&j#Kx_*PD}aUF%Ew=+0YL?wwl3h6JSj|72UYw^)F9aF>6 zcqd1g$9Liz$n@AGQOXHh4*vk~6yD$P8vV};B{?hXe2nqS4!Pe?>c@}kUlgYB4~MV5 zIL{h?Yl>7`Z}gc+Lv(Y4p_|zoA)N zrk;>p^DINlkouM5KaMKYns}9Pz*f-G_CU8AFeD`L`BM$B9jluMij_(V?(JPaShkz_ z+ULUY6Y zud%Nc)NDLK;EhbA!Qymo2+j?0IakZwrSDUJdOvseTs7iWTh9wZx?ex|DEk7>REFvy zEHVNOTDQ5}*v)+H@Z;mV+p<~f6JwliC#`!YhkR?N>X59q^DAUzVD+xZs&%2yP2C@c z@iztLc@1Y8u)KOchgM|_a8GKM-v^A=R2qy^HuP%Kw3S~3el?Wh;*WsDP?R31)3zBM zc*S3|j2s+wtov3N9M+Yg85QSNZ&S>zNtX^nj8t+E2VRu+ZaFm!je*IoIHSp{28bqX zl0{Ux864HAPEJ6o*EQ8oMqwJ3W>wcT+OoZiXXuvg$v^ryP3`f(NYg-2#s5NC*bva`> z!L0f0bV93I88=#BVUQ~_>rNrQ?R4!9INR2%+*qumA!~Yd+T7`eE>L=$t6E7D?on54 zWFU?!LTxk9RdZzVKHw{%)l)}L)?rZ^Hf*fCfmWk!zjW0rE^5#Obgnt2%yCuak$T$g zl;W+d%Hu6rDCay?h^HM1u4&Uv-1BNtig!iVcu2ufQI}Z%0M#)b)evBMQaRcQ7|lY6 zqLLiVP@{;UC^fn~i%HbJ z!>guS8)VvlI{FLY*Nd5~PYH1Yrsr_cM;iZj(1k% z7L<>D)!XYIvd)-t&`K1a?&Mc9ss7D3@RBU=hdlu`^i=ac8pcM>OXhq%eAmP5!%3@O zx;6Yg`$;vs4>IfXHPPGt)G)+(oFB%#n)~*2@s++_5*&8p{3|{F2>AFNzhfsKTEeD7 z!Z^uuzE8a#L*bqP#ZTH(s~^1gdw<%-%{tD$<27zS+RsjP%S#=6{5}Zy@4bm1fvMy8 zCF7tzYai!avf&;NZuXDfj_f}QaB6?WkKT`<6ZWvv0n130JYThTkldLQ^RJ%2;ZFG8 zA(N+*`O=?;J~EGn(ps{79m0=jue|y!HwbWa(zQkRqv+H7ROn@LS~33s0;pvDsk}aU z-5<9#^Njxh4m@EW&Ha}r(>0rQ;4c@(Njh}?{L-hu{4n;4`_78|2f~wH?M3&m^FEiK z_NmYZA>$|ORPH}(9Sv6-qvQRm`Jzt)_`YAer%(CPFT;-*u>Sy%M5mstYpy&E!s~di zy!q^30`SB?<>%tR%=$zA8q-JJ^0E)1sT20I(%9fSekQ(ihv8q1CIfDe{{XFNSbQDv z%WyQa&#q{f2XLGgv0r(OE)C&0t!BRTeGhN@R_UZ}^CJ~$KWg1SsF?+L1Rn%Edne2^ z{{ZJ!SKx2N3;-+->s&QBOM~yUe)M|yeh}c*{{Sx+-j8};+RD*K6DS?IsygTGb03rC z!E`f@fY*wTfd2pyo27vtiL2IMvlqlINRK&61ME#^xMPCoNlsjvd862+k#L?C(p4k( zoezkAYFq1;V;$2R{{XdImZ|$d>i1;rnUCUYrqe%Top#}e+pfy`fMt=?dkI7xvvvw9v$$`VX|c0I{{skxQ8Xhe(w&h{SVFfk2>MZOZH2tk>J|} zv)d%?^LmqA<(8m}ZWT`$>0AbxJI!zcHyN&`-cK$CT%HAZd_frdILEpB7lZjG9*!PZ zs%uLU>)O%@HUrbrvxcB#>7T}{UdYm1l1F+X-;O_8^l+GHP{TqivEcDE);l<@QTKm= zVcF&T>~ZKR(fMd_6x0K+%-~dsG)OsW-K{Kq!-85O%FncYDm#ngjvGGJ1eZaE5}=ej z4DO{GYWj{8?C!$iecZ9C7ju#h00Xuvc}oLSu2q;|*JU`Qb-`+9-Z?oHN9=EM{EjnP zqQ&NHZQ`$5X&XR0E3ex|nmq{CP>Gdkq-_J_#b1L=$MDvqb_*EG3P)T5swi#_Z&5T!}P7R*L1l&t^S4j*-nBuW-wQ#u# z->qhNi^X>KXwux=Dk6@htHk~;e$#qxi4?kii*OoVMpW`^(xHTWywcGgt_Lc_Vp$ybhxl3hJNT>OB*}Mq43_qc+1$!^KhnOO_*?rvcuT;Rs3EXMlw)&|l25s=$HQJ6 zv(jx6+S1)n1snm2=xpqG`?bkZylEz>>F3n>?AJfWV_S{+Vc8WRv5pADQJ_!<01Bh4 z%C=UMT+6_YHe$!H0=gHr$7fwGNUlg#T-RsHV{yw1MpYj~ z-`shtc<$fex4}D~iLY$G@Q`@Uce{>BK5db5AyeB45mS%vJ05we9|C?Q>pvH4rtqJO z??l(n{*$HO7{Zm2IofuC+rM$RdRBk!?PN5qC&RuLw2R7u&c#GgCU&44U}vxj2jNve zWL+8LHrkwN^Ftsiz;rd1VTy$uC$)Pw?>{I0Nd0rdoUaL=Vezn5`qea?Cu_LQDLDME zq?XPtqv>A=OxJp3GfN)F+qOhKRfhzAb?i1fqd!Kx~q z)^n_<9ZK|J{{VcGNpImuo5W`3IL6srK5^f__}5DIX&^DO|W;<~RThr#w_&2CgEvwMh4X0Ku-a;&!{HX#NM( zb-RgBt+l&g6Zf2qBK=DcEBQjTOvBXjF<&Mu6e=Z*1ne|$1Kk% zp^IN`5trVRJU%MGLoVVBP98f(a!b2T2eKb+e z6G1BFT}rUeP-}+1wR;=MEgw0J$jMw}b~yJO*Yp1XjJX2BW^}VkQM79=S$~czNB;nC zNB;mxck|-FR#S_IVof5bhT*!HrSVmpzob=?^Rse)Kfi-Cs@@?-vi!ycKA)Xu_=>@=bjhuha`BY|@U2jX zsi9z59aV;T>0ho*w+5GE=Cg=SzFSt5Ub2f{dMbQB@YnV)gstKc;1(qDTT#YVK*~7= zy6+A6Y7I+4Hu0#*T&LI4ux~WUbnB+Ko-(BmdiXvP&Y_LK%Li5d_KR?m^mb3u$K-qi zoWmE8e`i>Dp+<=fL~Qzs3$ZQO5!Rgw?=96?TZ02NOav4qyb&-5*@w`?a z+3{=F1q$GR-r+Ah~pQQ9}NOG~}Ym^8Wm5a_r1kBRjd?)+V>BPGF(Q6R91vAIif8b-z#jNot& zCcNV6;ii$~k+N9i=BCuO+ucTXmgYk2$1KcqlT^zYId1juWm$Dh9A#3xl&a3oQcBBB z6k@gIj8>6XecN(vzr3YZvw~B56)xSIAq8=oiWxp9MX5^;`20KJ>&-<$2WXjqi9a2t zTJOHilfeBeo*FE-H(o4sUT4$oU|u_BLVxrs^{Qf{MxMP-13Je`4B-6bFZ>q?)coLl zbK-vi-0NDqt47Y!&Pij*W19N=_G$Pzb>Y7NMRR#;v892WWqV?&{2=|BU&X#OvuU6n zOmgp+Bd;~}hl@N3YvC^kU9G*iMYphUqaKKHUz~BT8{u&jFnAggy;)UP@>(CLeHi%e zolK85p;6s({%S{uPo#+aD`PQVywZSvjzwb2W>oa9-&E7u-@)26QXvf`w33gbO5}c+ zu6BD&6UBYTQ;Bk;Hva(UP(}sKw+D*K)Ghq6y!Nh|?%Qs7 zt}EhKiS+LXcy{l^8nw#9ZEFijE3xPR&3z^oPNdXP;zJnJ?2KJ|S+un*C6oc&wQ?RT z@aKp8WoTobHGSMHiPReN9|`y;<9F>-cX8usHTir$;eR=oPT=pjKuFvGBlA30R6Z4a zRrnt9>N9JHUeW;{Y2f*h5AR_173kNiMvQFL*ImCY?fqE&yMyTA6=+hWj*Kx~A*#Fn zUT=q+rLVq+0pnkVdiRCpYnvo#?embzGDp^`_(S4ux#3Hd9(%NEc}6w#R-0v}_?JeG z{v{GcG6FI^YlQfV`##v~3isL~2xmOt4hi?KDp)58dt4l?<!_&n1e3ZJuTIf5%X_`A8-fVx4SZ>;czeYj2h@yrmhwc(epv=^ zeulg6hCdy(4Hn`%J!Q#^;0GtAR59?X{hf8oKfw9^CGfh2E{n!xGE zJw@ycm>Xm*nr9dlWJFa4x#G=JTj?2-IFmC7Hs-f5ycV8oHmD~IuS z!(S0g~2J1ud1(TB2lOWGwUre}bC8)H8y&3X&zYO>* zA13HYEB2A~cAxRb!gH`ybs6otw(PzucuwU5H0zPr_OFaZ_OWT!c~tr}S-0_yy=~TZ zIR5}@x$AIVSyx!LzGuqf{20Ku%|fd_*0%VK;aLU*$bPu1@OaC^Qw)jX`W#oqHs2F9 z*t*Xr{qM>j{?n&n&{nMM1RU*62I90#6JT1oyV zzaI{GRxXw{^o?WTXu4Y455m5CyZxc1T;lBi0N+)QsD9A*S;F0)`|7uc2IjRsDzEQn zk5_}Umi_5J#QJ?C@T@;}J8*maf~JdC@Z5jL03Ys(`6}b~gS=styCePuRA>18s1SDD zvG?6uf2eqw{B>E~hTu$nOLIw|W3P(*F$l@Hi;qAlTjC#tpy108{6&0KKgW$>zU9<} z)@|R$j}Xc}N#*|lzN(jpbmj5XXVT%kJgC*@Gwu72i(U+cOEu~)I^z|MseaHt2(asN z52oe=HSsO?#SatDmJ>ctebtY1;;#~FB#$~)&tOe<(D3UmgZJd$%=Ym72ZpA->9g%E zSN5~;m4GHKhac@`xlMQW+0r0Z7S5o6cm}>w8fS@hBl6qM`Ro+ct51eLG1L$4w3#{X z_3P2#t{$PRp?_8t_)8_Ez4?9Y_FokK*|(aiv=;ZKE!<^#*E6R4MAW=fb{VF3+}UDH zb2?Y-^Wuw{1lN$29l%=eyeaU_{5q<##6~-?uDY3KONUF?B%17gTf}@Dl~%?oxOwf+ z>pUj|va85DS5cCYk_IpLlO2Ni4rdQ`DRj?{Cwp{d!B+v({aBz_fO zC|&~Mq}Wt+p!DgQ$;rv;5}o&CGM+kAA|lPwtQg5WiVE%Gnw61+>R5r0F9d#+!o6x) zKpY>!ppn2Eja+pKa=3+n>rE_4!0%1mS-+h*2RW;?k4BQa9-s<(1CfKpG%4v*M<1Z9 z;O0RJ)26If7=~pD0rFniajo7Y;QEc&RL7`;1&T`e8s9XgEhN!RgMTrUBfn3Ll zd}m>%+C9b9+M=jDlU|-53n@!Nu+(QMq>I|lxfQ7S=sQ~Xa%+j~Z8UlYx_M=Xg9a*c(vHFHZ z!xE`YRm8qn{wHVgKlX_62aB#Gw9=<&py*pYYm)H4f&5M5tMJy)NXlF1o=oi?_357r ze`Sm7&ns2&j#W+>ZHM)*ZL{z;h2ecK$hNacqm6QKF~Ak7rz)~ev-u<2#pii$RZrO9 z(r>@@xxjoZ_(kF02MF$NluLA1Ej)wn{XHw$JR^0cyo#3dBLUC~@Yn~$-`WGkw>}a0 zMj`Q3=VNsM;VNbI+OTRuWfebX<94P`VUI5Srj-OYg#QhqGSr@ zz6toYFB^DjE6EVYaUbsPp(B)#brs&5LAMy~UpH4189T+@GvhdiF2&@Tg-jkMJhOwd zU)SN}VzsX|&U{tU#m|E-p>_FKF77*S72CC*PfE-2mXi108@z%v$u{q|>x#yvC)v|- zT@yb%;!H%pvMciM$uG$8U)wvv_dX}pEtWV5XzhRm`kdEU`x^Wxn%lvPJ;k}+^EPt6 zmDhYx@R$4~I-Rw`LR}s-{vUIX=U+*F&z}Mzw)k;lszqueE*QGw)YroChZbQn?5h!m zt1C;~R@oLi>ontM@l&TizVZB^kFw&-RV-xZD8Gia zXs<@&SN{M?t0JOXDC=4pW}Bz$Q9g}*KayXVC&v-LZ2MMulczNJr)b}LHzK{9RvuWI zT&hhy(_5ytYx=X<=zd?AWs4UCl$>Uolw`Mzmd$>vX0DynXIZ28pW;`;MqMvZ&?LEp z9NW&Q#T;?>TmlHk;y+5-8eha;ixVcT@fs;~4+>ezWRyy!B)etD$r>>X#OE9FwMOpa z2Oq;96+BU(LF8EKGOCV%Jy-D`jl4(VUz=3aq?7@G8M9v_JhL;Yisn?P)1O+gP0L-} zVAm`q*||>J*u19;io;ZLof>eH-ch>0cB8ag^<{sF{v;kH*52X>1UAtk#b<7(A}Evv zMIOOG6$iqf3Qyt>9ck9WGI4OO+;jls)fnw=H5-tMg^q9l8797h{hxjmFNO5S@n*Jx zW|AZ2h97lt*0SRMAi!{62~9=XT)dRyyK-vDF0Z>jrj2W2>D~25kp9wILTR2RNF!c+ zkWc1o%gD(eTJ&#^o+XdO-Z#6tfwLMm$oc*e#d+Hd99PotJ`)ju;Y=PLzsDMJzpa(e zTR+VI0JO7On4jikXaVHcGvj+94xt_5fCTA=^#eWD?XMopsLnD+ zC)noD!TL{HuKUqk%=08#k=0Eb>7(&5;w zw;dncH+3bv8{NrukEW}$*zd<+U4Py~e%;Q|Q$1=$h$-Dn({C)b8*z7Ka3oBTk;Vw@ zLF81<;=iS7VkqLNMy(ksMoQ_XnrpgiMvs%P&CKH^@;d(jhkhlB!sJ?AzwX@iKf-Ia z@h5^TyiaHLm;(8`a*n^nUO8=W@Q~_oL9X+_e-ftCHrijYk`u=#mHJoaJX^x~ojiB; z&Py&@>*9||uk-x>02A@9E8#3|A29yc${#IXw3piczZ03)JT<83cMTQP3;;bysxgAE z?Oy3|W8v=|X@thhCPxkjDt+tCd|mL@RnTW=juP<`^0JJI>fwGl!silrOk{nICOSAv zOZr^y;l47Zn7^xI7qhIiY3YAMmUZTqHOpeBYa5K=q9X^KijoUP2L)^IJ*0VeKTDxf zGN+>*Yj3>djwrX%;6bgOkQcdAOTTg4yVZb3L5`!Cgnd3S@pGHZVc zWq%L&i^I)u_QMgYO|g^PI6Ifn`g>xwG~HvwK0nq6#s2^tTC6r!C;lYXWDv8=KHxxk zDyQdW=tu*;2jP^sBR0WtWOIycqbxNy%}J>z?PT?*7^Ls3vu)^-dfQWr!;GUH!Slq^ z=1!e$6w^&gFJ`Ue{{YJ8H}MM6D-B950b~riWu#WShjv5?$Nu^TxeJK5xxnMM6|>?i zsb{^GSzj*hOA>mLYcxg*o;nKs<13>qCI+23JG7E-yXyXI{SzIEm3q#nf9l3H^jJnX z?O!~8(^^gc0L5<`_;=tQk#f$!sT2NL*~QCe9XA{S?_Wr2F#?AkmEzg~OAm>E z5I!nu7V9teE}IRFp(C6uW@!{2*(`(bucyG)Q>m`ip=#11I8+5SAvD)*&usK4-r6YWB0+YxTM7ejf0W_-_8| zMYlutQr>l_&)rt)zk$tazLcPCX!G^1t_=-t*jxztjx+fm{{U51xYEEpj+N!*xWuPc zf_g$$UX3X)y7pd3^Ei_-mO7pn8$XV%KYzbGB`R`n&RnWb&7OJUpNE=0zi#kfS*xpY z%Ji=v_=o#D-{`PDso}M0q6C(QsRP=+lDo7;ZMdp8*65Lx+B$Pyy+uzG4q2=IW$@1% z=J_RbsZQ{|v3o!A^*&MXf5bl!d_L4dM>L*NwjL+ywe%OmZ;m=oi0x5Y;Z{ry%Ey|; z_?z$_M)9?)YC3djYkjvN(Qq945ndCoXg)9aZL1h=qL$s!h*?uRSbb~Hl&fIfrn#y2 z>W|r_hT(4!u$<7fJW5)wzwlR?_Kl{!4a8xikYM))r8T`9^EmiDnep8FV%ABmxJn{zMRBCW}sJ!r7tvI;tPnDy_sRsr*#|EpM zhRsgI6~<~Eq?1=2H!2gMGNyBQ+bZaaySzH05%s7~s%qSrAlCqzch$Zx%%<#~$@wV#n^9l6U771ITgK zw}eWmJqRV1Kzh|_E|_%{W?V49s*|P%710Ybf~49wPm55iq&EsWoK{c6dD3ZUb$}uH<7MHeNA@3`=`ZYCG2yxFGK1NhB_QtoC)TpN4T#`Zv$x1*oT(c z4;={NyyxLIs*qVnxqv%CuESgLa@*LJH$Y>yYw}F?u0C16vZp4M&)j9hf7>|w;py_Nr^bGQu(cnBeiXgPYXx6k0j&FviHIdD=ZpjEPJ`k!Z^@W`b?MW=XH+A2 zP5tcrgBz1^9s+OK&Pv{F&(!|_XU_~@WTXf(JFRnCzwEK5OvKwpgXzV3CBKfX+;dhHIPtB(j^cD6(TIrVqYum)bzXFLoFQ8nEy@Y4!TE~uB(xoHnus$&65wfjC zGvev|8R9q-2Thmo6`6aX>yT%CoZ}wGzTcDK--a%in-v-3?uwy%@L$4LInA&c{{UoH zT^>5i)A!=h^dIpS@U>#Sr5hg*Hj%B(!dlMXfuGwH>L_J|nXDS>pS=d3sxYNUhB`;1`Xr zNdEvs+n@GLeXC*MPYT+QS5Js>z}s3@`aXeZF%6_c*X6G^zlh0cN{cwxh#0AV4w>=R zmHR4qvhZ$^U#~k-x=kncFV$`UlIP4h?b5!iTa7Bza1nlr1xGiCbl67(9D17aD)H`h zS=yB(jh`83RaK**;2KBlQK!br*J`JpOIKH=e#!n1)AsqXMsfbddOgpLbm&3(&||)9 zBL4v5PM;Qk(g)C2E6;eZ80~hw5yw|L&v6^glyv_9fc^;6fMH;*j@w2JUytGc0EBD~ zW76Z})K(6s@pjfQLe2&~>zdWRGsd8mxgC0LtEYhCJX^g=lKami6%5w2Zsh*+uJJ90 zhjjaPbhU*-jxamdmuvU-^WGGL0B5yic)Q|^x}y~rxLouNSy~RJ`jy|x<%W4R?`7G3 zGX+&DvTXe7ILy+Q5JrzPak|j$v`Df8)$6VxZh5G*cuK%Nl{NU=1_f|pW$kl>ywUx| zl&`ArPd8pi_?eCOsLvRozV$JQ1d94qvG}!lHzvn3ak$e7$;~Ed0R-ZyBZb_04s%aY zyQMKfBLlgs5vBzxI~?+19C)h{r~{=oIQhw`l`~jMMov}`DQ?uJK04H)033=o3d@+v zQe}2dFa|0qHi6IQQ_F=pCaK&?D_ClCN^ay=4hid3WPRta9jZyBJk$(vU2s-MP95En z1_JY!I7YAih;|00LV_j6R_h%Ja zH)YGsNC0xxm8k16z=h;|4*9Ng#U4A;w5xV|o5YL(mMq;X!TvCQ)pm9XCY_+%`LYav zLv*iVh6ml|mWVLf7B4WV%T6b&d`$S$pm5# zfnE~urLwl2Vj1u^O(KHKeQT$*(Jd?@TT2^djwDPXAix#V=sI_mV54s)oa)AmJ>R_X zGaUZ_8H`#!SoUA9b3P3o3t@=j{Bc|d?E!PD*?3iSO$mbE>lZQDSp3+;lD6I1?SYf{ zSFWy|&PvxEt@vzsgX4#VEGLA#HeYDHb?geDRAcmJ6~`=BB67L#`Hp2O2`lR>Lm&c@@cKrT;x zynjsB*FOp^ZS4FRZ)LOvjywU1`IAi3Zttzd-i?!YYr9<%J!WWvJw;O-LLE;b$%QI$3EwUIZXOPa{F&=?)gPQYw zK$&N07-Mm-yy3aVrCC&@?@pW{N;2s`W}W1`oTVhXH5As3AFsU4&kYzSe|l1Wva$iblKzu&f-8T4(m2ujLula_;>T{{XLFp7EC-WjrlM zm-v)S@#xa z5YM=kSw~uQdPlQs`t$5g4Pt7~+f>lY)u)o;N0vj9=O(h*dBLq4ub6REC)*0NvN%;x zOEVk*2YUX4q~i*D=#lC>$cTcbxz8HwHdio>Di$pya|U(;~BIctO4jp_3O#5$4S?$^_T>ZI9YM?!cWY<;yLSF zB|h5bdpXwT+ES7s%CPNUeZhQvnDC`Ofz2M)&uC5)P`fV<{*{?etmr}+?>q&S2 z05j24l^oOIym%NowrdYU@mxBn@-K=-K6n7(Unh)bzqk1swf#+#=J{rSfQ~B%QBD&3 z)9od?e!iWr$Cug#+Rbk<+n6RJw+ps1;{=bnCM)vF`KO3n6!|e!zO_YtsQgy*{{VycpC>~Z#e6X?O7Zrz*I(=P zJZ4QQYc<&LkVmyc8%YF#fhs}BHSW5Pg#0zCsc9_JpW;JYr-{B0+FU?o(WS$W;XG!& ze5=Ji9?U8#Sc}q=)81NN&F%M|?jMe_tW)-NlY@QsIg3w;#tUS&)^v*t=7eGgzOzY6 zeG3ZD@h8M>Q^b?~r%=3U2wkzL;ZS-2I0CY~N#QMDN4Y6`Y~Tabj+I6TP683gHTSq2 zpCXG`tTZEcvsUZ9yI-xhKBFz8mqB|>J*@j}@(Y<{x|_|Ab)?(!9R4+8YjU^%cBsny zn8kZ>l5ti&^-)fp(UYkz5R7)O8}TlUEPo2Tb|XS0yzv8;IOKukkL0!O7qNM+RP?T1 z^TMlpW3A|}K3m(7Dvzos^+R0}#L9$IUVnN`{)fPE9cr}Zr48I_CF|_u*W}NDWcYo1 zbK?m7xJk_a05AiuHTJLU%kXbewa{(v?yMO@42-W)T^GRb*#|(^{ACuYtHb-anGK z-KPho`!)V(@LeB45$gJ#i>DU$Y{!pf{{R~2H5)CtU@Ow>Y~z+s7Wjm)2(t@obN%4Y zjz8cjTrQyq%V2k}xZ(Un=ZLM%y7qB?zRC^%0O>={bBcJ1boq92t0m;6R#yCuLjDXl z<5_x=U>tx2bUK_HNx~_r|a1~VUB=oPp!rr8kN0EWX{{XaEvLSzDhsl!Z z6rO>NX85nc+9!)_&5o~RlSadaDhXe3YsPG~4~*X)^{dNogspFyUP5qp;pAWO@J{wbWYn+(J-df=F z&lh-)!FRq~63Y=o^FtxZ6 z;QAWtoh56>RDU~XoIQ=o>&lgSZY_64p7KUJ)QFiCUMT|rGghG>fz5KwSorzVlx3i+ zA3O?@G$W8{@yEKQNPWLb$;{}XR?^gT1ml{&Y(_!NQW25btXs%XfNP$jQd%DF9%@TN zL|~q2Lv}S1NC@VhIj%bk5dp-4F`8qJGfGZ5rXEjR)g#87J>iUSexjJ&2+cY0PX?Ih zo-0U>4$NbH(@?tu#Xd$L^H4~`In8YpbVfuorg;@sK*J`jO4;e&qjdykx+3g~lsVB( zOpY;8NzWLoa!2h^JR=#+YMqV>wB&N%5Usr556OYifvyw7&E;y4N&ek>SB&9Pp-!Ld z=QZWl6PT{hp3Xm=b<>sNkB82irIjjy3OXK%*6qg?%-QsA>iv=iMni%=D<#Tkdj}zY-=~29WVuwto{kW^8>;WosV>JX2wo7QHF%@H$IWI@%$w+Bp->ZOXJI8IhB7CUp-p-#^{*y;B}Pv~d6=#Ooi(ISeUr!5$T*N^>s0Q3B*7WSnm;=5d#{RHa(wRI zwUK}ERD=HjA0Mr0M}ui!RCy1CCkODKLCx_-A(AB+`qdksis+z^v}5tFo-TeWPDU1D zewCYd@f!Y8cFNg4wdvB~95i={?O^y>M%PEsm;V44lmnZrf558;Q~1P#B;J4H)!{cD zF4gB;`N!#+rzWMV-Zs=ObJJ)f*QZB^Fm(DKNkbsR(~hUFYQGtHJ8qBSYns)*G0w#8 zxg`4<;;sBC;(b_;Cr-FvdJ+w6=|2JdZL6FM7GFZjO?Sr$mf@A;(lwqNEyJtMNQY7Q zsi@9KjzV+qSr=X})$cR9=&pS$()1tM7sU6)P1f)aUzWRF3-&y>wZq<`vEw_rC;l-IRO`E%q0sFP{b(7sEqjUQM9D-nx014gx@J0%*3$()j1ddOH{KkQcY60m9jvtx^X$3 z#@tQ^$~x3>F5{Edkz*{`Jk_gfe36k`wxJWd3k6}&Tarf=ZWuGvQo$B5F; zXg&_Nkp=3!{Ov_-oY#(gVg0Rj4PIF^uL&^;k__4YUbVw`E8#!HuZ$X(+gd3+rshkl zlYj@~Uc415FP56-m*Blw^|%flr5O8cW95%w-aq)|;}0F(JZW$bKQ*0zfkmAXe5 zA1Wf?Rmu&%YR{SW=!|n-D8uFSogBUie|!9w`J4yC&w<_)_-$mVrP(aEL}FXFP+0vv z1$NQh>CoA(oM&G&b_b<-{{Y4hh@LM00EB|y;XlG{J#PF#eIJ=Lt^TgcFYh_+p4Eq8 z@aOi4_-`9{k6qR6JVR|0ZoPuk5hP2VO5_ZV^>eEPmpm`0@E zx~D5SKAPIf??uegeGhN3vinX5=OY|fS*2;AVO87Oxle{S(0GSOw$$w;-yEs9AL;e4 zN7Jlui-hf7PBOZViRgKmt`8A_ttu5&r54j$G}h$ zx7>SwM;{d7kn#OYyD++qIfcCW$RBlc-|$0TdEzNN`|0jL`|~mU&3U{TjH!;n;p6XbR=WQHw`oEz?|+eq>ItVu4phE7aZgx`j4&$Ex7h{& z>tB01iZ(~#_2=){G%Z3+I_OOljI68*vYwUQSbR=vHe2{~s|USN@?SlQ8I<~m#(x^~ z^owJXeJfW)(RFQJK?a{_&Pm{b#dx{4SC!+xd5VH|TfW`BJhnNjWq2y{_SGV;y8i%O z4IO7yyw>l{{r%I;B!_c5oRVuY?@XFWwnZ5^>BV}7g8l+t-A1>5B9O+I`@ivzwIPZTF=99gdC4F zo@?bL#l9hNtM*wg8`x8S^74JVuj!d#aoMguT(qOgyPkn}sQ4q{ZkRywqAI*9<9nL% zPm3QMwOcv&ZHL{BPhYKZUMu*4s_Qef*Vl~f#GYEYdyP_ASde=6ufE{#3-Fme zb&to**Tp^OEp6zY-Z+(i&Px&DLH{{Z!cey57Bgv&5<#NuY52rIVsOZwR@ThVHL94SgqmOGjk*Y-9R z=IZ+8B0=5GGsbW|PaOv}!FZF!w_4*hv?=9V2g;}MIPJUnoqsj)uZZ}(`O61^y*xh8q^7^U+CSauzAnq!!eC)X-k!4jf{G}w z%a1@PqKW`0qKW`3dq?q{(CoF<7kUg2JbmCjPxrff{Y_xeUgkr@S-%b9{;`0m%H6KF zjFRak*VlD-W|@W~4M!6WT8jSwq3BjOHrMfsi%Hf*{_>uOt`DL1t7_$I&TKV1{W4EB z!s(+Ys2vYppzwOvRik*)$52rX`z^G+GR^Wg9Gv$0A8t*5MR2EzIX->MhsRolcisDv zf8CSW`AfP<$)7ih$}3TqG(G74EBf*}duz#50p=gT)~=o6JIfLoCt;4@)&hR*X_H=+ zTyC$@Dq*SC(W8bqI(3z#v^@_=_|2_pOcY)*QQ3`meh>KBrfWf9)a4P#Pu|ZTjePGl z@nMbMtuotPp2|V8L)VNN`AqA>z8}vhwNjE(e`zZ-<+Gjy%5zFi(B+?Xx%I5$PS+yD zvBx}YI6Z5e*8UJ_ce%OI=JH>z(lQNs2ZBB{>bfk#C%R@q)mY}ehr#~<7(6|$qNLL- zQW4Oe4Sq$B;Z8K*nvSMjH#$qA*YAt`(fM8@AmW}Ctmi?wL(5h3M@t7>@ z460!2E_k&iN{v zIDC^aoqQsdH$CHR6MNaME%W~XA>J*sUkP{`%flpM>h@E8cD>LMwlzMVFU^Df>hrBZ z2nM<@5crz!UDT%3wF#POrgG0A?oD9dm6z_1&c9d4@U^gbdscUxo0OkUX*;`lEtUEt zexdc*)w6pflJsBI-W2ma1Y33Y%_7#CgY!K z_e_{`$1`UcS_%8@YaQSsxih?NZ5gM?gP0WO8a~cCNx`@W&Z#Sa{mBo z{Z|nUcWE3)#NUek8vU5`9Vg)z!`&(wC$O@NPv`yE&NW1&riG$d{INt%RG7 zE|dIPDfu>%^4)5B2A5@b7L^^n_cFpfxf|4}#(y5QPg9R>a5`6Wsc4{SOMbEA ze2g3F0Iok+w<<`*ESnPRVb$H-TaT|Ralg*jKR4oBO&Xb`tI}Mts-sfNW$hxS((+BT zy$(ObR?6xQ-lv``&HQihmqYO}Yny16+UFVb5pWyoE7di4cfxWy9%~Nf*eESuOrcJ- zK1r*i(BbYP#^p{mu+iWMv};TIWpyJTFzH@f<6nd~I!w=~czbh34t%cT>0UitCNnORo)z;$ ztRLz9edq2tEc=GI{{RQ|EanQGZIsrE{=GdOhtV1)v2Cctvs=m-5uOchTR0#Z`G4WZ z#hqWmSBqn+yR;zS?&`Jl4}*MZrg)CcC$+d%$n0xMb?9R$^V8p|>W{;?^TTY@g{!)j z=c4wK+vnKpU>O}M%t#Mvt7hus3To^?aDD5NribKpX}Cy{VfLjEXP~KK!R^|o5pkO5 zb7<_s*Kum)c*#@GN_xmM){;fXYKfSGl4)A!wxt@-EEe1;tTH;(X+IqEOXh~}MVaQ- zp(O4#&ur9e;8WSNP|1QbT16bKS=or}2;!k()Ki!@UDV!{szXWch@5dusaOouWllbo zqGwb!L^6yV3Wb}wXE}oqF3gT@%cm^>y>snU6KRgdV^{!`=W>{@$O|QK8 z+T1yuVBP6Sue_U8_#xqqKpn6ulj^m~>p!zajD)qCulxj8Z)xMO*xw*OTGO-fZItA1 za5GgL$BA%1YngfKXG=TdET&%NSv0<9hiad*cBuw@fcW}XKYj2&#P(#BgrCB`q_))T zE;$k@&01SsF63fJV|@Prvt2ObY{HI}sa*P;2a4QBhE}fyBjg*80C<|sF!l^U=y6!O zmWQufWE&}$=qv4K@Nb8&SLd=%z*c?l!T$gX-HvTQKAUU0haccm{p=b(o|lVst3@i* zYJQg+F!um8frvh%&0%?n(Fi)*+ay-gR5Pvp5QJk>sT~@ z57?*>+C-#(vMN)lX?BbLwFk0_@v$Bv<`s0q(Xqq+xn>n~ryCvt;m_F8B`W%Yj1TYE zbD)09z75jA^WsJ$(JQ&T@vfC@IB-wavGpH`kRT!_3-qrhdFK{pFGk{@Z3v!goZ{B9 zXtSq$C-6>^pr)RLj_d_#N2hpuPanCpg)l$5D}vO%DKe5i(fZdtseDp%l5R)mN*NY) zjd!h4zneHGgU8o*l$$+f>tE8XRH&6kI|{_q{A;Jiq^!B)rg2_Fs(evU3Hw*%Ynj!) zDIf%WtM#vE2f?zv<#RdYxQRz&x%i3kAJ2cX+OPn1!O1np=^CHgFLF*!d)E`Jc=8LG zawf|Y>suZH)D7*(lROi}eGVHc{?D6=Rz4pp!s2i|R|fC#9tXb&`s!^8YR-$z zu=-R!Az$4u9joOq&yzcG^Jn)SWd5349A>QF2tTHS+aUmL)P$Tj7==_1ps>0Ul;h-PS9;6yuGth4~9)YO}G~qXCY%o z=zpbr!>)Lv;xEQcbL_~|PSQWi40+nWTG04^@O#D|6tyv_>J2D{R^24>a#&}zeJ$|Q z;Qs)Iyai&A*lFlx##%;RNv~y7a)qC}4&7g=_B5q}$|Gp5YM+tk9|u2VTRU?Ov*SV~ zlZNt0;8(qA{v6Y^TR8OHGSy;@M@3v!{WjAW;;+YKWScnYS<0kfxniu3D;bT%;-}44 zUoM3^Z8Q)#sc#w`BTTryykN0g#L_zxi~tEWwPU5TV~^6aJ}qeS$?*R7Pq#+he5q@M z8Db@MLI=JYxhi6mcRxGgEMmf8s#bqxH}@WC;ja?-ci<1gOW%(kI=Az+-xysRn`=z| z@>OnNgdBXTk&sF4lhlw6KY@R={-@)Q5v{k1^lM0ME~VJ5Y8&@i?%RpnI%lW!tWVpf z#_Lt_otK8JmBo&Mq{S3a0rIP`+{Aytb`SUsXa3Az4e#%^YCmRR75F4|tX?LRFmtax zd;Xu-bL>1T$nriisf)tmJ?fBFZu-ToH1vPfkEFa2;Mn{j;_K}S#Q?Fo#odwt!frTp z9>DbWBE2ro!)gqzQ1Iu6B$m@jxRx?yw~WS5`vhb8g|3Div$H*0ibAedk6_o0qKP7)`#eOwU_o-GVb$BGTi!D1c#uhF_@d{XZH; zhz6^6Wl)A=(z$W5c#J%udtH6re=X0%^Q;VW95m>?F0Fp4^lQyMQPB7WG;2*{T5GDY zvbZtG;D-n~bH_QFhTu>t^n{*t7kocGh~g#C>?L z+V9I-*)R7?3?078oPAhVp5A8R{Iu`hx-S>&T8_PTmdj`5LkeuQwS*m!Cp-^R+>^;U zCbc{l@L$B*`4?9(i)dJI@{WHh`AF?8iq76BRYycnpjX6Z{w!c=zFY-2Qe7L;Kj!}c1K}~5Nt%XHJqJSP*ZQz z?okm`n$kN;mnzb`sB{6Tp(7w5gkB`nAV@Ev2uKlBdPzbHy-4pMEl7vZOCX^J2>egJ z+wbDcoO7{fc5X7+lfB=)-u0~K_pE~n$V2DRHwNl;lQx52F;ZUHm*r-Fn9yf>7stLk z9j1ND+WseUo*;z<+0?BL(M5*45UPwB>y$rYr?pZq}8XFqb@oIVeofhDL}*L z_*efioExcNU+OX?F)K~plbhOClT;*;@CrQEVZR1`hzol5Gk3Q6E-8_mrr@)^VoF z|B8s>(D)tT=M!l{-4cvSw-kq|9YR&Kr>>kDO;q8?-SR5E>x@4?PqxA}~_ zXTg*$uu4VH`azDN=sK~qh%vRJBli4E6&tEvrDq?5#UJV$oFiuc#S@TNA!rW0_@S}w zwur77I4#;?1)sR&({EA_Jr8+i;?EIiGS(}*dpjGd(yxmcva+(YUR0c!F52+Pa6HnV zuo+|3?46sXMQ-)!E$U*w`X+>0G;A#d)>YOi&dUV)GBhI&2^n9(omKj(v_${wxKmaL zsx_R%(hN9-kw5s+?A1r5KUJc&6k%OE!?ohZ`(VsIn1mzJYr1-nTbDa_sA^}(Q#CZD z%bI7~Qks7Pw&cPw%y*;;{%irqwDi{inuaYN>K0e1`9VCry^Idsbps@GC_6kWYS!)% z6iOM%r>#k=n>K0x&fvRBtn2OcC|%PvV3Gb!>~-zzZ#_+AOcN`IahcAtMjOx%lH+XT zQ*t+y4R=%IB2c~eRM7t^s@*pKziuKI#IZ~K@se!#4Ab;r+0)ZCA@u8Xs7K8w#ratNgwYPSCBE5n( zX4_=S$LnM0#Do31;6DJ#7oTzq?uvDi#+@tjSxx!HyhTbsT20E@DhEaXF_(_vdMUvv ztATn;muK9MOQ3Lw8gp($l)N-2#FI|k02TwX^cZJ5jf}+k6(yQYfHUBfjfB-{RsXb8 z7^H`T64CZ#4k<2VhI-4?kF2^K+qq^6fKOx0qNvzZjJpXV^W{!^IPy>$j;Ql*yoIfC z`wm-W+yKU9CgF8Gx-lB+(bWQ4KGvJdhui!0ZBnzkoC{vo2z_5M4-`l;B+IOF6OozJ zB(R^~X>n5NB^&=6mT%O4!+;7#1{vr>)!u)$+!MWBxuCh;fPC}KpWA+q1;n_yx*g0V zOqJR~WoTaA?> z0=i;|><}LMQ*fM;J@SA{k62=dWERQyB;WW^{<^gfbUq^Y(U}cGzo*WRg*t4d zefV!r`@Oes?^NANZZUUo&mOf(N?|7R)nyS|O-uQsE|9-I3R4Rv@$D1g*T3Nx;;GZ< zP!nPkI=nXHvqrjU7l&60k2VzaK4(-b)F|Bz*W@b-S!QZ7WBAhFLYNQZEpYNkJzn28 zUbYBPQ{fh=lwaLyJyM$teH!{#E_ZybP3P2uY<^MVrAtbw_=;Ta%kDfn^`}ka1X01H zqxL6e5$Ll<#k&8*>gUGt(#>yarKCcyd^^G42o1vt7XsI*qcAi-b$SSesz3$s;&Zg| zI&Q~0uwE+WV759eIYrs7SPYD4@R5uQ%Gb@lH=n}K<9WkRwaWsJ<`u2;j{7bQ7a~{6 zF+%O5r4~fI3EnVyIrcs9)l5(?m_hU~eCw(^?c8rxsO8k@ zOP>6FCZQi;s?JSSif0?Z~_c@cHwNhK9dm93TD;N467W!mEx3-g=_oYAu8U4J14@2yZTpc?gmljASRd%;hDi*YOc(oddbQEi*k=RdaKdU=Z&wF0SI z)N&6y_Oqw!phZ5QG?={h1fhmSFDlYEWlEQ&LZb`Kf?vCm4_nYHKUPye>M+N4N{%=^ z7o>8XiIEKYcS-G(-3NL^W5FRGzlx{uh~!#2U5R0Pw78Ci-YBEQe=;_XPtT5>xAV8g z6Q|*rC+o4JT`4E|W37v7s?imHFAvm-{^rlAPnv^!&hBj`6GF0khSl%+7M#Fy+}fYX z@r_DRD!QoQzU@zf@qw-8tz41iw=~^-pr8j8rTLnAShdM#>4X{ow9;UkL|tkRWP4B( zF6a56c>Y+;;VsX|XwM4NIeN8{n{82#??&6m{O{G>Yt#npQG7D#^-O$eu#qFF^jFA5 zMVEW~v&DLFFj#K18QXhMa@T;gEl5Jfo=p2w!9tg3&j(~Qp&F-qe=i4uY(g8NnonYD zakHt5pwwdnA3^3a;j`(DLvIKKKp$9!-5nn8tss6#um}0$+hfJRR-RUmWw0tCFW&*pQ|_D-%7G=-X5iZ=<JT7i*@q;)e zB9swx-xFE-VXYK5_38W8Fwa|uNOo2+gF^5yM`&k22?D_3^QG9H1rWAv@l%w`s_g2UPDxMvzyO_1CBR_M=o zr+hCm1Ocw<9`ydo$YzeOHnp@DB%)71TbvBfQvY6D&6eTWZn935?^^H{l)bK9d2*t| zd9(6C9-xZl>ow=={&D9_@ZYi;IW-w5Q&b_rv$UXzFHCSsmv!h0altj8=ckqs62+jp z(m2XFMcC{cEF+g?>{P;t{t%gLMimuXC4Wd$)&-88dPFQs;GzJQI5;W@E$b+c#w!=< za?KYTeCBP_m1#GjS*4m=nst6+9i++!dF_ZK-qsJW z!~ck2D^tgcizW9mx2TPZV)V<;+omnhqcx!(ODBrrIt>7#5?MO9LkY}#IL%Cnq$$E; z>e;kglF3`*K#0qM#Hje^hvwKlls&L_i8UaDq@J>FXU624Rd!Hugzi-Q2XqluDNf`7 zdQUw$`$xt4t{n4XZ8Z_qH{+Fqj`~-~Rf?YACN@TIs%>jZc{)*B`Oi+93eJyGhXk)B z{fFkQ=8-Gn19*RoHwSa@tM;UC{!*>H`YnmqA0ohNFc2jo&(&u%jJlZ{RL)du ze}}*BycHXfQSYe?%I)w2Kc_+D^+ul;9V;86+_|HiuLs)r3@T>}Tm+9cIz~1Rq07&MYvi$p7Tteju8>I$ zB`B-a&~*Q<_6JyoxQ~yWnSE;V$O~=N*KN!!IHC(8&u1J9=vv$dIoJd+z^oQ7`sZvP z=fk!Y?pT$CE3tzrdJb!O;Ax}*4vcg=O80RTzi}ZZ*H#NYKC|vh@4?W|0Dp7Gc(-1r(Ly)ZGfO{&u^pKXc$nl~s&(`{r5@gGrh130s+8z2!LTxYxjK7J7_h8chTH`mhg zm54jh7NO)iWvc)h&q_e47l(uVSv3lZfn!RXw-Z+k(RM*@Y(1%z(p#;h{VS}5@1n7k z&A91G>xzQ0=68qkq42MJ9cw+K^UjYgxa7>(<;C+Abr`ZvITDl!;yKxl%dXRltUk{m zKr(3kJQqt@+s-1Jpr3mx1Lx?#vMnB16%AfUrh8S43O;G>a34?*TWigjOyqekQZtix zNE3+x1(fjkZ~0}mYpX(?7 ztPIIxAk+P3pfL+f{kL6uR-%Se1XW`F$$`ygud$2MG@uAalX*}bK9Dp9sLmS=0;|YPAQzfU3f>8(3kqZ9K;jW<4kvQ zJWrL^O;$S^zD3#-Ag73_lgd58QzZ_pa{NoOHw!^7z=P@5y7?i%mbn`=(><(h$~QRt zclvQ4(g;A)*<&?L22E>Md>$vEM^khwaZhd;-J~J%aS`@%9McfOGU@Y-Ps9f7Ov0!Pq213 z!pgPXUGwwGR=vHX%|jPv1)JT+jxW5n__zog12awwpaon6EzZOxbD$ddIUl;qj3>4j zNn-r)>&S9DUWqja0fasYb1x=Q;P_QplP6YUQdfgNXYcdSZYgcKyvf{d$d-Mf@Fp5A z`$4?aTlUj(8SqkBv5mY<4onL&8>?80W{`rP+~ry>n2R=6!aK!9n@=lvU@4D<)lnbO z4r|wZCrTr+n=CbQ+%5sGry}08PVINLVIp{ywOGq;FU7)`PzMtMAd5AY5?U(yBLFN^ zQhyF_>+(ExvC9w^a4#@1ZeplIKnu)$EYPCg^a+eini7kJWty~xBVlK4T#@a8X%)mg_(|l=MBIn+iZVFkFPX#%v0;-v<(^HM=RdSW&ys|xq|{tDMu939pJrCR?}v=~dViTO;T z0e5FM_F4??S;v%v5%)97P~h0B!kS+Wal60c=L|PEt|-CG2OW;^Na@+|CFYs$RU2r@ zBV)^d|pMr!$7I#)IgXz1dDXTc-B1!b7!$xpciK)V6_?+=prttM^{m+EeRR*osZDO8FaeuSX z&o)UlfKcRwWlE{(7xG9 z=peUigVBc`nYQH*Ts9DJ4Z&|P=Xf*g$|#~0#n!NJ0_XYg_6c@51vRSZetKPGr#{lO z!90xnf&q88i+sslh$&&MoJe?~yk`9-2#|`Azb>)fXnOmYk{NBt#Cbq+`BS@hXjzdL%aYKOBIXm zgqzKLa294`{0tWX+PlH%cI#b35fh^yvoH!44AFfP<&dIKin;y}HzwPE0H{co16`hp zq${N+9ih-Ak-Xzk^lMyRu(<>4V{X1N{^bll0*aE!o*OP<_;p=C=)++`W*A1BFYw*l7$<@1OuOe@*lB9X#3+v|*#4YI>q z=n?4rmU|Hhql7l z3y7KW_xC8>r+?h^@#Fajco=!%H$*?4q{+>2wYb1VTa||Vb8m<#ru*gEjK!Wn?iERv zUy5+~t?_|vT?hWUFo1G@ZQGC!KfOol0(Ifml4bj_Ws9T z!dybw?92tn-2+F%dSYc2GwGGurIwG-@_ZacAT6j?APooczvUD$G#9wy5Z1guEJf_D zUQ7YV)Sl-17Vvp8^ltlaLIO#cv{c0HWd$<7b|&?Ouxoz0-*9|QHV~x{Y{TY||MAj% zp__SRgSaL%@T19({BE1aD=D{ee>l#8`)u;7N@?`W8U-AY9=jcn6cnAqK9I7V&t}D} zFSci2(2c(g_ESH2d#S9BBdfGZc1XPa4y%2AlePW5EOi1>#@YU}4ign^_p|?F;dR{K zsG-R_$FJiQGur*>Q1qNOonN+4pkWr{pltSsKW|4&cIfg3sJs#XKCKY>YClytRY~du zPCDhy`NVp~{qll3*Y{+JFzir({6P5%eRyH`o9$|*K8M)A!7O?XGQ6~7PR6v9VmSu0 zmE$5tkxeOc=|ZU9dMIAbD4D6VkpOd$p(1l#4>V^_DxGa>7hU1JD`ne8CEo#iqYzq6 z=c3(lE`bs{)YUSS?Y7Q@Z$P+Lp1^R9J>#E$0Bg5AIRQLhz223yasz`b@^pdwH3_ve zU()vu$G;aTxG6m=(kq%&4C=?h>2t$Fi~?%olkPWo!fMJtJ+T<)$a}}*$d1N zj~bMW_xo%$8VCxc`fT(uvaxBfl>Rm7=$&xmHX+8BW)QBzLkpzME6OoiLDsq1KT`8D z7ETU(P=VZb7q?8ekZVizlz`sF2u!5B|B%c4i+1?&Vn4*t+6UWlo{4el(q^z|nNU1= zehlT5wF~_b={?nL++(yEC$p_)kp4Sqy-!JYqV+k!Wb2Yy-OH+_-BM2khbVu_CtSHX z7BSsUhao>=E3<=m<}zFXL{adV4rXQN|A?sBSl-30A9(QJMN$VBGOaf41Uk0CSN#uw zKS6T*hz`czD|^KEHeZm)KpHwa2sLaJ3)PosiM+P|hz3JTEctC;o}s;%hYR&+aVpm@ zaos4%A(!kcZMTmjX2aoZgz);S0)pATOOy)7@GhxaYl{A99LaHO_Mz|6-SKw~rf6vD z3lbvZUOk@1J}*<_5zCu@pCF|HN1tCjI4$X%t2NKM}uu`ebyjzNeeoNca}h# zw&o839ujr%eAw$73aws#9(pu*kVD!=A&KM3QH$CWZ!mAFjTAv*`_uk1bXrLS3yv$S z!kGM0$|_WmHEkd3MC~KLhj%^nyxmOiw!~ai*V|mzIi}-NHX#zttkSn{nNJvWmLt;^%^p1IC(twdamGDU*<9frT9@;To3cj5d9k}YlbLIy9&dyDA0spPD586e z!L6QJq249W4LxR#pDRlZxS=s}CXruV;EhxE2v0@D=SB*8wf>X2C1@J;Ev6#I*@$>K zG@Yb`FEUu{`L(6}MKUj$bR+4J*EB$DSrFH`ej|&Q;F8K9ppXo>NodLN*7gmrNcHmq zKb*p)YNtJf3#mMwzhi#@b;hfsgso}o+GgBg3}Mw0g^*W7@Wg%$T5e|Dc&h06o7LR4 zQGP#@`CZ=`i>Awv;Mfm)Fk||R6t|!Wh{j5}g>Yq^90v{XN+fn|*nog2W9b30?QdE0_sB% zm)mrpf-bzUfvFRpd8_|d$=dnJjEN9rjTK=`@2arerH;pph-vhBbFybN9UC2i)zuR! ziZ$_n{)R%d!XSuWdi11>Fm7T5$P67a;?e<@Qk!nZ@=Z^u(p`SsmP_-=X$h>q@Mw{K z#Q(eSZXEy5|CfW5yRwxgW!LZ-b;#6N`Dyt`iGY_)xu;%S0GzCJ%?kjHvSPXTS%1N@ z(~-VA*Ms~4pg0%l(aKE8s{3~vjF)KFkT6rjl%Dn0E)2)s&?}UrzC?V?J4+3SK zyT!Zbse!$hlJzYTV`q#e0JWtbb7aYjadT6CfOqunAwHJ9b%pGR0ym#<5}^6?bjm2; zK2zT)VF`>1_5v4K3RPLwliC4i6!@?v{lj@+^@e^rhP_xN zbWf_S5p?JNQ&WEb5xL*=ubGZi#5IcOyl>OeF5W*}3Wl(@Ol{TW_Ilk@+w(M@B{m6} zCf>f={uPNAUV|`L9JVxQGD0#wjWH4I5=S(6rs>n;sht|K?^g#31pEN=m1TTSW#-H5 zg4ni4E#Bk6OKp$#5s-+)AN!95HWxkz=hy!cjr9{87y;41N1aU*6b%WdA*Osw&OiCs z?x|T^{)8PKsWu^g{Ay|Vw8(B8326P>KEwP~zm4r<3_-^(;le93-`s7N`xgpoS+J5@ zuu{|mi1o;=#<$D%($(MJd-Mw4w!GF|D)Zj<-WDJM_KLM@F4A=ui zb*|;=oiFr^res?sQI-2&TD6>wLi_xkp+ygYOrqUb^*Fpf#;QJIt==d`P@=rz3xTkw zwS~7RikH_>;`|Oi_@^DBwbdrRZmAD~^f5bypT^!BRJ=HnI_6>twF?Q)%|?ZCSz7EV zJ^g`ZcwFHc>xCD1p{!z~(n;N;ekVLqd#TTlBU3!V9&DktoNx;t!_{6p!nmkc`VUrH zr#<*Cq}op+GZsh>r}fY<^4a+m7j&FvTLywYUMwqrZYy}1C$}{kAH~e12A0; zq&~0Y!7chYGF19ZZp3RWiuxVsH4Qf4 zINqZuz`Q9P5Y0q4rJyb>pU=?ew=%t^f0N-)P=V>=wTwv_&5H;dI2ITBn29%{_Zpz` zYkyBF=?IS4UiseJ`>iuZH890qFKwzwXi}o{A@~)}zW1MkG*wp;&ox0WQhK`gcfhnZ z)GxFfHS#x^=X*k6_6QPB12q-9>9pOu?_(aBc*;b*AoD-loyo4mNAVxW|CXjcOo z(R9wtaXkEvGp1iChE!IzI@n7C-r$hw9Wg@Ox6dwThqD2F&mV_7-2i`0wZHsz?}qZ>WEbHW8ohk=Z8OO!p+B(Fo5s`r`CEHaazFXWrcY# zOJYW1o@*oEMSJPh!`3&&U9!on{-bY16YKslc&4Zmq)+J%*6F)C+iT5LXUa*ixrbha z=n{Y*J8^D1ZxEx><6fPLg53&2Lq;y7Ic1xV{cLQHup$cEjV=6CN+j@MjB#^5Pvzb9 zl+gg$QoPZ$yXn`gvA_?rEnin%c@#fFO1d#tnXQmQ#7feBlzu>eEr1Og>~EQC9g0|; zwdO;542pUWQGIa9(e@G>sTB_~Z--EHXN9sk(+1WxT0GQ7DLR?scDb`m4>gs|H~sYD z<_102XGM$Q(-HJtFW6hn6g#9JSCp99Na26oy0&IZNcpZ5E-tTnBmM_7DD=I z&b<9v=Fu|?!_!WboKSCV^Td+!R=2WYM2?y0w~je`ST`_&$ksb+U#nZR-|8p7l7W*+ z_t|o3SteR>t+{M|XTH3V`!>16wwazrCLs?FZxXg19__GCI@=XDC9`@_D>at{~nsQID>ZdNu$1%i~zM}pT4LoXpsr6Ci_?B@7;6A zTdFNiPyn*C573t?TR)RHExfkcVz|@C;=B#aXr zwCr^f_XyY;2vFH@8&`#n&-I_1w_ziv!B3RqxDt&hFIg*{hZD;a?`-o`IldiK{k|?2mD7g}j+-P+tBjB4;`x;eN|m zGY6OI(xJGIjj{$NRB6ct zaHYi_BfkCO^|@M(6h4dWQ3WGk?_Y)sQuVS^csvf4oj6$k${~Q16aepkCrG5HpDN$R z*TKAH%X|~>K67lg8VZhm_MpF5Jmrctl%&;iipAu4>EXIy0KzeI)RIsl#ypFG3QXH# zjfx~WWL5fH1V@WR8&9YrY-(nr6BIN(oV-fH$N7g{cWnUkx1-tq5$K5zky^xzjJsdV zS88X!xSj?z9%bKY^p$~~ta~K*t~>x)tC1%L$kEn86f)2Hf9_xT!?$wxlNuvpYvq_I zpGY5tHaE=iR4A?NO!Wt3QX2O3)va(hvr{=0@a0rmK4{l~(KC*_Zq{B=A!|P(NZeXL zu->{X1?klVHj#bK!yT5EbVUG&<<7-}J6F|}B-I(3>6{6*Vypavyd5q>*hlWrw?_DeNj{pwLT{yAe_kiMVH#<1s0<)ggxlcw!hCX!c6N?;(s zT>}WunG3l%RuUB(_xuN}IMJ?A@agOz4z@rcHG50ugmuLg|MaP|5#o(IR#zf!A7dn5 zqt`5QiimP5!YHY#b_Brm!S68*Us0S}S1*TT;$9M74v(-LvEVvbQNqxPvDuHDX7zo zYuB^RNIO&dazoN-(Xuv=LTtln?^6LBBop9121tIx5oQ^@(Zn@RvD46L|8$Y?IcOn6s+Miwm#+rK0b zss6Mest=}09FFeO>f1yyN7CxQBAosIALcdFiS1lj+D{MV;wn^wn0Q07F^7_NRdlR8 zwP>EULIRlE#G$KjcL?kB#&u%sw}$15Gtwfn#35|N1T@tGJ$zn5plHu}P|>}S|4j!Y7h z+9cl6CExmC7gg4_RPt4tr&BXegqbcm9)o<+9Wyiegj%3frHD2%6>MUD{&5D^g%6*; zB}v;F@P=|jUBT=fKDCr!Gl=wAp$ZkU`E*!6OT!S8XPg+=mk<4PD^%6>EyXl=ATSP} z4P%JG%fbf@&M<(f))4tXS3IQO>$}4B7cbWIsj}#HNJEL!X06OM8;P(j!%!3bY^e`z zQGK*h)~=$TLiTYelO zUPHB#`CIvqw1D2A_emUzU24T_22kCLxH3w2^%-IJj;`~a$r`1Wr%-J+wU^zEW7(m5 zsV$Kg`awlEvklsUTrfm6fk;56+cYhi)0=PI8jG6ergYO!vdU^2Nt}xKGw$uxYcuvS zC5J6&3MOe0+n5roICx~tn?JHAI6v%3)2(IfGMw$RbWk_PGb#AHWpBZ){y(DkU9;t7 z{Da?)EF*cV&YlM%>wg~@pBI9Z@-+Ns~Mh$KmRhIbN!&|pe(mj`T zLHl4zkiSNb5z-?fBwD-vsra3lf4RgeeP&f8>fU$u@OnNT#in{?);jevoX*^KAR_W? zEC&-_KYBIu3oMk!MXF1W7W6a1!9!+i{@-1@gruJWRgP>MX>3IO$kj3xL4v9c|FhGD z+MVuIduY}EL&?d^sU+CH&K6v;Z_R$fy0QDdSBmKLWN`mz6V*_c7=TC*3L0h-7X9$2 zsV;{l`TS`Tlb$0h^QHfqM=vCcwcWLu8VorqHXXa<1t0FHTIR*|%_J3P|wNEZ`w?SUgQqLArjAT>+(eeS(XM_pz3_ zijM2<;Jk?5a=Z(`S*Fo%oUGrs>wNh|4Q1nzMLS#4=cyToL4L7(mmjVR{uz5Jq$ySm zk$43W=)d2AQRi?7iuLti#nkAoviF`O^;|Dn)U>1ZLPq>$ux&RkiE*LB%#}eY zvsIzPU>P^{X&Uxw-*_wRbLIMb!i)E1;qK_-U^X@71DJi^mEBO8CquHA)wimXa6yh< zdOK}uBVXAP>k1>DonTQ~Sv|h;yn4WOoDI2Nx^(h#E1(Vp?)scPS|t)8182g#6Q(bG zlj@jJz%f84UoZY3tP(0JO|# z!Z1&+QfKUihPS=LwY+QTbbWsH*Fy*fcrj4i>Z%0J|9~D1Vl{0Yj>Y-22uQNT$14TQ z5+J`}-h<9bZTG$8F8<`;7{BZHBSL`O&!0UleR>sF5JcF@?>rGMXFWr;XOi|aem65t z90!YFE#x~3%jFADONMKCO?DcO>F?cScei2=OI-DG9J?1EU8@`8Jbo`lT!)FHE&Je@ zH@Yq4c9D8(Hilo(FPL)nXu<>NZJl0Z5S}zt~2R2V-oV<@`5usv7oSIZ$D|THj zI9&?+WJ3;)p4!(>L%Q0A%#c=Q*5c}mA6iug#Hs=55H>5YQKHwjks+wU#OCr7Snl+C zeC`nIZNSG7`Ozx)?sWI#GQLf#y6W$;%CYQ4x=#lLU+-z04B`P5%9>OJ5d}+GiN0+} zJF<>bB65Mwe8iUn!E@v9)BA9_aeJl*tR^+;5%FW*GV*0y!}*5OMVs3mT{-o8tN2Oz zAV7n2el7RpljezzCsyF-|A-tAc!gniSRN z6KfHB2|#S)E?NC!Wnu;2Cqh#Dut{?8&R=VJY&V$)XgYJ$jFEjKtV0VY_|xohIFZJg z`KjhsO#@TLruw=m`*U3E+6wuPl)jEli8dn6dXAzdG98!YKM-E2JKgxmm~FdX)Cwk4Qk>d7fjE+0?e zY;~44Q@ZD-R%3Jk!lM<9LACQqqWGH^R2OHkM!XA}o&`r<)?mrvEuQGW({T>9D(9iE z-Xl7mFI6%|0~B}+Z)pOq>q9$w|CIpP3qn%)d8$ZL-Y?@zy=Lit$vi1x4MghTJB>0F z?AqJYeA36qvBpjMU&?dE#m*|_=X`!3f~=>fWr?u!)!WTxjdZ7=Pul5HpsLEvm-IT@ zd~HfBA!9F|>+8M@oXOGfp6mVGWX8Ts@9#{#&{;((F!G6%GgW3lAuj!IB~LV~AIwba z;KG*Y{^x)d^nL70j;MC>e1pgcYpr5=LWSU()S-fG=_XZ_4!Kh&6*Phq0AR%TW;p%;O4?hKyLGYMAng1k3sR>`BZqBtK|mI zdSw0H-Ev-S*09nzSx4?LTJqFabR)ff*p9wR(Mq+CNKCzIe>j{zzdE0}?9ws<|_=9TBeNhb=*~V8sF0 zTB`+I+}e$n}P7N_VG8H*vp{aLKK?6j*t#R_>Z#ZDoP6EMX6kr8Cst+ zR!v9@H`xnb7e`IMYybC@W2jCTuNdS|3Sq=sv;r$O??5GDEybJm$iqBSl3L{Qz7x$# z7vm}b2o(xgfshNh`5!E^lbv!_!7J!CDRC1#Y>_2L)!!D(t4zV#F6m_&t(9PYv#~~L zHt1(LS`SCgrtM4-TFilTFKT?gJ)=K!7elQ0SKMg*Ua`R<8<*eedHKk1CdqKvs92Y* zDu2yZkF>YaGc(FNAkP3daZDn76Un;%BceF9fBI3UBFmk-Z%dhg*Es6)m^aJSECji` zRVPFx`$=9N_hG4G7$FA-aUx07a#}%FZVq!69}$NkELY1))?<0GhvVSw(r9->V0CYE2oM_htD;_K$4f zo(*4H6;ss2zbO`}o)^K|tswrS-KORy-)6;6_TNwc$U~u*AQb=}FiczFdkT)u zAmn``mt>Ytpys{}%=U%EPJf12^_<212Wo@#FpozWcbbuIGZR9dI#R%B+kQ!t*F78A zr@wT#dMgOP+QR%QiHPkDzrv)44x0dop^0sSM!;SOa23?u17ly4ds#A8j*`^MHFuN5 z9~}t8!9iA>2k6OOu#3h%Agy?tNtu`v}#Tc%G35`9uFuwdy zmmoS9jBrO^C?zE_>L>pGAE#S&>Hl)M{cqRX|I6n)!fj~6tvoLFJ}{}^Skl?A*ekZ6 z^Y%D@*N7ipIUutV+vrvl(W9h#&U5r;LKQE)w?2d)HlzKVEO+TA8nG2!qYbkQ1cPDfr-T*J4AA+dENfQcv3W zlJ|8sd;VP@jfI@slp2Y7P5)}CUFpyd)8f3{JQIiRfA9Jt3d|ptG@W)t2HV)83p;gDuyw7Pb3j!1A-Rsd8&K>YJ(nZ$mih}YW* z=XA5ccIF79ghdNm2ey8-tJ!B|g&6_iMgqf~#DKPBr+=*H(UJ_#qH&@GW$50>RT2xz zl|Cp+H?3~Amw~VjNNzbUTL$-M4@~Pj7<3<3_@~yN81Z=rGGDvA*woCoG1q$WZcT~D z+1@gIsw*K>$Kdi=qs>uQQ>yX#5SQq>4R0v2!T(kQ_bb4S(wv3#TDXx-$>0sg^}hdF z+_k~+1P}H;bZYfdOlwaJZ)$w|4%nx}emf=}tc|@I4q`eU?avY;#I(W$mAV~tDO;iR z7pE(y%F3fS7!##jx~Af`$2TLenRwPsMu*d=YTb?~!81YmD{E+WB9omMO!4XUj(Qze z>6qXSoD~1yFJ5phCq${Qli{PwONRNzBSyEgdG?a8Rj_`MvQy&MqA<6$L?`**xTy{l|Hqt%!5=52!VV+ubT(z>Ji zrEwtVhD1=5x|i`S|6Df^wGb~8)ANwki7n>U16ai>WfB3+xtSLEHNv_*Bt9DdCTlux zxl@NY7?`g6xK!#5YIw;lzjFzS%Z#RMoh^1o@-rnXQpTV00jm&#-2qMzB%J{fi zDj0B~G@wy#RFnSKz^=(JZ-H{ZvUe?91nyDD+XW?9BL7UWskE)$a-p=#IycgF)uaN z#ZBcFtd;#qa}`MN<1-dDru06={T!MuCO-#17LI&JcG^|1hs|>02V@>hyP0A41Wr~Y z1KD18*&e^61a4ArtP3v+(QOmBt5*zti;*WH53aH=4*l8ye7-NSFTz%#Ae4+Ujv zYj69iQ{oWip~mFx^plG|cKPY{7I>X1_ZnD;k8TdiBtPMD{iM=_R3@V4-BA>o z-Z-3%Ch4sL!*Q7%<~BD$%Iqm#kQ}cw6)h~YUhfP*h2};m+1>KiWsu2)a4g#k@j5&= zEB;Jx&QnfgGDnIhsry+M{%p{gZrdl=swT#Moa4vGy$&{Ex0L!tSSVuj7Pie;<`O7l zng62vT=DCQ^Lfh23sNM30pnF@TDJ5uH!%D1q$j`bombhzfHcSv;0G@AJgPZ;sMoV! z@da?M6BH0rd1RKa9=XP9>=DahxX-~<*YZMZEWLl9P!1{9se~^P1+4o8*OueWW<6q` zt&q-C@Y>J<0X=EYx2I=kKj6rOy5~kMFEDr-T`3=>=vnZmsH`meHW{U}?K~MAayGds z)iL;#Xe0Y1$8QEs`3?#(&!(cVSs82?bmD7b6WsNj6S0cK*`=7?GX62>(hOj}ebAb3 zgQaDy7Jcf-o;$nr9}%&HS}i75b+$Yq)c9Ea4KAuan1 zI#dZVIzkIs#0h=*0&rcO7mtfWzEIcd@SqyTVS9bX0y$K}btJlELdu2R4Lyour7xw-gx9o(oM@f|ManguFA3x0$TE=9RtT4VaxP!7yTFQ+^ss3VIze} zk>6+G`%ltq)Blpk4BiOF;pE-eqM%+Ri{fy;9pGONx1PUsrem9&t+|;r=qj(A<-^+s zr|nxh`!+b4k@NN9aYxyzlGv2U@0)Dj5INDdGMiza&*1iP?o`%W?$Fom0WymlbZxMY`v*svs!sHDC zXWlWGFAwMuvLSbp5x}@F55+g!G{bQ#TLf}gtw-3IAcert+3#o5B&3Y+-@+29&r;tP zK2}i(BE0^T(s%Nn+~l}QO-*7MM`a4^^>LF$@A*s%Z0 zAKLwyZfepulQ|Fg%HR`=O}~6DAuQTi^`?nRx~kglsS;l}4K&f(K=QPzI9efeSUHI% z{3A{t!`eu&7S&Lfs_j7keaQF8n>og-_5^rPtUAQ@X$}A0=bPi|J`YZP8A^j^m=4z6 ztpIBMor_3G8NLxjp1~i3EY>n28pJwTf!B@S!c1p4VmfGpC-X5TLk2aS3k0U5dMF z(4f!GbFdHg%-(zUZ{GLa^FMeG*5n{7Yt5`#S>JnI_jP|R^lY*F@PlmJVV8OIYeDkz zzRHroA5EHrm}nK1Bm&OGP`|T_+vq`Yd@Yy(QO3ID;j<$5+C4?lw^=_~-m#_wko-m@ z@}hC4FP-*v=0Yk@U%EZi#6k<=7Ha&IH{jyQ8}&k~f2t=9m**n$qpTzOmxmbAL zO{wY4c&|(`HY_Z_5~xlA6WwbL!WNX8C{215k|i~3#xu+D4(>=7(k<5!p@O%r2QK{l zq}RkR(DR+ww!7v(-NQ;bPd-l{Iw>0VF^}u<#x>@PlTdacLv~fPP1S!k-N0N((UvdJ z$=!EyaKM^)n&2hNZS0xK2u!hG&1xf>GSc7>Q^As+$gKWv24((tLp1+K-)U~u5-7z+ zi^eEaNc#Zsp?22o*IC`G)NAK(+D@TMAJ{F=qQq|X9uL&*oxe8KLt?%;2Ud|)L}SU9 zT)A#P%M*-&bJJTh5&1SCabheVC1YU9I9A?JsyQK>F9iq4>@57Lr+>olEb^ufYRuC| z6&jfS+)*p;r-L#?XW<(*Y`;rAazdHhl&4=i-0oG>gm`g##*5NpV?DiDnS*aHA$kVm zB{jW*W_ZXxx|uMYz45j+xtw<~pAG7QeCbGP$FGOQhkWI`#9kRa4||yCTV~WOR-4HsqyLKfwW;-h4`*c_8g22Iz7aW)a~}X0-BFy$2<4SaygR0L8OT{ss>i(!Tb( zE}wGd9aQA&V_gUQ^v&2NUA%jIVjf9Zx!C!5b-8Z3=>gDMIdVoA;6XZz#_j?6KAxnX zqz^q5;H`DgdqQjaH+sEwU!UgP2Kn7Ki}Q*7RpAl~!pXYCe(YfCRx;TiDaLKY=iu!7 zVE`t0tIPOd88XKWzTNXNgSj-p%xtT_y(@o;>YB!^Hz?~Isl7SB;59GAF7{n!Jdy1E zISKJPs7d-(1?-s~;B1d;ttRW?AXdL&pVmpk6)sXIM&p~<3+~MzY@(M8W@ylHxwlR- zaMkoqHG5Jyzl|_EvZ2YR?KFZp0P(hkKc^}AA$}C4i9nkdOxc+==grCM>`tvk4QNYG zMqZd&Z}K_RN4;j7^YL&|y{<0bfTlCT42*Q^C-W)1QbS_vk?QGF`^(tQv=#1-kSiq$ z?GF-Dn=p!C}+06)wj2N?b3U?oR;+cZxk9%&Hy3C8<4RSUCF1 zJI#C(+c?yQ@_$Wvsw>ytw(h2rp)3x-G@SJx97%tW4!p(=04N$X-}+|rPY5nMLU>%S z?f~a^RYZT>2{h=dO_CR4V1v-g9#gPZ@?5;17Z$GLbA`~y#Xa{!N@@GGa@xXzbp3+V z9$6j|Dy;l=ys+>sB|=XSAb7*47S|6^@x1dTI43R<RkO*VA z1&J%mQ=_Q&1$2Ih`SL|L8NAHOeYMJK^90Ov0O6n3mdlUD&``g~+X$Zd_m(_qZ0`Y2 z3JOd4H-@7R>}YR!g+tzZzZ$#A2(Tc?e+n(7>Y-FGxVYGVuvknEw((ZQ$0uixmd!Q6 zR40#{h6a=BZwM?R)~%aZic3nC5zJe-&7qy?9Ajd@e5BJ8RE2Q>?-HWoI?p_Ds+n=< z)s1L)A@q%6vg!!W^mcGjeB(^wrR5N8rrkhgHY`k!_GpH)*jsG+z)=b3JH`~;(v2A7 z+pk%$UH|4&{7M7umAM?4`Za%&U>*ys!j{tj-X@c8b9yj@7POR0u-Gh(4~`;PKuyRypWs&3 zDb$iARp$4% z#Rgr+>DlC@yN2ZVDK>1elwM{==;!X};Sc?P086ljbrbhg>`+&g?SVO9r{9Y`^DnMS zc!jzLO`^9F`yhnUSgS-pOA+Q--0nv_dx-l2x>GZ)jpmgaANA0(M!J%sJYvFxJb_6; zb|V?x&|axMIO)F32@QE=M0rD2V;=9m0)wtd zWd3BD#sStje_%30IHPD^fTYH#qslX?agKQP%qWsPx-=K%%M=vd7OvqkJ}F!LQy)r4 zT<_DI`A|fEk}ogkO)Z{4=UTp_1Is_JW)M_!w@}BMM9xs(3cIt5ajpv4gu4JaVnlO zoJD&j*Vlz}Q4d=TExt8@1xwrS_&HuGl z*=uq)_tkcVgHj5unC30xMaf@@3$V^NEf>-lyuWibLwcmcyt)n_sHH7tSH4ZdX`N}o zXAq2-E&3`M$3c>{+yyI1Kush%k%!1h?SN3I%=ubpCOn^F40;re-I>%nOT%rI`hA?_ zdM1m#?$@JkM+wI9r3vi_jbOhYmeFenWx6#{gxt33RRRWNoYy*4@i+4AqGF1t1QOF^ zFv*SIuD?qvi<0jLV3dxK3O%J!^v*MIH2hkEt8I(?fZ^Zvb;R5H z;&~XS0cY;oc^$+}8VbZ+b8_#AVo3DlP+{3UWKqzcj_@>0fM?rpLVeUEg2(w%t(tgA ztLTE|+K{V8LhcBynn@S?7yFmdgglFk%~gS&!F#gzr=br|00@jm&hFGTM~9Z}&|A%r!RU#3_0)pWY*bi%n19{Ib}3D$2Ioc1C?wbUM$wZpnTUDTA$U zl$UbdsH38a71=_c{%Bw-*qO7rnu)N5Jd>xdos_0vm>Fxu^L;(%POn6HR7Y8JR~V-a zeR<;pId9=wD++(C7NmEa?6(vb7nA z@>(y8S%KiQm2jw*xyH7yLg482+t0ITyCnnK&u|K?_c>bSiA_)xwkqoRK{A;j+k6Z| zoi5t<%?j0gFlVEPJrDKH22py;HNkFW^=^@%I#6{&mh+PtY_UKQ-$ELwa*O`nmpA^a$c|F*o<$Jxcv{7vkSj7 z7A_7QT~8*71KuY^qi%06;=`$mI}hn-R~t$TdsUJQgB{Zi^bbjANC z4*LIL-x6J=oNN1;3XGK=G~rNAy5-H7QesH5D2|CO85Ym5Xc?>nHrk38fYR{KzDx%Q zPz8c)H(0qK0F_B8!Fb1oSEmi)5;aA|(KYuTo%)(dPz(JEZP}u6RlnD?mK!(X8AaAU zOf;ob${hbPoOPp>oM1Kf?!E1af21u!jn!rD_jiQV7tVMI8Ca$BVm_UKqA2OuIn4Uc zH_ppa^~P=PWKF-z+*t@x7x$LhnfZ4DoOcac1MbWNYLkJ9SK@#(JHV><7f8tr;0hv( zsW>nZ;n$!p-zVMX=;K3p_F^HKYqHTkO8C%H7BRswx3tIeRE)|cciiP(@v|d)f0Odn zY9cnh&!?4{+`R|NKPd5N2f_7?pP;n;7OIxfqo|q<2B%Yu2Lge13g;4&4Rr?OQjVd2 zW8~4zYtoK89se~O&Z!D{)`7K%eY@hDMnS&g@SCJGY(G;SU2TQ_Pq5*!mnxpCZT$~V zv_3Ya-#D>V^7bAknJ!G5L2bomKquSnS4)i3?<=dnBl=fAB7wS>MXCd*{pw|L;WhK8 z2FtM*XnkrC7h!Am5xM(x3EI^8?6qfqCEf7*Hyre86mMnSmp;63x9hi)T7PkoVpUy;hD?-<(4Q*w%)Vdeam3<{UUPGYBH&bhr#rNqE4p|v` z_MH3Yk}6$mtMMDLZEEQ4lI5MRNxnIC{95wzLa%3;F@#_)p^Ne*`nU8O(>Xhzs5HVi zG)P)RE_2V^_diDs7qRz%q;r4LTu?7b9qUFh>G_irZ0hCf?04bEd#)C;TcH(p4-TOX!+81LVHTJ9-=oFYLNE#}toAZO+( zyg5Fyul)>wP8be=97h(A$2WT#K`n^XwcUF>oIe?8^zJXZ--pSbb4b*; zW@4B2O-|6G%lMd52q=V0Cs@*2S*H>`)9$Iw)?rWBJblzmT+CkM!(*KI^D($hPcgUs z?^=uFcnfbr&;Gym>!@ezCU%dG9^FCOyG~p=(yMcP)uT_g1v;5AJWtOlj0?&c62#63 z+o~*UA+ws;Y>)6 zz<$8dmnpyfM1gUj=KX`UKDDM_MvtVe zrVdH8r++rqCfRKyf(~7;j*LoOS`-Au-l?KT++3^~n`;K_yaPkZ%lhvm+SOobnoi4| zC#ktao;XS+{nA;YYN9Vq2XbD0mK&gGvY&)}TT91f;lXET+) zj5P8|F!U_xd$KkuGqbTmzLjdx@N(cAS zRDdsBlbYvw0g-TNgiza7J!C+=S3|!@A7P1w^$PSAt4Y(!49iwky(B0aGMH+co+#p7 zsO`?6QQ#vw`QBd$Hzx`cxK>IO*4@bd`DpkqBB$F=< zF~!;$ulipHdxKt$mIf3OP6r_JbCTUJZeu#`WnH-6ix|#`+ z|FqXy7J0A7)NQ^Xo21q)GaeZSDb3g!Ybd{ynX1u~onRjnK*?b_*96H>5g(Hb`0_`X zn>zV9Cb>FP_0eM$WfvBnw-PVy)rFawf=>tNjWuPQFfiK_uN9w+AodA;)Dr;XszHB= zP^4d!yS{W+12eAqu-(GQYQPfk4pFr;ksTTksTtz^3e68$71h8rpx+a_?>3MkZz>-6 zQ&G3;QRSg*3}fdJv0FbsS7wZt-PxjNOjnC3_)6(kDCFL!02QtkdzRRmW;o3djqnPF zb*2`<0JI|S+QF>l_1?t6r-Ni=$+ClC#T5NMRC##Wgys z6`D83Z!5E;L2JQvOzKW!UC5_YtW~jxaaefCQjv zo8IEzlXz)W)$?h}i+AD{>&DoX9me3>130b%{X<8~%8K<@_pT9bVKU;XX+`hP}D{ZD$w z|M9+BA&EuT+O-Y#$yve=w5EqT=b(nph0iGt!{$^LL|PD;j84XB9s~8;i7B0IUH*J2 z?=cZ`H4nZE91s4K%)K8{e;25@)&!W#>(E-+v7?|%;B)93?6A{%Q-^ZDaKY)9`((9? z)HRp`c@Z^1CK?$c1INq$@@C^|wc{0(U83Q8a%EB4Ifm%PI)ABWpmiXTQT$__SqR!&u6x4VNsQ-B zJ-RW)Q8t!`e>;%E#U&bCPC4#pRSJ=-BQTfwCK3zVXkqep$D{*gL*&aBWZdV7Z~?23 zlbEn3WybGA+!fK34`<=kIS6r#nlLV2MwZ*0OAs$vm_=_B=d%pRMUc0TD_7C5ti34lB6Pz-ZJRQLNDvP9oYnX?n zeFUofWMh5&7m}HNJQI)}gz}+jXO5JLz#~z~`(b5go#GJ~h}E zf{)zSoK1Ufkj^_ps*`>FN7_v~+X(XJ0Qs5AzC2fXiwYZ7y7|IM?Kgud-<;BklM;jF z8!Meb3fC=6q={nm>7qZiv_!vF^jC7XQeoTRt|vtGuD0-v9aYc5i>O;WKJMywEF1RxJ$rfs8pS+H0(H?jH4!~6-)?`$ zGy%wT?^Em*lf%0cXdG~Sq}gQN1RV}0-eBB%pfF(z+oTEY%Y=iPBSbp?o2tUByJTim z;ct{yoy~31Vf|Iv&DEvr%sb|R@K1-;)84I*nq->k?Qgf5aeibn=ETlZU4;Vt270Rp z7dhARD!?+gfylyAgnjf)a0{;}YFAru8UIez1bP4T4^2Ro`H5@8Bi2j8`U_I%jm5+&Fx>9%Ba6;|(-wjW*%`Cs)Y>-OjW(r~W!G>Kp7Ssh-eV00ltjsn zc5jy#<-sAwae7R;&{K9IH1e$`+wxWrT_iobDL{Nn3M2^$o%_->!H`v*0Ay*IDc^iT zX5Te!m$7=N*9|Mu{q#!M4cots^w?FhGP+#&xp;P6nHB>0^p0r!4tK!A&!*LifsLD_ zPrR5iC65SpW$rdhBP003u}SvGT3%o%W)`rbPifl5P)FDnFjU)8F>|2^#B*02bXSYD z{d63@^?>6JxFwS^P*{6GJxS8-WJG&sXLxQU5J&Ze3oZ6)-)Q7|i>{mk2ryBVz_fjk;W(rC6Zk7yA6wAEX=hOlx&(-Hy6XCkDg?tMD>v*|Uf)buJS>iX|LHIeUJ zNT;lptAr=>UdfgeeUW1z8FD`k_SW>v9Inz;(g>X3-_?~pq%QfZ$3`dJOFlezrzfx) zE!4NKA}0PLJXg?Hr}%WaHu6ppyS+)d{W@}YGqF4*z7??J#Tn#FiHT8*%0zsP;xdA5 zd0U>8(XL$~=OOOqGH8$!rB(2FH^Ot zEnuxycVxd%$qw^e%8;m(ZgKQC{kvb&QZ-{FW!Y{WY%elu%2k8gb|d=3Y43(+ zAk9%gY89S6xQ4#SQPWyqj?C#Xo^V+xu=dr*xAqk!itZ;X{!5L1#69F5zS-d??%_cd z!rl$Oj75@ksJHKutYbA289gShvQHO%x@D^~lpB?$W>|Y?*P4ymU>6|>b4o**+}iJs zIM6@^y&sV_&9YRQe)xOaAE)M~bsVsrhrENhV~0))tUu<{&l>2WO*s;Y7okK*m_8-{hqg-02m z4YBj#qiOMpEtdTj9x`r;CY#DYnum#Y7=~qRIeuz>BK^fh8sRiy6qYMNc6l&O}scc%Gc$?d|JA+@vXovSHao)k9ak< z)~!$O*o|X&NKM4wAf_kTzNx27t}j)VH_2zWCwWZLn(FWW;5{(ibWHADFNJT_CtJ%W zl={-TTQCyTK12Q~j#ybHn(HwafD#g|71u@cJ$(g5(55*Va--X`baWd(I}3ihu&a5! zV_Dx{#4=!{K3J-UA!z>!T?0imiLNa2=&VPJ@8w(R6H=a*`zKS5^u&Y#iUtNyBR=*-zHm_8ve$spZT63^6MP38~fc zWH-x{q%IxYs65YAtF@+3xuIz&X3Pj|Vq{-;z8;*%aug@Zkvb{}ckm6A5n!Q*;< zM02t1ZQ`udQs$z77oWj+;JPQGA_Q?Cc;`xFv8bhuMMBeb_Sg)H`U~l40i)P7mf5ZYJJtDt!=<1@AF}gcjl_J>cnYe5rBVl;>Yu4Dc6A+#sVC_z^rDp) zpX&xlV?Bm&Gq5_Tv$xaUgL^dQ#ifa?V114SJkN#gPkG~YB(23+aF&)ZK&OGf^vNVa zYGFlJDb(P^`;mT+qGJ!F(R9(ml1D`3^yJQLIu2MZpDsOHkg0;B@<7>o@fC+$$!*h@ z2Kx9>t-lKcIPvBe-1QBP6M1FJ$$5v(af{73PZe?!Oc5-V+od0{2np~avL@-)Y)DKCL%LHB;fy+CjGxS4~~}kxBjjdj!(q_ z5QV8Ely_L~OaGbMwF(x^6m6ckr@~KM%ga`dxCh-ob6-yS>^atny&YFPkK4JiIZ9RL zcXn1^I3UL@RCYVo%%0RWn`h~K)OS&IMJ9GpesDxPbh<=0U>w~x0(*Hou}{GfX8;;9 z;2WkKZLDH@``xK8R|i?XuOTst$;3JaUwII-I`ea;`0uNI4gd%7ymW#g?0}>%wPXzY zyL*uZhgv2KPG3LzNb7!zhi#@ngJZ?M{p41s=Mr-*FvW}1D4uTEEP%_eF{FdPeUF^v zid-i(2K^~vxZth&OlYJKU?qPD`mSjN%S<#CfBs=Wl{JdOseLlMnBfcDl)sdL#<*kB z)^r4L15yI#Xh89KMTDdx-STSwj3`X%5nozU4ic~CA8HQYXeXLVkpHmF0e#9E{F(S< zeW@Tf`Q2eY51*g&`UI@MN>ejDn3X(CXvD(J(-G9JZLXW0-Omig zOJMdjZK6XDQ=R`3lPtBKKH~L)e$uGDIpfCV>A8eM@>)8=Y?*J+!CkmG$&aeWy^UDZ zK@?Vp!Ab-yF`Z0J{?ykY(_|)U-VbRysW~9}JX?>f@ofms5A0G^i^@S{%xD4}di-c@ z6_Zpk(Z=G#w@T=HH`3m-92**5*nV|PjDtvkot*ds_$2gXa}9oNi*_w`*r~&RIyX!t z5(omZwM`qItDaqlK0Uc)v?|^4d1jAVn!Mlt&3&w;z8*=Kn%%tnFy*~*d6W2u(b7a5 zKkx0L2Fn))udRlR=bKeC3Fx8)oP?s5eTl>>^zJjl8g%c4jXGzG#C%69JBCEjVpl8D z!(&00IjINw&|PLk6OilBqBG*Fp|(;|$?5Eshq#r|LsHeG&=uQ=>0vh19x!KxkihNg4_DF z2$WNo2&{^&l4Kv2i-8I{0bfYrFz0S)MNuoZmk&yh!YaSANMJ| zZR0OkMdbq$&Aoc>wieoLE2*4Fqsp)zX^AZkxv=bL#31YQR}*M$SYGPRg?Piw)^puM z50r1;?E2v!&ab(}EaG&?7<_4BQ^aU!f|uF%*~i{4e#{|a6f7}{HH_YvFg^BPP{i)8 z(Qp$aG9wJGsYutK>&-!Z1}bQIdmi9per@O7LZA)iE&TDjZp<&G_f8FUkj{xRnEpL} zbjH9ycy8Fy5Vp`qG*z<5#IkrL*Zm7#A--?Go@&QE*J_X%ocTSI;B{j5>$q!*)gl!* zJm+XO?h=v17y|Z!s5r%Rl=}o%!8KDMkIA5e?(3FPQ3i@dMAc~i z#s2B39^N?lqgi@*J@THV@-gmnR`?66*ipCAH`^K%*yWzqAccR`HfD z6nw}k|IyKSEYC@X_{m9i#qct{^lma2lL=t@#jD{@`(+czy!mlEagePI zi{H0;-0fnT9*hf6m|1)Yp#I`O91N`=d;F#EeDt~{%&I*1LgYuUt$Ycsf1tP=H-|Z3jFEiztYD+k`EIMiI;%H@n+hiH<=it{0hUsm$M5kG{7gvl#b&c6KlH9{3QI*}Q<&3|8-X4+EhNIPp-yvmEvLLcvIeT`fzMz$ey zwPPr@OQ8em_)=ZHa#+|v9oJe>uSp2p(V8Mv7^yIjbnt7UA=AG4l(qMfjIwIgFI0FH zL)ZEGc!MR`pt)MA9AoNu)`H%5>+&Q?U2jutel1m5!ty^C)UB+sSj@3X(#O~8qh?!~ z2TECCnlB=uvT-3WA>qPDy+aoBa^QVqwJ~6`fUTrBj`AzZ@B~Q;ej-PuxisC_*jRyI z&+KM(mtM@+HvtORM!C6peNXA!C0CVw@{b8f>Fu&AyT>zQItGY;1SBw&Ow48zE)$0g zJE(Q6t>mjH3`y?0jGc>nsZ5CRq5w)nRqvDShu+5g(t1;V%crvtchX6Lm-)DX`k8jq zSlN?WH^LwqF39MeC@Ndc|A}r8arp0nH!`^pbx= zbsP7cC~AkHHtN!{@v6 zQO&vdNVM3qJa|NojjJ?iiU%sW)Ag?1lHu15J{E|t{wj*Q{62$V{A}W^Vr_CQnyyR! zR62VQ<2icwrL4uJ#K$ZAq8!^B_XN~AAbHsAyY|#1$llUH)K6rapLp)g>1#mtu4>O> z$}l7VmC@Du5}haIVxaoVHBzu&l3=wo7=;&RRN1{oN&xgVu$VC)^W5LD4@!56PDH6! zdr=b~;-OC0dtPMVp!u3>6KMzNu|qOw>JJYM8C`O5p9Jp-m(Fely@bYrODgRoStCI^ zcj5`(gq%2{iLr^a*^N8|n{uvfFKljV40>vCoh@e$%MgxbKz9l3mdJUuC%!_L*cqoG7i#wQCTyppXgwN zTpz{8D>u9*?c`pMH&n^znh1wDekwY8x(9ZXz!b*C&<|9B1}_={8-MjNnu}_zr8LC` zPG>)FI0b(SAr~)(XzxWf$c#HQjsKaS&bB-P$2CmhN2Ropld5@$Zsn%jKi5cCsV_Bt zHPxxn93oaPd{-oxnA*&v#T;%N|7}5;P1;+6n3(lqBl~IIyj>q7!shZl;{fz%FQOqz zD|RrZevBcC-t6IVs!?w`gL^0_qC!%mk~d8Cy%4ycwRN+LtE`Nh z@+iem(5T~>?{I1>zC``e9js`1@h2LZ@Nfmy)9PU{dD+#T5dHMnXj-4WXI7AGRXp#F zRzY&Ja;vAP(X^nenyy5xC)HVm-j5&3K!R7(L6I)qKmyP38xO_LFuB+lhgbxJIuzaF zxF1P*-th+}MwVL0g1^7&R@k5s|DZwO$U=LpWqT$UUbLg&`ORNxNZ5#qlCff22n?j* zh2OKRU~#cNVQ?<|d^Th;!5wGiB2G+Ra8=4GgcqKa7E;TspOm&#v%1DVngAGn%7IyBz`1q01Z}L7!_MuPw zM{Bs?51a0ucBp{cfb_?aZ({j#XUfd&sP4hS7uKl(8xQ<(SH`&VdE)c(;|SBB&~NU1 zjg&k_%9DconDjq$h9qX#4+E|hm{}G5#adl3BUwexhk}EkGfF8(@JB9g&2deP3B0>) zm{(7zN|X8-!6$O+0#pC)FI5HGe5E|;@Vs(-50y@wZfv=~+IIkqJlyWJ!IbC|C#}78~b-Q<@6kO&7|ld)ih@i;^rit2X?c>ibKA1ZPXKhwtUY zl2WRDez9TNtW@%NE$dl&Kmsmxl+^*%ZUlYgMFB&?#AdHy$Zy|7sLV-vAftEWln#%w zw#yM~)Z!^|+(Lj?U9S5qhGTDb#~I*W(vi=)Qpg^?M` zA8P8%4r`CUl<(sMo!V2P!{E?hkbJ9osGd5|rzUkGWzoPuSDf@{xynO#@ZSOl{ptTp ztN;I#W2^t&d-b=U0w0h8<8ha~_wx)0-)}QTHCS*6!P#XAV%?Pebjx;kE={cYEu3#G zGHnZFD48Ci&SZe}n8b-=(0Ytj84vzuZHi@pR9QZ2M^*Yp)Z?M>j1O{|BL6@Z`r zy=0=Fq5~-WuhRlrPiId&nxtipH=ccx6?zRo8f#lpW0-#AbR)Vr^*yQ-rPscT9|Bw)D2gR_8cu-Od|;} zuX0{q%1g~0vfiM3%x9s&d0n;UiaB=3oh~F zPWlhE|E7LzTUkdH=&4>E>)?G|s(<3^?30tY52D1ka~gOyP*`GL32hB`KwL1$>)3Ls_ zmK$wzRpdMt(P?E>f~3lrhBJ-$jTh#0MN8_&nn`3NnyoO)N{#md>C)qFrZj(E49S(J zKet$u&jrj%hvN zuh};Z8~7>2YLY_-F-ZVFYV#l%hLJv6WO+0YYMbSWV(_-m9 zTfKL^HP_g18R*BEB1}a@>Pc`n6M3i9kJf$JxjI)IHlK7OduMC=Kw7+SUbwsB;8HAM zZB4sxdaz4Vm|3Io64!G769zIjTU@X}TC5qw8K5++eW1I|4R}vvZhWOn_dthHJgQ(HA$ZxbB(1HpJ?cIxY&Vl6BfW1W}wvby->wik}G* zG-~wH`Y6crxUl^-s$)oI!M|nvTm&T>P2v7KUYOal8kefc2hDrV#H|Kbr=Vy6j;2Q5 zP1!wck$;L0wihFjm08IrhD{*S*j2Mk`hr3$urG~_jZ^dhSH22f zd#Z^IEx}+u7@zl9dX4Uyqt__aI>XslrOl`h-TFPHLOs9H+Y6qPdFxQq!+Rt?W{%;pPCwsl$a-j_D9Ny^}hyj0p0CniBluz%dL0+KYcV}KwNupI0i3i}1yU@!e~GvA|3j64lzJV?V56C^sZI3)VlRWzV`8rX^#^wh z1px1!&0r>N_De(n%c~DeLugC#3UbP%W3m!6guKgz79?B7g{7m!mcA)0?jtohPwdZ6 zy>vO{l3A^WhQbPSo0w}mv;45-c(1SwIT1zFMUxLs$Q1<^bGMPo?diG#Z@g)*&i$es z`LsyA9eWxcwsBrJZEZYUkUtpl3MO^v_3my@SJxXs3^RL2`jTjKrI{LXgphOBm>@jN zgKv1u(D}}O&DV8zG%H!Luw>gd+C#lipoCCvo~If3qM6sx%FtLI&G0^wkA2oEcZ`6cu_uU zi1Ebc+CiS>WHl8ne9ABZJ56^_B_JB(?2m2SOoLASzi*>*c!c+?Ka|1rb-MY!Wddn+ zx%C*etT~gpU`mhZGjn-_-^#D=%1dk1w?>%3Jc3)o{?7Iqjs-bgg~r~k(t)-P$<21QvZ(w@~q+mV0HwnB_`&N0Xh#iMx0cD)Xd zb4%>g>(|j2AEuyfb^l-?G57zJO8EJXdj`_oy@tvr4a1k=N`6QrGZvCQvielg_4aC% z3(F6GNGGOCKz^FV?>P2>KMM1{?rpRl?ohoiV~+^3{|75Br}Z&4Id5iY7o{H4Hat_Z zqt{WAHJ#c|&QgQy`%7p)7i|jZz?fm0L&PS`{-_Yr%4kn77@T)gRimt~ z_yoI9?;ot?O$?+rmXn>s(YDMq9y=|XNTR-sGW@*Ief5`2mJ1gYdXP79JLeZK3^uRG zm=g`z@l6Bwc87nRt+1zQ!D-fr2e>Wc^NZC5@?K4d5l#X$p7HY|6lY${{Macv&4XZuNUz@v;PfpXpU6? literal 0 HcmV?d00001 diff --git a/src/core/Geometry.js b/src/core/Geometry.js index c315fb9d..1de060d2 100644 --- a/src/core/Geometry.js +++ b/src/core/Geometry.js @@ -12,6 +12,8 @@ THREE.Geometry = function () { this.geometryChunks = {}; + this.hasTangents = false; + }; THREE.Geometry.prototype = { @@ -167,6 +169,121 @@ THREE.Geometry.prototype = { }, + computeTangents: function() { + + // based on http://www.terathon.com/code/tangent.html + // tangents go to vertices + + var f, fl, v, vl, face, uv, vA, vB, vC, uvA, uvB, uvC, + x1, x2, y1, y2, z1, z2, + s1, s2, t1, t2, r, t, n, + tan1 = [], tan2 = [], + sdir = new THREE.Vector3(), tdir = new THREE.Vector3(), + tmp = new THREE.Vector3(), tmp2 = new THREE.Vector3(), + n = new THREE.Vector3(), w; + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + tan1[ v ] = new THREE.Vector3(); + tan2[ v ] = new THREE.Vector3(); + + } + + function handleTriangle( context, a, b, c ) { + + vA = context.vertices[ a ].position; + vB = context.vertices[ b ].position; + vC = context.vertices[ c ].position; + + uvA = uv[ 0 ]; + uvB = uv[ 1 ]; + uvC = uv[ 2 ]; + + x1 = vB.x - vA.x; + x2 = vC.x - vA.x; + y1 = vB.y - vA.y; + y2 = vC.y - vA.y; + z1 = vB.z - vA.z; + z2 = vC.z - vA.z; + + s1 = uvB.u - uvA.u; + s2 = uvC.u - uvA.u; + t1 = uvB.v - uvA.v; + t2 = uvC.v - uvA.v; + + r = 1.0 / ( s1 * t2 - s2 * t1 ); + sdir.set( ( t2 * x1 - t1 * x2 ) * r, + ( t2 * y1 - t1 * y2 ) * r, + ( t2 * z1 - t1 * z2 ) * r ); + tdir.set( ( s1 * x2 - s2 * x1 ) * r, + ( s1 * y2 - s2 * y1 ) * r, + ( s1 * z2 - s2 * z1 ) * r ); + + tan1[ a ].addSelf( sdir ); + tan1[ b ].addSelf( sdir ); + tan1[ c ].addSelf( sdir ); + + tan2[ a ].addSelf( tdir ); + tan2[ b ].addSelf( tdir ); + tan2[ c ].addSelf( tdir ); + + } + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + uv = this.uvs[ f ]; + + if ( face instanceof THREE.Face3 ) { + + handleTriangle( this, face.a, face.b, face.c ); + + this.vertices[ face.a ].normal.copy( face.vertexNormals[ 0 ] ); + this.vertices[ face.b ].normal.copy( face.vertexNormals[ 1 ] ); + this.vertices[ face.c ].normal.copy( face.vertexNormals[ 2 ] ); + + + } else if ( face instanceof THREE.Face4 ) { + + handleTriangle( this, face.a, face.b, face.c ); + + // this messes up everything + // quads need to be handled differently + //handleTriangle( this, face.a, face.c, face.d ); + + this.vertices[ face.a ].normal.copy( face.vertexNormals[ 0 ] ); + this.vertices[ face.b ].normal.copy( face.vertexNormals[ 1 ] ); + this.vertices[ face.c ].normal.copy( face.vertexNormals[ 2 ] ); + this.vertices[ face.d ].normal.copy( face.vertexNormals[ 3 ] ); + + } + + } + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + n.copy( this.vertices[ v ].normal ); + t = tan1[ v ]; + + // Gram-Schmidt orthogonalize + + tmp.copy( t ); + tmp.subSelf( n.multiplyScalar( n.dot( t ) ) ).normalize(); + + // Calculate handedness + + tmp2.cross( this.vertices[ v ].normal, t ); + test = tmp2.dot( tan2[ v ] ); + w = (test < 0.0) ? -1.0 : 1.0; + + this.vertices[ v ].tangent.set( tmp.x, tmp.y, tmp.z, w ); + + } + + this.hasTangents = true; + + }, + computeBoundingBox: function () { if ( this.vertices.length > 0 ) { diff --git a/src/core/Vertex.js b/src/core/Vertex.js index 0fab06ee..af45869c 100644 --- a/src/core/Vertex.js +++ b/src/core/Vertex.js @@ -12,6 +12,8 @@ THREE.Vertex = function ( position, normal ) { this.normalWorld = new THREE.Vector3(); this.normalScreen = new THREE.Vector3(); + this.tangent = new THREE.Vector4(); + this.__visible = true; } diff --git a/src/extras/ShaderUtils.js b/src/extras/ShaderUtils.js index a87af227..8f11339d 100644 --- a/src/extras/ShaderUtils.js +++ b/src/extras/ShaderUtils.js @@ -62,6 +62,201 @@ var ShaderUtils = { "}" ].join("\n") + }, + + 'normal' : { + + uniforms: { + + "tNormal": { type: "t", value: 2, texture: null }, + "tAO": { type: "t", value: 3, texture: null }, + + "tDisplacement": { type: "t", value: 4, texture: null }, + "uDisplacementBias": { type: "f", value: -0.5 }, + "uDisplacementScale":{ type: "f", value: 2.5 }, + + "uPointLightPos": { type: "v3", value: new THREE.Vector3() }, + "uPointLightColor": { type: "c", value: new THREE.Color( 0xeeeeee ) }, + + "uDirLightPos": { type: "v3", value: new THREE.Vector3() }, + "uDirLightColor": { type: "c", value: new THREE.Color( 0xeeeeee ) }, + + "uAmbientLightColor":{ type: "c", value: new THREE.Color( 0x050505 ) }, + + "uDiffuseColor": { type: "c", value: new THREE.Color( 0xeeeeee ) }, + "uSpecularColor": { type: "c", value: new THREE.Color( 0x111111 ) }, + "uAmbientColor": { type: "c", value: new THREE.Color( 0x050505 ) }, + "uShininess": { type: "f", value: 30 } + + }, + + fragment_shader: [ + + "uniform vec3 uDirLightPos;", + "uniform vec3 uDirLightColor;", + + "uniform vec3 uPointLightPos;", + "uniform vec3 uPointLightColor;", + + "uniform vec3 uAmbientColor;", + "uniform vec3 uDiffuseColor;", + "uniform vec3 uSpecularColor;", + "uniform float uShininess;", + + "uniform sampler2D tNormal;", + "uniform sampler2D tAO;", + + "varying vec3 vTangent;", + "varying vec3 vBinormal;", + "varying vec3 vNormal;", + "varying vec2 vUv;", + + "varying vec3 vLightWeighting;", + "varying vec3 vPointLightVector;", + "varying vec3 vViewPosition;", + + "void main() {", + + "vec3 normalTex = normalize( texture2D( tNormal, vUv ).xyz * 2.0 - 1.0 );", + "vec3 aoTex = texture2D( tAO, vUv ).xyz;", + + "mat3 tsb = mat3( vTangent, vBinormal, vNormal );", + "vec3 finalNormal = tsb * normalTex;", + + "vec3 normal = normalize( finalNormal );", + "vec3 viewPosition = normalize( vViewPosition );", + + // point light + + "vec4 pointDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );", + "vec4 pointSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );", + + "vec3 pointVector = normalize( vPointLightVector );", + "vec3 pointHalfVector = normalize( vPointLightVector + vViewPosition );", + + "float pointDotNormalHalf = dot( normal, pointHalfVector );", + "float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );", + + "float pointSpecularWeight = 0.0;", + "if ( pointDotNormalHalf >= 0.0 )", + "pointSpecularWeight = pow( pointDotNormalHalf, uShininess );", + + "pointDiffuse += vec4( uDiffuseColor, 1.0 ) * pointDiffuseWeight;", + "pointSpecular += vec4( uSpecularColor, 1.0 ) * pointSpecularWeight;", + + // directional light + + "vec4 dirDiffuse = vec4( 0.0, 0.0, 0.0, 0.0 );", + "vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );", + + "vec4 lDirection = viewMatrix * vec4( uDirLightPos, 0.0 );", + + "vec3 dirVector = normalize( lDirection.xyz );", + "vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );", + + "float dirDotNormalHalf = dot( normal, dirHalfVector );", + "float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );", + + "float dirSpecularWeight = 0.0;", + "if ( dirDotNormalHalf >= 0.0 )", + "dirSpecularWeight = pow( dirDotNormalHalf, uShininess );", + + "dirDiffuse += vec4( uDiffuseColor, 1.0 ) * dirDiffuseWeight;", + "dirSpecular += vec4( uSpecularColor, 1.0 ) * dirSpecularWeight;", + + // all lights contribution summation + + "vec4 totalLight = vec4( uAmbientColor, 1.0 );", + "totalLight += dirDiffuse + dirSpecular;", + "totalLight += pointDiffuse + pointSpecular;", + + "gl_FragColor = vec4( totalLight.xyz * vLightWeighting * aoTex, 1.0 );", + + "}" + ].join("\n"), + + vertex_shader: [ + + "attribute vec4 tangent;", + + "uniform vec3 uDirLightPos;", + "uniform vec3 uDirLightColor;", + + "uniform vec3 uPointLightPos;", + "uniform vec3 uPointLightColor;", + + "uniform vec3 uAmbientLightColor;", + + "#ifdef VERTEX_TEXTURES", + + "uniform sampler2D tDisplacement;", + "uniform float uDisplacementScale;", + "uniform float uDisplacementBias;", + + "#endif", + + "varying vec3 vTangent;", + "varying vec3 vBinormal;", + "varying vec3 vNormal;", + "varying vec2 vUv;", + + "varying vec3 vLightWeighting;", + "varying vec3 vPointLightVector;", + "varying vec3 vViewPosition;", + + "void main() {", + + "vec4 mPosition = objectMatrix * vec4( position, 1.0 );", + "vViewPosition = cameraPosition - mPosition.xyz;", + + "vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );", + "vNormal = normalize( normalMatrix * normal );", + + // tangent and binormal vectors + + "vTangent = normalize( normalMatrix * tangent.xyz );", + + "vBinormal = cross( vNormal, vTangent ) * tangent.w;", + "vBinormal = normalize( vBinormal );", + + "vUv = uv;", + + // ambient light + + "vLightWeighting = uAmbientLightColor;", + + // point light + + "vec4 lPosition = viewMatrix * vec4( uPointLightPos, 1.0 );", + "vPointLightVector = normalize( lPosition.xyz - mvPosition.xyz );", + "float pointLightWeighting = max( dot( vNormal, vPointLightVector ), 0.0 );", + "vLightWeighting += uPointLightColor * pointLightWeighting;", + + // directional light + + "vec4 lDirection = viewMatrix * vec4( uDirLightPos, 0.0 );", + "float directionalLightWeighting = max( dot( vNormal, normalize( lDirection.xyz ) ), 0.0 );", + "vLightWeighting += uDirLightColor * directionalLightWeighting;", + + // displacement mapping + + "#ifdef VERTEX_TEXTURES", + + "vec3 dv = texture2D( tDisplacement, uv ).xyz;", + "float df = uDisplacementScale * dv.x + uDisplacementBias;", + "vec4 displacedPosition = vec4( vNormal.xyz * df, 0.0 ) + mvPosition;", + "gl_Position = projectionMatrix * displacedPosition;", + + "#else", + + "gl_Position = projectionMatrix * mvPosition;", + + "#endif", + + "}" + + ].join("\n") + } } diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 66e19d2f..452c5533 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -159,13 +159,14 @@ THREE.WebGLRenderer = function ( scene ) { this.createBuffers = function ( object, g ) { - var f, fl, fi, face, vertexNormals, normal, uv, v1, v2, v3, v4, m, ml, i, + var f, fl, fi, face, vertexNormals, normal, uv, v1, v2, v3, v4, t1, t2, t3, t4, m, ml, i, faceArray = [], lineArray = [], vertexArray = [], normalArray = [], + tangentArray = [], uvArray = [], vertexIndex = 0, @@ -193,8 +194,21 @@ THREE.WebGLRenderer = function ( scene ) { vertexArray.push( v2.x, v2.y, v2.z ); vertexArray.push( v3.x, v3.y, v3.z ); + if ( object.geometry.hasTangents ) { + + t1 = object.geometry.vertices[ face.a ].tangent; + t2 = object.geometry.vertices[ face.b ].tangent; + t3 = object.geometry.vertices[ face.c ].tangent; + + tangentArray.push( t1.x, t1.y, t1.z, t1.w ); + tangentArray.push( t2.x, t2.y, t2.z, t2.w ); + tangentArray.push( t3.x, t3.y, t3.z, t3.w ); + + } + if ( vertexNormals.length == 3 && needsSmoothNormals ) { + for ( i = 0; i < 3; i ++ ) { normalArray.push( vertexNormals[ i ].x, vertexNormals[ i ].y, vertexNormals[ i ].z ); @@ -242,15 +256,29 @@ THREE.WebGLRenderer = function ( scene ) { vertexArray.push( v2.x, v2.y, v2.z ); vertexArray.push( v3.x, v3.y, v3.z ); vertexArray.push( v4.x, v4.y, v4.z ); + + if ( object.geometry.hasTangents ) { + + t1 = object.geometry.vertices[ face.a ].tangent; + t2 = object.geometry.vertices[ face.b ].tangent; + t3 = object.geometry.vertices[ face.c ].tangent; + t4 = object.geometry.vertices[ face.d ].tangent; + + tangentArray.push( t1.x, t1.y, t1.z, t1.w ); + tangentArray.push( t2.x, t2.y, t2.z, t2.w ); + tangentArray.push( t3.x, t3.y, t3.z, t3.w ); + tangentArray.push( t4.x, t4.y, t4.z, t4.w ); + + } if ( vertexNormals.length == 4 && needsSmoothNormals ) { - + for ( i = 0; i < 4; i ++ ) { normalArray.push( vertexNormals[ i ].x, vertexNormals[ i ].y, vertexNormals[ i ].z ); } - + } else { for ( i = 0; i < 4; i ++ ) { @@ -302,6 +330,14 @@ THREE.WebGLRenderer = function ( scene ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryChunk.__webGLNormalBuffer ); _gl.bufferData( _gl.ARRAY_BUFFER, new Float32Array( normalArray ), _gl.STATIC_DRAW ); + if ( object.geometry.hasTangents ) { + + geometryChunk.__webGLTangentBuffer = _gl.createBuffer(); + _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryChunk.__webGLTangentBuffer ); + _gl.bufferData( _gl.ARRAY_BUFFER, new Float32Array( tangentArray ), _gl.STATIC_DRAW ); + + } + if ( uvArray.length > 0 ) { geometryChunk.__webGLUVBuffer = _gl.createBuffer(); @@ -346,7 +382,7 @@ THREE.WebGLRenderer = function ( scene ) { } cacheUniformLocations( material.program, identifiers ); - cacheAttributeLocations( material.program, [ "position", "normal", "uv" ] ); + cacheAttributeLocations( material.program, [ "position", "normal", "uv", "tangent" ] ); } @@ -374,7 +410,6 @@ THREE.WebGLRenderer = function ( scene ) { this.loadCamera( program, camera ); this.loadMatrices( program ); - if ( material instanceof THREE.MeshShaderMaterial ) { mWireframe = material.wireframe; @@ -507,6 +542,15 @@ THREE.WebGLRenderer = function ( scene ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryChunk.__webGLNormalBuffer ); _gl.vertexAttribPointer( attributes.normal, 3, _gl.FLOAT, false, 0, 0 ); + // tangents + + if ( attributes.tangent >= 0 ) { + + _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryChunk.__webGLTangentBuffer ); + _gl.vertexAttribPointer( attributes.tangent, 4, _gl.FLOAT, false, 0, 0 ); + + } + // uvs if ( attributes.uv >= 0 ) { @@ -828,6 +872,19 @@ THREE.WebGLRenderer = function ( scene ) { }; + this.supportsVertexTextures = function() { + + return maxVertexTextures() > 0; + + }; + + function maxVertexTextures() { + + return _gl.getParameter( _gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS ); + + }; + + function initGL() { try { @@ -940,7 +997,7 @@ THREE.WebGLRenderer = function ( scene ) { "} else if ( material == 4 ) { ", - "gl_FragColor = vec4( 0.5*normalize( vNormal ) + vec3(0.5, 0.5, 0.5), mOpacity );", + "gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, mOpacity );", // Depth @@ -1184,6 +1241,8 @@ THREE.WebGLRenderer = function ( scene ) { ].join("\n"), prefix_vertex = [ + maxVertexTextures() > 0 ? "#define VERTEX_TEXTURES" : "", + "uniform mat4 objectMatrix;", "uniform mat4 modelViewMatrix;", "uniform mat4 projectionMatrix;",