From abda94ddf813313332d4dbb4552b40ee7919d972 Mon Sep 17 00:00:00 2001 From: Joshua Seigler Date: Fri, 12 Oct 2018 14:12:30 -0400 Subject: [PATCH] Updates --- app.js | 2 +- textures/clouds-dithered.png | Bin 0 -> 17051 bytes textures/clouds.jpg | Bin 18514 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 textures/clouds-dithered.png delete mode 100644 textures/clouds.jpg diff --git a/app.js b/app.js index 1764c8f..e1730c3 100644 --- a/app.js +++ b/app.js @@ -49,4 +49,4 @@ s.vertexColors===rl&&R.multiply(a.color),D.copy(F),j.copy(e.positionWorld).add(r },skin:{uniforms:Mu.merge([mp.fog,mp.lights,{passID:{value:0},tDiffuse:{value:null},tNormal:{value:null},tBlur1:{value:null},tBlur2:{value:null},tBlur3:{value:null},tBlur4:{value:null},tBeckmann:{value:null},uNormalScale:{value:1},diffuse:{value:new u(15658734)},specular:{value:new u(1118481)},opacity:{value:1},uRoughness:{value:.15},uSpecularBrightness:{value:.75}}]),fragmentShader:["uniform vec3 diffuse;","uniform vec3 specular;","uniform float opacity;","uniform float uRoughness;","uniform float uSpecularBrightness;","uniform int passID;","uniform sampler2D tDiffuse;","uniform sampler2D tNormal;","uniform sampler2D tBlur1;","uniform sampler2D tBlur2;","uniform sampler2D tBlur3;","uniform sampler2D tBlur4;","uniform sampler2D tBeckmann;","uniform float uNormalScale;","varying vec3 vNormal;","varying vec2 vUv;","varying vec3 vViewPosition;",fp.common,fp.lights_pars_begin,fp.fog_pars_fragment,"float fresnelReflectance( vec3 H, vec3 V, float F0 ) {","float base = 1.0 - dot( V, H );","float exponential = pow( base, 5.0 );","return exponential + F0 * ( 1.0 - exponential );","}","float KS_Skin_Specular( vec3 N,","vec3 L,","vec3 V,","float m,","float rho_s",") {","float result = 0.0;","float ndotl = dot( N, L );","if( ndotl > 0.0 ) {","vec3 h = L + V;","vec3 H = normalize( h );","float ndoth = dot( N, H );","float PH = pow( 2.0 * texture2D( tBeckmann, vec2( ndoth, m ) ).x, 10.0 );","float F = fresnelReflectance( H, V, 0.028 );","float frSpec = max( PH * F / dot( h, h ), 0.0 );","result = ndotl * rho_s * frSpec;","}","return result;","}","void main() {","vec3 outgoingLight = vec3( 0.0 );","vec4 diffuseColor = vec4( diffuse, opacity );","vec4 mSpecular = vec4( specular, opacity );","vec4 colDiffuse = texture2D( tDiffuse, vUv );","colDiffuse *= colDiffuse;","diffuseColor *= colDiffuse;","vec4 posAndU = vec4( -vViewPosition, vUv.x );","vec4 posAndU_dx = dFdx( posAndU ), posAndU_dy = dFdy( posAndU );","vec3 tangent = posAndU_dx.w * posAndU_dx.xyz + posAndU_dy.w * posAndU_dy.xyz;","vec3 normal = normalize( vNormal );","vec3 binormal = normalize( cross( tangent, normal ) );","tangent = cross( normal, binormal );","mat3 tsb = mat3( tangent, binormal, normal );","vec3 normalTex = texture2D( tNormal, vUv ).xyz * 2.0 - 1.0;","normalTex.xy *= uNormalScale;","normalTex = normalize( normalTex );","vec3 finalNormal = tsb * normalTex;","normal = normalize( finalNormal );","vec3 viewerDirection = normalize( vViewPosition );","vec3 totalDiffuseLight = vec3( 0.0 );","vec3 totalSpecularLight = vec3( 0.0 );","#if NUM_POINT_LIGHTS > 0","for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {","vec3 pointVector = normalize( pointLights[ i ].direction );","float attenuation = calcLightAttenuation( length( lVector ), pointLights[ i ].distance, pointLights[ i ].decay );","float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );","totalDiffuseLight += pointLightColor[ i ] * ( pointDiffuseWeight * attenuation );","if ( passID == 1 ) {","float pointSpecularWeight = KS_Skin_Specular( normal, pointVector, viewerDirection, uRoughness, uSpecularBrightness );","totalSpecularLight += pointLightColor[ i ] * mSpecular.xyz * ( pointSpecularWeight * attenuation );","}","}","#endif","#if NUM_DIR_LIGHTS > 0","for( int i = 0; i < NUM_DIR_LIGHTS; i++ ) {","vec3 dirVector = directionalLights[ i ].direction;","float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );","totalDiffuseLight += directionalLights[ i ].color * dirDiffuseWeight;","if ( passID == 1 ) {","float dirSpecularWeight = KS_Skin_Specular( normal, dirVector, viewerDirection, uRoughness, uSpecularBrightness );","totalSpecularLight += directionalLights[ i ].color * mSpecular.xyz * dirSpecularWeight;","}","}","#endif","outgoingLight += diffuseColor.rgb * ( totalDiffuseLight + totalSpecularLight );","if ( passID == 0 ) {","outgoingLight = sqrt( outgoingLight );","} else if ( passID == 1 ) {","#ifdef VERSION1","vec3 nonblurColor = sqrt(outgoingLight );","#else","vec3 nonblurColor = outgoingLight;","#endif","vec3 blur1Color = texture2D( tBlur1, vUv ).xyz;","vec3 blur2Color = texture2D( tBlur2, vUv ).xyz;","vec3 blur3Color = texture2D( tBlur3, vUv ).xyz;","vec3 blur4Color = texture2D( tBlur4, vUv ).xyz;","outgoingLight = vec3( vec3( 0.22, 0.437, 0.635 ) * nonblurColor + ","vec3( 0.101, 0.355, 0.365 ) * blur1Color + ","vec3( 0.119, 0.208, 0.0 ) * blur2Color + ","vec3( 0.114, 0.0, 0.0 ) * blur3Color + ","vec3( 0.444, 0.0, 0.0 ) * blur4Color );","outgoingLight *= sqrt( colDiffuse.xyz );","outgoingLight += ambientLightColor * diffuse * colDiffuse.xyz + totalSpecularLight;","#ifndef VERSION1","outgoingLight = sqrt( outgoingLight );","#endif","}","gl_FragColor = vec4( outgoingLight, diffuseColor.a );",fp.fog_fragment,"}"].join("\n"),vertexShader:["#ifdef VERTEX_TEXTURES","uniform sampler2D tDisplacement;","uniform float uDisplacementScale;","uniform float uDisplacementBias;","#endif","varying vec3 vNormal;","varying vec2 vUv;","varying vec3 vViewPosition;",fp.common,fp.fog_pars_vertex,"void main() {","vec4 worldPosition = modelMatrix * vec4( position, 1.0 );","vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );","vViewPosition = -mvPosition.xyz;","vNormal = normalize( normalMatrix * normal );","vUv = uv;","#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",fp.fog_vertex,"}"].join("\n"),vertexShaderUV:["varying vec3 vNormal;","varying vec2 vUv;","varying vec3 vViewPosition;",fp.common,"void main() {","vec4 worldPosition = modelMatrix * vec4( position, 1.0 );","vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );","vViewPosition = -mvPosition.xyz;","vNormal = normalize( normalMatrix * normal );","vUv = uv;","gl_Position = vec4( uv.x * 2.0 - 1.0, uv.y * 2.0 - 1.0, 0.0, 1.0 );","}"].join("\n")},beckmann:{uniforms:{},vertexShader:["varying vec2 vUv;","void main() {","vUv = uv;","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["varying vec2 vUv;","float PHBeckmann( float ndoth, float m ) {","float alpha = acos( ndoth );","float ta = tan( alpha );","float val = 1.0 / ( m * m * pow( ndoth, 4.0 ) ) * exp( -( ta * ta ) / ( m * m ) );","return val;","}","float KSTextureCompute( vec2 tex ) {","return 0.5 * pow( PHBeckmann( tex.x, tex.y ), 0.1 );","}","void main() {","float x = KSTextureCompute( vUv );","gl_FragColor = vec4( x, x, x, 1.0 );","}"].join("\n")}},Uy={terrain:{uniforms:Mu.merge([mp.fog,mp.lights,{enableDiffuse1:{value:0},enableDiffuse2:{value:0},enableSpecular:{value:0},enableReflection:{value:0},tDiffuse1:{value:null},tDiffuse2:{value:null},tDetail:{value:null},tNormal:{value:null},tSpecular:{value:null},tDisplacement:{value:null},uNormalScale:{value:1},uDisplacementBias:{value:0},uDisplacementScale:{value:1},diffuse:{value:new u(15658734)},specular:{value:new u(1118481)},shininess:{value:30},opacity:{value:1},uRepeatBase:{value:new f(1,1)},uRepeatOverlay:{value:new f(1,1)},uOffset:{value:new f(0,0)}}]),fragmentShader:["uniform vec3 diffuse;","uniform vec3 specular;","uniform float shininess;","uniform float opacity;","uniform bool enableDiffuse1;","uniform bool enableDiffuse2;","uniform bool enableSpecular;","uniform sampler2D tDiffuse1;","uniform sampler2D tDiffuse2;","uniform sampler2D tDetail;","uniform sampler2D tNormal;","uniform sampler2D tSpecular;","uniform sampler2D tDisplacement;","uniform float uNormalScale;","uniform vec2 uRepeatOverlay;","uniform vec2 uRepeatBase;","uniform vec2 uOffset;","varying vec3 vTangent;","varying vec3 vBinormal;","varying vec3 vNormal;","varying vec2 vUv;","varying vec3 vViewPosition;",fp.common,fp.bsdfs,fp.lights_pars_begin,fp.shadowmap_pars_fragment,fp.fog_pars_fragment,"float calcLightAttenuation( float lightDistance, float cutoffDistance, float decayExponent ) {","if ( decayExponent > 0.0 ) {","return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );","}","return 1.0;","}","void main() {","vec3 outgoingLight = vec3( 0.0 );","vec4 diffuseColor = vec4( diffuse, opacity );","vec3 specularTex = vec3( 1.0 );","vec2 uvOverlay = uRepeatOverlay * vUv + uOffset;","vec2 uvBase = uRepeatBase * vUv;","vec3 normalTex = texture2D( tDetail, uvOverlay ).xyz * 2.0 - 1.0;","normalTex.xy *= uNormalScale;","normalTex = normalize( normalTex );","if( enableDiffuse1 && enableDiffuse2 ) {","vec4 colDiffuse1 = texture2D( tDiffuse1, uvOverlay );","vec4 colDiffuse2 = texture2D( tDiffuse2, uvOverlay );","colDiffuse1 = GammaToLinear( colDiffuse1, float( GAMMA_FACTOR ) );","colDiffuse2 = GammaToLinear( colDiffuse2, float( GAMMA_FACTOR ) );","diffuseColor *= mix ( colDiffuse1, colDiffuse2, 1.0 - texture2D( tDisplacement, uvBase ) );"," } else if( enableDiffuse1 ) {","diffuseColor *= texture2D( tDiffuse1, uvOverlay );","} else if( enableDiffuse2 ) {","diffuseColor *= texture2D( tDiffuse2, uvOverlay );","}","if( enableSpecular )","specularTex = texture2D( tSpecular, uvOverlay ).xyz;","mat3 tsb = mat3( vTangent, vBinormal, vNormal );","vec3 finalNormal = tsb * normalTex;","vec3 normal = normalize( finalNormal );","vec3 viewPosition = normalize( vViewPosition );","vec3 totalDiffuseLight = vec3( 0.0 );","vec3 totalSpecularLight = vec3( 0.0 );","#if NUM_POINT_LIGHTS > 0","for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {","vec3 lVector = pointLights[ i ].position + vViewPosition.xyz;","float attenuation = calcLightAttenuation( length( lVector ), pointLights[ i ].distance, pointLights[ i ].decay );","lVector = normalize( lVector );","vec3 pointHalfVector = normalize( lVector + viewPosition );","float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );","float pointDiffuseWeight = max( dot( normal, lVector ), 0.0 );","float pointSpecularWeight = specularTex.r * max( pow( pointDotNormalHalf, shininess ), 0.0 );","totalDiffuseLight += attenuation * pointLights[ i ].color * pointDiffuseWeight;","totalSpecularLight += attenuation * pointLights[ i ].color * specular * pointSpecularWeight * pointDiffuseWeight;","}","#endif","#if NUM_DIR_LIGHTS > 0","vec3 dirDiffuse = vec3( 0.0 );","vec3 dirSpecular = vec3( 0.0 );","for( int i = 0; i < NUM_DIR_LIGHTS; i++ ) {","vec3 dirVector = directionalLights[ i ].direction;","vec3 dirHalfVector = normalize( dirVector + viewPosition );","float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );","float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );","float dirSpecularWeight = specularTex.r * max( pow( dirDotNormalHalf, shininess ), 0.0 );","totalDiffuseLight += directionalLights[ i ].color * dirDiffuseWeight;","totalSpecularLight += directionalLights[ i ].color * specular * dirSpecularWeight * dirDiffuseWeight;","}","#endif","#if NUM_HEMI_LIGHTS > 0","vec3 hemiDiffuse = vec3( 0.0 );","vec3 hemiSpecular = vec3( 0.0 );","for( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {","vec3 lVector = hemisphereLightDirection[ i ];","float dotProduct = dot( normal, lVector );","float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;","totalDiffuseLight += mix( hemisphereLights[ i ].groundColor, hemisphereLights[ i ].skyColor, hemiDiffuseWeight );","float hemiSpecularWeight = 0.0;","vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );","float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;","hemiSpecularWeight += specularTex.r * max( pow( hemiDotNormalHalfSky, shininess ), 0.0 );","vec3 lVectorGround = -lVector;","vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );","float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;","hemiSpecularWeight += specularTex.r * max( pow( hemiDotNormalHalfGround, shininess ), 0.0 );","totalSpecularLight += specular * mix( hemisphereLights[ i ].groundColor, hemisphereLights[ i ].skyColor, hemiDiffuseWeight ) * hemiSpecularWeight * hemiDiffuseWeight;","}","#endif","outgoingLight += diffuseColor.xyz * ( totalDiffuseLight + ambientLightColor + totalSpecularLight );","gl_FragColor = vec4( outgoingLight, diffuseColor.a );",fp.fog_fragment,"}"].join("\n"),vertexShader:["attribute vec4 tangent;","uniform vec2 uRepeatBase;","uniform sampler2D tNormal;","#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 vViewPosition;",fp.shadowmap_pars_vertex,fp.fog_pars_vertex,"void main() {","vNormal = normalize( normalMatrix * normal );","vTangent = normalize( normalMatrix * tangent.xyz );","vBinormal = cross( vNormal, vTangent ) * tangent.w;","vBinormal = normalize( vBinormal );","vUv = uv;","vec2 uvBase = uv * uRepeatBase;","#ifdef VERTEX_TEXTURES","vec3 dv = texture2D( tDisplacement, uvBase ).xyz;","float df = uDisplacementScale * dv.x + uDisplacementBias;","vec3 displacedPosition = normal * df + position;","vec4 worldPosition = modelMatrix * vec4( displacedPosition, 1.0 );","vec4 mvPosition = modelViewMatrix * vec4( displacedPosition, 1.0 );","#else","vec4 worldPosition = modelMatrix * vec4( position, 1.0 );","vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );","#endif","gl_Position = projectionMatrix * mvPosition;","vViewPosition = -mvPosition.xyz;","vec3 normalTex = texture2D( tNormal, uvBase ).xyz * 2.0 - 1.0;","vNormal = normalMatrix * normalTex;",fp.shadowmap_vertex,fp.fog_vertex,"}"].join("\n")}},ky={toon1:{uniforms:{uDirLightPos:{value:new i},uDirLightColor:{value:new u(15658734)},uAmbientLightColor:{value:new u(328965)},uBaseColor:{value:new u(16777215)}},vertexShader:["varying vec3 vNormal;","varying vec3 vRefract;","void main() {","vec4 worldPosition = modelMatrix * vec4( position, 1.0 );","vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );","vec3 worldNormal = normalize ( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );","vNormal = normalize( normalMatrix * normal );","vec3 I = worldPosition.xyz - cameraPosition;","vRefract = refract( normalize( I ), worldNormal, 1.02 );","gl_Position = projectionMatrix * mvPosition;","}"].join("\n"),fragmentShader:["uniform vec3 uBaseColor;","uniform vec3 uDirLightPos;","uniform vec3 uDirLightColor;","uniform vec3 uAmbientLightColor;","varying vec3 vNormal;","varying vec3 vRefract;","void main() {","float directionalLightWeighting = max( dot( normalize( vNormal ), uDirLightPos ), 0.0);","vec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;","float intensity = smoothstep( - 0.5, 1.0, pow( length(lightWeighting), 20.0 ) );","intensity += length(lightWeighting) * 0.2;","float cameraWeighting = dot( normalize( vNormal ), vRefract );","intensity += pow( 1.0 - length( cameraWeighting ), 6.0 );","intensity = intensity * 0.2 + 0.3;","if ( intensity < 0.50 ) {","gl_FragColor = vec4( 2.0 * intensity * uBaseColor, 1.0 );","} else {","gl_FragColor = vec4( 1.0 - 2.0 * ( 1.0 - intensity ) * ( 1.0 - uBaseColor ), 1.0 );","}","}"].join("\n")},toon2:{uniforms:{uDirLightPos:{value:new i},uDirLightColor:{value:new u(15658734)},uAmbientLightColor:{value:new u(328965)},uBaseColor:{value:new u(15658734)},uLineColor1:{value:new u(8421504)},uLineColor2:{value:new u(0)},uLineColor3:{value:new u(0)},uLineColor4:{value:new u(0)}},vertexShader:["varying vec3 vNormal;","void main() {","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","vNormal = normalize( normalMatrix * normal );","}"].join("\n"),fragmentShader:["uniform vec3 uBaseColor;","uniform vec3 uLineColor1;","uniform vec3 uLineColor2;","uniform vec3 uLineColor3;","uniform vec3 uLineColor4;","uniform vec3 uDirLightPos;","uniform vec3 uDirLightColor;","uniform vec3 uAmbientLightColor;","varying vec3 vNormal;","void main() {","float camera = max( dot( normalize( vNormal ), vec3( 0.0, 0.0, 1.0 ) ), 0.4);","float light = max( dot( normalize( vNormal ), uDirLightPos ), 0.0);","gl_FragColor = vec4( uBaseColor, 1.0 );","if ( length(uAmbientLightColor + uDirLightColor * light) < 1.00 ) {","gl_FragColor *= vec4( uLineColor1, 1.0 );","}","if ( length(uAmbientLightColor + uDirLightColor * camera) < 0.50 ) {","gl_FragColor *= vec4( uLineColor2, 1.0 );","}","}"].join("\n")},hatching:{uniforms:{uDirLightPos:{value:new i},uDirLightColor:{value:new u(15658734)},uAmbientLightColor:{value:new u(328965)},uBaseColor:{value:new u(16777215)},uLineColor1:{value:new u(0)},uLineColor2:{value:new u(0)},uLineColor3:{value:new u(0)},uLineColor4:{value:new u(0)}},vertexShader:["varying vec3 vNormal;","void main() {","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","vNormal = normalize( normalMatrix * normal );","}"].join("\n"),fragmentShader:["uniform vec3 uBaseColor;","uniform vec3 uLineColor1;","uniform vec3 uLineColor2;","uniform vec3 uLineColor3;","uniform vec3 uLineColor4;","uniform vec3 uDirLightPos;","uniform vec3 uDirLightColor;","uniform vec3 uAmbientLightColor;","varying vec3 vNormal;","void main() {","float directionalLightWeighting = max( dot( normalize(vNormal), uDirLightPos ), 0.0);","vec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;","gl_FragColor = vec4( uBaseColor, 1.0 );","if ( length(lightWeighting) < 1.00 ) {","if ( mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0) {","gl_FragColor = vec4( uLineColor1, 1.0 );","}","}","if ( length(lightWeighting) < 0.75 ) {","if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0) {","gl_FragColor = vec4( uLineColor2, 1.0 );","}","}","if ( length(lightWeighting) < 0.50 ) {","if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0) {","gl_FragColor = vec4( uLineColor3, 1.0 );","}","}","if ( length(lightWeighting) < 0.3465 ) {","if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0) {","gl_FragColor = vec4( uLineColor4, 1.0 );","}","}","}"].join("\n")},dotted:{uniforms:{uDirLightPos:{value:new i},uDirLightColor:{value:new u(15658734)},uAmbientLightColor:{value:new u(328965)},uBaseColor:{value:new u(16777215)},uLineColor1:{value:new u(0)}},vertexShader:["varying vec3 vNormal;","void main() {","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","vNormal = normalize( normalMatrix * normal );","}"].join("\n"),fragmentShader:["uniform vec3 uBaseColor;","uniform vec3 uLineColor1;","uniform vec3 uLineColor2;","uniform vec3 uLineColor3;","uniform vec3 uLineColor4;","uniform vec3 uDirLightPos;","uniform vec3 uDirLightColor;","uniform vec3 uAmbientLightColor;","varying vec3 vNormal;","void main() {","float directionalLightWeighting = max( dot( normalize(vNormal), uDirLightPos ), 0.0);","vec3 lightWeighting = uAmbientLightColor + uDirLightColor * directionalLightWeighting;","gl_FragColor = vec4( uBaseColor, 1.0 );","if ( length(lightWeighting) < 1.00 ) {","if ( ( mod(gl_FragCoord.x, 4.001) + mod(gl_FragCoord.y, 4.0) ) > 6.00 ) {","gl_FragColor = vec4( uLineColor1, 1.0 );","}","}","if ( length(lightWeighting) < 0.50 ) {","if ( ( mod(gl_FragCoord.x + 2.0, 4.001) + mod(gl_FragCoord.y + 2.0, 4.0) ) > 6.00 ) {","gl_FragColor = vec4( uLineColor1, 1.0 );","}","}","}"].join("\n")}},By=function(){this.uniforms=Mu.merge([mp.common,mp.lights,{color:{value:new u(16777215)},diffuse:{value:new u(16777215)},specular:{value:new u(16777215)},emissive:{value:new u(0)},opacity:{value:1},shininess:{value:1},thicknessMap:{value:null},thicknessColor:{value:new u(16777215)},thicknessDistortion:{value:.1},thicknessAmbient:{value:0},thicknessAttenuation:{value:.1},thicknessPower:{value:2},thicknessScale:{value:10}}]),this.fragmentShader=["#define USE_MAP","#define PHONG","#define TRANSLUCENT","#include ","#include ","#include ","#include ","#include ","varying vec3 vColor;","uniform vec3 diffuse;","uniform vec3 specular;","uniform vec3 emissive;","uniform float opacity;","uniform float shininess;","uniform sampler2D thicknessMap;","uniform float thicknessPower;","uniform float thicknessScale;","uniform float thicknessDistortion;","uniform float thicknessAmbient;","uniform float thicknessAttenuation;","uniform vec3 thicknessColor;",fp.lights_pars_begin,"void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {","\tvec3 thickness = thicknessColor * texture2D(thicknessMap, uv).r;","\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));","\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;","\tvec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;","\treflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;","}","void main() {","\tvec3 normal = normalize( vNormal );","\tvec3 viewerDirection = normalize( vViewPosition );","\tvec4 diffuseColor = vec4( diffuse, opacity );","\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",fp.map_fragment,fp.color_fragment,fp.specularmap_fragment,"\tvec3 totalEmissiveRadiance = emissive;",fp.lights_phong_fragment,"\tGeometricContext geometry;","\tgeometry.position = - vViewPosition;","\tgeometry.normal = normal;","\tgeometry.viewDir = normalize( vViewPosition );","\tIncidentLight directLight;","\t#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )","\t\tPointLight pointLight;","\t\t#pragma unroll_loop","\t\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {","\t\t \tpointLight = pointLights[ i ];","\t\t \tgetPointDirectLightIrradiance( pointLight, geometry, directLight );","\t\t\t#ifdef USE_SHADOWMAP","\t\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;","\t\t\t#endif","\t\t\tRE_Direct( directLight, geometry, material, reflectedLight );","\t\t\t#if defined( TRANSLUCENT ) && defined( USE_MAP )","\t\t\tRE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);","\t\t\t#endif","\t\t}","\t\t#endif","\t#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )","\t\tDirectionalLight directionalLight;","\t\t#pragma unroll_loop","\t\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {","\t\t\tdirectionalLight = directionalLights[ i ];","\t\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );","\t\t\t#ifdef USE_SHADOWMAP","\t\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;","\t\t\t#endif","\t\t\tRE_Direct( directLight, geometry, material, reflectedLight );","\t\t\t#if defined( TRANSLUCENT ) && defined( USE_MAP )","\t\t\tRE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);","\t\t\t#endif","\t\t}","\t#endif","\t#if defined( RE_IndirectDiffuse )","\t\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );","\t\t#if ( NUM_HEMI_LIGHTS > 0 )","\t\t\t#pragma unroll_loop","\t\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {","\t\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );","\t\t\t}","\t\t#endif","\t#endif","\t#if defined( RE_IndirectSpecular )","\t\tvec3 radiance = vec3( 0.0 );","\t\tvec3 clearCoatRadiance = vec3( 0.0 );","\t#endif",fp.lights_fragment_end,"\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;","\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );",fp.encodings_fragment,"}"].join("\n"),this.vertexShader=["varying vec3 vNormal;","varying vec2 vUv;","varying vec3 vViewPosition;",fp.common,"void main() {","\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );","\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );","\tvViewPosition = -mvPosition.xyz;","\tvNormal = normalize( normalMatrix * normal );","\tvUv = uv;","\tgl_Position = projectionMatrix * mvPosition;","}"].join("\n")},zy=function(e){var t=this;void 0==e&&(e=Math),this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.grad4=[[0,1,1,1],[0,1,1,-1],[0,1,-1,1],[0,1,-1,-1],[0,-1,1,1],[0,-1,1,-1],[0,-1,-1,1],[0,-1,-1,-1],[1,0,1,1],[1,0,1,-1],[1,0,-1,1],[1,0,-1,-1],[-1,0,1,1],[-1,0,1,-1],[-1,0,-1,1],[-1,0,-1,-1],[1,1,0,1],[1,1,0,-1],[1,-1,0,1],[1,-1,0,-1],[-1,1,0,1],[-1,1,0,-1],[-1,-1,0,1],[-1,-1,0,-1],[1,1,1,0],[1,1,-1,0],[1,-1,1,0],[1,-1,-1,0],[-1,1,1,0],[-1,1,-1,0],[-1,-1,1,0],[-1,-1,-1,0]],this.p=[];for(var r=0;r<256;r++)t.p[r]=Math.floor(256*e.random());this.perm=[];for(var r=0;r<512;r++)t.perm[r]=t.p[255&r];this.simplex=[[0,1,2,3],[0,1,3,2],[0,0,0,0],[0,2,3,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,3,0],[0,2,1,3],[0,0,0,0],[0,3,1,2],[0,3,2,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,3,2,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,0,3],[0,0,0,0],[1,3,0,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,3,0,1],[2,3,1,0],[1,0,2,3],[1,0,3,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,3,1],[0,0,0,0],[2,1,3,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,1,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,0,1,2],[3,0,2,1],[0,0,0,0],[3,1,2,0],[2,1,0,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,1,0,2],[0,0,0,0],[3,2,0,1],[3,2,1,0]]};zy.prototype.dot=function(e,t,r){return e[0]*t+e[1]*r},zy.prototype.dot3=function(e,t,r,i){return e[0]*t+e[1]*r+e[2]*i},zy.prototype.dot4=function(e,t,r,i,n){return e[0]*t+e[1]*r+e[2]*i+e[3]*n},zy.prototype.noise=function(e,t){var r,i,n,a,o,s=.5*(Math.sqrt(3)-1),l=(e+t)*s,c=Math.floor(e+l),u=Math.floor(t+l),h=(3-Math.sqrt(3))/6,d=(c+u)*h,p=c-d,f=u-d,m=e-p,v=t-f;m>v?(a=1,o=0):(a=0,o=1);var g=m-a+h,y=v-o+h,x=m-1+2*h,b=v-1+2*h,w=255&c,_=255&u,S=this.perm[w+this.perm[_]]%12,A=this.perm[w+a+this.perm[_+o]]%12,M=this.perm[w+1+this.perm[_+1]]%12,T=.5-m*m-v*v;T<0?r=0:(T*=T,r=T*T*this.dot(this.grad3[S],m,v));var E=.5-g*g-y*y;E<0?i=0:(E*=E,i=E*E*this.dot(this.grad3[A],g,y));var C=.5-x*x-b*b;return C<0?n=0:(C*=C,n=C*C*this.dot(this.grad3[M],x,b)),70*(r+i+n)},zy.prototype.noise3d=function(e,t,r){var i,n,a,o,s,l,c,u,h,d,p=1/3,f=(e+t+r)*p,m=Math.floor(e+f),v=Math.floor(t+f),g=Math.floor(r+f),y=1/6,x=(m+v+g)*y,b=m-x,w=v-x,_=g-x,S=e-b,A=t-w,M=r-_;S>=A?A>=M?(s=1,l=0,c=0,u=1,h=1,d=0):S>=M?(s=1,l=0,c=0,u=1,h=0,d=1):(s=0,l=0,c=1,u=1,h=0,d=1):AU?32:0,j=I>k?16:0,V=U>k?8:0,G=I>B?4:0,W=U>B?2:0,X=k>B?1:0,H=z+j+V+G+W+X;c=_[H][0]>=3?1:0,u=_[H][1]>=3?1:0,h=_[H][2]>=3?1:0,d=_[H][3]>=3?1:0,p=_[H][0]>=2?1:0,f=_[H][1]>=2?1:0,m=_[H][2]>=2?1:0,v=_[H][3]>=2?1:0,g=_[H][0]>=1?1:0,y=_[H][1]>=1?1:0,x=_[H][2]>=1?1:0,b=_[H][3]>=1?1:0;var Y=I-c+M,q=U-u+M,Q=k-h+M,J=B-d+M,Z=I-p+2*M,K=U-f+2*M,$=k-m+2*M,ee=B-v+2*M,te=I-g+3*M,re=U-y+3*M,ie=k-x+3*M,ne=B-b+3*M,ae=I-1+4*M,oe=U-1+4*M,se=k-1+4*M,le=B-1+4*M,ce=255&E,ue=255&C,he=255&L,de=255&P,pe=S[ce+S[ue+S[he+S[de]]]]%32,fe=S[ce+c+S[ue+u+S[he+h+S[de+d]]]]%32,me=S[ce+p+S[ue+f+S[he+m+S[de+v]]]]%32,ve=S[ce+g+S[ue+y+S[he+x+S[de+b]]]]%32,ge=S[ce+1+S[ue+1+S[he+1+S[de+1]]]]%32,ye=.6-I*I-U*U-k*k-B*B;ye<0?n=0:(ye*=ye,n=ye*ye*this.dot4(w[pe],I,U,k,B));var xe=.6-Y*Y-q*q-Q*Q-J*J;xe<0?a=0:(xe*=xe,a=xe*xe*this.dot4(w[fe],Y,q,Q,J));var be=.6-Z*Z-K*K-$*$-ee*ee;be<0?o=0:(be*=be,o=be*be*this.dot4(w[me],Z,K,$,ee));var we=.6-te*te-re*re-ie*ie-ne*ne;we<0?s=0:(we*=we,s=we*we*this.dot4(w[ve],te,re,ie,ne));var _e=.6-ae*ae-oe*oe-se*se-le*le;return _e<0?l=0:(_e*=_e,l=_e*_e*this.dot4(w[ge],ae,oe,se,le)),27*(n+a+o+s+l)};var jy=function(e,t,r){this._scene=e,this._trackInfo=t,this._onUpdate=r,this._mixer=new ae(e),this._clip=null,this._action=null,this._tracks={},this._propRefs={},this._channelNames=[]};jy.prototype={constructor:jy,init:function(e){for(var t=this,r=[],i=this._trackInfo,n=0,a=i.length;n!==a;++n){var o=i[n];r.push(t._addTrack(o.type,o.propertyPath,o.initialValue,o.interpolation))}this._clip=new re("editclip",0,r),this._action=this._mixer.clipAction(this._clip).play()},setDisplayTime:function(e){this._action.time=e,this._mixer.update(0),this._onUpdate()},setDuration:function(e){this._clip.duration=e},getChannelNames:function(){return this._channelNames},getChannelKeyTimes:function(e){return this._tracks[e].times},setKeyframe:function(e,t){var r=this._tracks[e],i=r.times,n=Timeliner.binarySearch(i,t),a=r.values,o=r.getValueSize(),s=n*o;if(n<0){n=~n,s=n*o;for(var l=i.length+1,c=a.length+o,u=l-1;u!==n;--u)i[u]=i[u-1];for(var u=c-1,h=s+o-1;u!==h;--u)a[u]=a[u-o]}i[n]=t,this._propRefs[e].getValue(a,s)},delKeyframe:function(e,t){var r=this._tracks[e],i=r.times,n=Timeliner.binarySearch(i,t);if(i.length>1&&n>=0){for(var a=i.length-1,o=r.values,s=r.getValueSize(),l=o.length-s,c=n;c!==a;++c)i[c]=i[c+1];i.pop();for(var u=n*s;u!==l;++u)o[u]=o[u+s];o.length=l}},moveKeyframe:function(e,t,r,i){var n=this._tracks[e],a=n.times,o=Timeliner.binarySearch(a,t);if(o>=0){for(var s=i?a.length:o+1,l=a[o-1]<=t||!i&&t>=a[o+1];o!==s;)a[o++]+=r;l&&this._sort(n)}},serialize:function(){for(var e={duration:this._clip.duration,channels:{}},t=this._channelNames,r=this._tracks,i=e.channels,n=0,a=t.length;n!==a;++n){var o=t[n],s=r[o];i[o]={times:s.times,values:s.values}}return e},deserialize:function(e){var t=this,r=this._channelNames,i=this._tracks,n=e.channels;this.setDuration(e.duration);for(var a=0,o=r.length;a!==o;++a){var s=r[a],l=i[s],c=n[s];t._setArray(l.times,c.times),t._setArray(l.values,c.values)}this.setDisplayTime(this._mixer.time)},_sort:function(e){var t=e.times,r=wu.getKeyframeOrder(t);this._setArray(t,wu.sortedArray(t,1,r));var i=e.values,n=e.getValueSize();this._setArray(i,wu.sortedArray(i,n,r))},_setArray:function(e,t){e.length=0,e.push.apply(e,t)},_addTrack:function(e,t,r,i){var n=new e(t,[0],r,i);return n.times=Array.prototype.slice.call(n.times),n.values=Array.prototype.slice.call(n.values),this._channelNames.push(t),this._tracks[t]=n,this._propRefs[t]=new W(this._scene,t),n}};var Vy={};Vy.quicksortIP=function(e,t,r){for(var i,n,a=[],o=-1,s=0,l=e.length/t-1,c=0,u=0,h=0,d=function(r,i){for(r*=t,i*=t,h=0;h=s&&e[i*t+r]>p[r];){for(u=0;u>1;for(i=s+1,n=l,d(m,i),e[s*t+r]>e[l*t+r]&&d(s,l),e[i*t+r]>e[l*t+r]&&d(i,l),e[s*t+r]>e[i*t+r]&&d(s,i),u=0;uf[r]);if(n=n-s?(a[++o]=i,a[++o]=l,l=n-1):(a[++o]=s,a[++o]=n-1,s=i)}return e}, Vy.Kdtree=function(e,t,r){function i(e,t,s,l){var c,u,h=t%r,d=e.length/r;return t>a&&(a=t),0===d?null:1===d?new n.Node(o(e,0),t,s,l):(Vy.quicksortIP(e,r,h),c=Math.floor(d/2),u=new n.Node(o(e,c),t,s,c+l),u.left=i(e.subarray(0,c*r),t+1,u,l),u.right=i(e.subarray((c+1)*r,e.length),t+1,u,l+c+1),u)}var n=this,a=0,o=function(e,t){return e.subarray(t*r,t*r+r)};this.root=i(e,0,null,0),this.getMaxDepth=function(){return a},this.nearest=function(e,i,a){function o(n){function a(e,t){c.push([e,t]),c.size()>i&&c.pop()}var s,l,u,h=n.depth%r,d=t(e,n.obj),p=0,f=[];for(u=0;u0&&(this.content[0]=t,this.sinkDown(0)),e},peek:function(){return this.content[0]},remove:function(e){for(var t=this,r=this.content.length,i=0;i0;){var i=Math.floor((e+1)/2)-1,n=t.content[i];if(!(t.scoreFunction(r)1&&(o=1-o,s=1-s);var l=1-o-s;return a.copy(t),a.multiplyScalar(o),e.copy(r),e.multiplyScalar(s),a.add(e),e.copy(n),e.multiplyScalar(l),a.add(e),a}}(),randomPointInFace:function(e,t){var r,i,n;return r=t.vertices[e.a],i=t.vertices[e.b],n=t.vertices[e.c],Wy.randomPointInTriangle(r,i,n)},randomPointsInGeometry:function(e,t){function r(e){function t(r,i){if(ie?t(r,n-1):d[n]e?t(r,n-1):u[n].95&&h.fillText(r,n.x%1*c,(1-n.y)*u),h.font="8pt Arial bold",h.fillStyle="rgba( 0, 0, 0, 1.0 )",o=0,s=t.length;o.95&&h.fillText(i[o]+d,a.x%1*c,(1-a.y)*u)}}var i="abc",n=new f,a=new f,o=[new f,new f,new f],s=[],l=document.createElement("canvas"),c=t||1024,u=t||1024;l.width=c,l.height=u;var h=l.getContext("2d");if(h.lineWidth=2,h.strokeStyle="rgba( 0, 0, 0, 1.0 )",h.textAlign="center",h.fillStyle="rgba( 255, 255, 255, 1.0 )",h.fillRect(0,0,c,u),e.isGeometry)for(var d=e.faces,p=e.faceVertexUvs[0],m=0,v=p.length;m=e.colorMap.length?g%e.colorMap.length+1:g;var y=e.colorMap[g];l[4*f]=y>>24&255,l[4*f+1]=y>>16&255,l[4*f+2]=y>>8&255,l[4*f+3]=255&y,f++}else for(var m=0;m=x&&h<=x?b:0,x=Math.floor(255*(x-d)/(p-d)),x=x>255?255:x<0?0:0|x,l[4*f]=x,l[4*f+1]=x,l[4*f+2]=x,l[4*f+3]=b,f++}o.putImageData(s,0,0),this.ctx.drawImage(a,0,0,t,r,0,0,this.canvas.width,this.canvas.height),this.mesh.material.map.needsUpdate=!0},updateGeometry:function(){var e=this.volume.extractPerpendicularPlane(this.axis,this.index);this.sliceAccess=e.sliceAccess,this.jLength=e.jLength,this.iLength=e.iLength,this.matrix=e.matrix,this.canvas.width=e.planeWidth,this.canvas.height=e.planeHeight,this.canvasBuffer.width=this.iLength,this.canvasBuffer.height=this.jLength,this.ctx=this.canvas.getContext("2d"),this.ctxBuffer=this.canvasBuffer.getContext("2d"),this.geometry=new xe(e.planeWidth,e.planeHeight),this.mesh&&(this.mesh.geometry=this.geometry,this.mesh.matrix=(new r).identity(),this.mesh.applyMatrix(this.matrix)),this.geometryNeedsUpdate=!1}};var Zy=function(){function e(){for(var e=navigator.getGamepads&&navigator.getGamepads(),t=0;t<4;t++){var r=e[t];if(r&&"Daydream Controller"===r.id)return r}}c.call(this);var t,r=this,n=[0,0],a=!1,o=new i;this.matrixAutoUpdate=!1,this.getGamepad=function(){return t},this.getTouchpadState=function(){return a},this.update=function(){if(t=e(),void 0!==t&&void 0!==t.pose){var i=t.pose;if(null===i)return;null!==i.orientation&&r.quaternion.fromArray(i.orientation),r.updateMatrix(),r.visible=!0,null===i.angularVelocity||o.equals(i.angularVelocity)||(o.fromArray(i.angularVelocity),r.dispatchEvent({type:"angularvelocitychanged",angularVelocity:o})),n[0]===t.axes[0]&&n[1]===t.axes[1]||(n[0]=t.axes[0],n[1]=t.axes[1],r.dispatchEvent({type:"axischanged",axes:n})),a!==t.buttons[0].pressed&&(a=t.buttons[0].pressed,r.dispatchEvent({type:a?"touchpaddown":"touchpadup"}))}else r.visible=!1},this.getTouchPadState=function(){return console.warn("DaydreamController: getTouchPadState() is now getTouchpadState()"),a}};Zy.prototype=Object.create(c.prototype),Zy.prototype.constructor=Zy;var Ky=function(){function e(){for(var e=navigator.getGamepads&&navigator.getGamepads(),t=0;t<4;t++){var r=e[t];if(r&&("Gear VR Controller"===r.id||"Oculus Go Controller"===r.id))return r}}c.call(this);var t,r=this,n=[0,0],a=!1,o=!1,s=new i;this.matrixAutoUpdate=!0,this.getGamepad=function(){return t},this.getTouchpadState=function(){return a},this.update=function(){if(t=e(),void 0!==t&&void 0!==t.pose){var i=t.pose;if(null===i)return;null!==i.orientation&&r.quaternion.fromArray(i.orientation),r.updateMatrix(),r.visible=!0,null===i.angularVelocity||s.equals(i.angularVelocity)||(s.fromArray(i.angularVelocity),r.dispatchEvent({type:"angularvelocitychanged",angularVelocity:s})),n[0]===t.axes[0]&&n[1]===t.axes[1]||(n[0]=t.axes[0],n[1]=t.axes[1],r.dispatchEvent({type:"axischanged",axes:n})),a!==t.buttons[0].pressed&&(a=t.buttons[0].pressed,r.dispatchEvent({type:a?"touchpaddown":"touchpadup",axes:n})),o!==t.buttons[1].pressed&&(o=t.buttons[1].pressed,r.dispatchEvent({type:o?"triggerdown":"triggerup"}))}else r.visible=!1},this.getTouchPadState=function(){return console.warn("GearVRController: getTouchPadState() is now getTouchpadState()"),a},this.setHand=function(){console.warn("GearVRController: setHand() has been removed.")}};Ky.prototype=Object.create(c.prototype),Ky.prototype.constructor=Ky;var $y=function(e){function t(e){for(var t=navigator.getGamepads&&navigator.getGamepads(),r=0,i=0;r0?r(e[0]):n()})["catch"](n),o}var s=document.createElement("a");return s.href="https://webvr.info",s.innerHTML="WEBVR NOT SUPPORTED",s.style.left="calc(50% - 90px)",s.style.width="180px",s.style.textDecoration="none",a(s),s},checkAvailability:function(){return console.warn("WEBVR.checkAvailability has been deprecated."),new Promise(function(){})},getMessageContainer:function(){return console.warn("WEBVR.getMessageContainer has been deprecated."),document.createElement("div")},getButton:function(){return console.warn("WEBVR.getButton has been deprecated."),document.createElement("div")},getVRDisplay:function(){console.warn("WEBVR.getVRDisplay has been deprecated.")}};Object.assign(Eo.prototype,{isAnimationObjectGroup:!0,add:function(){for(var e=arguments,t=this._objects,r=t.length,i=this.nCachedObjects_,n=this._indicesByUUID,a=this._paths,o=this._parsedPaths,s=this._bindings,l=s.length,c=void 0,u=0,h=arguments.length;u!==h;++u){var d=e[u],p=d.uuid,f=n[p];if(void 0===f){f=r++,n[p]=f,t.push(d);for(var m=0,v=l;m!==v;++m)s[m].push(new W(d,a[m],o[m]))}else if(f=r){var h=r++,d=t[h];i[d.uuid]=u,t[u]=d,i[c]=h,t[h]=l;for(var p=0,f=a;p!==f;++p){var m=n[p],v=m[h],g=m[u];m[u]=v,m[h]=g}}}this.nCachedObjects_=r},uncache:function(){for(var e=arguments,t=this._objects,r=t.length,i=this.nCachedObjects_,n=this._indicesByUUID,a=this._bindings,o=a.length,s=0,l=arguments.length;s!==l;++s){var c=e[s],u=c.uuid,h=n[u];if(void 0!==h)if(delete n[u],h0){this.source.connect(this.filters[0]);for(var t=1,r=this.filters.length;t0){this.source.disconnect(this.filters[0]);for(var t=1,r=this.filters.length;t.99999?this.quaternion.set(0,0,0,1):r.y<-.99999?this.quaternion.set(1,0,0,0):(t.set(r.z,0,-r.x).normalize(),e=Math.acos(r.y),this.quaternion.setFromAxisAngle(t,e))}}(),as.prototype.setLength=function(e,t,r){void 0===t&&(t=.2*e),void 0===r&&(r=.2*t),this.line.scale.set(1,Math.max(0,e-t),1),this.line.updateMatrix(),this.cone.scale.set(r,t,r),this.cone.position.y=e,this.cone.updateMatrix()},as.prototype.setColor=function(e){this.line.material.color.copy(e),this.cone.material.color.copy(e)},os.prototype=Object.create(Yt.prototype),os.prototype.constructor=os,ss.prototype=Object.create(Yt.prototype),ss.prototype.constructor=ss,ss.prototype.updateMatrixWorld=function(e){var t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),c.prototype.updateMatrixWorld.call(this,e))},ls.prototype=Object.create(Yt.prototype),ls.prototype.constructor=ls,ls.prototype.update=function(){function e(e,i,o,s){n.set(i,o,s).unproject(a);var l=r[e];if(void 0!==l)for(var c=t.getAttribute("position"),u=0,h=l.length;u1){e.setFromMatrixPosition(r.matrixWorld),t.setFromMatrixPosition(this.matrixWorld);var n=e.distanceTo(t);i[0].object.visible=!0;for(var a=1,o=i.length;a=i[a].distance;a++)i[a-1].object.visible=!1,i[a].object.visible=!0;for(;a0){var a=new be(t),o=new Ie(a);o.setCrossOrigin(this.crossOrigin);for(var s=0,l=e.length;s0?new Ft(s,l):new k(s,l);break;case"LOD":a=new Ts;break;case"Line":a=new B(i(e.geometry),n(e.material),e.mode);break;case"LineLoop":a=new Jt(i(e.geometry),n(e.material));break;case"LineSegments":a=new Yt(i(e.geometry),n(e.material));break;case"PointCloud":case"Points":a=new Et(i(e.geometry),n(e.material));break;case"Sprite":a=new vi(n(e.material));break;case"Group":a=new Dt;break;default:a=new c}if(a.uuid=e.uuid,void 0!==e.name&&(a.name=e.name),void 0!==e.matrix?(a.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(a.matrixAutoUpdate=e.matrixAutoUpdate),a.matrixAutoUpdate&&a.matrix.decompose(a.position,a.quaternion,a.scale)):(void 0!==e.position&&a.position.fromArray(e.position),void 0!==e.rotation&&a.rotation.fromArray(e.rotation),void 0!==e.quaternion&&a.quaternion.fromArray(e.quaternion),void 0!==e.scale&&a.scale.fromArray(e.scale)),void 0!==e.castShadow&&(a.castShadow=e.castShadow),void 0!==e.receiveShadow&&(a.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(a.shadow.bias=e.shadow.bias),void 0!==e.shadow.radius&&(a.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&a.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(a.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(a.visible=e.visible),void 0!==e.frustumCulled&&(a.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(a.renderOrder=e.renderOrder),void 0!==e.userData&&(a.userData=e.userData),void 0!==e.layers&&(a.layers.mask=e.layers),void 0!==e.children)for(var h=e.children,d=0;d=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),e.CCDIKSolver=xu,e.MMDAnimationHelper=Su,e.MMDPhysics=_u,e.AnimationClipCreator=Au,e.CinematicCamera=Nu,e.Car=Uu,e.DeviceOrientationControls=ku,e.DragControls=Bu,e.EditorControls=zu,e.FirstPersonControls=ju,e.FlyControls=Vu,e.MapControls=Gu,e.OrbitControls=Wu,e.OrthographicTrackballControls=Xu,e.PointerLockControls=Hu,e.TrackballControls=Yu,e.TransformControls=qu,e.TransformControlsGizmo=Qu,e.TransformControlsPlane=Ju,e.ConvexObjectBreaker=$u,e.GrannyKnot=ot,e.HeartCurve=st,e.VivianiCurve=lt,e.KnotCurve=ct,e.HelixCurve=ut,e.TrefoilKnot=ht,e.TorusKnot=dt,e.CinquefoilKnot=pt,e.TrefoilPolynomialKnot=ft,e.FigureEightPolynomialKnot=mt,e.DecoratedTorusKnot4a=vt,e.DecoratedTorusKnot4b=gt,e.DecoratedTorusKnot5a=yt,e.DecoratedTorusKnot5c=xt,e.NURBSCurve=rh,e.NURBSSurface=ih,e.NURBSUtils=th,e.Detector=nh,e.AnaglyphEffect=ah,e.AsciiEffect=oh,e.OutlineEffect=gp,e.ParallaxBarrierEffect=yp,e.PeppersGhostEffect=xp,e.StereoEffect=bp,e.ColladaExporter=wp,e.GLTFExporter=Mp,e.MMDExporter=Tp,e.OBJExporter=Ep,e.PLYExporter=Cp,e.STLExporter=Lp,e.TypedGeometryExporter=Pp,e.ConvexGeometry=it,e.ConvexBufferGeometry=nt,e.DecalGeometry=wt,e.hilbert2D=St,e.hilbert3D=At,e.TeapotBufferGeometry=Np,e.GPUComputationRenderer=Tt,e.GPUParticleSystem=Op,e.GPUParticleContainer=Dp,e.Gyroscope=Rp,e.ImprovedNoise=Fp,e.Line2=zp,e.LineGeometry=Bp,e.LineMaterial=Up,e.LineSegments2=kp,e.LineSegmentsGeometry=Ip,e.Wireframe=jp,e.WireframeGeometry2=Vp,e.ThreeMFLoader=Gp,e.AMFLoader=Wp,e.AssimpJSONLoader=Xp,e.AssimpLoader=Hp,e.AWDLoader=yf,e.BabylonLoader=xf,e.BinaryLoader=Iu,e.BVHLoader=bf,e.ColladaLoader=_f,e.DDSLoader=Sf,e.LegacyGLTFLoader=Af,e.DRACOLoader=Mf,e.EquirectangularToCubeGenerator=Tf,e.EXRLoader=Ef,e.FBXLoader=Cf,e.GCodeLoader=Lf,e.GLTFLoader=Nf,e.HDRCubeTextureLoader=Rf,e.KMZLoader=Ff,e.KTXLoader=If,e.LoaderSupport=kf,e.MD2Loader=Bf,e.MMDLoader=zf,e.MTLLoader=jf,e.NodeMaterialLoader=Yf,e.OBJLoader=qf,e.OBJLoader2=Qf,e.PCDLoader=Jf,e.PDBLoader=Zf,e.PlayCanvasLoader=Kf,e.PLYLoader=$f,e.PRWMLoader=im,e.PVRLoader=nm,e.HDRLoader=Df,e.RGBELoader=Of,e.STLLoader=am,e.SVGLoader=pm,e.TDSLoader=fm,e.TGALoader=wf,e.TTFLoader=Km,e.VRMLLoader=$m,e.VRMLoader=ev,e.VTKLoader=tv,e.MarchingCubes=rv,e.ColorConverter=av,e.Lut=sv,e.MD2Character=cv,e.MD2CharacterComplex=hv,e.ExplodeModifier=dv,e.SimplifyModifier=pv,e.SubdivisionModifier=fv,e.TessellateModifier=mv,e.MorphAnimMesh=vv,e.MorphBlendMesh=uv,e.CameraNode=cr,e.ColorsNode=gi,e.LightNode=yi,e.NormalNode=nr,e.PositionNode=ir,e.ReflectNode=xi,e.ResolutionNode=Ii,e.ScreenUVNode=Ui,e.UVNode=rr,e.BlinnExponentToRoughnessNode=Ci,e.BlinnShininessExponentNode=Ei,e.RoughnessToBlinnExponentNode=Bi,e.AttributeNode=zi,e.ConstNode=lr,e.ExpressionNode=ji,e.FunctionCallNode=Vi,e.FunctionNode=Vf,e.InputNode=ar,e.Node=er,e.NodeBuilder=Ni,e.NodeFrame=Gi,e.NodeLib=Gf,e.NodeUniform=bi,e.NodeUtils=xv,e.StructNode=wi,e.TempNode=tr,e.VarNode=Wi,e.BlurNode=Xi,e.ColorAdjustmentNode=Yi,e.LuminanceNode=Hi,e.ColorNode=Oi,e.CubeTextureNode=Ti,e.FloatNode=or,e.IntNode=qi,e.Matrix3Node=Qi,e.Matrix4Node=Ji,e.PropertyNode=Zi,e.ReflectorNode=$i,e.RTTNode=en,e.ScreenNode=tn,e.TextureNode=Mi,e.Vector2Node=Fi,e.Vector3Node=_i,e.Vector4Node=Si,e.MeshStandardNodeMaterial=sn,e.NodeMaterial=Ri,e.MeshStandardNode=on,e.PhongNode=ln,e.RawNode=Di,e.SpriteNode=cn,e.StandardNode=rn,e.PhongNodeMaterial=un,e.SpriteNodeMaterial=hn,e.StandardNodeMaterial=dn,e.CondNode=pn,e.Math1Node=fn,e.Math2Node=mn,e.Math3Node=vn,e.OperatorNode=Ki,e.BumpMapNode=gn,e.NormalMapNode=an,e.TextureCubeNode=Pi,e.TextureCubeUVNode=Li,e.NodePass=yn,e.NodePostProcessing=xn, -e.CheckerNode=bn,e.NoiseNode=wn,e.BypassNode=_n,e.ColorSpaceNode=Ai,e.JoinNode=Sn,e.MaxMIPLevelNode=ki,e.SwitchNode=nn,e.TimerNode=sr,e.UVTransformNode=An,e.VelocityNode=Mn,e.Lensflare=Lv,e.LensflareElement=Pv,e.Reflector=Nv,e.ReflectorRTT=Ov,e.Refractor=Dv,e.ShadowMesh=Rv,e.Sky=Fv,e.Water=Iv,e.Water2=Cn,e.Ocean=Uv,e.Octree=kv,e.OctreeObjectData=Bv,e.OctreeNode=zv,e.PMREMCubeUVPacker=jv,e.PMREMGenerator=Vv,e.AdaptiveToneMappingPass=Hv,e.AfterimagePass=qv,e.BloomPass=Jv,e.BokehPass=Zv,e.ClearPass=Kv,e.CubeTexturePass=$v,e.DotScreenPass=tg,e.EffectComposer=ng,e.FilmPass=og,e.GlitchPass=lg,e.HalftonePass=ug,e.MaskPass=rg,e.ClearMaskPass=ig,e.OutlinePass=hg,e.Pass=Tv,e.RenderPass=dg,e.SAOPass=gg,e.SavePass=yg,e.ShaderPass=Ev,e.SMAAPass=bg,e.SSAARenderPass=wg,e.SSAOPass=Sg,e.TAARenderPass=Ag,e.TexturePass=Mg,e.UnrealBloomPass=Eg,e.PRNG=Cg,e.QuickHull=Ke,e.SpriteCanvasMaterial=Fg,e.CanvasRenderer=Ig,e.CSS2DObject=Ug,e.CSS2DRenderer=kg,e.CSS3DObject=Bg,e.CSS3DSprite=zg,e.CSS3DRenderer=jg,e.RenderableObject=Lg,e.RenderableFace=Pg,e.RenderableVertex=Ng,e.RenderableLine=Og,e.RenderableSprite=Dg,e.Projector=Rg,e.RaytracingRenderer=Vg,e.SoftwareRenderer=Gg,e.SVGObject=Wg,e.SVGRenderer=Xg,e.WebGLDeferredRenderer=iy,e.RollerCoasterGeometry=po,e.RollerCoasterLiftersGeometry=fo,e.RollerCoasterShadowGeometry=mo,e.SkyGeometry=vo,e.TreesGeometry=go,e.ShaderGodRays=sy,e.AfterimageShader=Yv,e.BasicShader=ly,e.BleachBypassShader=cy,e.BlendShader=uy,e.BokehShader=Cu,e.BokehShader2=Lu,e.BokehDepthShader=Pu,e.BrightnessContrastShader=hy,e.ColorCorrectionShader=dy,e.ColorifyShader=py,e.ConvolutionShader=Qv,e.CopyShader=Gv,e.DepthLimitedBlurShader=fg,e.BlurShaderUtils=mg,e.DigitalGlitch=sg,e.DOFMipMapShader=fy,e.DotScreenShader=eg,e.FilmShader=ag,e.FocusShader=my,e.FreiChenShader=vy,e.FresnelShader=gy,e.FXAAShader=ry,e.GammaCorrectionShader=yy,e.HalftoneShader=cg,e.HorizontalBlurShader=xy,e.HorizontalTiltShiftShader=by,e.HueSaturationShader=wy,e.KaleidoShader=_y,e.LuminosityHighPassShader=Tg,e.LuminosityShader=Wv,e.MirrorShader=Sy,e.NormalMapShader=Ay,e.ParallaxShader=My,e.PixelShader=Ty,e.RGBShiftShader=Ey,e.SAOShader=pg,e.SepiaShader=Cy,e.SMAAShader=xg,e.SobelOperatorShader=Ly,e.SSAOShader=_g,e.TechnicolorShader=Py,e.ToneMapShader=Xv,e.TriangleBlurShader=Ny,e.UnpackDepthRGBAShader=vg,e.VerticalBlurShader=Oy,e.VerticalTiltShiftShader=Dy,e.VignetteShader=Ry,e.WaterRefractionShader=Fy,e.ShaderSkin=Iy,e.ShaderTerrain=Uy,e.ShaderToon=ky,e.TranslucentShader=By,e.SimplexNoise=zy,e.TimelinerController=jy,e.TypedArrayUtils=Vy,e.UCSCharacter=Gy,e.BufferGeometryUtils=Pf,e.GeometryUtils=Wy,e.MathUtils=Xy,e.SceneUtils=Hy,e.ShadowMapViewer=Yy,e.SkeletonUtils=qy,e.UVsDebug=Qy,e.VolumeSlice=Jy,e.DaydreamController=Zy,e.GearVRController=Ky,e.PaintViveController=ex,e.ViveController=$y,e.WebVR=tx,e.AnimationAction=z,e.AnimationClip=re,e.AnimationMixer=ae,e.AnimationObjectGroup=Eo,e.AnimationUtils=wu,e.KeyframeTrack=q,e.PropertyBinding=W,e.PropertyMixer=X,e.BooleanKeyframeTrack=Q,e.ColorKeyframeTrack=J,e.NumberKeyframeTrack=Z,e.QuaternionKeyframeTrack=$,e.StringKeyframeTrack=ee,e.VectorKeyframeTrack=te,e.Audio=Co,e.AudioAnalyser=Lo,e.AudioContext=ix,e.AudioListener=Po,e.PositionalAudio=No,e.ArrayCamera=so,e.Camera=he,e.CubeCamera=Oo,e.OrthographicCamera=me,e.PerspectiveCamera=de,e.StereoCamera=bt,e.REVISION=Bs,e.MOUSE=zs,e.CullFaceNone=js,e.CullFaceBack=Vs,e.CullFaceFront=Gs,e.CullFaceFrontBack=Ws,e.FrontFaceDirectionCW=Xs,e.FrontFaceDirectionCCW=Hs,e.BasicShadowMap=Ys,e.PCFShadowMap=qs,e.PCFSoftShadowMap=Qs,e.FrontSide=Js,e.BackSide=Zs,e.DoubleSide=Ks,e.FlatShading=$s,e.SmoothShading=el,e.NoColors=tl,e.FaceColors=rl,e.VertexColors=il,e.NoBlending=nl,e.NormalBlending=al,e.AdditiveBlending=ol,e.SubtractiveBlending=sl,e.MultiplyBlending=ll,e.CustomBlending=cl,e.AddEquation=ul,e.SubtractEquation=hl,e.ReverseSubtractEquation=dl,e.MinEquation=pl,e.MaxEquation=fl,e.ZeroFactor=ml,e.OneFactor=vl,e.SrcColorFactor=gl,e.OneMinusSrcColorFactor=yl,e.SrcAlphaFactor=xl,e.OneMinusSrcAlphaFactor=bl,e.DstAlphaFactor=wl,e.OneMinusDstAlphaFactor=_l,e.DstColorFactor=Sl,e.OneMinusDstColorFactor=Al,e.SrcAlphaSaturateFactor=Ml,e.NeverDepth=Tl,e.AlwaysDepth=El,e.LessDepth=Cl,e.LessEqualDepth=Ll,e.EqualDepth=Pl,e.GreaterEqualDepth=Nl,e.GreaterDepth=Ol,e.NotEqualDepth=Dl,e.MultiplyOperation=Rl,e.MixOperation=Fl,e.AddOperation=Il,e.NoToneMapping=Ul,e.LinearToneMapping=kl,e.ReinhardToneMapping=Bl,e.Uncharted2ToneMapping=zl,e.CineonToneMapping=jl,e.UVMapping=Vl,e.CubeReflectionMapping=Gl,e.CubeRefractionMapping=Wl,e.EquirectangularReflectionMapping=Xl,e.EquirectangularRefractionMapping=Hl,e.SphericalReflectionMapping=Yl,e.CubeUVReflectionMapping=ql,e.CubeUVRefractionMapping=Ql,e.RepeatWrapping=Jl,e.ClampToEdgeWrapping=Zl,e.MirroredRepeatWrapping=Kl,e.NearestFilter=$l,e.NearestMipMapNearestFilter=ec,e.NearestMipMapLinearFilter=tc,e.LinearFilter=rc,e.LinearMipMapNearestFilter=ic,e.LinearMipMapLinearFilter=nc,e.UnsignedByteType=ac,e.ByteType=oc,e.ShortType=sc,e.UnsignedShortType=lc,e.IntType=cc,e.UnsignedIntType=uc,e.FloatType=hc,e.HalfFloatType=dc,e.UnsignedShort4444Type=pc,e.UnsignedShort5551Type=fc,e.UnsignedShort565Type=mc,e.UnsignedInt248Type=vc,e.AlphaFormat=gc,e.RGBFormat=yc,e.RGBAFormat=xc,e.LuminanceFormat=bc,e.LuminanceAlphaFormat=wc,e.RGBEFormat=_c,e.DepthFormat=Sc,e.DepthStencilFormat=Ac,e.RGB_S3TC_DXT1_Format=Mc,e.RGBA_S3TC_DXT1_Format=Tc,e.RGBA_S3TC_DXT3_Format=Ec,e.RGBA_S3TC_DXT5_Format=Cc,e.RGB_PVRTC_4BPPV1_Format=Lc,e.RGB_PVRTC_2BPPV1_Format=Pc,e.RGBA_PVRTC_4BPPV1_Format=Nc,e.RGBA_PVRTC_2BPPV1_Format=Oc,e.RGB_ETC1_Format=Dc,e.RGBA_ASTC_4x4_Format=Rc,e.RGBA_ASTC_5x4_Format=Fc,e.RGBA_ASTC_5x5_Format=Ic,e.RGBA_ASTC_6x5_Format=Uc,e.RGBA_ASTC_6x6_Format=kc,e.RGBA_ASTC_8x5_Format=Bc,e.RGBA_ASTC_8x6_Format=zc,e.RGBA_ASTC_8x8_Format=jc,e.RGBA_ASTC_10x5_Format=Vc,e.RGBA_ASTC_10x6_Format=Gc,e.RGBA_ASTC_10x8_Format=Wc,e.RGBA_ASTC_10x10_Format=Xc,e.RGBA_ASTC_12x10_Format=Hc,e.RGBA_ASTC_12x12_Format=Yc,e.LoopOnce=qc,e.LoopRepeat=Qc,e.LoopPingPong=Jc,e.InterpolateDiscrete=Zc,e.InterpolateLinear=Kc,e.InterpolateSmooth=$c,e.ZeroCurvatureEnding=eu,e.ZeroSlopeEnding=tu,e.WrapAroundEnding=ru,e.TrianglesDrawMode=iu,e.TriangleStripDrawMode=nu,e.TriangleFanDrawMode=au,e.LinearEncoding=ou,e.sRGBEncoding=su,e.GammaEncoding=lu,e.RGBEEncoding=cu,e.LogLuvEncoding=uu,e.RGBM7Encoding=hu,e.RGBM16Encoding=du,e.RGBDEncoding=pu,e.BasicDepthPacking=fu,e.RGBADepthPacking=mu,e.TangentSpaceNormalMap=vu,e.ObjectSpaceNormalMap=gu,e.Float64BufferAttribute=T,e.Float32BufferAttribute=M,e.Uint32BufferAttribute=A,e.Int32BufferAttribute=S,e.Uint16BufferAttribute=_,e.Int16BufferAttribute=w,e.Uint8ClampedBufferAttribute=b,e.Uint8BufferAttribute=x,e.Int8BufferAttribute=y,e.BufferAttribute=g,e.BufferGeometry=P,e.Clock=En,e.DirectGeometry=E,e.EventDispatcher=a,e.Face3=h,e.Geometry=m,e.InstancedBufferAttribute=Do,e.InstancedBufferGeometry=Ct,e.InstancedInterleavedBuffer=Pt,e.InterleavedBuffer=Lt,e.InterleavedBufferAttribute=Nt,e.Layers=s,e.Object3D=c,e.Raycaster=je,e.Uniform=ho,e.Curve=at,e.CurvePath=Rr,e.Font=Ro,e.CatmullRom=gr,e.QuadraticBezier=wr,e.CubicBezier=Tr,e.Path=Fr,e.Shape=Ir,e.ShapePath=pi,e.ArcCurve=fr,e.CatmullRomCurve3=vr,e.CubicBezierCurve=Er,e.CubicBezierCurve3=Cr,e.EllipseCurve=pr,e.LineCurve=Lr,e.LineCurve3=Pr,e.QuadraticBezierCurve=Nr,e.QuadraticBezierCurve3=Or,e.SplineCurve=Dr,e.Earcut=hm,e.ImageUtils=Tu,e.ImmediateRenderObject=fi,e.ShapeUtils=dm,e.BoxGeometry=se,e.BoxBufferGeometry=le,e.CircleGeometry=bo,e.CircleBufferGeometry=wo,e.ConeGeometry=Uo,e.ConeBufferGeometry=ko,e.CylinderGeometry=ce,e.CylinderBufferGeometry=ue,e.DodecahedronGeometry=Bo,e.DodecahedronBufferGeometry=zo,e.EdgesGeometry=jo,e.ExtrudeGeometry=Vo,e.ExtrudeBufferGeometry=Go,e.IcosahedronGeometry=_o,e.IcosahedronBufferGeometry=So,e.LatheGeometry=Xo,e.LatheBufferGeometry=Ho,e.OctahedronGeometry=Ye,e.OctahedronBufferGeometry=qe,e.ParametricGeometry=Yo,e.ParametricBufferGeometry=qo,e.PlaneGeometry=ye,e.PlaneBufferGeometry=xe,e.PolyhedronGeometry=Xe,e.PolyhedronBufferGeometry=He,e.RingGeometry=Qo,e.RingBufferGeometry=Jo,e.ShapeGeometry=Ao,e.ShapeBufferGeometry=Mo,e.SphereGeometry=N,e.SphereBufferGeometry=O,e.TetrahedronGeometry=Zo,e.TetrahedronBufferGeometry=Ko,e.TextGeometry=$o,e.TextBufferGeometry=es,e.TorusGeometry=Qe,e.TorusBufferGeometry=Je,e.TorusKnotGeometry=ts,e.TorusKnotBufferGeometry=rs,e.TubeGeometry=is,e.TubeBufferGeometry=ns,e.WireframeGeometry=Ot,e.ArrowHelper=as,e.AxesHelper=os,e.Box3Helper=ss,e.BoxHelper=Ln,e.CameraHelper=ls,e.DirectionalLightHelper=cs,e.FaceNormalsHelper=us,e.GridHelper=hs,e.HemisphereLightHelper=ds,e.PlaneHelper=ps,e.PointLightHelper=fs,e.PolarGridHelper=ms,e.RectAreaLightHelper=vs,e.SkeletonHelper=xo,e.SpotLightHelper=gs,e.VertexNormalsHelper=ys,e.AmbientLight=Ht,e.DirectionalLight=Vt,e.DirectionalLightShadow=jt,e.HemisphereLight=Xt,e.Light=kt,e.LightShadow=Bt,e.PointLight=zt,e.RectAreaLight=xs,e.SpotLight=Wt,e.SpotLightShadow=Gt,e.AnimationLoader=bs,e.AudioLoader=ws,e.BufferGeometryLoader=_s,e.Cache=Ou,e.CompressedTextureLoader=Qt,e.CubeTextureLoader=Ss,e.DataTextureLoader=Kt,e.FileLoader=we,e.FontLoader=As,e.ImageBitmapLoader=Ms,e.ImageLoader=Ie,e.JSONLoader=Be,e.Loader=ke,e.LoaderUtils=Fu,e.DefaultLoadingManager=Du,e.LoadingManager=be,e.MaterialLoader=Fe,e.ObjectLoader=Ls,e.TextureLoader=Ue,e.LineBasicMaterial=F,e.LineDashedMaterial=_e,e.Material=D,e.MeshBasicMaterial=R,e.MeshDepthMaterial=Se,e.MeshDistanceMaterial=Ae,e.MeshLambertMaterial=Me,e.MeshNormalMaterial=Te,e.MeshPhongMaterial=Ee,e.MeshPhysicalMaterial=Le,e.MeshStandardMaterial=Ce,e.MeshToonMaterial=Pe,e.PointsMaterial=Ne,e.RawShaderMaterial=Oe,e.ShaderMaterial=pe,e.ShadowMaterial=De,e.SpriteMaterial=Re,e.Box2=Tn,e.Box3=d,e.Color=u,e.Cylindrical=Ps,e.Euler=o,e.Frustum=In,e.Interpolant=j,e.CubicInterpolant=H,e.DiscreteInterpolant=Y,e.LinearInterpolant=V,e.QuaternionLinearInterpolant=K,e.Line3=Ze,e._Math=Rs,e.Matrix3=l,e.Matrix4=r,e.Plane=ze,e.Quaternion=n,e.Ray=I,e.Sphere=p,e.Spherical=We,e.Triangle=U,e.Vector2=f,e.Vector3=i,e.Vector4=v,e.Bone=oe,e.Group=Dt,e.Line=B,e.LineLoop=Jt,e.LineSegments=Yt,e.LOD=Ts,e.Mesh=k,e.Points=Et,e.Skeleton=Rt,e.SkinnedMesh=Ft,e.Sprite=vi,e.ShaderChunk=fp,e.ShaderLib=vp,e.UniformsLib=mp,e.UniformsUtils=Mu,e.WebGLAnimation=Un,e.WebGLAttributes=kn,e.WebGLBackground=Bn,e.WebGLBufferRenderer=zn,e.WebGLCapabilities=jn,e.WebGLClipping=Vn,e.WebGLExtensions=Gn,e.WebGLGeometries=Wn,e.WebGLIndexedBufferRenderer=Xn,e.WebGLInfo=Hn,e.WebGLLights=eo,e.WebGLMorphtargets=qn,e.WebGLObjects=Qn,e.WebGLProgram=Ha,e.WebGLPrograms=Ya,e.WebGLProperties=qa,e.WebGLRenderLists=Ka,e.WebGLRenderStates=ro,e.WebGLShader=Da,e.WebGLShadowMap=io,e.WebGLState=no,e.WebGLTextures=ao,e.WebGLUniforms=Na,e.WebGLUtils=oo,e.WebGL2Renderer=Ns,e.WebGLRenderer=uo,e.WebGLRenderTarget=ge,e.WebGLRenderTargetCube=Zt,e.WebVRManager=lo,e.WebXRManager=co,e.Fog=Es,e.FogExp2=Cs,e.Scene=fe,e.CanvasTexture=mi,e.CompressedTexture=qt,e.CubeTexture=$t,e.DataTexture=Mt,e.DepthTexture=Fn,e.Texture=ve,e.VideoTexture=Os,e.arrayMin=C,e.arrayMax=L}()}),require.register("js/components/Bean.js",function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var r=0;r=0;)e=this._listeners[t],e&&e.apply(this,[this._time]);this._idRAF=requestAnimationFrame(this._binds.update)}},{key:"start",value:function(){this._update()}},{key:"stop",value:function(){cancelAnimationFrame(this._idRAF)}},{key:"add",value:function(e){var t=this._listeners.indexOf(e);t>=0||(this._listeners.push(e),this._count++)}},{key:"remove",value:function(e){var t=this._listeners.indexOf(e);t<0||(this._listeners.splice(t,1),this._count--)}}]),e}();r.exports=new a}),require.register("js/core/Webgl.js",function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r=0;)e=this._listeners[t],e&&e.apply(this,[this._time]);this._idRAF=requestAnimationFrame(this._binds.update)}},{key:"start",value:function(){this._update()}},{key:"stop",value:function(){cancelAnimationFrame(this._idRAF)}},{key:"add",value:function(e){var t=this._listeners.indexOf(e);t>=0||(this._listeners.push(e),this._count++)}},{key:"remove",value:function(e){var t=this._listeners.indexOf(e);t<0||(this._listeners.splice(t,1),this._count--)}}]),e}();r.exports=new a}),require.register("js/core/Webgl.js",function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r`~SVoIpiEd4l#$4LymKpoW+JYRB|XJL=Iyj%%MUkr$UA(3pqp%5k@(_ zi=0B4vo^y}j&s;|pWoy0`)Bud?{(j=>%Ok*^}3$d^SZWVTZB0mhbRXC09=+9CiVaT zX1oOhY%Gk!cElJB03-oR6C;O+U+Xwx&7CcGw$-~7c} zr>Fa}Y)1#7{3pkUd-oSK+6{JBNaJ)xLr8)0@At9TS8V8kcP%~pO&uFIJ+BzaQom;> z{9UOBzd;*2mX+bQt39_663+z*3Fji)20S+k|NYj8QQH@1UXU+JS9QBp3*!*=@Jm~N z&PDd(&WZyF0VOAa*;OWs;+NW1SCq_tr(LPolf&^^cs~Hdj4R&jbg#^Wan%IfdG4$& zr)bL=t_As_v5i`ZTo!fm1^_2*F#igTs#`c-eSzUkGfvW}b;$l8!>uk3Ya>EjFhBdt8)mIX3@CYz-4`XsNrz7U?SwTYtcqNJ~ zgPuOnHDAm0*;cZPLn&q0#-v=ib(Zl^tn3f+5X&$ZFX(@E73lymSf*6}*c&!XPoV+J zAF4C0#4^7A_<}I=ERlLCJ=$M(U5WO#d9dGa$}CpzTc!Jo*LnNh@_}g6TW`~K-tL-% z!nriZ3Pl463!*<_!LsX}kVre671L!%Ef2ieWWNY3$ zeoRZA`O~ks)ZbycLiku1{K`8_4M-+;yh^iO_U~>t_?yOa0^5mpLL6K*Jz{76Q&4Y4 zzV#@zwfi9gqU`8wZF*d}3VD9N`H{@X)(>Yv>Lqv_;75Cmf7Cqy(=%u zmdGg_bRt580O5+cogtV0Lr0&hKtBRg6MBZ3WhiI$Yc|1ZsfgTG6k+4oTad|>yQTv^ zeVN8?JUi98;l)43=Kg?==3>6Wib*{YhrU*PHA=f0ZR2&OQESrqr@%XjC=J)#U$aPs zz5$Z0G_N0vhZ?_a*qy8}&A>kw1&K)VcXa(_Y$;A)Z}R!?M01_P&-L}pwYs#L0o-VR zXx&DSvI_t-rAX*194bJKbPTd{QH7NH^pdzr+;)X=fpFmX_aoUl&}ip(*Y>Dw-T|pX znpMLo$5Q6ENfyEPcqFtft8sT+h`L49o`%EI_rjKs`psKF?@cwQlpP%HlP9PKL+g5M zwFC0+%yb_tO(;l)qkjyl^?d^iKLd|VSmF;W2KuL@Exd%}(rv)+$3U)&RPMi4A4%cn zoX{mzyUjK7=}3TJm;U&d_`M3;2a1ZyuQP>`P2!&{xk&bR?xEF~`K#hU5?Knlo5jSo z2Y9LH{+r_#i5Ea?cgV!HlWI=gfMk9VpzILDc`3Z>mcoKmRSF`_A{6>0Tle(Ys;1m9~;ih&YU zO&20(#7oz8#ZlrA5aQ*E37uX;4;OzH=rpG=tRHPW7j7jd?h9p-*6%qZ^=Q23N^sry z;)9&KzZ8_wYNA%~PR(<06{Y7qB_^-tRFA=9+hXPDsY{0;so3C9*t)mi=-=a|}K= ze>uTjHGSYRVlRTalnU|^o&yaaHGU=QUlCwmBj;k=7PWjN^SX-A(ghQryL_)5>yqV# z9W7QuD;1=|m=pWJR5Dw$O*EeiKxs6Rb@}kOy@mM;`ZRNP-b&D$k=?bOPFF9>^}!Xh zqd|WM10-pW|92W0z&@3J>4lDYnS2Xt?KlzY_sr074S!kO-diJ2M9&ffzSrS_AKF63 zNXVf(lM(1~TWH~g_#sjJPXp!Sh`5&+j_J2@=86u$#x!jz2aDRVdI3)x!4IBbHq1xz z4CgI8)b_7HyLh?dqjs-5f&u)1a~B+12c$2~PaAhDNH4I!JHhvG>}2chRc%(K5jt@_ zuADoL%!f5D%~z^E#SFCer;m=;c#`=wAcE%Jeipfun^OM(AgEk@&a4B`)Q*1aVfxeK zS1?}nG-3Yw69-4bE8MN`4_8Xs&@3L_t+O!hQ^tD$pm+J~oOXTrSjQ;HHo9gYI*2+d z_!|%o)mDuEQxB{)n2kF;99PZ##_}#hj~7NT&Xxo-AzwVJ2H_@WG2-Ao9g6?EJU+3j zaCYLhx}-{NYw9O;YGsd$>RMpW>ri{iJaO_*$!Qy8@gDY3axoz;z2a9@U^ge$!4)fd z>?~g5^`o{m9sUFaOi$jj9i%yPZf$Q=vb2q=MUbu-0suDS?x1f_mfBi!MU40P+P`8Y z0RS-B14rlomPh@|8eE% zLQC!Udk^-v+pJ;y+DZVh`4fJ=2?#e(m@8YWnVIMSsod6xgjSvnSg8w(MmxIQe^W_v^9VMOVBm| zJQnxp*R^lmE7=u>x3GyN*%bppv23uI9@0r>Kb^-vI|PIflUAyst$MpwEsK z7Q=B;dIQ054G8u%;{s2yq@`k9Img2t%pjq-x^qJ}K%0%BQw=KRdbmairf?Q_?gw$f z_7%vniA^_;iPHc8ZZ4dcAKwb}j_D#hyTb&JG3gM#DTdBpOaZcrg(Fp)d zKS&Tm+BrURNuAF=rung5#dt9gbhM;h2ms)hm5R5Sf>NXZYB+hZ@X5rFKEi4<|Iaik z%~8jdsrB|tc;O@JYB(1a_Zz~vyG==~mS~~XR%>Z=E5c&=Ai1vy#ZX0UmCW3mztD52 zx-+g&d_LDZlM~?xh9CU|_FsPVw=-tA$#;NBTk;B?P1*V)?8O)6K78t(9WgHHiwk7x73b1Ak-GK|?>&K@GRXH{qV zx#O%@By-AG0U+Y$c8wQn!O5|2Z)xU53oivR64-}{@mxbp4r1|vDL4B$(Ixaimg3t% zP>ur?hC2pbHJ`^9wPr-#CLp29H747YoI2bLx$k-Jk8?!tjKO!Jaqr=z``B94+RzrRd%Tx4E+YKUyvtJ4Mmm$HDa}t7~mnZ z=cGdDD`Rk}8FctEH2B5rMJ9$+Si?x!m|k}B$MfO3bjQLCZRScJ01y+`00^H#3JTb+ z^`CdxPKw+$j8^>LL_&y2T^fDEM?>0KoY}jWhoP-S9B4T;c6_r!oTYUF)1uCB!P;pa z+1+U(Gz#_{ARS$O7RZ0B5zJ9c(UV_~9yZ-%GxGWXA#jK^qkw>L~k{2W4aDSfjFkJBE=;=i?+C4mN2j{MLw<0xW& z+{bn!Xk1+k@w#A#E}vCVz(gwxkXoU~XD2AXupuv&U-?t=5Lz6>Bn&tyxon?WyS)wFJ@^j~I0>Iv zwLm(VvB~8AXl??f;qVm^HFC01_|nj2-`xL`r7AaIt>}Ptoe02Bq>lh(d@MaCI$=Y- zivCLW{kN7FE&P7d>4W3@Gi{edK)`-=Xde^7caRdhx_j6$8}P3+Ha7AE3Y#`yR?)cd zu0Gl+TLT^|pgAQ`nTafXT%%d~+H}CrktDb_3 zCp*T@evlUNE&!V(;lXPDFN?pp{pbB>rhY(X7zo$z#-_#y1w>05E;ib5b;~1WTx_MC z?hFIs&M|F2V{W7YZz4IAe1rvS+HZZ?tHq8>_1 z6WBojmR(V^F+_BO_>b=JInm)`jQ~V#ml2Bz|1llioz1F$YgWD;goY~vW(TpB zx_`(hH3yACK`mTS2vw@K6eCP_@e1oO*Omy|>gY!Ns+Ig7F0%N|-^*UR$CF(VyK}GO zwh8~E6yb0z$-R%4OOC}xjfh}}YzNfR1 zsU6_)4dhh4>=*5N0rFh_Bs8^MUHvRwYgoTcJ4FDijD?9F zHm0>z2nJy$hbrdbj9dW{#OhQ0H*|>!9&))BHHXRZ#7Z;J0#R%flZWldIa9GMSnW26 zJWlJN(^o^=Pi_V)#UzOu@T@S z(Xw2DN)kQmA4rA5Kn4O(I0d5OyQy@>y$#eViWcJnfNQrr6~p&Dxv+IZbZS@3E0?3u z(02OGw380E)sMsLpWCBOg8*~!;@h4vb)|;CiW%uzd9T>KX)OrAgQ)G?|G5A#K~Tka zPQ_k!JI2(TCg$)$=Gv}FOi3)q0mH@yzX?dt_H53XeV5bN*8;l+cVMFwAU zBwz>z_E}qF`bb%ELhr1;IU-&#I!N&R0RrZd5plm7E@hNBuQJP(hAwXeOER3*4?-u# zyokTwbPb6!e&5LKBomv;NNMzls`77H`BqL4XWbjF+jbXYxD2=%&ron@4fY7@*}FgH z5W5FKw*ZQH-~z_^X4Deh6I6V*zovrsU8F(vaL*hAuJ%9f;M4AXx>J#JIKC$zom4Vk zrp$QmLMl%mZ%bwhQi$704G_ndQZCG$XSnSkOUJ!a#EKZLsJWv8s{_v^hS1f+^j`Q4 zo9{>gX5GOj3j}naG~$191nw_J18=mnxMIg8p}#p9h->Zc=I`OyiN4sBzggeo9n9f6 za!H{pi1p=G5pBW61WL zegE*-k`Y^WNJB-2jN`KK7rGm%V`6`U&OKYRf}c2Ap>?=_f%z=2`Y&)Y#9qn67Ofr7 z>x#yYPXq}P=Mm_QK*2c%$Rjw~wcQ>)`TR7+Sz>QhS2X3zNLaYN`~N_zRd4a_ zSO1v?tW+Ea-olMc4Fxl)tT8NKH&4IYnn?tpF%vdKD3a;_`bvB$cnshA4daFVifHIuLi3x}6d|-c>vFE%! z&WjX>w<;D8Tm_hUq{1hlyR(qes5kg{-)1Pnd%w? z%p$^=erZ;Q8q7@jkhR%yeeM^n*W94Sj~N0xJRvA^y#MS$y7qeH5mM*%=88t9S^i)= zV>4<<_)#_B%;krfZTDPT7D~Fko!-ev$WiscFei3_tvULbNHz?qXHkP_p8Fy|KGx@y!XAAgir5^P9gA%LtuGN11Sco4s1^tUxlN2tm5uB z{p#>E!BJ=?t?prl?y6*MhCPB3dw*2@p$j}vDvjaqT^nmV@-2O8$58!v9`=Pzfi)4P zKxd4{OMn)+8D164`HQ!e?-(y0HyHM&9vJv&LedYuz<}Ln-!}#LYoyf_);p)hRD^8` zvIs3Qc9WOp2kB?F`q?nM^l{~fDG3<`Y~&eo;=g!fhMg+b_cf9>M5A}^kCEvpmIbTD zR|D1_a}58lL&wqTvl@{i%Z`ttoWC>t4G6mD`QUueL~d(o0)G@8W;!Q~VQf~uYs+UW z%;`m(F^U|>j>dl{fu@EC#_G-8UpFScbIaqKJmzs`Pg@9j-{K^|PG}R9=1qg|stI06%`-a9Q+h|0{Q^`-}W#O|fQdl;9fKgES_2C{8^4{!Ua{XZ? z=W+6t)Dl43MZq~tvW`1z^1c+pWzqg1dGy9i2kcckjL%OpT^J_lgIgy?w zQQO*Rl~R{rrkDrT#4j6V)pETD)t?_wXLsvqZwAXT(`}Utg_xcEkuX8$!MeUP=MGqP&gH;3}5`EWB7pVn+{t zudKo^QRg{7AD@grHt^dnssQDt?7Ol`EsII&0f*)e6(1ZDGRx;=GHh(c(i}U-Mz?*V z44&PXcPFlf?9ywLg}(|z^!}TK(h=-l_9#?q0~<6jE;B=e`ic<=iL(wkP`O_)Jg7CD z%~ut$O^qadbdXKDvC`b!6HYsL-#R;yorWr$2aho{j`wQCSy`=4QR_hMOSNiB#$exeH6o}WzG88nDZ)3p z<%{nV+)pnB+J@)}HQrHrk6LmydP|)3QI{b0@a%RqH^u85zsqaagkR!&2D}z;Q?*;v zyj*Uc9{=@(Ek?Mh@mAN}dJ9k?|4xkx&2@3+xHVD2S*^#Cc(8O2-rp{J=8ktTx{=LE zIlE#s%S}a_1vnI@Y)8rGIqZCJSek9q!o7b||2?I8yH2Xg44wkoh|FgH@=jAYL=EKp zwulG7`s1FAi5z&%hYtLxgbLaZWA@rVaH-r=FEDjDuEPttQ+jk(l!aso`hs_4dF)r; zW$RpEH?Gk>kNfsMvgq2AgzNDpqUBk9A2@FvpG z(>?DU&9#1-e#koI6C!N(ZVTx7;RE7c_bs6LiF8<0i99~FzyNC1BN+z1x^C9|U*A5g zYJT!KM5wwhZSIa}nfaMTF`&Tv8`RtB;!UcAl*3M;e}qztt_B1i2A_12um1h!wY3>N z*))H5Ta^L~J*DA(K_~i@L|A)$-!a|qN8K6-RXBmcv6&6b>>HozlSWZs&|Eury#LpN zyEEV8Ta2DYPG7RS#@)7o4?71HCCf{^ZNa?QL_p21*X4qKiYzHC=Uu2qrBE{YZ|3Z- z4{8ROPhcROP>S1wR?j;A!i6^3!b;Jwaeo8TJP_gi=ko7i*&iR08Y;{TcyE@s-Lf|; zy0?D&>>|3zUhfC>5Z0|&P3i|TH9re+KvDb>VIs$v(!O#=&1{6kwnrd^eeO)YeRwkFLMGH!dS#S z@xl+fd4r-(Hy3%6u!`f8D_asDLT5rsuquu@`4{57K7gjxDb8Z?61v!+@fYJ>8Ct~%u6+w~bsxz~PYv(y*^HBv z9?APHZA4^@?m>Xv;rso%AiN!N4A7ej%n5$^vr{YrKUW`o3EZ(RwF&I5wRO&^3``_XcdxdEk#XRP~JP2YMB`VN4Ug{K16&0&UCADqNgB z@qXJIA8)50p9liH}it5Ke^wG+TD-u`+#%?YX@j z20JwvrqpP{ZhdRN=lt&X?5%bR$@=~yfbbx4D6Iq*I~rX?ZU4N=^hP?iLBU>4d(p&M zdjxa;@7P@Oo2LK3fc9)IQh`=I>|F3P(1(!Tj-pO@*ENW?pAQe^Ssx>{Xg<7rm3i2{SM_iL9=*4jYyV3S*GIW62kvQ5zf~?a8CAO+gY) z+pHE`ofZYcK`Azw%!&+hePZPzl(Io}RqA+^vQM0FL|4LsZ53i1Qnhubcyh}Z&m~Ww zW-fiIy>=6rpp@r4x>cR-rmjM^{v za|f=~9P(wYO_MwRPC5wG=v|r`zw~-GD?Er4aC7xWS*yRzx0i_2>9vT@h*5SvI4?yYtDk{Ca2V(g{$G}0LoX%`O_RHP_UtW zUdDarVQh&xR{cyd?O-GPVWjEsQTU!mh0XoH0&w%YcwNM;Inb^x!B-@#Vgw~_l_RH( zGUv%5T=3P)68AqRD{Pf-kv7)KZKMUU-3la1x1(c&fJtMm7Ig!@>yYvNaIivCnWW$W zrjFm)e4uIMw{uMHSWr@SE&dskoiH0#JwuI_ENLZ_tXEx~_tU0|)G$#Wv(Xbu6@ zf7@D=53=Q~Zy`9NUxTsH(j6u|r7W=W^#KQUb&b*r?bH073yBcS!|+=JwpG*k;Jw%O zD6TwFwxBAR=Mtw2)%bAIURt6Uvop{#PwZlYNI`+-8GPF>^LaudLEif19UGR&?%xv`Zf?Tw#+M;`u539N*1 zf-`I8Q~srwr#leQR~2c_DQ8iFAHBc;b)M}_s$YqffyVdout2_Hx_H=p-B7kD_iLd~ z&7oDe>|B>y72N%{j55tnrJpOFgNXd!Y1G-{nf^P?-B@;g^3M{R^wikwGj$c`!ZdO; z1gD%w?*``cJOSoXla#LWM4N6G1+f&ok3ZXt2v5PG1?0f{Jr7PUiq!(QsmzXM|VF6!berz!-9ZSfr!YFyV5FG#V4+Q zv$ga#;M+TVF%@ruul)MNDYa#^4H@9Sa)+BQ>V|M6wq9CADBK*nRJ}=_sl~Eo2T(qq7VWBpT2{a}McTEPGykFS>-q%vMsu6%X55aIK~ zX22utOd#p}l@P)s^+Hrtm%i^CS)ibF0}5Mz%lhyAPv54o*S^nCTfYkW9n1R+RTrF9 zxBY09QTG9lXcNPo$Wc2qCG-=5Nq3FMy!bbL2B(3uKB&w~sLntJ+5m)O@ie8LDY>2w zr0L{fKWLj&tX`})v3~ol=-Niju;n^z&`6qw8Jv~|0P^M=GAz@4_Q#&xErl~oLG^RnBumaN0DJe>!ij$1fXxBFZZDyp( zQffRzl#UBU0D2}ARI}1cKrW;u9qSBdZ` zT#N&GI2*V56#^}RTQ95L6yrH78QouBIvjnhg5OVn<7T86*o-ZoP0ZhJM)_rx*hQlq z(qm3OZn`l(&2}(K0FmpIu9FRo_KumoS;y+dritoy#LmCy*drpT#*DsEy@lV4-D?9A zP9EkEF*F6K#mlpC&!UDf+9h}|wrpz?jlUSB{p4McHy7q$=6VzBLtb3;dgZgZDm1q} z^Rq!tPzw{-W3J{!)b@XIPs?5M+C6>RsY48Ur1!Zqu5{qIS`T3?2}rvd7+yFYak>K_ z=+4RHO2nBiW&nHQ5(7b!=U(cG*dFU_X%Ty`Z}y$n+c@;L(Rzii0X9~2IVJg>{I`$ z{H28xu_)vw5FkL$3r<3_`HiV()e$A*>i=@si0hY%XP(VQvdSCMcWE6&&n74&K0TA9 zJiT`q((Yb&)%J!-CG=ojo7whYDtQ+*%ljBKH${7>b=`bVtTv*eciR3p;0%LQim@)c z#n1w=@5HVt-Mn;RM-G!tYc+(8)5m*TzDFCd3);j0z+&|M6Sspu8x=pZqAdK}PcTmp zMlWCoXX(44J0E7LtM@g|bgUoKw?&HzS%E_q`&Qw*+pMRy7q6h?wp?BN-ILo+btq&oQxhVOnAaD`26$-{0lw(J4+W(bD*ezrD%W+$h!z{s^cY zo2%qKO34CQeVoUq~QDH@)X?)}wV8%fW+1`5w=_D<<|vlxgjhg z-(y=0TYHZ-r$Irr`(m{_w}X6`)|`M`ZI*W?^i~ex_-FBd)Ys^rGEmLvt!nD7);O6| zL7oj(0aUsknghSRnZxB-)^yp%$@)1Ucrj>^Icx99l$46-0a9dhWvpXS0L>Lm(%?a0 zea>PWe-869+Qn-BzVFBytZ7_ZH|WS0w-e_|JeTwpbIDG#op*(c+Wgnfk34O=A=(|Iu#l1|PZ zLcxKFk1r*1BqBC)9aYEY9E%)d>QoiMI`+hrEZ=XqVkmel(_HJHnEU~RZQR7jtcaJK z_-V9<66Kw+L;mhW?kIaR$(%T&)18@QdPP!)XKqf3p)+CJ6ANTL_F2{>@Fz%Pdmn5; zZ4N6HmETg%c>_u%U$VdGOqGWycDeJ~7)m7oKX(7Ls)NG^INqgW6?2Ko@z@XU4a!bF zAl>w@xaE0@%uC?EQo0fj*rN~dUcnNxKV=ORTKz+E^?kY_v_fTVa@Onzw+If#QRLB& zvSjpY2ZEY=YFdB7uD@Rj?rt6U#*NqeVQ%YoS-iApkWu^olpkV^SL9V`wz}>tp6IX+ zcW$TVntq~$7W>Sp`OH=DgK@nEZ3z2hsnnn_Ik?7V`E~cbwZ+##0Yj0UUY zPmoZj^*!gBOM=YvVp#uuCy|DVMXKBH^25c^29`=g*dRFdQgxP0tf`%pL+vj>hYO>) z8g|>Haa8+)ls_hI7u2Y_uf*B$i+D-r^=YHT{=3!}J#5Sq0z20fOdr6sdHG3yF%P&R za<9B1GrjXV(;|X(_z0Oehk*U(F=Yih%{n@;{z;uZ|UB%b&uj0i^<84J;^PsilW`k_>_N6X<#>;gz@uYKSE2?y12Qdsx>~J_o|mFA5m+3x3jvm z(FNWZTFZ8-JyB4h#_@4S=tJasVObfUuY6*?zHDoXI!uG@>UW^oCBUx+ixTf*hceq< z%lu$%Lq-*44RXudo$g{%T2lTL@K!hxEg0)4RHIu5%j0uDxc)AH(J?gSs2lY5)&BVw zz{!x5p2AY7@C@fPPLys9G_Ix`Huvrd=!B8jYUyc%k!X{R$Q{?$F2p_e6*JY zhQEdxVN-9TNI8)#;(I*IW2%YH_}!dPI?DVhk3eqtOwK*$5m0sei&vetoYeGxdWZl% zvpe%c$1attmgxg=rff!oUw4pDB_I_#5PWuwn|BtP4<;lEc61Y~#Ap!dqhp5COXp0%B(!Q}V(g(mgqohcCCf&uL_Bpt!gK zvS>mle(Ppedog{bAn3vm`t16z8v@@IqB2xJ;zPDaRx*@gx`tV-S2yrT~)!?%|WPQ`SgD^c&irQ^0@}H1- zT;LGtvHhW9eh4j9?7xKL_~XFAJ0E!`WpHJ9Hthv*%@|rrrabmqDhhHNo2{9F&aNDL zWWi^XPik~KI{toyJI6f-0gkE_-=pQ!*!<4Udu6!k2HD{@T}k218?la~YUugL{$IsU zP-%CnXXJtkXM@@Jh9#!mRZux(id`FG*I%&<>8&czYy3U@=IeLPCYzNzJdqn+QC0E@ zUQC9(-<7U&Ku^J!PFH7!*84LWN7o0nZedXwv3t6icJD)Iw`iY_al7>4*JsRRT#dEo zwbvF>wNGW~CdqTt-araNI1%p}i)J3fp>DOxt?QSePdCIo*Y$pG z9pN|u8Ej`*Gi)&a_D#O@Sg6a7v=h{zl{x+`bt^jr(_|m$I|*;i=+B!E)Re^8Sm;Qn zcz(IUVtO*BAK~*#NpMOxnm$gAqp&|-+1RyWolo?CeClTc|B4(J-La?Dp8&Og0SpMc z_;@%@knxSJV*$O}PLD)aYAiyFiZ3BXJjv5t(LpW|Zd1iRb&c@;B>DKk__mH8vcC|R zG#BSUXA^pgQO(J^6$$piC)W8o^i@!;`J4kM^6Uy)%EOVp!n{o2Ewjp0h;A?%k#59@M%q%pxi*s?4x_>6I>*=n<3L5L-hOEI{f+^A@61;0$Gq6wCcDb%|!H4LbHcs zV)XL2Ak3*w#~wE3_fFN6ZyddL&Nw#jd~!<9b){EhDi@v%Jsdl>`o8N%9Ey$1_s|## zo_X0#zc(MoV)N+{CV7sqVl~NrneY17!7!;TTIBo;?zMkU>GPG9hg6kwqKC|wvb>uVW>hfJXxUg~^KyjQJ-05m94Nx-sS$@uTCaNXsmb0Pt9qGpO z8La$C#e|I+9pRv+QPAfoNmVt5Z=ytGnuLD_r;GQ-o+-7wTy*fwSt9M>Fa4%QaJHFb z%B^sEOiP@tR@ao>gHDmW#*Z>8s;}I}Po;xw5kKBM11jr2w?0I=tJBsWnp^KCq0E=~ z5~8xRi(A8j>>sJGUHTEI5%X)saY^ptISj7a@(ri?g)a1&w(^R@vE+EKF{~%x>S>q* z3Zg_-aEB{GY}+pNlMSSb`n0CIL@b<+&)imy1ZQ3G>hrl|$zIOWb5)#HcrpmMW+F~=E`OIA;Z`>Wy; z>q1L7(?MNt7Otk&I4zlHd{FA~lX36kOuX;sr#qSW+F3f;goyq9Fj1(pSQnqp8U8b{ zL?KsH9*xwujy{bE()^*M(x_c=m|ZU2O8qz5_7w_a1*_qO#lx<+mz;k5YAeL=OiR(J z#it4IaL>(n`}H{f$NIceO2Zxe!=QH}@fBi<>8pwVigiVVVG%7EvwmF2wP(mdL9)qi ze|a2`E*6%GKNRcDa}wjn1TxyJOTNj8(yhHX?1v4ZOdir|L4Q6&BabS%qq~i45rB3= zl3e>K_?>gduSZA0S;Uj<0q-V5T@HxTe{Oyc!=+C>@5^-cT>^O+E!CKbSZ&iS*<}%6 zZS#*nOI2{INV)Iz^*geCxgfm@N-Dg|7+qE(7T^K6*@#J9 z!>IPGk$f+H+8Q*>X{|ls_=Ld_LN&y!he3mFajQRN_4Gtn%p^upbUr9c0dEBxm$l-I z$$!KYUWBHSJtXC$k^LWjkFTJ3tBSJ?Zwf%NCC;rSAZw*SbExL7XvBl3>aSpF$6H}$|z^Q_Gucvd#oma$-tDT^gVSv1Xt(UES7vAi+ z+&8ZB#tD^A9yF~fdR=49$D0n|`6aP_dYQz__{X3y_0upLbK}4b@x;Hb_a$rQzt~60H6Fv}9I@1ykKsn!6*qqAv6-zShD>6*~xj zU;Vklh>-3d)!i`tfCU82pIcn8aN4b*ir7Y{D<1jjgWxTL-RsdA@9@D-c;0%keTs53 z8Nw*b7a*8o9(5ueVM?Wl(G0^=0wZ<#H|bE*696-}F`yOI=2n9-jE!EaBy=!XrSUHM z27_2iUfr+QZjYV86m^ImceM6w)IffOsl?v!5&yKm@_=6T-^S`b@t2c0Zvi`&D<>T_ z7s}w@6pN?|@dN(NLkT3ay+AohsWZfY%RB0Cds*whcEu?`?ZFa$DUK_>TON_eWF#?}9 zrT#dlLgkb`k7uY~d@+`FZIS5AB@ebhLSyS9(tx%YXY$2PG@DT5F9Q!>D!OdY5!p(~~7sYRT= z4*a_l-nPY9kL3mwM7QQs(UBfCRULJaW2L&xed0KRi4af#mi^l{s%fNEf)uL(+j4c> z$kpXNhNfX!f;Lxr3U6D~<_saAOxa1KieK0i`%(j_&fqbe!Pf*PT)%!A%cE!Xjtn$T5wW zfz#%IgK42b`zjO2@9dn(x%8~mC8GCP;ttOf$>AVUwmx03${CgpTzM?!^z%nzs+=^v zzoAX{kzSiA<`MU#X-6?hxqW_I;LR)MNuo&Zqrm-f%y%gMjNJA) z{~^q^U{UU^3WVS3hgNNI3+F)&-s-YNIE`yz+}V~1$l(UU@igrYa!01a_;oR?`#BZ+ zJn0B^EZ@=_o#pR@5mMf zLV9~>6VD2f#oSSEr&VQta*Hfs`DXVdTvkJWZR7N zZHTUKIH<4{3t#j;rKs`Ir$pohD!Z|wUNS9dPH3Q%Htm2X5IG-=WY`JtaDW63Dulf- z-!bA`P5EL|xrb}cfv}K;6$05%dLV5@7Ye{{{GZY56?vJ;9?bwW2$6 zKnPW5`hJn{{_;cXt^Z=p(j6ssnH6kIT5K#4K`ea$K|u|-Kh?jzE|j5^C5TZqN!~Ns z)0=+hd=i**%WZ3NyvNP1)|!*4_XkuQJf2*oH?+dt97SpsuYOd;)co~op~`ft=`NMz zkS!6dChUb&O_@lvG+#c)E6ztJ50JM0#fni zsd1>G1<}Kg)L#LTb}jo`2qW2P6P@OiuhCSr(=F*!K@*C1n%x2`?LO7Z&T$J> z%h{rzfV+_c+C(072*EpvQ^u!5;?q};n z|0o1-<-fA75{<4pfr0Y)%Ee{G zb!7oL;{F`}#V7(Y=?F|51x%mKpBPTm%@!cIaD}6vay3lR?E?wQj8^gj3Kg9lnU9h6d`-o zgh<&VN+C;@>VNcop6C6&zyJ2W?``gxGxxd9b*|6ny3TdZeeUsR#{W|0{#SWV4hH{6&m1Vj|5bj@1HOO*_4n`3f8}7$ zOwi+>F-Q|aF)}hSGN724n3$PS`_NphXciVUmV%gV|tCoCW=_rHDoX@uBOdp03pA`qM% zhG2*NX@P`*oeX;(gYB{U_kh6>NCrkG6!Sh7An*(W0j3aeB!Ynfi3HL&K|O?IXW$T) zB{6auS~H1waLI)v=AlG2%9^;1-Ynw@HlCr(`*;rUV)?`liAx+lB7a=rgrbtNrk1vj zE}3%b-1!T}7fnpfZ0+nF9G$K>dwKi#Uib442n)Xz5g8R7Lr+S+lahKjE&bm8{DKD$ z3m-i$uc&-hRb5m2{8e*HYg>Cq=j(yDgG0mbMn>OHP0!4Jnw$T;u(-1NV{Lt7^XJy~ z9JULHmpBe+^jZ{}HnP0Q(=f-a}{v3^)(L4yi-SUmVExU93HCxj%e< zci8Rf3nz>Cv=WAkUW~^=-o=c@uY{ixrLhlCRl06kFwXN9a|W67;vDL>ho?4g*-}q# z4-Y+SelbZ8=7YYuiubZzHIxbsN&i%QZKLgRK*FiYcOm{Ca|$50PTv=2kEfmNRN8v{ z^nLTwLyvpZ0{9^FG(y`|k@Z)PlpZ~-y?`uRFfohBkBK|I51M~g$o=WcbH0`*sqcDx zgrVKA^~c_jp*Gjw^FqeaBv*F<0Yp<_Xi0NUy)o|XgDe(_$v^|9hd%=^Qi=wd3GsyV z1?yz}yS-PtcjfURw_Xmg1uL(O@kYh%gYF+MmBV<2U3ge^-pIImd;*_&fu+lhM)gRC z=H?XnFBUsi+9`M>eKF^JFUO&4)=S&63K^#2XyxrO559dQ7~A7ZroEO7tSPh8RAKz1 z54zlzj*|KN%4E?ptQsRMjjfP%kEc!Ys@KAK$INbj?)x|S6x?NAmA@hg7$6R>wAtbJ z@g1@p)R~iWf*B572(d`gGd@CMDiGs>d8%y5A%xnVvz#Q#NwMv}@lO1lSa%e}6hait z8ydmnZL@h8Jt&1WsouOAd!XcuSKhX+M>CkH5nC5lQt9-ToasH~=ebx+Np zq51}-P=RN4ssn{rX1b`)dmsIboeGcV8Au^UA{V}QCJXSLl7M-7W&XJ27I_^u*W2=B zS>|YZ6}5xKWbJ~MRvY!libCh%7kyw*q({$!L=Vs(&KSLl5 zHur@3F!S8QEU(V#T)B{rTqfms(n;sa4knQt{1D9Z<7Zf_ z*ZuYxi@yodU0=mGsq3>748Ij{K}jIKa-qbd)iC8oKVp`~9@AInURrg<{>5#W*b`2J zLCsKv0h9V80+u%{rm-f;CUN}Pw^=Fuqddz?Sb5kbDGPT$ZmuLkHB*eO+Em;*C)jBY zr9<=>3FzM5S+DsUbJfopC#A2PXi-v}#{!={d~G)dn!g{C`KX<-3aMrx8aD7~Fh` zDm{#S^2u9Ix&XTVTr6fxqddii+|gMQp`>QmV^n?HD&(SoP2^o2MMW-{SX0*!e;T)_ z>W>TGeY9_R4Zc(Ne?*ZYUz316zctE%;VZr7cG>rYhvB913Z>4Xv=VcV9>|HmxG{UW z{Mw-_7V`x%uUpu&D_{T19}k{Io$*Y}oQhY>ML9jytorF9h5NzKl1bHJI_3V;nZ4sm zz8g_T0`c~#)hP3H-At==1WOZBSZlziPc?oWt?tU>G4D9CWf&m;s47fn?SYuQLOr`A zH%0EzOAAK#*{ee=f*$f7P}CMLo2iEk?j?sRhaUbH$^Rz%pHJBNYgSAFYeHy=2vnm5 z_iy3xx-F9@jDoj)wv8Wgc|iPg-(U+w!L1s8B5V3XAJ10bnC{Xc>+DOn%D$V)-8Hde z&-BS<3pBV>5gK4@w+V?`Tv$3~5Z4}e@vy(&X;+PtzY5`3MjVxPuc}?Ys4nds*ReEo z`yUsvtxJ|Y#&DN=^vKB}so8g~x#4AOJJ)g<+aI3A2PS(he7PikOI~KPOYHqjLh8s6 zSt?PoA}-Uz{GiY~5eSBYY`&6%@6x&KocF>)LcZqQQH*pum zicB9rku~TJFklkczH#lka(1SN-c5EM_{e;T^X{26Uvj=}-jfp-Wn0-v9Vb5{qEpnR zG+rjZ9)3~IdF>8AYxbQ~yet2mYn9OZ{~m=Gd^PXjg`7`GAT+v+QW#lkCbOS4uocLM zIoXC-L@6p2XQ;IJAl!P!smCsTP@R0lSi5E8H1bXGOQ9InQ`S^Dk;vwe-DtpghRcx1 zuy-n%Frjt)=Q6;km)~hTkC!em8FF8rt5rnXgmV4Pc>pb*+pTl z&asM~%h7+K6Ww8?LwxGf|MbxFirdkuA?eWD6IKEULyA`odwQ4o?e@e|143pH{oEbV zVjE|k2iF3oEBS)Rg{I~Hxok$?8gY(@hXo$nu@-4BFId$sSw;uExVs9it(W+I`#@N_ zFjL}$xa(LOBSS)7=RUP~R<>!Q_)CTYX}J7-zpTSaCxmhg{rrft@_&-kzZ2Er6|(J( z7<(?*eeR8pgr2?vqZEgH{H_8?mV`z#+6zW_)3 z6dg_3*B&!UH)@=#T{>kY$7BZOc`mku3_p1TQuki^{;%h`>8RHu+y%D#+IkutHo0Ia z+zGa3Jn4GX2ru`eI{d-MfBUVZFIGMw4?_ivU!J)-E%kV_W6=OPz&Grid+-h zgAb3trsR%C3X9+a`WY{A7pAk$y;^F^R{F{Ud{9@mwqBSCAI+HI#qg&= z4dT_ib;ssi#c>7<&i{S1NIbkXGfd?X9D8Z`tijrOUxe2Wi|~VnvMgz*{6YlCPdWByQ~qmci>iRo3q9 z)X4eV*7JN82qmJ|f_Zr^Zb(Cx$a_LruvECQz20`bP?}_7f<+Dd*U4qH-0B_UKwaBk2ux=M#H^{ z-;;1Z?oXu%fiIb}2k#8NcSa|o1q@*ORL`~_fANsq)QF1-o6VqG>}_;G*A4 zxgYh3_yn#R1Kn3nL0(XJtJ*T@VIHLWOr^7(3)bpvc0Gw7b2O|WI^|QJ;#2E}N`lV$ zeLs49n~F_yt|)#X3OwT~-i&VhpVIt=FU0*9-~~oUj<~z*>YFS?w&c2g%^L(7;|HOAQZ~{(M_P$#l(Z?Nh;6vS7(b1b@#AB^j z@V72P{S4DEAqEf=rt6<5HI^s+2_GFtQ^2VTQ!G^F~Wu!##6t3xn0{z&RnJ-1u4 zW5961B0cf`bO9=N`AVa2?!FhS@{hQ^oDg`UE#c?;ph7~-xmKrkr+i!9$JZr9Ju6{+ zot5*&detQ|Ox#8>(3hfXJmk_A$AizVh{ZD@tKX*27Q6BBK-ovWZpPw}vS70P_~1c? zZqLu5JA<0Cxbz<{PA}-?d9@Ee=f5%%lG)E>%DU>9Wc>Rh-_!9D!*5lEt(wPnFrI_3 zw`U65dMb~ft4%v=bTr+(U5-QFxjozB+A$)JV@4r&#>sxmV!iZbPeMnL%1%n3OWHR)TF@SI8$hSL)56&|8 ze9+8uRJF+dG)r8-!Dm(7vhhdh%U>f@>@F&~S-jIrV#EqM!IH@5@(K_7+RwgGl59!u zsi_@p(}v_0UCN3^=lCfnC2F4wQi?9=?Be~91`Mt`OGNAJqqpm=R%MxDp544*8r5Ud z<9R|L9g6UW$L%XB$2i^DtQ9Sgql*3TbnbSob-qoebAKluaHsGJT%g{CKh|`IHG8iY zUnSpIp#jQKOmPRVsvATPg<;&U=JN#}Mw41iQcn?xkVP0#K!zcn$t-P2>^4GX^4+=p z5uu8bs3%6B^EIoVK7-s_*oSYo^Y&bua4JX3Nu7Kgy707t>1hF^q95{}*j(U!r4jz* z%El`(Sfsw}#k!Zj3L%&9xyRkLj3s>W+ON~04$iwHbN5~hrpvcD7VBPDE-D}wb()%% z*X}yOb?WatUoV_Z?qGEOXGVhuUZs>wxRB4jJZjwb%2h2`;X>!Hg*8WbDlGaq~>wKC_3ewt~;8F%0I%LPCh#-{#)4 zdR>2qw;S%+5n#9YH5k|=4@>g#ZLv$AU*{h%n1AZrKP1$7E@s;88MCEP?&LlwW^pO2 z2m_n3V;G0z-3AM;&a@TiOP%gchDPoBF) z);&WLceTA!N_F>l#ThW(c<$8E_)yy=F)QE0tO$mOox%73iwE8x*m=hLOhtdCuh^NJ zrOg?uk4Yr*Uay+Da)j|JeoT~R>YM%{YqPdvy5d1p$B4i_C~w0v?o{Sri0p8Yyk2Pf zf$QQiP&lr$N85uMDd;>VA-GsHIZahs`1+>6@w;h-`BY~g_Y3!YxNOto{Rqw^I)RAQ z%ee9^=<3au#KyJ9ui$4@4UqB|!dzM=538T5b-dr@-9&5>=YoB$@+{n^t7%@@j^ZmtlQgq*(BfvD_d9j+-gSFim&{38NRWcl&zS{ z#&kI?F~h&H)qOx=)8S-~Z_v?roy>=@tGDS2w@aO1$^TjcKz7s5`_QAPhaAdTLp^5x z8ZKS^-X&eS^&wc2;=wi8xOvTL6C&m7WlO-ZSa+|O`@+!5K%Rf+4W8-Tl+RXi{R|O_ zpQO0Awi)6{>Cj8FygO~>-ZjTT0LNeIG#T>dxX!8&paodd;(f~ zyd=(>%Sfi!#=SLUIU&FH>9L)Kf)m_HWTW^O)>w%oQjUYr>HSsp@d{W~117oj%9T>G zIkeK_JI+5mcjSp^N*`~Je<2>DYxbp1#S7y!W3Lk3>x3Bf-nuaYJL&w!azA%sK3TP_ z&vK|PSI&U(WVgKuMtMj{j%#zH_(h?~qa#O;FO47)i2?_riy7VqEqRX2)m(jny`O+) z7OBr)DC{+**~L%SE}82RFAdA)SQ8JPI{&DNH^11`s550M9<_V)&_8#8)vkX1x9fFF z0xp1Mcln!jN>|9BFZcU}R5#fRo+o_T3;emCtqr%hT!SrKI+!?p*m#L0SQ%Pxy-ee? zjX#o|Qz-V~$m@WZn%#H_c=89|B0(d~%Hg%fY*yO|b1YZFYpPPJBkysYMH`q>aqJTv za-YDkU^j~r(dcNk)DVh_4 z`p(-=$csI0`(nnTZ-Yb5zI^H8K%NIrL}W^YF1*?O z7LTkMNv<$5DHTdtTggcv*p?49cTATS5bYW*pY>aqSB7u2n-z#v`Sp4bv27nvO-B?T z6NrKdyu}ZqzBXcu=8>IMR6^_XkiN@inl6DcZ?C%Ecb^?J$5MJAM@gpZA`e)S&Si3v zHJ;-8k=O3q+mA2D=^7mQnzY+KQ1*RZ2?sXJdc?)|HX;yzM*r?ovw{uZeJECzeJpHj ztou1}+?*U7oZl z*y-i^A3N9o?DK+6_kZn^Vh|W0xOLw)e@UYM-f4Mx-cAB8j6fjJW-w??ObY@78wk)f zwXz{{P!16dMesxsJ)#Z{LSTozQT>CgtfzT7Ncc3mjg=Q~98v}-LpyqmJ3Es^339kZ zbf^{_uXD(bieg0}@^j^nOMX7i8zDl$ClN$5KVhhha9ETr-eLZpPXK>#$FUg^8HK4(gp9-p+uQ!*5Wb^3Oaw}VqTzbo-ED9T zOe?PczLzEm++J~rp!LvtRPdkz&I|Enhv+;sd_<(AC8p7$adfhT9hL?ObKoEdTUOX2 zo6d!#J9u%Bp%$=j+(`5md`K#LlxM}Lb4UYp(M^*89}rRmDT_v$YVyA3?ZVU1TEbCQ zI9`+$gP<;@-%D};oy~qO-nZD#DzepMDS3B5t2<2iDk#9QBgK9Y6Kj9`;^L= z-nrm~b3#1PFHf&q|(+`+FW6eRPa5>a%$UP5Mf z2%4@1LBM9934&v_Q8qXt0@Ju>6`^!Z|GrV976&<;lGtWr=Rj-$v@!x&UUV5oI4Y0Y ziJ=0uQ4phWa-gntVT%X_r-5snlOqt=ML^FG)rObKdK%ZQiD`t8;2{&52tknHXTf<= zZZuAdPKr)UMDo%h94yKTJbdEi=dvL-0$=|VAA7t3jz3(J(`%uGM5m>R5afVikSqi> zYGNH)?s7mfm=^FA#1a~)S57eakQWt#6=*x8#X%4u+5n9aIF)@ec%26=0{K)l5`k%v z0gqZ*WFd4#(OM6Y8Q;>_($P)V!T~*yp(eZIOVVq1fws8^I`BPWd8t;yQ8v60kZ^i- z+Iv|Hsn>xNl7@`3f^Yy=g3E_Q!9$L+^8y82UMMRNLR2e�KDw@X3y@L3OmWXkjs; zvJk)oL$B?(`pS-wRqT@w!D6Ezpcym)l<%?mRpqvpC_$8ij0**id4$uk>3m!Pj=A2+ z#JG4-YA9L{+8Y6lM1U0nj*-oZG|aQbHMX>Lgn-V3u79^1lUIKHB;=;W+ z2m_&s2pC!uJat0r%oBT)Z1mV{Gdmy~U?TPrV*xg6{(&!Fl!lyAH(H+{$Baks>EAmV ziC`2uk_u6cb3jXr3HL@m{ ze8W(QB3cesb~X-_yWu!6CjN5Xhy()|JQXF%?y-q>q%36NlOZw{-5nR#NgyEPAQ0cc zI5ZKs8TbzzpaEJF9-mbAp`5A(!*kflk?|d&=+3>^05P(co*04AR3Hk5FwBuO=$&OH zO2EnC=n>?&xVR{sCQt`z_cS#^gP(D8c!&`g4#D#JeFPmzT3B9;9Yq7vn8b+yNLv5_ zz}WzG2DPV`epa=SD1(7HL}e|*M?i+PwRyFV@-!j578RR0r^S0W>b_V0 z7p0ivCwRjVaxw&5OGgJtHUQ~gdf~mHJ@H{iT@p6zNGisL)C+te*V}xK^W3@IQVcAy zmxRoGU0AZ7P@5o9ycIh>uZxyZusSQ;s@!$CNT z5xl^th1z73ot#}K}N9{Q#$`;~% zEiZrKxIEY~l(Zs8>wQZyL0c;YAOQ4EEdenC1}? z>>yvUBcnQW?n{<;N!*KoWboaeRDbM6#@}#hglw^SkMeAeD@c~YlHp)Zpd*FRWgORB zWU#gp5EA5EPl0I=nLznodhWv3<{gTd%SA}!(MgBwFcc9OOq?=cg09eLgqYK2ZJ7(vR3 zqZ5$~89WYhJ+YFS_-=a?2(T!sM3`;OqB2_;30)pVAmF;gGG~-pz%T}r%DuR5DiMLr z6OjjFSt}|u2Ac*_ImmTiPl^_Pk<`F5<2vYiacr7k=FNr0*+|&J(Ny4Kh&4VjP6HPj zgX_@1fq}(!J-h6^K{zqofrPv(Ft3!xXazBFK~4x5FUldD0}k&EGfXCj+u&p|VCu6H zPCq#HnGcL83ZvcK%r-{5G&=Zc1D6SyJ_)jtgGr*o=#kI7TsXjH=-*-6$aa5Nh4mCz z7>MX~DD~RPq3|GGHQMuKq=*_quW{Wi-3}4AAS%)ei%JBk2!b3f}UIk-=0+uE?mH3rpZ~hb{@7**k(9igH)_|q>2r^M>P#_n@ zbr1+(@Swuv&@D*Nfn$w#vXc{plNJ*`u;N4H$<5h3W9z zT`=h}!V%{RzbNYn$1%!jQPR?I6ns=JCY*E^MFfM*wD5NC{c}W2G@j0;*(*l?BNxYe z`%HXT{$N>(3_Bd((xFACi1K#gn86Y-LM{d#cS>3RNA4ieff(+UZ5j>VTlzuwZEXuj zMg}2((kqQa1cl$n%R#0>j0oN~2OB2RcmNX-2G&)LGfLfhAi;qI8#f3d_kJ!?gbZf5 zPJ9P#FFhi7Au3T$kNR09{zra4Gf3VTrCu)@SXF=_^ZJB>a{P3Q2$=xVQg;WPssZt~ z$VGsuF$6_)@y(7Na5jj-CBhQB-81Jjz~TT73(+Ml2->6QWC8&!yR^ab%nC9Dxsm1o z=e@1}wr1gkL@u6&4--wER?_=tvgZMc$~3@o5j3!(Amfn2DF}8(9T8ZR!(987;cJGP zyi{g_4DbbQFE4^zv8d8pLBuCw)36*SQFtOmZnOm&K}yIF6sNp*Hh2w^g@cWkfFoFf z0IraXk)+Rp+EH|LcR0C)goE>1~S9FF+s_Z&b!IACyg3=Y8|LzETfG>`); zeiXP5fHA;DNT@Qou2-v$;&s@zuCCT=8@7^euNYEH{Y=ZdM&nY;73U6#N2V@zt>}F< zN%Ma z)!(+cXLsX}rTL~d`wK1A(PKpoTM|ZP!a>?BueBmGBpbFejYPF>%*w_E|Crfn6ZWf8 zkllT$0nlO$*FnyeM{~vs-OMGdZ${fPVh(j@P$D%dk8qZ6_A&6ZusHq_@)q&G54K$cyqm%2`3N zT%dZyCAD0grJbuVyeM{v-mJBjcklA4p{G}0dwZmd!Ol^a?g8dqJr1zt3HMKb$ZF-xx4bp6b1@whlOaqTci;x!$-o3Nm zO$3y4uJ{#WFaN0NU}=rB=ThIs{EC(KH5osu8@c}ORk&7s0*|GkpY1`R!FxVpu*aLx z?Cft+lx)`PWPdSB8X|r8#CN8&_iGVjc;akZxeS3dUGgG|PB(04)I0t_q6KW?Tk&`s zAKo=B6sr7(wxCv-=9`3h4Q*z2Z7##XMIQnEhor`Zh*M%$IM5YkL1^29yubaXP-cea zawfKXukB3I?4!R6PsIf*W5R_4WTzwVCOWzZvs|&BqHhfw)MK>;b=ey|Uhx>*ssK~= z>CYON`jI!9S}8nb<1u{r=wA{Vt+6a^D}J^Tr_W1cIWB8pD$OkW9K?$KEA{d3dP`#^ zE!{e0Sq8|N%vx7JmA58~$4WPSakQ-+(TnAL18yO?43^(W(4&6aSxOqI@R-`C_=5KU zOKFr|RB3q3Koy-2AJgM+X#U`kr3!QO!aoDTzfR{oDG`&X&7E=*E26m>_`p{hWqBq= z_Iq0gJ5P$`!8p5@O!GqGqGdsc-?XaWj*Xj)jQnPd%r0;auX72a{ej+b9!Rpa^$$um z)YLW9%F8Pjx%HxXeL7(SK9m~E&(GhpWfCKiC;F)WULseuSK2!szcnt8#7f#q zmX&Kt53_SfCR7E?kl7Hi&F9u zEIP7rwzjGH+U#1VJGUE-;0m>wo!cYiwCertN!*!Td#e0ChKt;&vFvA;CcKUJ$n$T= z!tn5XN2iH@;nKQ%=I1?;17Y2r+uH1+&s@5;Xz{ZqIjJIid_RmhMTN-?JSU|CB^!>a z9MIjy%!&#-t)>4yW4-mjBwt5^R&7@&*>F9a7$*7xub8D%Z^+L6k^W}a*V0NWs?y(S z@f0FjUF-8Xl}u00QF?Rp&!Tz}k8+VW_sUG1k}1MZ&2b%Mv$AA);4O8>N-{ep_I*S| zbW1X0yK{Kpimg|cP9t50G<480)s#*7nYGF zk_@dq4E~+U)rCVc4?J0#6qRtD?vm_Y#`k5sO)bH7OIjLrI!-W~OEXXDB4*a!uWnDQ zW259E#^X%w)3Uz*7(P+8wkBY!>QWw<)Uxzac+vKo)ns~LHOo=g>RVtMcxdai8$Auj zm+PN<;udSSjGdKb(+n6Bb5l!fieyN!ls=Tux!(8vWp^-l+m`hiHOKtxF6Nwme$tsWf1tumR$NEa4Xvan{Vk&@fpw!n zvek_| zZoez@2jaO^XX=`A11{M&Bjirs`CWDCke+CFHqTN+JZn8|eaCP;Kj;I$W5$T7xy#Fk za~2zx36B`Pcr|`Y7jOO&ulfTiY%pYwIv(UK%W!GniQV;Uc*Fe%lDRx(+qyV$xg5Q& zIaJ=2dGkjJcg5aF?=JJ-z|@aPcK2ngG5mpSS`?4B zWZqPC7^MfBZn9-aZj7@??lLqh?GBt9`n8#tBpNMFn&DUrdX`|-Ui(Jzb3Om^-N3-9 z=ER(q=YFc39>E&zF2ATd6Cb-4y0!>!Zyu7ihzLjzEco)&nmKkf`082H&hHXAy&|2P zEq|cv4d+%*yx%@$`|TiAP1wFt=FZqj_m>Uszob9NuB+HKZTSpctWo@CzF$M&3bPyR zru1T>I%(5BRx(a~Uz?kzGkb}GW5|BP5f!zNP0n4@pg1wsI@h0cboK39buQ1hy>Cj2 zxp-POoSIr|c)F4h==S~aRMkp0bCbD&-0$d{LH9Wu+Rjcqv0FFqsT#W>T^nuJ9R3ID zVOWrIGamm{WZ919q2T{OpTgrg7&2X_zkZxj%v4n`)JyxRwzAn6s$bui-`ZuTHvx66 z*{6IBj=k*L7j>d@BhJP#HN@{^--OBXA4t&!{^|sp<(-YVSIYzG>P&(76ZH#kmTpQ{ zw#R+?{$u~ew?YOpsLg<5S(R$F>K~?@Cn);$Jk=eRb&TD^_an}VCy1)cd|JW>_@GvH zZt73(yJ`9|)BEOS-J0(V0wU{^-U&v%Owu1}EQRJ+BeaB3<-KX$pKoQ_yBypfh)BBo z&9px$L~{2J6u2-Qu4}5wv15wQ^b7icQdRO#{kSo?`!zyK;HK#P$xUI|537MicD>xy zKMtR5{k(YP7w4_!$PBbkLw30-ZEEwYkh@DcN>TOTK^A6pSwSw~7&%q1;)jg<>ZIU zos#uDIqhhn4$IW>K*y2*cWfj>RhQ&)*ReYGNNUfdhH4y#d6sYv+l`V#<8}KPl*(?| z@|ZeEzPa-~^Ot5lL!So|ib7EM`0jm&Vwb9CmuRTJb<>$7Er(*GE37T^krp9h+WlpA9{hGHPGN@29FZ?wFl#+2=+rPjfi;@@;!qPXe?R z_-1|BVZ^mps%G?u_To_7?}v-y>gOg+?cbXdq@(*+8C6*mD9zI++WmSe7LEm-nK?$7 zP^+mMwNJUs!gE>HDoB&U)%~(nO;pfZ#NHK6ySTua|Al8x3T}`_7+^EfF zLz7biwcxP*;qksCBbN_e$sNmbwvPOgtAurCLPE}n+qt1XkgU)X>1ph{(y7ti+|A%r z7s)x($=41+yQ2-+{NGNidL=As(ki+IQ@g6G@47_zXX{3{QKq};9!X*}y^mivU4D6s zwtiXYJbO9G;q|tz?*uhz`6c=%M)QLhx-R=St$d3`CFsTY_l85Gjv1~m`3VFEf0~xY zCGrjI6y5K1&>8Ed^{GTcQ*uw0xoh$+Mf$?GhWj&(-R{ZQxaa?RrQOAvR z>FYwxlLS>3MZXToie|}4Q@c#Z4$4t=t(mm`Oh@U9ec>Bp^e;`U*@tApK_q9xhV4@m z#|F-&^4}b_%Z9y62|n8OOIl0SF%6F|M}&xFIU<@e7Sv2SRV`}Ersz5+nRA3~T_w_H zBITKKrWM{*JgaQ(wRO8Eo38SX{aC z12<#i<>aM^kFJPrvPrs0h(^R=ARLtlg_4nU z3XTJOWyaG;cp3`NfdXPc1`km{0ZC&xn0Je-8%fFQ6Bg8@pI@t`>e5u%du5D7^| zA!#Ta28E+BmrCH4!L;LYa|t6pjN1{cVVY zh!BvZQy@4QqQa0=A|8V9Gzz$dL{dR_z(_LCfTuw?I0_F3%MKEb3d7TZ7!gUOAR!V& zqd))%&`bk*h&Vb5k0ApMxKLmNY44p1?dbu{=>RwdT*T8L&Rqj+H(Y*i~|-@NjMH>&@~x>Qz({a~x`zu# z+f$2!gNrZ-(1M{LX}~rjgdyX=HQF91pc!xr!2ylH-DD(y4~z#q(El0?ED42>7yuap z0l9}70)3J35HJkr2MjRpN$#1-jHi*2pf(hRhXcH1;9?{kC?w)(6d(x!iXaja1Gr*F zLV#p49=MVU;W$W02mCgdk}Y2oQ^bAUFzyC7y=D?e$24FhG)w z3nk&ez9v8vO4=hCP6o9&DsTh}4|D=nIe?cTU>K0x0}G*W;05#p`+?b@7hn&lznS{i^a2!Ak1{@8A z0<(!oDh0eir#LDMPa{Knk;9A(g&+UKnxDt z0m2D}r-J4%JRI~0LV_814FVTA_SituVGsZw3K*sU0X!UrgMa}PJb+9CWfC4ZXwMkX z9Snjf5RHiBfRKCr5+ORE0@~{xyg-jsa1n4t+N%XhFhDs9(1@oJada{g=m%`w_@PBXp0K9)~<$?Ync46>LQ^pWS zwDt%|G|2nU-5;js*3+8sn^7`1WE$*NtXF=z|AZY&Q&}l-*_bm?*?0Q;4@JZghOx-1 zeDCrce9_XY_2QIfvqqtVN$rjIMa9%kU4G6s-VpOs6Q@A+J!rf=>m6LpdwtAy`ta`u zS5`9%MpxZLWw2Wn6NCD?U{hz|R(E{rMsaOR>xSc&z+2HUIP3J- zV&CG9>wFR+?^6~v>+JK+KTwyt_ImY8?a7X;>aE?gt}G`fa7P3Z!=Gp^`w}u(7KeRO zl*CoUH>C#?K28t)lr5LO_UdNu`yZ=q zk7k$2M%y3gB4wtt`Rek;p_F$2{o`D#-8XNktXr+NxcD=@m-lF}WteLVY&fuj(Q%$R9*gjKfaE8YA2{v|gH(SP0s?|Ge#@ZW!wO zsZ)G?Ilt#OmT<7ehpO17e2U_&Ff;Z`?Z|kwx@*15*ipg{>P(xWt_^-w!6HG8|4h{^ z^HWJw8?wPW=i}QBW_nYn3R>paukriwe<0O|+pmLWezonUy5kf668?OWpt*{hqOt?l@Xqf5$8Z|SqPi1-6*pd3pAt%zrek`fN zC!ldV=)h);Ng6Y+lm&S2@$9xZxPDZxm7+sZ2Ot0!LSFW^_+?Bfd z{BG^x-3)YP)dBw#Vq*jR>KO<56XZrG|3G7n2iVzO%{Zh6-Q=={~&-Yc=j;SV< zx7$Bm6Z}4Cbt^*jr{sL&nEK~?tQ%PAC)lo}@?BmbT>0-APK7b4kGGpqFHc|o9FM{)TWgqg=kD+hwDC3LPEq&CaNK^^-%Cp=`~u=JLIZp(9F0kR8-E~U zm;4{9FR)6k(?JLIZhrh#x>K3;vR8TJ_0!<{>FpO6NcHMf?O)a1^K9DDQtU#9NMBjQ zgD=BRPc$$;{<8Ig8RC3Ym>4iy!&<7u>ua)T_6I6=KY-7v9J!uTh*(@yQhFAKmG${B3pJ!6PT8b}?Ew5DX|M97ImoZOSZqXIX=r3fx_L9)KDQFa|33=>NKNcc8uwoo4B}= zm1^YhsQRPL9aG6Bl}^OS_3=IdHHaY^%eyK#Tixk4xw+Q;z&~kSrEgGMEB2e)H_Ip0 z`a2RPE-9@q_Aegucd+|*F-b-8xO$~1&qcw=jitT=R^p{kZr&YTfaPv%uBg!!E$o+9 z=hWu)25k3Bh0Vwu!+BCD4U8T8=;JM>P0WoO_xLV}^4fIVwcJ50C7_#%Zt;8&q_zBR zM_glTRQu{Ei81B>#f^`;@4CFBI<>T@)m4T5s^Rv?M=k&4_A{lG;^vQOU$+^9t?xW7 zn{!ziy*noJJ7sn!eblo?jdjZT)kdWWqVsf6Nt~w^fy=5y_UVr5_D31J?PngAe;~@L zN?gAqLi(PlNp;kZDcSA}u2t>6KTwr4nRxnyjc3lNfa{B!n%hAIFqGQ&GO=%C+c_a| zmy%p^Hr&t}-yMg#bkdmct`SvOy5k=xnN-}GTLooXSc5$xX|d;*AN16fuLnQ0&8xqa zwe;Iq{o+&HX=&-pzYV{B;XJ5$S9X~`@qx4J!N4yW>4(Ji*b#oKvc%tg z)&1nM-I=5TlW)9%S8{5`uv2d35zS8=$3}ep#tyjZlPs+4AE~I;ynguyGEsQ9C`fy$ ztr{<9we$03_}y9agUv65+d8a0#rqWm{kWeckh8 zD((9>?_SLrIr#n*RCwYas6Miz!n1GcVR1&s=C05V%xlq%2>!{xbY3l`GHk^4PxjDK3sd{)r0;H{#S^T>7X!`g`d0S>X@ZYq4L} zLQWj768d^ku)`^T_uz+@rbb8&<-~QBh?W*XNq*}E2G#QG$HKjns%%tTCKl;&xMsU< z3$@sVF17dUNh27ImhP9!t}h?n@Er6<&(IAni}&iytbRuPCTTikcoL>!&yCpK&LlM$ z9}t^-9ywS#-&VP?U+oW6BFiaoEN4}6wU_-KI-<>A9G_%c&J6X|uDiTDq}F6|29}ss zDt^$^VfWg*4{19o0WRH(vb(T9&{rYxuhSQNey7=IRWoYGZT#?0E-8BDDfCM7*t2W7 zVnN@ouDckUum0eHNs!bop(=z2`tH!Tgk!T#*H`i@<-8T?Fy|;w^;@ee|7ANui*)Q< zY7&cco=m+gte7M;b*1}G)2Ba>ULSv;<25d@zo}a4wh>9Ho=W!4sejRR7~cN}I*kj( z)xTb{Um952|G{D5=$LRp8YWq+Dq#nvmHOavSseCy;#p2<4$IjY`E1KzYLYA7QF^s> zocx(5xL-|Icvdc}zD5MjpYi6}Y3onruNhihr@II^B-1y6&h~5#)A`o$jRQ%urRm1{Z#xFIJ9WB3 zPL5P>g+@qLOr_{xM*L2_4S#yMHyFYSb4kcQxllWT~H=Z0aBAsLhqPl9$F#R~jB$99?ODy3@?B(+ z}(fFSj9%;2hcGX)?j2jWu#VK;AN zwA*fkoh%non>^U3HhR|n>5mb~(vx2ULZW_}VqUhCe{af%z?4kZOlb4cc=MCrHETWa zQ|wMyitb|1jXR3u&>PJQX-bEJ5qE79U*YDPM0?x$t%u*e`^5BEcyLB`?3}-gK4t%O zqr=7-&w(X`{O{8uYw^tqjqethJcbo|1Vn>J<5iq~7p-wdbn-I=aoFzLP7}^&{mRgJ zV*G3aEu>)!Zd=?}Jba<5qDwkVTx%$yjgg`qXZ8Lpl zDYp8$TT$|FnK~)64ZPYsQ|1fTOFvDrDRH7Q8mG2vZzQj{Yt&cRQM-Q}`52c~>Qb=` zryh5$JNavVQ7@WF!C-by$gsPbzID5<^k>bE$_b_!)>Zay-!BDCy{4gbuY%hzlgoQH zPFd7tV)%oFX(1ylvmcmV-Q1PBWNHU~6JM1<|MGNZqV?Tlf_z!KlvlL4e)TSKbh+^>3>HsX;ZOarW1n+SO~S`V%$PyN z!R0{*R?^lWho$Yz&9WC?akCyU$#Lnr943_$<=27?+R1ONl?7|cXP=cfTg&y#9ld_Y z%4L3Xe}r{e!}*NEH&VPKR_7zk!`7Wv**|qIVoV5X`eM~pyZ*JNDSAv|I&XHP6CF;3 zyW52)xiCj8$&Ci76;v#vtF|+aZ8>m&|D<-ik(yP7axwgcLu_6<;5mS`uQFZTIonuR zh2KfNuzOR9;=(k4sNr&O`bgj+5@ria~LP04PS|K#dQDKhz~!E+|b^HQM8 z=LrknzFVEEm?{ykZ~edZ8I-KNM3gYomcFb%SAs(4y3=ZY(w=XfvAE9m>vhUY?HehV zpV+^gOqxD^J5*!Uk$T6bIi$MWOz+jYwQIa-hL0qCEFxCrXD#}9P_Ek7@l`|Gtn(D7 zuz36X*Q2qqPB%_AHfXJkt!wOL1-eRgNq33#)R_Dli=SmsBf$>X+dL`fY}i_^NYSL7 zsl5B#m$A&k;kmj2n>rt_rG~c~-&lG}!|XHRE;+l%rnFUA&x+Jdm-zKae|lDG`NrkU zvan-6C3Y=r^|jYN20w{;saJFM<1xvvsfPn+BS`xCwkm4FH|?HuUJT}wlKXJoCc!a# zN5*Z(KZmw;lN=q<{rvQSk7bumeJuOQHm=5I_tVh7a{PM`2lIjR_U&s`;#*R>luRl7 zPQ;2(gYAgkn<)MiWn}dCnQwL@?V_|1?=!jP70Vahe;!Y4TdFskxK-3gy?ujINDZOI zqCvKx|2Q_s@%?F^kH3tJ)BB|QwEDj6%S8>-9mGgw8JhzQJqs!!z_ zr}dlH%Erx1t4%L<30%yro$w$WSdR$6{(L%&bx zzQT@dGpqP`5mrBMtWI2%t(t&y+$7grs=Ga)HRGu>`kKAr8k=cv-*{I+W@txy3i;V@ zZJ~#o0XZmvu_h@@PR-oK0(vmSrh*yQiwDb`Sl*T2y76NO360aO;n>9M^phH}{_q{gJQGzMIXMZHx zX+KY!*m1xnRmlo%n3!)T|FSr}9ZxqEW|CCwee+54P!2j)! z+)aD%4YTrno3DT&m{{SEV*$28Px&QzG