OO/𖣠⚪𔗢⚪ᗩ⚪𔗢⚪𖣠⚪𔗢⚪∣⚪𔗢⚪𖣠⚪𔗢⚪ᗝ⚪𔗢⚪𖣠⚪𔗢.../𖣠⚪𔗢⚪✤⚪𔗢⚪𖣠⚪𔗢⚪ᴥ⚪𔗢⚪𖣠⚪𔗢⚪ᗩ⚪𔗢⚪𖣠⚪𔗢.../𖣠⚪𔗢⚪ᗱᗴ⚪𔗢⚪𖣠⚪𔗢⚪ᴥ⚪𔗢⚪𖣠⚪𔗢⚪ᗩ⚪𔗢⚪𖣠⚪.../𖣠⚪𔗢⚪ЭЄ⚪𔗢⚪𖣠⚪𔗢⚪ᗩ⚪𔗢⚪𖣠⚪𔗢⚪Н⚪𔗢⚪𖣠⚪.../◯ᔓᔕᴥᗱᗴᗝᗩ옷ᔓᔕ◯⚪◯ᔓᔕ옷ᗩᗝᗱᗴᴥᔓᔕ◯ⵙ◯.../◯ᗱᗴᕤᕦᗩᑎᕤᕦИNᗩᙁ◯ᕤᕦИNꖴᗝᗩ옷ᔓᔕ◯人ᴥ.../◯ᕤᕦⓄᴥ⏀ᴥᗱᗴᗝᗩ옷ᔓᔕ◯ⵙ◯ᔓᔕ옷ᗩᗝᗱᗴᴥ⏀ᴥ.../LƧLG.◯ᴥᗱᗴᗝᗩ옷ᔓᔕ◯ᕤᕦИNꖴᴥᗱᗴᗝИNᗱ...

210 lines
43 KiB
Plaintext
Raw Normal View History

2021-03-24 03:26:50 +00:00
<EFBFBD><EFBFBD>/**
* Example Fragment Shader
* Sets the color and alpha of the pixel by setting gl_FragColor
*/
// Set the precision for data types used in this shader
precision highp float;
precision highp int;
float O_IP_O_PI_O = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914565;
2021-03-24 06:37:02 +00:00
uniform float O_REILPITLUM_O_MULTIPLIER_O;
2021-03-24 03:26:50 +00:00
// Default THREE.js uniforms available to both fragment and vertex shader
uniform mat4 modelMatrix;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform mat3 normalMatrix;
// Default uniforms provided by ShaderFrog.
uniform vec3 cameraPosition;
uniform float time;
// A uniform unique to this shader. You can modify it to the using the form
// below the shader preview. Any uniform you add is automatically given a form
uniform vec3 color;
vec3 lightPosition = cameraPosition;
// Example varyings passed from the vertex shader
varying vec3 vPosition;
varying vec3 vNormal;
varying vec2 vUv;
varying vec2 vUv2;
varying vec3 fPosition;
varying vec3 fNormal;
void main() {
// Calculate the real position of this pixel in 3d space, taking into account
// the rotation and scale of the model. It's a useful formula for some effects.
// This could also be done in the vertex shader
vec3 worldPosition = ( modelMatrix * vec4( vPosition, 1.0 )).xyz;
// Calculate the normal including the model rotation and scale
vec3 worldNormal = normalize( vec3( modelMatrix * vec4( vNormal, 0.0 ) ) );
vec3 lightVector = normalize( lightPosition - worldPosition );
// An example simple lighting effect, taking the dot product of the normal
// (which way this pixel is pointing) and a user generated light position
2021-03-24 06:37:02 +00:00
float brightness = dot( worldNormal, lightVector ) * O_REILPITLUM_O_MULTIPLIER_O + (1.-O_REILPITLUM_O_MULTIPLIER_O);
2021-03-24 03:26:50 +00:00
// Fragment shaders set the gl_FragColor, which is a vector4 of
// ( red, green, blue, alpha ).
gl_FragColor = vec4( color * brightness, 1.0 );
}
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>H<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00>$'<27><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><><EFBFBD><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>H<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>&<26><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>H<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><><EFBFBD><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00>$'<27><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>H<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>)<29><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><><EFBFBD><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>|A'|<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>l<15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>k<15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00>|<00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>"<22><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>"<22><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00>$'<27><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><04><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00>|<00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>&<26><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00>|<00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><04><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00>$'<27><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>"<22><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>"<22><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00>|<00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>l<15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>k<15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>|A'|<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><><EFBFBD><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>Y-<2D><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><><EFBFBD><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>|A'|<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>l<15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>k<15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00>|<00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>"<22><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>"<22><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00>$'<27><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><04><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00>|<00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>&<26><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00>|<00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><04><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00>$'<27><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>"<22><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>"<22><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00>|<00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>l<15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>k<15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>|A'|<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><><EFBFBD><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>)<29><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>H<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00>$'<27><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><><EFBFBD><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>H<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00>&<26><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>H<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><><EFBFBD><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00>$'<27><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>H<00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00>((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><15><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><15><15><00><00><00><00><00><00><00><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((\\
//(((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00><00><00><00><00>%<25><00><00><00><00><00><00>(((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<28><00><00><00>((((((((((((((((((((((((((((((((((((((((((((((((((((((((((\\