More glsl code.
authorMichal Krol <mjkrol@gmail.org>
Mon, 13 Feb 2006 11:47:41 +0000 (11:47 +0000)
committerMichal Krol <mjkrol@gmail.org>
Mon, 13 Feb 2006 11:47:41 +0000 (11:47 +0000)
src/mesa/shader/slang/library/slang_common_builtin.gc
src/mesa/shader/slang/library/slang_common_builtin_gc.h

index 0b3ed0e880ca2194669c4585119ae9945ad28478..094bc7988460a1222f3fb6362d246f47abe48874 100755 (executable)
@@ -1,58 +1,34 @@
 
-// 
+//
 // TODO:
-// - implement sin, asin, acos, atan, pow, log2, floor, ceil,
 // - implement texture1D, texture2D, texture3D, textureCube,
 // - implement shadow1D, shadow2D,
 // - implement noise1, noise2, noise3, noise4,
-// 
+//
 
-// 
+//
 // From Shader Spec, ver. 1.10, rev. 59
-// 
-// The following built-in constants are provided to vertex and fragment shaders.
-// 
-
-// 
-// Implementation dependent constants. The example values below
-// are the minimum values allowed for these maximums.
-// 
-
-const int gl_MaxLights = 8;                             // GL 1.0
-const int gl_MaxClipPlanes = 6;                         // GL 1.0
-const int gl_MaxTextureUnits = 2;                       // GL 1.3
-const int gl_MaxTextureCoords = 2;                      // ARB_fragment_program
-const int gl_MaxVertexAttribs = 16;                     // ARB_vertex_shader
-const int gl_MaxVertexUniformComponents = 512;          // ARB_vertex_shader
-const int gl_MaxVaryingFloats = 32;                     // ARB_vertex_shader
-const int gl_MaxVertexTextureImageUnits = 0;            // ARB_vertex_shader
-const int gl_MaxCombinedTextureImageUnits = 2;          // ARB_vertex_shader
-const int gl_MaxTextureImageUnits = 2;                  // ARB_fragment_shader
-const int gl_MaxFragmentUniformComponents = 64;         // ARB_fragment_shader
-const int gl_MaxDrawBuffers = 1;                        // proposed ARB_draw_buffers
-
-// 
-// As an aid to accessing OpenGL processing state, the following uniform variables are built into
-// the OpenGL Shading Language. All page numbers and notations are references to the 1.4
-// specification.
-// 
-
-// 
-// Matrix state. p. 31, 32, 37, 39, 40.
-// 
+//
+
+const int gl_MaxLights = 8;
+const int gl_MaxClipPlanes = 6;
+const int gl_MaxTextureUnits = 8;
+const int gl_MaxTextureCoords = 8;
+const int gl_MaxVertexAttribs = 16;
+const int gl_MaxVertexUniformComponents = 512;
+const int gl_MaxVaryingFloats = 32;
+const int gl_MaxVertexTextureImageUnits = 0;
+const int gl_MaxCombinedTextureImageUnits = 2;
+const int gl_MaxTextureImageUnits = 2;
+const int gl_MaxFragmentUniformComponents = 64;
+const int gl_MaxDrawBuffers = 1;
 
 uniform mat4 gl_ModelViewMatrix;
 uniform mat4 gl_ProjectionMatrix;
 uniform mat4 gl_ModelViewProjectionMatrix;
 uniform mat4 gl_TextureMatrix[gl_MaxTextureCoords];
 
-//
-// Derived matrix state that provides inverse and transposed versions
-// of the matrices above. Poorly conditioned matrices may result
-// in unpredictable values in their inverse forms.
-//
-uniform mat3 gl_NormalMatrix; // transpose of the inverse of the
-                              // upper leftmost 3x3 of gl_ModelViewMatrix
+uniform mat3 gl_NormalMatrix;
 
 uniform mat4 gl_ModelViewMatrixInverse;
 uniform mat4 gl_ProjectionMatrixInverse;
@@ -69,34 +45,18 @@ uniform mat4 gl_ProjectionMatrixInverseTranspose;
 uniform mat4 gl_ModelViewProjectionMatrixInverseTranspose;
 uniform mat4 gl_TextureMatrixInverseTranspose[gl_MaxTextureCoords];
 
-// 
-// Normal scaling p. 39.
-// 
-
 uniform float gl_NormalScale;
 
-// 
-// Depth range in window coordinates, p. 33
-// 
-
 struct gl_DepthRangeParameters {
-    float near;                                         // n
-    float far;                                          // f
-    float diff;                                         // f - n
+    float near;
+    float far;
+    float diff;
 };
 
 uniform gl_DepthRangeParameters gl_DepthRange;
 
-// 
-// Clip planes p. 42.
-// 
-
 uniform vec4 gl_ClipPlane[gl_MaxClipPlanes];
 
-// 
-// Point Size, p. 66, 67.
-// 
-
 struct gl_PointParameters {
     float size;
     float sizeMin;
@@ -109,74 +69,56 @@ struct gl_PointParameters {
 
 uniform gl_PointParameters gl_Point;
 
-// 
-// Material State p. 50, 55.
-// 
-
 struct gl_MaterialParameters {
-    vec4 emission;                                      // Ecm
-    vec4 ambient;                                       // Acm
-    vec4 diffuse;                                       // Dcm
-    vec4 specular;                                      // Scm
-    float shininess;                                    // Srm
+    vec4 emission;
+    vec4 ambient;
+    vec4 diffuse;
+    vec4 specular;
+    float shininess;
 };
 
 uniform gl_MaterialParameters gl_FrontMaterial;
 uniform gl_MaterialParameters gl_BackMaterial;
 
-// 
-// Light State p 50, 53, 55.
-// 
-
 struct gl_LightSourceParameters {
-    vec4 ambient;                                       // Acli
-    vec4 diffuse;                                       // Dcli
-    vec4 specular;                                      // Scli
-    vec4 position;                                      // Ppli
-    vec4 halfVector;                                    // Derived: Hi
-    vec3 spotDirection;                                 // Sdli
-    float spotExponent;                                 // Srli
-    float spotCutoff;                                   // Crli
-                                                        // (range: [0.0,90.0], 180.0)
-    float spotCosCutoff;                                // Derived: cos(Crli)
-                                                        // (range: [1.0,0.0],-1.0)
-    float constantAttenuation;                          // K0
-    float linearAttenuation;                            // K1
-    float quadraticAttenuation;                         // K2
+    vec4 ambient;
+    vec4 diffuse;
+    vec4 specular;
+    vec4 position;
+    vec4 halfVector;
+    vec3 spotDirection;
+    float spotExponent;
+    float spotCutoff;
+    float spotCosCutoff;
+    float constantAttenuation;
+    float linearAttenuation;
+    float quadraticAttenuation;
 };
 
 uniform gl_LightSourceParameters gl_LightSource[gl_MaxLights];
 
 struct gl_LightModelParameters {
-    vec4 ambient;                                       // Acs
+    vec4 ambient;
 };
 
 uniform gl_LightModelParameters gl_LightModel;
 
-// 
-// Derived state from products of light and material.
-// 
-
 struct gl_LightModelProducts {
-    vec4 sceneColor;                                    // Derived. Ecm + Acm * Acs
+    vec4 sceneColor;
 };
 
 uniform gl_LightModelProducts gl_FrontLightModelProduct;
 uniform gl_LightModelProducts gl_BackLightModelProduct;
 
 struct gl_LightProducts {
-    vec4 ambient;                                       // Acm * Acli
-    vec4 diffuse;                                       // Dcm * Dcli
-    vec4 specular;                                      // Scm * Scli
+    vec4 ambient;
+    vec4 diffuse;
+    vec4 specular;
 };
 
 uniform gl_LightProducts gl_FrontLightProduct[gl_MaxLights];
 uniform gl_LightProducts gl_BackLightProduct[gl_MaxLights];
 
-// 
-// Texture Environment and Generation, p. 152, p. 40-42.
-// 
-
 uniform vec4 gl_TextureEnvColor[gl_MaxTextureImageUnits];
 uniform vec4 gl_EyePlaneS[gl_MaxTextureCoords];
 uniform vec4 gl_EyePlaneT[gl_MaxTextureCoords];
@@ -187,1224 +129,1469 @@ uniform vec4 gl_ObjectPlaneT[gl_MaxTextureCoords];
 uniform vec4 gl_ObjectPlaneR[gl_MaxTextureCoords];
 uniform vec4 gl_ObjectPlaneQ[gl_MaxTextureCoords];
 
-// 
-// Fog p. 161
-// 
-
 struct gl_FogParameters {
     vec4 color;
     float density;
     float start;
     float end;
-    float scale;    // Derived:    1.0 / (end - start)
+    float scale;
 };
 
 uniform gl_FogParameters gl_Fog;
 
-// 
-// The OpenGL Shading Language defines an assortment of built-in convenience functions for scalar
-// and vector operations. Many of these built-in functions can be used in more than one type
-// of shader, but some are intended to provide a direct mapping to hardware and so are available
-// only for a specific type of shader.
-// 
-// The built-in functions basically fall into three categories:
-// 
-// * They expose some necessary hardware functionality in a convenient way such as accessing
-//   a texture map. There is no way in the language for these functions to be emulated by a shader.
-// 
-// * They represent a trivial operation (clamp, mix, etc.) that is very simple for the user
-//   to write, but they are very common and may have direct hardware support. It is a very hard
-//   problem for the compiler to map expressions to complex assembler instructions.
-// 
-// * They represent an operation graphics hardware is likely to accelerate at some point. The
-//   trigonometry functions fall into this category.
-// 
-// Many of the functions are similar to the same named ones in common C libraries, but they support
-// vector input as well as the more traditional scalar input.
-// 
-// Applications should be encouraged to use the built-in functions rather than do the equivalent
-// computations in their own shader code since the built-in functions are assumed to be optimal
-// (e.g., perhaps supported directly in hardware).
-// 
-// User code can replace built-in functions with their own if they choose, by simply re-declaring
-// and defining the same name and argument list.
-// 
-
-// 
+//
 // 8.1 Angle and Trigonometry Functions
-// 
-// Function parameters specified as angle are assumed to be in units of radians. In no case will
-// any of these functions result in a divide by zero error. If the divisor of a ratio is 0, then
-// results will be undefined.
-// 
-// These all operate component-wise. The description is per component.
-// 
-
-// 
-// Converts degrees to radians and returns the result, i.e., result = PI*deg/180.
-// 
+//
 
 float radians (float deg) {
     return 3.141593 * deg / 180.0;
-}
+}\r
+
 vec2 radians (vec2 deg) {
-    return vec2 (radians (deg.x), radians (deg.y));
-}
+    return vec2 (3.141593) * deg / vec2 (180.0);
+}\r
+
 vec3 radians (vec3 deg) {
-    return vec3 (radians (deg.x), radians (deg.y), radians (deg.z));
-}
+    return vec3 (3.141593) * deg / vec3 (180.0);
+}\r
+
 vec4 radians (vec4 deg) {
-    return vec4 (radians (deg.x), radians (deg.y), radians (deg.z), radians (deg.w));
+    return vec4 (3.141593) * deg / vec4 (180.0);
 }
 
-// 
-// Converts radians to degrees and returns the result, i.e., result = 180*rad/PI.
-// 
-
 float degrees (float rad) {
     return 180.0 * rad / 3.141593;
-}
+}\r
+
 vec2 degrees (vec2 rad) {
-    return vec2 (degrees (rad.x), degrees (rad.y));
-}
+    return vec2 (180.0) * rad / vec2 (3.141593);
+}\r
+
 vec3 degrees (vec3 rad) {
-    return vec3 (degrees (rad.x), degrees (rad.y), degrees (rad.z));
-}
+    return vec3 (180.0) * rad / vec3 (3.141593);
+}\r
+
 vec4 degrees (vec4 rad) {
-    return vec4 (degrees (rad.x), degrees (rad.y), degrees (rad.z), degrees (rad.w));
+    return vec4 (180.0) * rad / vec4 (3.141593);
 }
 
-// 
-// The standard trigonometric sine function.
-// 
-// XXX
-float sin (float angle) {
-    return 0.0;
-}
+float sin (float angle) {\r
+    float x;\r
+    __asm float_sine x, angle;
+    return x;
+}\r
+
 vec2 sin (vec2 angle) {
-    return vec2 (sin (angle.x), sin (angle.y));
-}
+    vec2 u;\r
+    u.x = sin (angle.x);\r
+    u.y = sin (angle.y);\r
+    return u;\r
+}\r
+
 vec3 sin (vec3 angle) {
-    return vec3 (sin (angle.x), sin (angle.y), sin (angle.z));
-}
+    vec3 u;\r
+    u.x = sin (angle.x);\r
+    u.y = sin (angle.y);\r
+    u.z = sin (angle.z);\r
+    return u;
+}\r
+
 vec4 sin (vec4 angle) {
-    return vec4 (sin (angle.x), sin (angle.y), sin (angle.z), sin (angle.w));
+    vec4 u;\r
+    u.x = sin (angle.x);\r
+    u.y = sin (angle.y);\r
+    u.z = sin (angle.z);\r
+    u.w = sin (angle.w);\r
+    return u;
 }
 
-// 
-// The standard trigonometric cosine function.
-// 
-
 float cos (float angle) {
     return sin (angle + 1.5708);
-}
+}\r
+
 vec2 cos (vec2 angle) {
-    return vec2 (cos (angle.x), cos (angle.y));
-}
+    vec2 u;\r
+    u.x = cos (angle.x);\r
+    u.y = cos (angle.y);\r
+    return u;
+}\r
+
 vec3 cos (vec3 angle) {
-    return vec3 (cos (angle.x), cos (angle.y), cos (angle.z));
-}
+    vec3 u;\r
+    u.x = cos (angle.x);\r
+    u.y = cos (angle.y);\r
+    u.z = cos (angle.z);\r
+    return u;
+}\r
+
 vec4 cos (vec4 angle) {
-    return vec4 (cos (angle.x), cos (angle.y), cos (angle.z), cos (angle.w));
+    vec4 u;\r
+    u.x = cos (angle.x);\r
+    u.y = cos (angle.y);\r
+    u.z = cos (angle.z);\r
+    u.w = cos (angle.w);\r
+    return u;
 }
 
-// 
-// The standard trigonometric tangent.
-// 
-
 float tan (float angle) {
     return sin (angle) / cos (angle);
-}
+}\r
+
 vec2 tan (vec2 angle) {
-    return vec2 (tan (angle.x), tan (angle.y));
-}
+    vec2 u;\r
+    u.x = tan (angle.x);\r
+    u.y = tan (angle.y);\r
+    return u;
+}\r
+
 vec3 tan (vec3 angle) {
-    return vec3 (tan (angle.x), tan (angle.y), tan (angle.z));
-}
+    vec3 u;\r
+    u.x = tan (angle.x);\r
+    u.y = tan (angle.y);\r
+    u.z = tan (angle.z);\r
+    return u;
+}\r
+
 vec4 tan (vec4 angle) {
-    return vec4 (tan (angle.x), tan (angle.y), tan (angle.z), tan (angle.w));
+    vec4 u;\r
+    u.x = tan (angle.x);\r
+    u.y = tan (angle.y);\r
+    u.z = tan (angle.z);\r
+    u.w = tan (angle.w);\r
+    return u;
 }
 
-// 
-// Arc sine. Returns an angle whose sine is x. The range of values returned by this function is
-// [\96PI/2, PI/2]. Results are undefined if |x| > 1.
-// 
-// XXX
 float asin (float x) {
-    return 0.0;
-}
-vec2 asin (vec2 x) {
-    return vec2 (asin (x.x), asin (x.y));
-}
-vec3 asin (vec3 x) {
-    return vec3 (asin (x.x), asin (x.y), asin (x.z));
-}
-vec4 asin (vec4 x) {
-    return vec4 (asin (x.x), asin (x.y), asin (x.z), asin (x.w));
+    float y;\r
+    __asm float_arcsine y, x;\r
+    return y;
+}\r
+
+vec2 asin (vec2 v) {
+    vec2 u;\r
+    u.x = asin (v.x);\r
+    u.y = asin (v.y);\r
+    return u;
+}\r
+
+vec3 asin (vec3 v) {
+    vec3 u;\r
+    u.x = asin (v.x);\r
+    u.y = asin (v.y);\r
+    u.z = asin (v.z);\r
+    return u;
+}\r
+
+vec4 asin (vec4 v) {
+    vec4 u;\r
+    u.x = asin (v.x);\r
+    u.y = asin (v.y);\r
+    u.z = asin (v.z);\r
+    u.w = asin (v.w);\r
+    return u;
 }
 
-// 
-// Arc cosine. Returns an angle whose cosine is x. The range of values returned by this function is
-// [0, PI]. Results are undefined if |x| > 1.
-// 
-// XXX
 float acos (float x) {
-    return 0.0;
-}
-vec2 acos (vec2 x) {
-    return vec2 (acos (x.x), acos (x.y));
-}
-vec3 acos (vec3 x) {
-    return vec3 (acos (x.x), acos (x.y), acos (x.z));
-}
-vec4 acos (vec4 x) {
-    return vec4 (acos (x.x), acos (x.y), acos (x.z), acos (x.w));
+    return 1.5708 - asin (x);
+}\r
+
+vec2 acos (vec2 v) {
+    vec2 u;\r
+    u.x = acos (v.x);\r
+    u.y = acos (v.y);\r
+    return u;
+}\r
+
+vec3 acos (vec3 v) {
+    vec3 u;\r
+    u.x = acos (v.x);\r
+    u.y = acos (v.y);\r
+    u.z = acos (v.z);\r
+    return u;
+}\r
+
+vec4 acos (vec4 v) {
+    vec4 u;\r
+    u.x = acos (v.x);\r
+    u.y = acos (v.y);\r
+    u.z = acos (v.z);\r
+    u.w = acos (v.w);\r
+    return u;
+}
+
+float atan (float y_over_x) {\r
+    float z;\r
+    __asm float_arctan z, y_over_x;\r
+    return z;\r
+}\r
+\r
+vec2 atan (vec2 y_over_x) {\r
+    vec2 u;\r
+    u.x = atan (y_over_x.x);\r
+    u.y = atan (y_over_x.y);\r
+    return u;\r
+}\r
+\r
+vec3 atan (vec3 y_over_x) {\r
+    vec3 u;\r
+    u.x = atan (y_over_x.x);\r
+    u.y = atan (y_over_x.y);\r
+    u.z = atan (y_over_x.z);\r
+    return u;\r
+}\r
+\r
+vec4 atan (vec4 y_over_x) {\r
+    vec4 u;\r
+    u.x = atan (y_over_x.x);\r
+    u.y = atan (y_over_x.y);\r
+    u.z = atan (y_over_x.z);\r
+    u.w = atan (y_over_x.w);\r
+    return u;\r
+}\r
+\r
+float atan (float y, float x) {\r
+    float z;\r
+       z = atan (y / x);
+    if (x < 0.0)\r
+       {\r
+               if (y < 0.0)\r
+                       return z - 3.141593;\r
+               return z + 3.141593;\r
+       }\r
+       return z;
+}\r
+
+vec2 atan (vec2 u, vec2 v) {
+    vec2 t;\r
+    t.x = atan (u.x, v.x);\r
+    t.y = atan (u.y, v.y);\r
+    return t;
+}\r
+
+vec3 atan (vec3 u, vec3 v) {
+    vec3 t;\r
+    t.x = atan (u.x, v.x);\r
+    t.y = atan (u.y, v.y);\r
+    t.z = atan (u.z, v.z);\r
+    return t;
+}\r
+
+vec4 atan (vec4 u, vec4 v) {
+    vec4 t;\r
+    t.x = atan (u.x, v.x);\r
+    t.y = atan (u.y, v.y);\r
+    t.z = atan (u.z, v.z);\r
+    t.w = atan (u.w, v.w);\r
+    return t;
 }
 
-// 
-// Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine
-// what quadrant the angle is in. The range of values returned by this function is [\96PI, PI].
-// Results are undefined if x and y are both 0.
-// 
-// XXX
-float atan (float x, float y) {
-    return 0.0;
-}
-vec2 atan (vec2 x, vec2 y) {
-    return vec2 (atan (x.x, y.x), atan (x.y, y.y));
-}
-vec3 atan (vec3 x, vec3 y) {
-    return vec3 (atan (x.x, y.x), atan (x.y, y.y), atan (x.z, y.z));
-}
-vec4 atan (vec4 x, vec4 y) {
-    return vec4 (atan (x.x, y.x), atan (x.y, y.y), atan (x.z, y.z), atan (x.w, y.w));
-}
-
-// 
-// Arc tangent. Returns an angle whose tangent is y_over_x. The range of values returned by this
-// function is [\96PI/2, PI/2].
-// 
-// XXX
-float atan (float y_over_x) {
-    return 0.0;
-}
-vec2 atan (vec2 y_over_x) {
-    return vec2 (atan (y_over_x.x), atan (y_over_x.y));
-}
-vec3 atan (vec3 y_over_x) {
-    return vec3 (atan (y_over_x.x), atan (y_over_x.y), atan (y_over_x.z));
-}
-vec4 atan (vec4 y_over_x) {
-    return vec4 (atan (y_over_x.x), atan (y_over_x.y), atan (y_over_x.z), atan (y_over_x.w));
-}
-
-// 
+//
 // 8.2 Exponential Functions
-// 
-// These all operate component-wise. The description is per component.
-// 
-
-// 
-// Returns x raised to the y power, i.e., x^y.
-// Results are undefined if x < 0.
-// Results are undefined if x = 0 and y <= 0.
-// 
-// XXX
-float pow (float x, float y) {
-    return 0.0;
-}
-vec2 pow (vec2 x, vec2 y) {
-    return vec2 (pow (x.x, y.x), pow (x.y, y.y));
-}
-vec3 pow (vec3 x, vec3 y) {
-    return vec3 (pow (x.x, y.x), pow (x.y, y.y), pow (x.z, y.z));
-}
-vec4 pow (vec4 x, vec4 y) {
-    return vec4 (pow (x.x, y.x), pow (x.y, y.y), pow (x.z, y.z), pow (x.w, y.w));
-}
+//
 
-// 
-// Returns the natural exponentiation of x, i.e., e^x.
-// 
+float pow (float x, float y) {\r
+    float p;\r
+    __asm float_power p, x, y;
+    return p;
+}\r
+
+vec2 pow (vec2 v, vec2 u) {
+    vec2 t;\r
+    t.x = pow (v.x, u.x);\r
+    t.y = pow (v.y, u.y);\r
+    return t;
+}\r
+
+vec3 pow (vec3 v, vec3 u) {
+    vec3 t;\r
+    t.x = pow (v.x, u.x);\r
+    t.y = pow (v.y, u.y);\r
+    t.z = pow (v.z, u.z);\r
+    return t;
+}\r
+
+vec4 pow (vec4 v, vec4 u) {
+    vec4 t;\r
+    t.x = pow (v.x, u.x);\r
+    t.y = pow (v.y, u.y);\r
+    t.z = pow (v.z, u.z);\r
+    t.w = pow (v.w, u.w);\r
+    return t;
+}
 
 float exp (float x) {
     return pow (2.71828183, x);
-}
-vec2 exp (vec2 x) {
-    return vec2 (exp (x.x), exp (x.y));
-}
-vec3 exp (vec3 x) {
-    return vec3 (exp (x.x), exp (x.y), exp (x.z));
-}
-vec4 exp (vec4 x) {
-    return vec4 (exp (x.x), exp (x.y), exp (x.z), exp (x.w));
-}
-
-// 
-// Returns the natural logarithm of x, i.e., returns the value y which satisfies the equation
-// x = e^y.
-// Results are undefined if x <= 0.
-// 
-
+}\r
+
+vec2 exp (vec2 v) {
+    return pow (vec2 (2.71828183), v);
+}\r
+
+vec3 exp (vec3 v) {
+    return pow (vec3 (2.71828183), v);
+}\r
+
+vec4 exp (vec4 v) {
+    return pow (vec4 (2.71828183), v);
+}
+
+float log2 (float x) {\r
+    float y;\r
+    __asm float_log2 y, x;\r
+    return y;\r
+}\r
+\r
+vec2 log2 (vec2 v) {\r
+    vec2 u;\r
+    u.x = log2 (v.x);\r
+    u.y = log2 (v.y);\r
+    return u;\r
+}\r
+\r
+vec3 log2 (vec3 v) {\r
+    vec3 u;\r
+    u.x = log2 (v.x);\r
+    u.y = log2 (v.y);\r
+    u.z = log2 (v.z);\r
+    return u;\r
+}\r
+\r
+vec4 log2 (vec4 v) {\r
+    vec4 u;\r
+    u.x = log2 (v.x);\r
+    u.y = log2 (v.y);\r
+    u.z = log2 (v.z);\r
+    u.w = log2 (v.w);\r
+    return u;\r
+}\r
+\r
 float log (float x) {
     return log2 (x) / log2 (2.71828183);
-}
-vec2 log (vec2 x) {
-    return vec2 (log (x.x), log (x.y));
-}
-vec3 log (vec3 x) {
-    return vec3 (log (x.x), log (x.y), log (x.z));
-}
-vec4 log (vec4 x) {
-    return vec4 (log (x.x), log (x.y), log (x.z), log (x.w));
-}
+}\r
+
+vec2 log (vec2 v) {
+    return log2 (v) / log2 (vec2 (2.71828183));
+}\r
+
+vec3 log (vec3 v) {
+    return log2 (v) / log2 (vec3 (2.71828183));
+}\r
 
-// 
-// Returns 2 raised to the x power, i.e., 2^x
-// 
+vec4 log (vec4 v) {
+    return log2 (v) / log2 (vec4 (2.71828183));
+}
 
 float exp2 (float x) {
     return pow (2.0, x);
-}
-vec2 exp2 (vec2 x) {
-    return vec2 (exp2 (x.x), exp2 (x.y));
-}
-vec3 exp2 (vec3 x) {
-    return vec3 (exp2 (x.x), exp2 (x.y), exp2 (x.z));
-}
-vec4 exp2 (vec4 x) {
-    return vec4 (exp2 (x.x), exp2 (x.y), exp2 (x.z), exp2 (x.w));
-}
+}\r
 
-// 
-// Returns the base 2 logarithm of x, i.e., returns the value y which satisfies the equation
-// x = 2^y.
-// Results are undefined if x <= 0.
-// 
-// XXX
-float log2 (float x) {
-    return 0.0;
-}
-vec2 log2 (vec2 x) {
-    return vec2 (log2 (x.x), log2 (x.y));
-}
-vec3 log2 (vec3 x) {
-    return vec3 (log2 (x.x), log2 (x.y), log2 (x.z));
-}
-vec4 log2 (vec4 x) {
-    return vec4 (log2 (x.x), log2 (x.y), log2 (x.z), log2 (x.w));
-}
+vec2 exp2 (vec2 v) {
+    return pow (vec2 (2.0), v);
+}\r
 
-// 
-// Returns the positive square root of x.
-// Results are undefined if x < 0.
-// 
+vec3 exp2 (vec3 v) {
+    return pow (vec3 (2.0), v);
+}\r
+
+vec4 exp2 (vec4 v) {
+    return pow (vec4 (2.0), v);
+}
 
 float sqrt (float x) {
     return pow (x, 0.5);
-}
-vec2 sqrt (vec2 x) {
-    return vec2 (sqrt (x.x), sqrt (x.y));
-}
-vec3 sqrt (vec3 x) {
-    return vec3 (sqrt (x.x), sqrt (x.y), sqrt (x.z));
-}
-vec4 sqrt (vec4 x) {
-    return vec4 (sqrt (x.x), sqrt (x.y), sqrt (x.z), sqrt (x.w));
-}
+}\r
 
-// 
-// Returns the reciprocal of the positive square root of x.
-// Results are undefined if x <= 0.
-// 
+vec2 sqrt (vec2 v) {
+    return pow (v, vec2 (0.5));
+}\r
+
+vec3 sqrt (vec3 v) {
+    return pow (v, vec3 (0.5));
+}\r
+
+vec4 sqrt (vec4 v) {
+    return pow (v, vec4 (0.5));
+}
 
 float inversesqrt (float x) {
     return 1.0 / sqrt (x);
-}
-vec2 inversesqrt (vec2 x) {
-    return vec2 (inversesqrt (x.x), inversesqrt (x.y));
-}
-vec3 inversesqrt (vec3 x) {
-    return vec3 (inversesqrt (x.x), inversesqrt (x.y), inversesqrt (x.z));
-}
-vec4 inversesqrt (vec4 x) {
-    return vec4 (inversesqrt (x.x), inversesqrt (x.y), inversesqrt (x.z), inversesqrt (x.w));
+}\r
+
+vec2 inversesqrt (vec2 v) {
+    return vec2 (1.0) / sqrt (v);
+}\r
+
+vec3 inversesqrt (vec3 v) {
+    return vec3 (1.0) / sqrt (v);
+}\r
+
+vec4 inversesqrt (vec4 v) {
+    return vec4 (1.0) / sqrt (v);
 }
 
-// 
+//
 // 8.3 Common Functions
-// 
-// These all operate component-wise. The description is per component.
-// 
-
-// 
-// Returns x if x >= 0, otherwise it returns \96x
-// 
+//
 
 float abs (float x) {
     return x >= 0.0 ? x : -x;
-}
-vec2 abs (vec2 x) {
-    return vec2 (abs (x.x), abs (x.y));
-}
-vec3 abs (vec3 x) {
-    return vec3 (abs (x.x), abs (x.y), abs (x.z));
-}
-vec4 abs (vec4 x) {
-    return vec4 (abs (x.x), abs (x.y), abs (x.z), abs (x.w));
+}\r
+
+vec2 abs (vec2 v) {\r
+       vec2 u;\r
+       u.x = abs (v.x);\r
+       u.y = abs (v.y);
+    return u;
+}\r
+
+vec3 abs (vec3 v) {
+    vec3 u;\r
+       u.x = abs (v.x);\r
+       u.y = abs (v.y);\r
+       u.z = abs (v.z);\r
+    return u;
+}\r
+
+vec4 abs (vec4 v) {
+    vec4 u;\r
+       u.x = abs (v.x);\r
+       u.y = abs (v.y);\r
+       u.z = abs (v.z);\r
+       u.w = abs (v.w);\r
+    return u;
 }
 
-// 
-// Returns 1.0 if x > 0, 0.0 if x = 0, or \961.0 if x < 0
-// 
-
 float sign (float x) {
     return x > 0.0 ? 1.0 : x < 0.0 ? -1.0 : 0.0;
-}
-vec2 sign (vec2 x) {
-    return vec2 (sign (x.x), sign (x.y));
-}
-vec3 sign (vec3 x) {
-    return vec3 (sign (x.x), sign (x.y), sign (x.z));
-}
-vec4 sign (vec4 x) {
-    return vec4 (sign (x.x), sign (x.y), sign (x.z), sign (x.w));
-}
-
-// 
-// Returns a value equal to the nearest integer that is less than or equal to x
-// 
-// XXX
-float floor (float x) {
-    return 0.0;
-}
-vec2 floor (vec2 x) {
-    return vec2 (floor (x.x), floor (x.y));
-}
-vec3 floor (vec3 x) {
-    return vec3 (floor (x.x), floor (x.y), floor (x.z));
-}
-vec4 floor (vec4 x) {
-    return vec4 (floor (x.x), floor (x.y), floor (x.z), floor (x.w));
-}
+}\r
+
+vec2 sign (vec2 v) {
+    vec2 u;\r
+       u.x = sign (v.x);\r
+       u.y = sign (v.y);\r
+    return u;
+}\r
+
+vec3 sign (vec3 v) {
+    vec3 u;\r
+       u.x = sign (v.x);\r
+       u.y = sign (v.y);\r
+       u.z = sign (v.z);\r
+    return u;
+}\r
+
+vec4 sign (vec4 v) {
+    vec4 u;\r
+       u.x = sign (v.x);\r
+       u.y = sign (v.y);\r
+       u.z = sign (v.z);\r
+       u.w = sign (v.w);\r
+    return u;
+}
+
+float floor (float x) {\r
+    float y;\r
+       __asm float_floor y, x;\r
+       return y;\r
+}\r
+\r
+vec2 floor (vec2 v) {\r
+    vec2 u;\r
+       u.x = floor (v.x);\r
+       u.y = floor (v.y);\r
+    return u;\r
+}\r
+\r
+vec3 floor (vec3 v) {\r
+    vec3 u;\r
+       u.x = floor (v.x);\r
+       u.y = floor (v.y);\r
+       u.z = floor (v.z);\r
+    return u;\r
+}\r
+\r
+vec4 floor (vec4 v) {\r
+    vec4 u;\r
+       u.x = floor (v.x);\r
+       u.y = floor (v.y);\r
+       u.z = floor (v.z);\r
+       u.w = floor (v.w);\r
+    return u;\r
+}\r
+\r
+float ceil (float x) {\r
+    float y;\r
+       __asm float_ceil y, x;\r
+       return y;\r
+}\r
+\r
+vec2 ceil (vec2 v) {\r
+    vec2 u;\r
+       u.x = ceil (v.x);\r
+       u.y = ceil (v.y);\r
+    return u;\r
+}\r
+\r
+vec3 ceil (vec3 v) {\r
+    vec3 u;\r
+       u.x = ceil (v.x);\r
+       u.y = ceil (v.y);\r
+       u.z = ceil (v.z);\r
+    return u;\r
+}\r
+\r
+vec4 ceil (vec4 v) {\r
+    vec4 u;\r
+       u.x = ceil (v.x);\r
+       u.y = ceil (v.y);\r
+       u.z = ceil (v.z);\r
+       u.w = ceil (v.w);\r
+    return u;\r
+}
+\r
+float fract (float x) {\r
+    return x - floor (x);\r
+}\r
+\r
+vec2 fract (vec2 v) {\r
+    return v - floor (v);\r
+}\r
+\r
+vec3 fract (vec3 v) {\r
+    return v - floor (v);\r
+}\r
+\r
+vec4 fract (vec4 v) {\r
+    return v - floor (v);\r
+}\r
 
-// 
-// Returns a value equal to the nearest integer that is greater than or equal to x
-// 
-// XXX
-float ceil (float x) {
-    return 0.0;
-}
-vec2 ceil (vec2 x) {
-    return vec2 (ceil (x.x), ceil (x.y));
-}
-vec3 ceil (vec3 x) {
-    return vec3 (ceil (x.x), ceil (x.y), ceil (x.z));
-}
-vec4 ceil (vec4 x) {
-    return vec4 (ceil (x.x), ceil (x.y), ceil (x.z), ceil (x.w));
-}
+float mod (float x, float y) {
+    return x - y * floor (x / y);
+}\r
 
-// 
-// Returns x \96 floor (x)
-// 
+vec2 mod (vec2 v, float u) {
+    return v - u * floor (v / u);
+}\r
 
-float fract (float x) {
-    return x - floor (x);
-}
-vec2 fract (vec2 x) {
-    return vec2 (fract (x.x), fract (x.y));
-}
-vec3 fract (vec3 x) {
-    return vec3 (fract (x.x), fract (x.y), fract (x.z));
-}
-vec4 fract (vec4 x) {
-    return vec4 (fract (x.x), fract (x.y), fract (x.z), fract (x.w));
-}
+vec3 mod (vec3 v, float u) {
+    return v - u * floor (v / u);
+}\r
 
-// 
-// Modulus. Returns x \96 y * floor (x/y)
-// 
+vec4 mod (vec4 v, float u) {
+    return v - u * floor (v / u);
+}\r
 
-float mod (float x, float y) {
-    return x - y * floor (x / y);
-}
-vec2 mod (vec2 x, float y) {
-    return vec2 (mod (x.x, y), mod (x.y, y));
-}
-vec3 mod (vec3 x, float y) {
-    return vec3 (mod (x.x, y), mod (x.y, y), mod (x.z, y));
-}
-vec4 mod (vec4 x, float y) {
-    return vec4 (mod (x.x, y), mod (x.y, y), mod (x.z, y), mod (x.w, y));
-}
-vec2 mod (vec2 x, vec2 y) {
-    return vec2 (mod (x.x, y.x), mod (x.y, y.y));
-}
-vec3 mod (vec3 x, vec3 y) {
-    return vec3 (mod (x.x, y.x), mod (x.y, y.y), mod (x.z, y.z));
-}
-vec4 mod (vec4 x, vec4 y) {
-    return vec4 (mod (x.x, y.x), mod (x.y, y.y), mod (x.z, y.z), mod (x.w, y.w));
-}
+vec2 mod (vec2 v, vec2 u) {
+    return v - u * floor (v / u);
+}\r
 
-// 
-// Returns y if y < x, otherwise it returns x
-// 
+vec3 mod (vec3 v, vec3 u) {
+    return v - u * floor (v / u);
+}\r
 
-float min (float x, float y) {
-    return y < x ? y : x;
-}
-vec2 min (vec2 x, float y) {
-    return vec2 (min (x.x, y), min (x.y, y));
-}
-vec3 min (vec3 x, float y) {
-    return vec3 (min (x.x, y), min (x.y, y), min (x.z, y));
-}
-vec4 min (vec4 x, float y) {
-    return vec4 (min (x.x, y), min (x.y, y), min (x.z, y), min (x.w, y));
-}
-vec2 min (vec2 x, vec2 y) {
-    return vec2 (min (x.x, y.x), min (x.y, y.y));
-}
-vec3 min (vec3 x, vec3 y) {
-    return vec3 (min (x.x, y.x), min (x.y, y.y), min (x.z, y.z));
-}
-vec4 min (vec4 x, vec4 y) {
-    return vec4 (min (x.x, y.x), min (x.y, y.y), min (x.z, y.z), min (x.w, y.w));
+vec4 mod (vec4 v, vec4 u) {
+    return v - u * floor (v / u);
 }
 
-// 
-// Returns y if x < y, otherwise it returns x
-// 
+float min (float x, float y) {
+    return x < y ? x : y;
+}\r
+
+vec2 min (vec2 v, vec2 u) {\r
+    vec2 t;\r
+       t.x = min (v.x, u.x);\r
+       t.y = min (v.y, u.y);\r
+       return t;\r
+}\r
+\r
+vec3 min (vec3 v, vec3 u) {\r
+    vec3 t;\r
+       t.x = min (v.x, u.x);\r
+       t.y = min (v.y, u.y);\r
+       t.z = min (v.z, u.z);\r
+       return t;\r
+}\r
+\r
+vec4 min (vec4 v, vec4 u) {\r
+    vec4 t;\r
+       t.x = min (v.x, u.x);\r
+       t.y = min (v.y, u.y);\r
+       t.z = min (v.z, u.z);\r
+       t.w = min (v.w, u.w);\r
+       return t;\r
+}\r
+\r
+vec2 min (vec2 v, float y) {
+    return min (v, vec2 (y));
+}\r
+
+vec3 min (vec3 v, float y) {
+    return min (v, vec3 (y));
+}\r
+
+vec4 min (vec4 v, float y) {
+    return min (v, vec4 (y));
+}\r
 
 float max (float x, float y) {
-    return min (y, x);
-}
-vec2 max (vec2 x, float y) {
-    return vec2 (max (x.x, y), max (x.y, y));
-}
-vec3 max (vec3 x, float y) {
-    return vec3 (max (x.x, y), max (x.y, y), max (x.z, y));
-}
-vec4 max (vec4 x, float y) {
-    return vec4 (max (x.x, y), max (x.y, y), max (x.z, y), max (x.w, y));
-}
-vec2 max (vec2 x, vec2 y) {
-    return vec2 (max (x.x, y.x), max (x.y, y.y));
-}
-vec3 max (vec3 x, vec3 y) {
-    return vec3 (max (x.x, y.x), max (x.y, y.y), max (x.z, y.z));
-}
-vec4 max (vec4 x, vec4 y) {
-    return vec4 (max (x.x, y.x), max (x.y, y.y), max (x.z, y.z), max (x.w, y.w));
-}
-
-// 
-// Returns min (max (x, minVal), maxVal)
-// 
-// Note that colors and depths written by fragment shaders will be clamped by the implementation
-// after the fragment shader runs.
-// 
+    return x < y ? y : x;
+}\r
+
+vec2 max (vec2 v, vec2 u) {\r
+    vec2 t;\r
+       t.x = max (v.x, u.x);\r
+       t.y = max (v.y, u.y);\r
+       return t;\r
+}\r
+\r
+vec3 max (vec3 v, vec3 u) {\r
+    vec3 t;\r
+       t.x = max (v.x, u.x);\r
+       t.y = max (v.y, u.y);\r
+       t.z = max (v.z, u.z);\r
+       return t;\r
+}\r
+\r
+vec4 max (vec4 v, vec4 u) {\r
+    vec4 t;\r
+       t.x = max (v.x, u.x);\r
+       t.y = max (v.y, u.y);\r
+       t.z = max (v.z, u.z);\r
+       t.w = max (v.w, u.w);\r
+       return t;\r
+}\r
+\r
+vec2 max (vec2 v, float y) {
+    return max (v, vec2 (y));
+}\r
+
+vec3 max (vec3 v, float y) {
+    return max (v, vec3 (y));
+}\r
+
+vec4 max (vec4 v, float y) {
+    return max (v, vec4 (y));
+}\r
 
 float clamp (float x, float minVal, float maxVal) {
     return min (max (x, minVal), maxVal);
-}
+}\r
+
 vec2 clamp (vec2 x, float minVal, float maxVal) {
-    return vec2 (clamp (x.x, minVal, maxVal), clamp (x.y, minVal, maxVal));
-}
+    return min (max (x, minVal), maxVal);
+}\r
+
 vec3 clamp (vec3 x, float minVal, float maxVal) {
-    return vec3 (clamp (x.x, minVal, maxVal), clamp (x.y, minVal, maxVal),
-        clamp (x.z, minVal, maxVal));
-}
+    return min (max (x, minVal), maxVal);
+}\r
+
 vec4 clamp (vec4 x, float minVal, float maxVal) {
-    return vec4 (clamp (x.x, minVal, maxVal), clamp (x.y, minVal, maxVal),
-        clamp (x.z, minVal, maxVal), clamp (x.w, minVal, maxVal));
-}
+    return min (max (x, minVal), maxVal);
+}\r
+
 vec2 clamp (vec2 x, vec2 minVal, vec2 maxVal) {
-    return vec2 (clamp (x.x, minVal.x, maxVal.x), clamp (x.y, minVal.y, maxVal.y));
-}
+    return min (max (x, minVal), maxVal);
+}\r
+
 vec3 clamp (vec3 x, vec3 minVal, vec3 maxVal) {
-    return vec3 (clamp (x.x, minVal.x, maxVal.x), clamp (x.y, minVal.y, maxVal.y),
-        clamp (x.z, minVal.z, maxVal.z));
-}
+    return min (max (x, minVal), maxVal);
+}\r
+
 vec4 clamp (vec4 x, vec4 minVal, vec4 maxVal) {
-    return vec4 (clamp (x.x, minVal.x, maxVal.y), clamp (x.y, minVal.y, maxVal.y),
-        clamp (x.z, minVal.z, maxVal.z), clamp (x.w, minVal.w, maxVal.w));
+    return min (max (x, minVal), maxVal);
 }
 
-// 
-// Returns x * (1 \96 a) + y * a, i.e., the linear blend of x and y
-// 
-
 float mix (float x, float y, float a) {
     return x * (1.0 - a) + y * a;
-}
+}\r
+
 vec2 mix (vec2 x, vec2 y, float a) {
-    return vec2 (mix (x.x, y.x, a), mix (x.y, y.y, a));
-}
+    return x * (1.0 - a) + y * a;
+}\r
+
 vec3 mix (vec3 x, vec3 y, float a) {
-    return vec3 (mix (x.x, y.x, a), mix (x.y, y.y, a), mix (x.z, y.z, a));
-}
+    return x * (1.0 - a) + y * a;
+}\r
+
 vec4 mix (vec4 x, vec4 y, float a) {
-    return vec4 (mix (x.x, y.x, a), mix (x.y, y.y, a), mix (x.z, y.z, a), mix (x.w, y.w, a));
-}
+    return x * (1.0 - a) + y * a;
+}\r
+
 vec2 mix (vec2 x, vec2 y, vec2 a) {
-    return vec2 (mix (x.x, y.x, a.x), mix (x.y, y.y, a.y));
-}
+    return x * (1.0 - a) + y * a;
+}\r
+
 vec3 mix (vec3 x, vec3 y, vec3 a) {
-    return vec3 (mix (x.x, y.x, a.x), mix (x.y, y.y, a.y), mix (x.z, y.z, a.z));
-}
+    return x * (1.0 - a) + y * a;
+}\r
+
 vec4 mix (vec4 x, vec4 y, vec4 a) {
-    return vec4 (mix (x.x, y.x, a.x), mix (x.y, y.y, a.y), mix (x.z, y.z, a.z),
-        mix (x.w, y.w, a.w));
+    return x * (1.0 - a) + y * a;
 }
 
-// 
-// Returns 0.0 if x < edge, otherwise it returns 1.0
-// 
-
 float step (float edge, float x) {
     return x < edge ? 0.0 : 1.0;
-}
-vec2 step (float edge, vec2 x) {
-    return vec2 (step (edge, x.x), step (edge, x.y));
-}
-vec3 step (float edge, vec3 x) {
-    return vec3 (step (edge, x.x), step (edge, x.y), step (edge, x.z));
-}
-vec4 step (float edge, vec4 x) {
-    return vec4 (step (edge, x.x), step (edge, x.y), step (edge, x.z), step (edge, x.w));
-}
-vec2 step (vec2 edge, vec2 x) {
-    return vec2 (step (edge.x, x.x), step (edge.y, x.y));
-}
-vec3 step (vec3 edge, vec3 x) {
-    return vec3 (step (edge.x, x.x), step (edge.y, x.y), step (edge.z, x.z));
-}
-vec4 step (vec4 edge, vec4 x) {
-    return vec4 (step (edge.x, x.x), step (edge.y, x.y), step (edge.z, x.z), step (edge.w, x.w));
-}
-
-// 
-// Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation
-// between 0 and 1 when edge0 < x < edge1. This is useful in cases where you would want a threshold
-// function with a smooth transition. This is equivalent to:
-// <type> t;
-// t = clamp ((x \96 edge0) / (edge1 \96 edge0), 0, 1);
-// return t * t * (3 \96 2 * t);
-// 
+}\r
+
+vec2 step (vec2 edge, vec2 v) {\r
+    vec2 u;\r
+       u.x = step (edge.x, v.x);\r
+       u.y = step (edge.y, v.y);\r
+       return u;\r
+}\r
+\r
+vec3 step (vec3 edge, vec3 v) {\r
+    vec3 u;\r
+       u.x = step (edge.x, v.x);\r
+       u.y = step (edge.y, v.y);\r
+       u.z = step (edge.z, v.z);\r
+       return u;\r
+}\r
+\r
+vec4 step (vec4 edge, vec4 v) {\r
+    vec4 u;\r
+       u.x = step (edge.x, v.x);\r
+       u.y = step (edge.y, v.y);\r
+       u.z = step (edge.z, v.z);\r
+       u.w = step (edge.w, v.w);\r
+       return u;\r
+}\r
+\r
+vec2 step (float edge, vec2 v) {
+    return step (vec2 (edge), v);
+}
+\r
+vec3 step (float edge, vec3 v) {
+    return step (vec3 (edge), v);
+}\r
+
+vec4 step (float edge, vec4 v) {
+    return step (vec4 (edge), v);
+}\r
 
 float smoothstep (float edge0, float edge1, float x) {
-    const float t = clamp ((x - edge0) / (edge1 - edge0), 0.0, 1.0);
+    float t;\r
+       t = clamp ((x - edge0) / (edge1 - edge0), 0.0, 1.0);
     return t * t * (3.0 - 2.0 * t);
-}
-vec2 smoothstep (float edge0, float edge1, vec2 x) {
-    return vec2 (smoothstep (edge0, edge1, x.x), smoothstep (edge0, edge1, x.y));
-}
-vec3 smoothstep (float edge0, float edge1, vec3 x) {
-    return vec3 (smoothstep (edge0, edge1, x.x), smoothstep (edge0, edge1, x.y),
-        smoothstep (edge0, edge1, x.z));
-}
-vec4 smoothstep (float edge0, float edge1, vec4 x) {
-    return vec4 (smoothstep (edge0, edge1, x.x), smoothstep (edge0, edge1, x.y),
-        smoothstep (edge0, edge1, x.z), smoothstep (edge0, edge1, x.w));
-}
-vec2 smoothstep (vec2 edge0, vec2 edge1, vec2 x) {
-    return vec2 (smoothstep (edge0.x, edge1.x, x.x), smoothstep (edge0.y, edge1.y, x.y));
-}
-vec3 smoothstep (vec3 edge0, vec3 edge1, vec3 x) {
-    return vec3 (smoothstep (edge0.x, edge1.x, x.x), smoothstep (edge0.y, edge1.y, x.y),
-        smoothstep (edge0.z, edge1.z, x.z));
-}
-vec4 smoothstep (vec4 edge0, vec4 edge1, vec4 x) {
-    return vec4 (smoothstep (edge0.x, edge1.x, x.x), smoothstep (edge0.y, edge1.y, x.y),
-        smoothstep (edge0.z, edge1.z, x.z), smoothstep (edge0.w, edge1.w, x.w));
-}
+}\r
+
+vec2 smoothstep (vec2 edge0, vec2 edge1, vec2 v) {\r
+    vec2 u;\r
+       u.x = smoothstep (edge0.x, edge1.x, v.x);\r
+       u.y = smoothstep (edge0.y, edge1.y, v.y);\r
+       return u;\r
+}\r
+\r
+vec3 smoothstep (vec3 edge0, vec3 edge1, vec3 v) {\r
+    vec3 u;\r
+       u.x = smoothstep (edge0.x, edge1.x, v.x);\r
+       u.y = smoothstep (edge0.y, edge1.y, v.y);\r
+       u.z = smoothstep (edge0.z, edge1.z, v.z);\r
+       return u;\r
+}\r
+\r
+vec4 smoothstep (vec4 edge0, vec4 edge1, vec4 v) {\r
+    vec4 u;\r
+       u.x = smoothstep (edge0.x, edge1.x, v.x);\r
+       u.y = smoothstep (edge0.y, edge1.y, v.y);\r
+       u.z = smoothstep (edge0.z, edge1.z, v.z);\r
+       u.w = smoothstep (edge0.w, edge1.w, v.w);\r
+       return u;\r
+}\r
+\r
+vec2 smoothstep (float edge0, float edge1, vec2 v) {
+    vec2 u;\r
+       u.x = smoothstep (edge0, edge1, v.x);\r
+       u.y = smoothstep (edge0, edge1, v.y);\r
+       return u;
+}\r
+
+vec3 smoothstep (float edge0, float edge1, vec3 v) {
+    vec3 u;\r
+       u.x = smoothstep (edge0, edge1, v.x);\r
+       u.y = smoothstep (edge0, edge1, v.y);\r
+       u.z = smoothstep (edge0, edge1, v.z);\r
+       return u;
+}\r
+
+vec4 smoothstep (float edge0, float edge1, vec4 v) {
+    vec4 u;\r
+       u.x = smoothstep (edge0, edge1, v.x);\r
+       u.y = smoothstep (edge0, edge1, v.y);\r
+       u.z = smoothstep (edge0, edge1, v.z);\r
+       u.w = smoothstep (edge0, edge1, v.w);\r
+       return u;
+}\r
 
-// 
+//
 // 8.4 Geometric Functions
-// 
-// These operate on vectors as vectors, not component-wise.
-// 
-
-// 
-// Returns the dot product of x and y, i.e., result = x[0] * y[0] + x[1] * y[1] + ...
-// 
+//
 
 float dot (float x, float y) {
     return x * y;
-}
-float dot (vec2 x, vec2 y) {
-    return dot (x.x, y.x) + dot (x.y, y.y);
-}
-float dot (vec3 x, vec3 y) {
-    return dot (x.x, y.x) + dot (x.y, y.y) + dot (x.z, y.z);
-}
-float dot (vec4 x, vec4 y) {
-    return dot (x.x, y.x) + dot (x.y, y.y) + dot (x.z, y.z) + dot (x.w, y.w);
-}
+}\r
 
-// 
-// Returns the length of vector x, i.e., sqrt (x[0] * x[0] + x[1] * x[1] + ...)
-// 
+float dot (vec2 v, vec2 u) {
+    return v.x * u.x + v.y * u.y;
+}\r
 
-float length (float x) {
-    return sqrt (dot (x, x));
-}
-float length (vec2 x) {
-    return sqrt (dot (x, x));
-}
-float length (vec3 x) {
-    return sqrt (dot (x, x));
+float dot (vec3 v, vec3 u) {
+    return v.x * u.x + v.y * u.y + v.z * u.z;
+}\r
+
+float dot (vec4 v, vec4 u) {
+    return v.x * u.x + v.y * u.y + v.z * u.z + v.w * u.w;
 }
-float length (vec4 x) {
+
+float length (float x) {
     return sqrt (dot (x, x));
-}
+}\r
 
-// 
-// Returns the distance between p0 and p1, i.e. length (p0 \96 p1)
-// 
+float length (vec2 v) {
+    return sqrt (dot (v, v));
+}\r
 
-float distance (float x, float y) {
-    return length (x - y);
-}
-float distance (vec2 x, vec2 y) {
-    return length (x - y);
-}
-float distance (vec3 x, vec3 y) {
-    return length (x - y);
+float length (vec3 v) {
+    return sqrt (dot (v, v));
+}\r
+
+float length (vec4 v) {
+    return sqrt (dot (v, v));
 }
-float distance (vec4 x, vec4 y) {
+
+float distance (float x, float y) {
     return length (x - y);
-}
+}\r
+
+float distance (vec2 v, vec2 u) {
+    return length (v - u);
+}\r
 
-// 
-// Returns the cross product of x and y, i.e.
-// result.0 = x[1] * y[2] - y[1] * x[2]
-// result.1 = x[2] * y[0] - y[2] * x[0]
-// result.2 = x[0] * y[1] - y[0] * x[1]
-// 
+float distance (vec3 v, vec3 u) {
+    return length (v - u);
+}\r
 
-vec3 cross (vec3 x, vec3 y) {
-    return vec3 (x.y * y.z - y.y * x.z, x.z * y.x - y.z * x.x, x.x * y.y - y.x * x.y);
+float distance (vec4 v, vec4 u) {
+    return length (v - u);
 }
 
-// 
-// Returns a vector in the same direction as x but with a length of 1.
-// 
+vec3 cross (vec3 v, vec3 u) {
+    vec3 t;\r
+    t.x = v.y * u.z - u.y * v.z;\r
+    t.y = v.z * u.x - u.z * v.x;\r
+    t.z = v.x * u.y - u.x * v.y;\r
+    return t;
+}
 
 float normalize (float x) {
     return 1.0;
-}
-vec2 normalize (vec2 x) {
-    return x / length (x);
-}
-vec3 normalize (vec3 x) {
-    return x / length (x);
-}
-vec4 normalize (vec4 x) {
-    return x / length (x);
-}
+}\r
+
+vec2 normalize (vec2 v) {
+    return v / length (v);
+}\r
 
-// 
-// If dot (Nref, I) < 0 return N otherwise return \96N
-// 
+vec3 normalize (vec3 v) {
+    return v / length (v);
+}\r
+
+vec4 normalize (vec4 v) {
+    return v / length (v);
+}
 
 float faceforward (float N, float I, float Nref) {
     return dot (Nref, I) < 0.0 ? N : -N;
-}
+}\r
+
 vec2 faceforward (vec2 N, vec2 I, vec2 Nref) {
     return dot (Nref, I) < 0.0 ? N : -N;
-}
+}\r
+
 vec3 faceforward (vec3 N, vec3 I, vec3 Nref) {
     return dot (Nref, I) < 0.0 ? N : -N;
-}
+}\r
+
 vec4 faceforward (vec4 N, vec4 I, vec4 Nref) {
     return dot (Nref, I) < 0.0 ? N : -N;
 }
 
-// 
-// For the incident vector I and surface orientation N, returns the reflection direction:
-// result = I - 2 * dot (N, I) * N
-// N must already be normalized in order to achieve the desired result.\r
-//
-
 float reflect (float I, float N) {
     return I - 2.0 * dot (N, I) * N;
-}
+}\r
+
 vec2 reflect (vec2 I, vec2 N) {
     return I - 2.0 * dot (N, I) * N;
-}
+}\r
+
 vec3 reflect (vec3 I, vec3 N) {
     return I - 2.0 * dot (N, I) * N;
-}
+}\r
+
 vec4 reflect (vec4 I, vec4 N) {
     return I - 2.0 * dot (N, I) * N;
 }
 
-//
-// For the incident vector I and surface normal N, and the ratio of inidices of refraction eta,
-// return the refraction vector. The returned result is computed by
-//
-// k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I))
-// if (k < 0.0)
-//   result = genType (0.0)
-// else
-//   result = eta * I - (eta * dot (N, I) + sqrt (k)) * N
-//
-// The input parameters for the incident vector I and the surface normal N must already be
-// normalized to get the desired results.
-//
-
 float refract (float I, float N, float eta) {
-    const float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
+    float k;\r
+       k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
     if (k < 0.0)
-        return 0.0;\r
+        return 0.0;
     return eta * I - (eta * dot (N, I) + sqrt (k)) * N;
-}
+}\r
+
 vec2 refract (vec2 I, vec2 N, float eta) {
-    const float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
-    if (k < 0.0)
-        return vec2 (0.0);
+    float k;\r
+       k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));\r
+    if (k < 0.0)\r
+        return 0.0;\r
     return eta * I - (eta * dot (N, I) + sqrt (k)) * N;
-}
+}\r
+
 vec3 refract (vec3 I, vec3 N, float eta) {
-    const float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
-    if (k < 0.0)
-        return vec3 (0.0);
+    float k;\r
+       k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));\r
+    if (k < 0.0)\r
+        return 0.0;\r
     return eta * I - (eta * dot (N, I) + sqrt (k)) * N;
-}
+}\r
+
 vec4 refract (vec4 I, vec4 N, float eta) {
-    const float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));
-    if (k < 0.0)
-        return vec4 (0.0);
+    float k;\r
+       k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));\r
+    if (k < 0.0)\r
+        return 0.0;\r
     return eta * I - (eta * dot (N, I) + sqrt (k)) * N;
 }
 
-// 
+//
 // 8.5 Matrix Functions
-// 
-
-// 
-// Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product
-// of x[i][j] and y[i][j].
-// Note: to get linear algebraic matrix multiplication, use the multiply operator (*).
-// 
-
-mat2 matrixCompMult (mat2 x, mat2 y) {
-    return mat2 (
-        x[0].x * y[0].x, x[0].y * y[0].y,
-        x[1].x * y[1].x, x[1].y * y[1].y
-    );
-}
-mat3 matrixCompMult (mat3 x, mat3 y) {
-    return mat4 (
-        x[0].x * y[0].x, x[0].y * y[0].y, x[0].z * y[0].z,
-        x[1].x * y[1].x, x[1].y * y[1].y, x[1].z * y[1].z,
-        x[2].x * y[2].x, x[2].y * y[2].y, x[2].z * y[2].z
-    );
-}
-mat4 matrixCompMult (mat4 x, mat4 y) {
-    return mat4 (
-        x[0].x * y[0].x, x[0].y * y[0].y, x[0].z * y[0].z + x[0].w * y[0].w,
-        x[1].x * y[1].x, x[1].y * y[1].y, x[1].z * y[1].z + x[1].w * y[1].w,
-        x[2].x * y[2].x, x[2].y * y[2].y, x[2].z * y[2].z + x[2].w * y[2].w,
-        x[3].x * y[3].x, x[3].y * y[3].y, x[3].z * y[3].z + x[3].w * y[3].w
-    );
-}
-
-// 
-// 8.6 Vector Relational Functions
-// 
-// Relational and equality operators (<, <=, >, >=, ==, !=) are defined (or reserved) to produce
-// scalar Boolean results.
-// 
-
-// 
-// Returns the component-wise compare of x < y.
-// 
+//
 
-bvec2 lessThan (vec2 x, vec2 y) {
-    return bvec2 (x.x < y.x, x.y < y.y);
-}
-bvec3 lessThan (vec3 x, vec3 y) {
-    return bvec3 (x.x < y.x, x.y < y.y, x.z < y.z);
-}
-bvec4 lessThan (vec4 x, vec4 y) {
-    return bvec4 (x.x < y.x, x.y < y.y, x.z < y.z, x.w < y.w);
-}
-bvec2 lessThan (ivec2 x, ivec2 y) {
-    return bvec2 (x.x < y.x, x.y < y.y);
-}
-bvec3 lessThan (ivec3 x, ivec3 y) {
-    return bvec3 (x.x < y.x, x.y < y.y, x.z < y.z);
-}
-bvec4 lessThan (ivec4 x, ivec4 y) {
-    return bvec4 (x.x < y.x, x.y < y.y, x.z < y.z, x.w < y.w);
+mat2 matrixCompMult (mat2 m, mat2 n) {
+    mat2 o;
+    o[0] = m[0] * n[0];\r
+    o[1] = m[1] * n[1];
+    return o;
+}\r
+
+mat3 matrixCompMult (mat3 m, mat3 n) {
+    mat3 o;
+    o[0] = m[0] * n[0];\r
+    o[1] = m[1] * n[1];\r
+    o[2] = m[2] * n[2];
+    return o;
+}\r
+
+mat4 matrixCompMult (mat4 m, mat4 n) {
+    mat4 o;
+    o[0] = m[0] * n[0];\r
+    o[1] = m[1] * n[1];\r
+    o[2] = m[2] * n[2];\r
+    o[3] = m[3] * n[3];
+    return o;
 }
 
-// 
-// Returns the component-wise compare of x <= y.
-// 
-
-bvec2 lessThanEqual (vec2 x, vec2 y) {
-    return bvec2 (x.x <= y.x, x.y <= y.y);
-}
-bvec3 lessThanEqual (vec3 x, vec3 y) {
-    return bvec3 (x.x <= y.x, x.y <= y.y, x.z <= y.z);
-}
-bvec4 lessThanEqual (vec4 x, vec4 y) {
-    return bvec4 (x.x <= y.x, x.y <= y.y, x.z <= y.z, x.w <= y.w);
-}
-bvec2 lessThanEqual (ivec2 x, ivec2 y) {
-    return bvec2 (x.x <= y.x, x.y <= y.y);
-}
-bvec3 lessThanEqual (ivec3 x, ivec3 y) {
-    return bvec3 (x.x <= y.x, x.y <= y.y, x.z <= y.z);
-}
-bvec4 lessThanEqual (ivec4 x, ivec4 y) {
-    return bvec4 (x.x <= y.x, x.y <= y.y, x.z <= y.z, x.w <= y.w);
-}
-
-// 
-// Returns the component-wise compare of x > y.
-// 
-
-bvec2 greaterThan (vec2 x, vec2 y) {
-    return bvec2 (x.x > y.x, x.y > y.y);
-}
-bvec3 greaterThan (vec3 x, vec3 y) {
-    return bvec3 (x.x > y.x, x.y > y.y, x.z > y.z);
-}
-bvec4 greaterThan (vec4 x, vec4 y) {
-    return bvec4 (x.x > y.x, x.y > y.y, x.z > y.z, x.w > y.w);
-}
-bvec2 greaterThan (ivec2 x, ivec2 y) {
-    return bvec2 (x.x > y.x, x.y > y.y);
-}
-bvec3 greaterThan (ivec3 x, ivec3 y) {
-    return bvec3 (x.x > y.x, x.y > y.y, x.z > y.z);
-}
-bvec4 greaterThan (ivec4 x, ivec4 y) {
-    return bvec4 (x.x > y.x, x.y > y.y, x.z > y.z, x.w > y.w);
-}
-
-// 
-// Returns the component-wise compare of x >= y.
-// 
+//
+// 8.6 Vector Relational Functions
+//
 
-bvec2 greaterThanEqual (vec2 x, vec2 y) {
-    return bvec2 (x.x >= y.x, x.y >= y.y);
-}
-bvec3 greaterThanEqual (vec3 x, vec3 y) {
-    return bvec3 (x.x >= y.x, x.y >= y.y, x.z >= y.z);
-}
-bvec4 greaterThanEqual (vec4 x, vec4 y) {
-    return bvec4 (x.x >= y.x, x.y >= y.y, x.z >= y.z, x.w >= y.w);
-}
-bvec2 greaterThanEqual (ivec2 x, ivec2 y) {
-    return bvec2 (x.x >= y.x, x.y >= y.y);
-}
-bvec3 greaterThanEqual (ivec3 x, ivec3 y) {
-    return bvec3 (x.x >= y.x, x.y >= y.y, x.z >= y.z);
-}
-bvec4 greaterThanEqual (ivec4 x, ivec4 y) {
-    return bvec4 (x.x >= y.x, x.y >= y.y, x.z >= y.z, x.w >= y.w);
+bvec2 lessThan (vec2 v, vec2 u) {\r
+       bvec2 b;\r
+       b.x = v.x < u.x;\r
+       b.y = v.y < u.y;\r
+       return b;
+}\r
+
+bvec3 lessThan (vec3 v, vec3 u) {
+    bvec3 b;\r
+       b.x = v.x < u.x;\r
+       b.y = v.y < u.y;\r
+       b.z = v.z < u.z;\r
+       return b;
+}\r
+
+bvec4 lessThan (vec4 v, vec4 u) {
+    bvec4 b;\r
+       b.x = v.x < u.x;\r
+       b.y = v.y < u.y;\r
+       b.z = v.z < u.z;\r
+       b.w = v.w < u.w;\r
+       return b;
+}\r
+
+bvec2 lessThan (ivec2 v, ivec2 u) {
+    bvec2 b;\r
+       b.x = v.x < u.x;\r
+       b.y = v.y < u.y;\r
+       return b;
+}\r
+
+bvec3 lessThan (ivec3 v, ivec3 u) {
+    bvec3 b;\r
+       b.x = v.x < u.x;\r
+       b.y = v.y < u.y;\r
+       b.z = v.z < u.z;\r
+       return b;
+}\r
+
+bvec4 lessThan (ivec4 v, ivec4 u) {
+    bvec4 b;\r
+       b.x = v.x < u.x;\r
+       b.y = v.y < u.y;\r
+       b.z = v.z < u.z;\r
+       b.w = v.w < u.w;\r
+       return b;
+}
+
+bvec2 lessThanEqual (vec2 v, vec2 u) {
+    bvec2 b;\r
+       b.x = v.x <= u.x;\r
+       b.y = v.y <= u.y;\r
+       return b;
+}\r
+
+bvec3 lessThanEqual (vec3 v, vec3 u) {
+    bvec3 b;\r
+       b.x = v.x <= u.x;\r
+       b.y = v.y <= u.y;\r
+       b.z = v.z <= u.z;\r
+       return b;
+}\r
+
+bvec4 lessThanEqual (vec4 v, vec4 u) {
+    bvec4 b;\r
+       b.x = v.x <= u.x;\r
+       b.y = v.y <= u.y;\r
+       b.z = v.z <= u.z;\r
+       b.w = v.w <= u.w;\r
+       return b;
+}\r
+
+bvec2 lessThanEqual (ivec2 v, ivec2 u) {
+    bvec2 b;\r
+       b.x = v.x <= u.x;\r
+       b.y = v.y <= u.y;\r
+       return b;
+}\r
+
+bvec3 lessThanEqual (ivec3 v, ivec3 u) {
+    bvec3 b;\r
+       b.x = v.x <= u.x;\r
+       b.y = v.y <= u.y;\r
+       b.z = v.z <= u.z;\r
+       return b;
+}\r
+
+bvec4 lessThanEqual (ivec4 v, ivec4 u) {
+    bvec4 b;\r
+       b.x = v.x <= u.x;\r
+       b.y = v.y <= u.y;\r
+       b.z = v.z <= u.z;\r
+       b.w = v.w <= u.w;\r
+       return b;
+}
+
+bvec2 greaterThan (vec2 v, vec2 u) {
+    bvec2 b;\r
+       b.x = v.x > u.x;\r
+       b.y = v.y > u.y;\r
+       return b;
+}\r
+
+bvec3 greaterThan (vec3 v, vec3 u) {
+    bvec3 b;\r
+       b.x = v.x > u.x;\r
+       b.y = v.y > u.y;\r
+       b.z = v.z > u.z;\r
+       return b;
+}\r
+
+bvec4 greaterThan (vec4 v, vec4 u) {
+    bvec4 b;\r
+       b.x = v.x > u.x;\r
+       b.y = v.y > u.y;\r
+       b.z = v.z > u.z;\r
+       b.w = v.w > u.w;\r
+       return b;
+}\r
+
+bvec2 greaterThan (ivec2 v, ivec2 u) {
+    bvec2 b;\r
+       b.x = v.x > u.x;\r
+       b.y = v.y > u.y;\r
+       return b;
+}\r
+
+bvec3 greaterThan (ivec3 v, ivec3 u) {
+    bvec3 b;\r
+       b.x = v.x > u.x;\r
+       b.y = v.y > u.y;\r
+       b.z = v.z > u.z;\r
+       return b;
+}\r
+
+bvec4 greaterThan (ivec4 v, ivec4 u) {
+    bvec4 b;\r
+       b.x = v.x > u.x;\r
+       b.y = v.y > u.y;\r
+       b.z = v.z > u.z;\r
+       b.w = v.w > u.w;\r
+       return b;
+}
+
+bvec2 greaterThanEqual (vec2 v, vec2 u) {
+    bvec2 b;\r
+       b.x = v.x >= u.x;\r
+       b.y = v.y >= u.y;\r
+       return b;
+}\r
+
+bvec3 greaterThanEqual (vec3 v, vec3 u) {
+    bvec3 b;\r
+       b.x = v.x >= u.x;\r
+       b.y = v.y >= u.y;\r
+       b.z = v.z >= u.z;\r
+       return b;
+}\r
+
+bvec4 greaterThanEqual (vec4 v, vec4 u) {
+    bvec4 b;\r
+       b.x = v.x >= u.x;\r
+       b.y = v.y >= u.y;\r
+       b.z = v.z >= u.z;\r
+       b.w = v.w >= u.w;\r
+       return b;
+}\r
+
+bvec2 greaterThanEqual (ivec2 v, ivec2 u) {
+    bvec2 b;\r
+       b.x = v.x >= u.x;\r
+       b.y = v.y >= u.y;\r
+       return b;
+}\r
+
+bvec3 greaterThanEqual (ivec3 v, ivec3 u) {
+    bvec3 b;\r
+       b.x = v.x >= u.x;\r
+       b.y = v.y >= u.y;\r
+       b.z = v.z >= u.z;\r
+       return b;
+}\r
+
+bvec4 greaterThanEqual (ivec4 v, ivec4 u) {
+    bvec4 b;\r
+       b.x = v.x >= u.x;\r
+       b.y = v.y >= u.y;\r
+       b.z = v.z >= u.z;\r
+       b.w = v.w >= u.w;\r
+       return b;
+}
+
+bvec2 equal (vec2 v, vec2 u) {
+    bvec2 b;\r
+       b.x = v.x == u.x;\r
+       b.y = v.y == u.y;\r
+       return b;
+}\r
+
+bvec3 equal (vec3 v, vec3 u) {
+    bvec3 b;\r
+       b.x = v.x == u.x;\r
+       b.y = v.y == u.y;\r
+       b.z = v.z == u.z;\r
+       return b;
+}\r
+
+bvec4 equal (vec4 v, vec4 u) {
+    bvec4 b;\r
+       b.x = v.x == u.x;\r
+       b.y = v.y == u.y;\r
+       b.z = v.z == u.z;\r
+       b.w = v.w == u.w;\r
+       return b;
+}\r
+
+bvec2 equal (ivec2 v, ivec2 u) {
+    bvec2 b;\r
+       b.x = v.x == u.x;\r
+       b.y = v.y == u.y;\r
+       return b;
+}\r
+
+bvec3 equal (ivec3 v, ivec3 u) {
+    bvec3 b;\r
+       b.x = v.x == u.x;\r
+       b.y = v.y == u.y;\r
+       b.z = v.z == u.z;\r
+       return b;
+}\r
+
+bvec4 equal (ivec4 v, ivec4 u) {
+    bvec4 b;\r
+       b.x = v.x == u.x;\r
+       b.y = v.y == u.y;\r
+       b.z = v.z == u.z;\r
+       b.w = v.w == u.w;\r
+       return b;
+}
+
+bvec2 notEqual (vec2 v, vec2 u) {
+    bvec2 b;\r
+       b.x = v.x != u.x;\r
+       b.y = v.y != u.y;\r
+       return b;
+}\r
+
+bvec3 notEqual (vec3 v, vec3 u) {
+    bvec3 b;\r
+       b.x = v.x != u.x;\r
+       b.y = v.y != u.y;\r
+       b.z = v.z != u.z;\r
+       return b;
+}\r
+
+bvec4 notEqual (vec4 v, vec4 u) {
+    bvec4 b;\r
+       b.x = v.x != u.x;\r
+       b.y = v.y != u.y;\r
+       b.z = v.z != u.z;\r
+       b.w = v.w != u.w;\r
+       return b;
+}\r
+
+bvec2 notEqual (ivec2 v, ivec2 u) {
+    bvec2 b;\r
+       b.x = v.x != u.x;\r
+       b.y = v.y != u.y;\r
+       return b;
+}\r
+
+bvec3 notEqual (ivec3 v, ivec3 u) {
+    bvec3 b;\r
+       b.x = v.x != u.x;\r
+       b.y = v.y != u.y;\r
+       b.z = v.z != u.z;\r
+       return b;
+}\r
+
+bvec4 notEqual (ivec4 v, ivec4 u) {
+    bvec4 b;\r
+       b.x = v.x != u.x;\r
+       b.y = v.y != u.y;\r
+       b.z = v.z != u.z;\r
+       b.w = v.w != u.w;\r
+       return b;
+}
+
+bool any (bvec2 v) {
+    return v.x || v.y;
+}\r
+
+bool any (bvec3 v) {
+    return v.x || v.y || v.z;
+}\r
+
+bool any (bvec4 v) {
+    return v.x || v.y || v.z || v.w;
+}
+
+bool all (bvec2 v) {
+    return v.x && v.y;
+}\r
+
+bool all (bvec3 v) {
+    return v.x && v.y && v.z;
+}\r
+
+bool all (bvec4 v) {
+    return v.x && v.y && v.z && v.w;
+}
+
+bvec2 not (bvec2 v) {\r
+       bvec2 u;\r
+       u.x = !v.x;\r
+       u.y = !v.y;
+    return u;
+}\r
+
+bvec3 not (bvec3 v) {
+    bvec3 u;\r
+       u.x = !v.x;\r
+       u.y = !v.y;\r
+       u.z = !v.z;\r
+    return u;
+}\r
+
+bvec4 not (bvec4 v) {
+    bvec4 u;\r
+       u.x = !v.x;\r
+       u.y = !v.y;\r
+       u.z = !v.z;\r
+       u.w = !v.w;\r
+    return u;
 }
 
-// 
-// Returns the component-wise compare of x == y.
-// 
+//
+// 8.7 Texture Lookup Functions
+//
 
-bvec2 equal (vec2 x, vec2 y) {
-    return bvec2 (x.x == y.x, x.y == y.y);
-}
-bvec3 equal (vec3 x, vec3 y) {
-    return bvec3 (x.x == y.x, x.y == y.y, x.z == y.z);
-}
-bvec4 equal (vec4 x, vec4 y) {
-    return bvec4 (x.x == y.x, x.y == y.y, x.z == y.z, x.w == y.w);
-}
-bvec2 equal (ivec2 x, ivec2 y) {
-    return bvec2 (x.x == y.x, x.y == y.y);
-}
-bvec3 equal (ivec3 x, ivec3 y) {
-    return bvec3 (x.x == y.x, x.y == y.y, x.z == y.z);
-}
-bvec4 equal (ivec4 x, ivec4 y) {
-    return bvec4 (x.x == y.x, x.y == y.y, x.z == y.z, x.w == y.w);
-}
+vec4 texture1D (sampler1D sampler, float coord) {\r
+    // XXX:
+    return vec4 (0.0);
+}\r
 
-// 
-// Returns the component-wise compare of x != y.
-// 
+vec4 texture1DProj (sampler1D sampler, vec2 coord) {
+    return texture1D (sampler, coord.s / coord.t);
+}\r
 
-bvec2 notEqual (vec2 x, vec2 y) {
-    return bvec2 (x.x != y.x, x.y != y.y);
-}
-bvec3 notEqual (vec3 x, vec3 y) {
-    return bvec3 (x.x != y.x, x.y != y.y, x.z != y.z);
-}
-bvec4 notEqual (vec4 x, vec4 y) {
-    return bvec4 (x.x != y.x, x.y != y.y, x.z != y.z, x.w != y.w);
-}
-bvec2 notEqual (ivec2 x, ivec2 y) {
-    return bvec2 (x.x != y.x, x.y != y.y);
-}
-bvec3 notEqual (ivec3 x, ivec3 y) {
-    return bvec3 (x.x != y.x, x.y != y.y, x.z != y.z);
-}
-bvec4 notEqual (ivec4 x, ivec4 y) {
-    return bvec4 (x.x != y.x, x.y != y.y, x.z != y.z, x.w != y.w);
+vec4 texture1DProj (sampler1D sampler, vec4 coord) {
+    return texture1D (sampler, coord.s / coord.q);
 }
 
-// 
-// Returns true if any component of x is true.
-// 
-
-bool any (bvec2 x) {
-    return x.x || x.y;
-}
-bool any (bvec3 x) {
-    return x.x || x.y || x.z;
-}
-bool any (bvec4 x) {
-    return x.x || x.y || x.z || x.w;
-}
+vec4 texture2D (sampler2D sampler, vec2 coord) {\r
+    // XXX:
+    return vec4 (0.0);
+}\r
 
-// 
-// Returns true only if all components of x are true.
-// 
+vec4 texture2DProj (sampler2D sampler, vec3 coord) {\r
+    vec2 u;\r
+    u.s = coord.s / coord.p;\r
+    u.t = coord.t / coord.p;
+    return texture2D (sampler, u);
+}\r
 
-bool all (bvec2 x) {
-    return x.x && x.y;
-}
-bool all (bvec3 x) {
-    return x.x && x.y && x.z;
-}
-bool all (bvec4 x) {
-    return x.x && x.y && x.z && x.w;
+vec4 texture2DProj (sampler2D sampler, vec4 coord) {\r
+    vec2 u;\r
+    u.s = coord.s / coord.q;\r
+    u.t = coord.t / coord.q;
+    return texture2D (sampler, u);
 }
 
-// 
-// Returns the component-wise logical complement of x.
-// 
+vec4 texture3D (sampler3D sampler, vec3 coord) {\r
+    // XXX:
+    return vec4 (0.0);
+}\r
 
-bvec2 not (bvec2 x) {
-    return bvec2 (!x.x, !x.y);
-}
-bvec3 not (bvec3 x) {
-    return bvec3 (!x.x, !x.y, !x.z);
-}
-bvec4 not (bvec4 x) {
-    return bvec4 (!x.x, !x.y, !x.z, !x.w);
+vec4 texture3DProj (sampler3D sampler, vec4 coord) {\r
+    vec3 u;\r
+    u.s = coord.s / coord.q;\r
+    u.t = coord.t / coord.q;\r
+    u.p = coord.p / coord.q;
+    return texture3D (sampler, u);
 }
 
-// 
-// 8.7 Texture Lookup Functions
-// 
-// Texture lookup functions are available to both vertex and fragment shaders. However, level
-// of detail is not computed by fixed functionality for vertex shaders, so there are some
-// differences in operation between vertex and fragment texture lookups. The functions in the table
-// below provide access to textures through samplers, as set up through the OpenGL API. Texture
-// properties such as size, pixel format, number of dimensions, filtering method, number of mip-map
-// levels, depth comparison, and so on are also defined by OpenGL API calls. Such properties are
-// taken into account as the texture is accessed via the built-in functions defined below.
-// 
-// If a non-shadow texture call is made to a sampler that represents a depth texture with depth
-// comparisons turned on, then results are undefined. If a shadow texture call is made to a sampler
-// that represents a depth texture with depth comparisions turned off, the results are undefined.
-// If a shadow texture call is made to a sampler that does not represent a depth texture, then
-// results are undefined.
-// 
-// In all functions below, the bias parameter is optional for fragment shaders. The bias parameter
-// is not accepted in a vertex shader. For a fragment shader, if bias is present, it is added to
-// the calculated level of detail prior to performing the texture access operation. If the bias
-// parameter is not provided, then the implementation automatically selects level of detail:
-// For a texture that is not mip-mapped, the texture is used directly. If it is mip-mapped and
-// running in a fragment shader, the LOD computed by the implementation is used to do the texture
-// lookup. If it is mip-mapped and running on the vertex shader, then the base texture is used.
-// 
-// The built-ins suffixed with "Lod" are allowed only in a vertex shader. For the "Lod" functions,
-// lod is directly used as the level of detail.
-// 
-
-// 
-// Use the texture coordinate coord to do a texture lookup in the 1D texture currently bound
-// to sampler. For the projective ("Proj") versions, the texture coordinate coord.s is divided by
-// the last component of coord.
-// 
-// XXX
-vec4 texture1D (sampler1D sampler, float coord) {
+vec4 textureCube (samplerCube sampler, vec3 coord) {\r
+    // XXX:
     return vec4 (0.0);
 }
-vec4 texture1DProj (sampler1D sampler, vec2 coord) {
-    return texture1D (sampler, coord.s / coord.t);
-}
-vec4 texture1DProj (sampler1D sampler, vec4 coord) {
-    return texture1D (sampler, coord.s / coord.q);
-}
 
-// 
-// Use the texture coordinate coord to do a texture lookup in the 2D texture currently bound
-// to sampler. For the projective ("Proj") versions, the texture coordinate (coord.s, coord.t) is
-// divided by the last component of coord. The third component of coord is ignored for the vec4
-// coord variant.
-// 
-// XXX
-vec4 texture2D (sampler2D sampler, vec2 coord) {
+vec4 shadow1D (sampler1DShadow sampler, vec3 coord) {\r
+    // XXX:
     return vec4 (0.0);
 }
-vec4 texture2DProj (sampler2D sampler, vec3 coord) {
-    return texture2D (sampler, vec2 (coord.s / coord.p, coord.t / coord.p));
-}
-vec4 texture2DProj (sampler2D sampler, vec4 coord) {
-    return texture2D (sampler, vec2 (coord.s / coord.q, coord.t / coord.q));
-}
 
-// 
-// Use the texture coordinate coord to do a texture lookup in the 3D texture currently bound
-// to sampler. For the projective ("Proj") versions, the texture coordinate is divided by coord.q.
-// 
-// XXX
-vec4 texture3D (sampler3D sampler, vec3 coord) {
+vec4 shadow2D (sampler2DShadow sampler, vec3 coord) {\r
+    // XXX:
     return vec4 (0.0);
-}
-vec4 texture3DProj (sampler3D sampler, vec4 coord) {
-    return texture3D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q));
-}
+}\r
 
-// 
-// Use the texture coordinate coord to do a texture lookup in the cube map texture currently bound
-// to sampler. The direction of coord is used to select which face to do a 2-dimensional texture
-// lookup in, as described in section 3.8.6 in version 1.4 of the OpenGL specification.
-// 
-// XXX
-vec4 textureCube (samplerCube sampler, vec3 coord) {
-    return vec4 (0.0);
-}
+vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord) {\r
+    vec3 u;\r
+    u.s = coord.s / coord.q;\r
+    u.t = 0.0;\r
+    u.p = coord.p / coord.q;
+    return shadow1D (sampler, u);
+}\r
 
-// 
-// Use texture coordinate coord to do a depth comparison lookup on the depth texture bound
-// to sampler, as described in section 3.8.14 of version 1.4 of the OpenGL specification. The 3rd
-// component of coord (coord.p) is used as the R value. The texture bound to sampler must be a
-// depth texture, or results are undefined. For the projective ("Proj") version of each built-in,
-// the texture coordinate is divide by coord.q, giving a depth value R of coord.p/coord.q. The
-// second component of coord is ignored for the "1D" variants.
-// 
-// XXX
-vec4 shadow1D (sampler1DShadow sampler, vec3 coord) {
-    return vec4 (0.0);
-}
-// XXX
-vec4 shadow2D (sampler2DShadow sampler, vec3 coord) {
-    return vec4 (0.0);
-}
-vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord) {
-    return shadow1D (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q));
-}
-vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord) {
-    return shadow2D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q));
+vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord) {\r
+    vec3 u;\r
+    u.s = coord.s / coord.q;\r
+    u.t = coord.t / coord.q;\r
+    u.p = coord.p / coord.q;
+    return shadow2D (sampler, u);
 }
 
-// 
+//
 // 8.9 Noise Functions
-// 
-// Noise functions are available to both fragment and vertex shaders. They are stochastic functions
-// that can be used to increase visual complexity. Values returned by the following noise functions
-// give the appearance of randomness, but are not truly random. The noise functions below are
-// defined to have the following characteristics:
-// 
-// - The return value(s) are always in the range [-1,1], and cover at least the range [-0.6, 0.6],
-//   with a gaussian-like distribution.
-// * The return value(s) have an overall average of 0.0
-// * They are repeatable, in that a particular input value will always produce the same return value
-// * They are statistically invariant under rotation (i.e., no matter how the domain is rotated, it
-//   has the same statistical character)
-// * They have a statistical invariance under translation (i.e., no matter how the domain is
-//   translated, it has the same statistical character)
-// * They typically give different results under translation.
-// - The spatial frequency is narrowly concentrated, centered somewhere between 0.5 to 1.0.
-// 
-
-// 
-// Returns a 1D noise value based on the input value x.
-// 
-// XXX
-float noise1 (float x) {
+//
+
+float noise1 (float x) {\r
+    // XXX:
     return 0.0;
 }
-// XXX
-float noise1 (vec2 x) {
+
+float noise1 (vec2 x) {\r
+    // XXX:
     return 0.0;
 }
-// XXX
-float noise1 (vec3 x) {
+
+float noise1 (vec3 x) {\r
+    // XXX:
     return 0.0;
 }
-// XXX
-float noise1 (vec4 x) {
+
+float noise1 (vec4 x) {\r
+    // XXX:
     return 0.0;
 }
 
-// 
-// Returns a 2D noise value based on the input value x.
-// 
-// XXX
-vec2 noise2 (float x) {
+vec2 noise2 (float x) {\r
+    // XXX:
     return vec2 (0.0);
 }
-// XXX
-vec2 noise2 (vec2 x) {
+
+vec2 noise2 (vec2 x) {\r
+    // XXX:
     return vec2 (0.0);
 }
-// XXX
-vec2 noise2 (vec3 x) {
+
+vec2 noise2 (vec3 x) {\r
+    // XXX:
     return vec2 (0.0);
 }
-// XXX
-vec2 noise2 (vec4 x) {
+
+vec2 noise2 (vec4 x) {\r
+    // XXX:
     return vec2 (0.0);
 }
 
-// 
-// Returns a 3D noise value based on the input value x.
-// 
-// XXX
-vec3 noise3 (float x) {
+vec3 noise3 (float x) {\r
+    // XXX:
     return vec3 (0.0);
 }
-// XXX
-vec3 noise3 (vec2 x) {
+
+vec3 noise3 (vec2 x) {\r
+    // XXX:
     return vec3 (0.0);
 }
-// XXX
-vec3 noise3 (vec3 x) {
+
+vec3 noise3 (vec3 x) {\r
+    // XXX:
     return vec3 (0.0);
 }
-// XXX
-vec3 noise3 (vec4 x) {
+
+vec3 noise3 (vec4 x) {\r
+    // XXX:
     return vec3 (0.0);
 }
 
-// 
-// Returns a 4D noise value based on the input value x.
-// 
-// XXX
-vec4 noise4 (float x) {
+vec4 noise4 (float x) {\r
+    // XXX:
     return vec4 (0.0);
 }
-// XXX
-vec4 noise4 (vec2 x) {
+
+vec4 noise4 (vec2 x) {\r
+    // XXX:
     return vec4 (0.0);
 }
-// XXX
-vec4 noise4 (vec3 x) {
+
+vec4 noise4 (vec3 x) {\r
+    // XXX:
     return vec4 (0.0);
 }
-// XXX
-vec4 noise4 (vec4 x) {
+
+vec4 noise4 (vec4 x) {\r
+    // XXX:
     return vec4 (0.0);
 }
-
+\r
index e1f22527ce20ffa59b74fad5cf0d90d2e622ddc8..f72da4407b4861afab0cef520c26c3228afbb9e0 100644 (file)
-
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
-/* slang_common_builtin.gc */
-
-2,2,2,1,5,1,103,108,95,77,97,120,76,105,103,104,116,115,0,2,16,10,56,0,0,0,2,2,1,5,1,103,108,95,77,
-97,120,67,108,105,112,80,108,97,110,101,115,0,2,16,10,54,0,0,0,2,2,1,5,1,103,108,95,77,97,120,84,
-101,120,116,117,114,101,85,110,105,116,115,0,2,16,10,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,84,
-101,120,116,117,114,101,67,111,111,114,100,115,0,2,16,10,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,
-86,101,114,116,101,120,65,116,116,114,105,98,115,0,2,16,10,49,54,0,0,0,2,2,1,5,1,103,108,95,77,97,
-120,86,101,114,116,101,120,85,110,105,102,111,114,109,67,111,109,112,111,110,101,110,116,115,0,2,
-16,10,53,49,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,86,97,114,121,105,110,103,70,108,111,97,116,
-115,0,2,16,10,51,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,86,101,114,116,101,120,84,101,120,116,117,
-114,101,73,109,97,103,101,85,110,105,116,115,0,2,16,8,48,0,0,0,2,2,1,5,1,103,108,95,77,97,120,67,
-111,109,98,105,110,101,100,84,101,120,116,117,114,101,73,109,97,103,101,85,110,105,116,115,0,2,16,
-10,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,84,101,120,116,117,114,101,73,109,97,103,101,85,110,105,
-116,115,0,2,16,10,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,70,114,97,103,109,101,110,116,85,110,105,
-102,111,114,109,67,111,109,112,111,110,101,110,116,115,0,2,16,10,54,52,0,0,0,2,2,1,5,1,103,108,95,
-77,97,120,68,114,97,119,66,117,102,102,101,114,115,0,2,16,10,49,0,0,0,2,2,4,15,1,103,108,95,77,111,
-100,101,108,86,105,101,119,77,97,116,114,105,120,0,0,0,2,2,4,15,1,103,108,95,80,114,111,106,101,99,
-116,105,111,110,77,97,116,114,105,120,0,0,0,2,2,4,15,1,103,108,95,77,111,100,101,108,86,105,101,
-119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,0,0,0,2,2,4,15,1,103,108,95,84,101,
-120,116,117,114,101,77,97,116,114,105,120,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,
-67,111,111,114,100,115,0,0,0,2,2,4,14,1,103,108,95,78,111,114,109,97,108,77,97,116,114,105,120,0,0,
-0,2,2,4,15,1,103,108,95,77,111,100,101,108,86,105,101,119,77,97,116,114,105,120,73,110,118,101,114,
-115,101,0,0,0,2,2,4,15,1,103,108,95,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,73,
-110,118,101,114,115,101,0,0,0,2,2,4,15,1,103,108,95,77,111,100,101,108,86,105,101,119,80,114,111,
-106,101,99,116,105,111,110,77,97,116,114,105,120,73,110,118,101,114,115,101,0,0,0,2,2,4,15,1,103,
-108,95,84,101,120,116,117,114,101,77,97,116,114,105,120,73,110,118,101,114,115,101,0,3,18,103,108,
-95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,15,1,103,108,95,77,111,
-100,101,108,86,105,101,119,77,97,116,114,105,120,84,114,97,110,115,112,111,115,101,0,0,0,2,2,4,15,
-1,103,108,95,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,84,114,97,110,115,112,111,
-115,101,0,0,0,2,2,4,15,1,103,108,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,
-105,111,110,77,97,116,114,105,120,84,114,97,110,115,112,111,115,101,0,0,0,2,2,4,15,1,103,108,95,84,
-101,120,116,117,114,101,77,97,116,114,105,120,84,114,97,110,115,112,111,115,101,0,3,18,103,108,95,
-77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,15,1,103,108,95,77,111,100,
-101,108,86,105,101,119,77,97,116,114,105,120,73,110,118,101,114,115,101,84,114,97,110,115,112,111,
-115,101,0,0,0,2,2,4,15,1,103,108,95,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,73,
-110,118,101,114,115,101,84,114,97,110,115,112,111,115,101,0,0,0,2,2,4,15,1,103,108,95,77,111,100,
-101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,73,110,118,101,
-114,115,101,84,114,97,110,115,112,111,115,101,0,0,0,2,2,4,15,1,103,108,95,84,101,120,116,117,114,
-101,77,97,116,114,105,120,73,110,118,101,114,115,101,84,114,97,110,115,112,111,115,101,0,3,18,103,
-108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,9,1,103,108,95,78,
-111,114,109,97,108,83,99,97,108,101,0,0,0,2,2,0,22,103,108,95,68,101,112,116,104,82,97,110,103,101,
-80,97,114,97,109,101,116,101,114,115,0,9,110,101,97,114,0,0,0,1,9,102,97,114,0,0,0,1,9,100,105,102,
-102,0,0,0,0,0,0,2,2,4,23,103,108,95,68,101,112,116,104,82,97,110,103,101,80,97,114,97,109,101,116,
-101,114,115,0,1,103,108,95,68,101,112,116,104,82,97,110,103,101,0,0,0,2,2,4,12,1,103,108,95,67,108,
-105,112,80,108,97,110,101,0,3,18,103,108,95,77,97,120,67,108,105,112,80,108,97,110,101,115,0,0,0,2,
-2,0,22,103,108,95,80,111,105,110,116,80,97,114,97,109,101,116,101,114,115,0,9,115,105,122,101,0,0,
-0,1,9,115,105,122,101,77,105,110,0,0,0,1,9,115,105,122,101,77,97,120,0,0,0,1,9,102,97,100,101,84,
-104,114,101,115,104,111,108,100,83,105,122,101,0,0,0,1,9,100,105,115,116,97,110,99,101,67,111,110,
-115,116,97,110,116,65,116,116,101,110,117,97,116,105,111,110,0,0,0,1,9,100,105,115,116,97,110,99,
-101,76,105,110,101,97,114,65,116,116,101,110,117,97,116,105,111,110,0,0,0,1,9,100,105,115,116,97,
-110,99,101,81,117,97,100,114,97,116,105,99,65,116,116,101,110,117,97,116,105,111,110,0,0,0,0,0,0,2,
-2,4,23,103,108,95,80,111,105,110,116,80,97,114,97,109,101,116,101,114,115,0,1,103,108,95,80,111,
-105,110,116,0,0,0,2,2,0,22,103,108,95,77,97,116,101,114,105,97,108,80,97,114,97,109,101,116,101,
-114,115,0,12,101,109,105,115,115,105,111,110,0,0,0,1,12,97,109,98,105,101,110,116,0,0,0,1,12,100,
-105,102,102,117,115,101,0,0,0,1,12,115,112,101,99,117,108,97,114,0,0,0,1,9,115,104,105,110,105,110,
-101,115,115,0,0,0,0,0,0,2,2,4,23,103,108,95,77,97,116,101,114,105,97,108,80,97,114,97,109,101,116,
-101,114,115,0,1,103,108,95,70,114,111,110,116,77,97,116,101,114,105,97,108,0,0,0,2,2,4,23,103,108,
-95,77,97,116,101,114,105,97,108,80,97,114,97,109,101,116,101,114,115,0,1,103,108,95,66,97,99,107,
-77,97,116,101,114,105,97,108,0,0,0,2,2,0,22,103,108,95,76,105,103,104,116,83,111,117,114,99,101,80,
-97,114,97,109,101,116,101,114,115,0,12,97,109,98,105,101,110,116,0,0,0,1,12,100,105,102,102,117,
-115,101,0,0,0,1,12,115,112,101,99,117,108,97,114,0,0,0,1,12,112,111,115,105,116,105,111,110,0,0,0,
-1,12,104,97,108,102,86,101,99,116,111,114,0,0,0,1,11,115,112,111,116,68,105,114,101,99,116,105,111,
-110,0,0,0,1,9,115,112,111,116,69,120,112,111,110,101,110,116,0,0,0,1,9,115,112,111,116,67,117,116,
-111,102,102,0,0,0,1,9,115,112,111,116,67,111,115,67,117,116,111,102,102,0,0,0,1,9,99,111,110,115,
-116,97,110,116,65,116,116,101,110,117,97,116,105,111,110,0,0,0,1,9,108,105,110,101,97,114,65,116,
-116,101,110,117,97,116,105,111,110,0,0,0,1,9,113,117,97,100,114,97,116,105,99,65,116,116,101,110,
-117,97,116,105,111,110,0,0,0,0,0,0,2,2,4,23,103,108,95,76,105,103,104,116,83,111,117,114,99,101,80,
-97,114,97,109,101,116,101,114,115,0,1,103,108,95,76,105,103,104,116,83,111,117,114,99,101,0,3,18,
-103,108,95,77,97,120,76,105,103,104,116,115,0,0,0,2,2,0,22,103,108,95,76,105,103,104,116,77,111,
-100,101,108,80,97,114,97,109,101,116,101,114,115,0,12,97,109,98,105,101,110,116,0,0,0,0,0,0,2,2,4,
-23,103,108,95,76,105,103,104,116,77,111,100,101,108,80,97,114,97,109,101,116,101,114,115,0,1,103,
-108,95,76,105,103,104,116,77,111,100,101,108,0,0,0,2,2,0,22,103,108,95,76,105,103,104,116,77,111,
-100,101,108,80,114,111,100,117,99,116,115,0,12,115,99,101,110,101,67,111,108,111,114,0,0,0,0,0,0,2,
-2,4,23,103,108,95,76,105,103,104,116,77,111,100,101,108,80,114,111,100,117,99,116,115,0,1,103,108,
-95,70,114,111,110,116,76,105,103,104,116,77,111,100,101,108,80,114,111,100,117,99,116,0,0,0,2,2,4,
-23,103,108,95,76,105,103,104,116,77,111,100,101,108,80,114,111,100,117,99,116,115,0,1,103,108,95,
-66,97,99,107,76,105,103,104,116,77,111,100,101,108,80,114,111,100,117,99,116,0,0,0,2,2,0,22,103,
-108,95,76,105,103,104,116,80,114,111,100,117,99,116,115,0,12,97,109,98,105,101,110,116,0,0,0,1,12,
-100,105,102,102,117,115,101,0,0,0,1,12,115,112,101,99,117,108,97,114,0,0,0,0,0,0,2,2,4,23,103,108,
-95,76,105,103,104,116,80,114,111,100,117,99,116,115,0,1,103,108,95,70,114,111,110,116,76,105,103,
-104,116,80,114,111,100,117,99,116,0,3,18,103,108,95,77,97,120,76,105,103,104,116,115,0,0,0,2,2,4,
-23,103,108,95,76,105,103,104,116,80,114,111,100,117,99,116,115,0,1,103,108,95,66,97,99,107,76,105,
-103,104,116,80,114,111,100,117,99,116,0,3,18,103,108,95,77,97,120,76,105,103,104,116,115,0,0,0,2,2,
-4,12,1,103,108,95,84,101,120,116,117,114,101,69,110,118,67,111,108,111,114,0,3,18,103,108,95,77,97,
-120,84,101,120,116,117,114,101,73,109,97,103,101,85,110,105,116,115,0,0,0,2,2,4,12,1,103,108,95,69,
-121,101,80,108,97,110,101,83,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,
-100,115,0,0,0,2,2,4,12,1,103,108,95,69,121,101,80,108,97,110,101,84,0,3,18,103,108,95,77,97,120,84,
-101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,12,1,103,108,95,69,121,101,80,108,97,
-110,101,82,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,
-4,12,1,103,108,95,69,121,101,80,108,97,110,101,81,0,3,18,103,108,95,77,97,120,84,101,120,116,117,
-114,101,67,111,111,114,100,115,0,0,0,2,2,4,12,1,103,108,95,79,98,106,101,99,116,80,108,97,110,101,
-83,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,12,1,
-103,108,95,79,98,106,101,99,116,80,108,97,110,101,84,0,3,18,103,108,95,77,97,120,84,101,120,116,
-117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,12,1,103,108,95,79,98,106,101,99,116,80,108,97,110,
-101,82,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,
-12,1,103,108,95,79,98,106,101,99,116,80,108,97,110,101,81,0,3,18,103,108,95,77,97,120,84,101,120,
-116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,0,22,103,108,95,70,111,103,80,97,114,97,109,101,
-116,101,114,115,0,12,99,111,108,111,114,0,0,0,1,9,100,101,110,115,105,116,121,0,0,0,1,9,115,116,97,
-114,116,0,0,0,1,9,101,110,100,0,0,0,1,9,115,99,97,108,101,0,0,0,0,0,0,2,2,4,23,103,108,95,70,111,
-103,80,97,114,97,109,101,116,101,114,115,0,1,103,108,95,70,111,103,0,0,0,1,0,9,0,114,97,100,105,97,
-110,115,0,1,0,0,9,100,101,103,0,0,0,1,8,17,51,0,49,52,49,53,57,51,0,0,18,100,101,103,0,48,17,49,56,
-48,0,48,0,0,49,0,0,1,0,10,0,114,97,100,105,97,110,115,0,1,0,0,10,100,101,103,0,0,0,1,8,58,118,101,
-99,50,0,58,114,97,100,105,97,110,115,0,18,100,101,103,0,59,120,0,0,0,0,58,114,97,100,105,97,110,
-115,0,18,100,101,103,0,59,121,0,0,0,0,0,0,0,1,0,11,0,114,97,100,105,97,110,115,0,1,0,0,11,100,101,
-103,0,0,0,1,8,58,118,101,99,51,0,58,114,97,100,105,97,110,115,0,18,100,101,103,0,59,120,0,0,0,0,58,
-114,97,100,105,97,110,115,0,18,100,101,103,0,59,121,0,0,0,0,58,114,97,100,105,97,110,115,0,18,100,
-101,103,0,59,122,0,0,0,0,0,0,0,1,0,12,0,114,97,100,105,97,110,115,0,1,0,0,12,100,101,103,0,0,0,1,8,
-58,118,101,99,52,0,58,114,97,100,105,97,110,115,0,18,100,101,103,0,59,120,0,0,0,0,58,114,97,100,
-105,97,110,115,0,18,100,101,103,0,59,121,0,0,0,0,58,114,97,100,105,97,110,115,0,18,100,101,103,0,
-59,122,0,0,0,0,58,114,97,100,105,97,110,115,0,18,100,101,103,0,59,119,0,0,0,0,0,0,0,1,0,9,0,100,
-101,103,114,101,101,115,0,1,0,0,9,114,97,100,0,0,0,1,8,17,49,56,48,0,48,0,0,18,114,97,100,0,48,17,
-51,0,49,52,49,53,57,51,0,0,49,0,0,1,0,10,0,100,101,103,114,101,101,115,0,1,0,0,10,114,97,100,0,0,0,
-1,8,58,118,101,99,50,0,58,100,101,103,114,101,101,115,0,18,114,97,100,0,59,120,0,0,0,0,58,100,101,
-103,114,101,101,115,0,18,114,97,100,0,59,121,0,0,0,0,0,0,0,1,0,11,0,100,101,103,114,101,101,115,0,
-1,0,0,11,114,97,100,0,0,0,1,8,58,118,101,99,51,0,58,100,101,103,114,101,101,115,0,18,114,97,100,0,
-59,120,0,0,0,0,58,100,101,103,114,101,101,115,0,18,114,97,100,0,59,121,0,0,0,0,58,100,101,103,114,
-101,101,115,0,18,114,97,100,0,59,122,0,0,0,0,0,0,0,1,0,12,0,100,101,103,114,101,101,115,0,1,0,0,12,
-114,97,100,0,0,0,1,8,58,118,101,99,52,0,58,100,101,103,114,101,101,115,0,18,114,97,100,0,59,120,0,
-0,0,0,58,100,101,103,114,101,101,115,0,18,114,97,100,0,59,121,0,0,0,0,58,100,101,103,114,101,101,
-115,0,18,114,97,100,0,59,122,0,0,0,0,58,100,101,103,114,101,101,115,0,18,114,97,100,0,59,119,0,0,0,
-0,0,0,0,1,0,9,0,115,105,110,0,1,0,0,9,97,110,103,108,101,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,115,
-105,110,0,1,0,0,10,97,110,103,108,101,0,0,0,1,8,58,118,101,99,50,0,58,115,105,110,0,18,97,110,103,
-108,101,0,59,120,0,0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,59,121,0,0,0,0,0,0,0,1,0,11,0,
-115,105,110,0,1,0,0,11,97,110,103,108,101,0,0,0,1,8,58,118,101,99,51,0,58,115,105,110,0,18,97,110,
-103,108,101,0,59,120,0,0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,59,121,0,0,0,0,58,115,105,
-110,0,18,97,110,103,108,101,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,105,110,0,1,0,0,12,97,110,103,108,
-101,0,0,0,1,8,58,118,101,99,52,0,58,115,105,110,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,115,
-105,110,0,18,97,110,103,108,101,0,59,121,0,0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,59,122,0,
-0,0,0,58,115,105,110,0,18,97,110,103,108,101,0,59,119,0,0,0,0,0,0,0,1,0,9,0,99,111,115,0,1,0,0,9,
-97,110,103,108,101,0,0,0,1,8,58,115,105,110,0,18,97,110,103,108,101,0,17,49,0,53,55,48,56,0,0,46,0,
-0,0,0,1,0,10,0,99,111,115,0,1,0,0,10,97,110,103,108,101,0,0,0,1,8,58,118,101,99,50,0,58,99,111,115,
-0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,0,0,0,0,0,
-0,0,1,0,11,0,99,111,115,0,1,0,0,11,97,110,103,108,101,0,0,0,1,8,58,118,101,99,51,0,58,99,111,115,0,
-18,97,110,103,108,101,0,59,120,0,0,0,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,0,0,0,0,58,
-99,111,115,0,18,97,110,103,108,101,0,59,122,0,0,0,0,0,0,0,1,0,12,0,99,111,115,0,1,0,0,12,97,110,
-103,108,101,0,0,0,1,8,58,118,101,99,52,0,58,99,111,115,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,
-99,111,115,0,18,97,110,103,108,101,0,59,121,0,0,0,0,58,99,111,115,0,18,97,110,103,108,101,0,59,122,
-0,0,0,0,58,99,111,115,0,18,97,110,103,108,101,0,59,119,0,0,0,0,0,0,0,1,0,9,0,116,97,110,0,1,0,0,9,
-97,110,103,108,101,0,0,0,1,8,58,115,105,110,0,18,97,110,103,108,101,0,0,0,58,99,111,115,0,18,97,
-110,103,108,101,0,0,0,49,0,0,1,0,10,0,116,97,110,0,1,0,0,10,97,110,103,108,101,0,0,0,1,8,58,118,
-101,99,50,0,58,116,97,110,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,116,97,110,0,18,97,110,103,
-108,101,0,59,121,0,0,0,0,0,0,0,1,0,11,0,116,97,110,0,1,0,0,11,97,110,103,108,101,0,0,0,1,8,58,118,
-101,99,51,0,58,116,97,110,0,18,97,110,103,108,101,0,59,120,0,0,0,0,58,116,97,110,0,18,97,110,103,
-108,101,0,59,121,0,0,0,0,58,116,97,110,0,18,97,110,103,108,101,0,59,122,0,0,0,0,0,0,0,1,0,12,0,116,
-97,110,0,1,0,0,12,97,110,103,108,101,0,0,0,1,8,58,118,101,99,52,0,58,116,97,110,0,18,97,110,103,
-108,101,0,59,120,0,0,0,0,58,116,97,110,0,18,97,110,103,108,101,0,59,121,0,0,0,0,58,116,97,110,0,18,
-97,110,103,108,101,0,59,122,0,0,0,0,58,116,97,110,0,18,97,110,103,108,101,0,59,119,0,0,0,0,0,0,0,1,
-0,9,0,97,115,105,110,0,1,0,0,9,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,97,115,105,110,0,1,0,0,10,
-120,0,0,0,1,8,58,118,101,99,50,0,58,97,115,105,110,0,18,120,0,59,120,0,0,0,0,58,97,115,105,110,0,
-18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,97,115,105,110,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,
-58,97,115,105,110,0,18,120,0,59,120,0,0,0,0,58,97,115,105,110,0,18,120,0,59,121,0,0,0,0,58,97,115,
-105,110,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,97,115,105,110,0,1,0,0,12,120,0,0,0,1,8,58,118,
-101,99,52,0,58,97,115,105,110,0,18,120,0,59,120,0,0,0,0,58,97,115,105,110,0,18,120,0,59,121,0,0,0,
-0,58,97,115,105,110,0,18,120,0,59,122,0,0,0,0,58,97,115,105,110,0,18,120,0,59,119,0,0,0,0,0,0,0,1,
-0,9,0,97,99,111,115,0,1,0,0,9,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,97,99,111,115,0,1,0,0,10,
-120,0,0,0,1,8,58,118,101,99,50,0,58,97,99,111,115,0,18,120,0,59,120,0,0,0,0,58,97,99,111,115,0,18,
-120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,97,99,111,115,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,
-97,99,111,115,0,18,120,0,59,120,0,0,0,0,58,97,99,111,115,0,18,120,0,59,121,0,0,0,0,58,97,99,111,
-115,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,97,99,111,115,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,
-52,0,58,97,99,111,115,0,18,120,0,59,120,0,0,0,0,58,97,99,111,115,0,18,120,0,59,121,0,0,0,0,58,97,
-99,111,115,0,18,120,0,59,122,0,0,0,0,58,97,99,111,115,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,97,
-116,97,110,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,97,116,97,110,0,1,0,
-0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,118,101,99,50,0,58,97,116,97,110,0,18,120,0,59,120,0,0,18,
-121,0,59,120,0,0,0,0,58,97,116,97,110,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,0,0,0,0,0,1,0,11,0,
-97,116,97,110,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,118,101,99,51,0,58,97,116,97,110,0,18,
-120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,97,116,97,110,0,18,120,0,59,121,0,0,18,121,0,59,121,0,
-0,0,0,58,97,116,97,110,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,0,0,0,0,1,0,12,0,97,116,97,110,
-0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,0,1,8,58,118,101,99,52,0,58,97,116,97,110,0,18,120,0,59,120,0,
-0,18,121,0,59,120,0,0,0,0,58,97,116,97,110,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,0,0,58,97,116,
-97,110,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,0,58,97,116,97,110,0,18,120,0,59,119,0,0,18,121,
-0,59,119,0,0,0,0,0,0,0,1,0,9,0,97,116,97,110,0,1,0,0,9,121,95,111,118,101,114,95,120,0,0,0,1,8,17,
-48,0,48,0,0,0,0,1,0,10,0,97,116,97,110,0,1,0,0,10,121,95,111,118,101,114,95,120,0,0,0,1,8,58,118,
-101,99,50,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,120,0,0,0,0,58,97,116,97,110,
-0,18,121,95,111,118,101,114,95,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,97,116,97,110,0,1,0,0,11,121,95,
-111,118,101,114,95,120,0,0,0,1,8,58,118,101,99,51,0,58,97,116,97,110,0,18,121,95,111,118,101,114,
-95,120,0,59,120,0,0,0,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,0,0,0,0,58,97,
-116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,97,116,97,110,0,1,0,
-0,12,121,95,111,118,101,114,95,120,0,0,0,1,8,58,118,101,99,52,0,58,97,116,97,110,0,18,121,95,111,
-118,101,114,95,120,0,59,120,0,0,0,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,0,
-0,0,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,122,0,0,0,0,58,97,116,97,110,0,18,
-121,95,111,118,101,114,95,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,112,111,119,0,1,0,0,9,120,0,0,1,0,0,9,
-121,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,112,111,119,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,
-118,101,99,50,0,58,112,111,119,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,112,111,119,0,18,
-120,0,59,121,0,0,18,121,0,59,121,0,0,0,0,0,0,0,1,0,11,0,112,111,119,0,1,0,0,11,120,0,0,1,0,0,11,
-121,0,0,0,1,8,58,118,101,99,51,0,58,112,111,119,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,
-112,111,119,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,0,0,58,112,111,119,0,18,120,0,59,122,0,0,18,
-121,0,59,122,0,0,0,0,0,0,0,1,0,12,0,112,111,119,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,0,1,8,58,118,
-101,99,52,0,58,112,111,119,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,112,111,119,0,18,120,0,
-59,121,0,0,18,121,0,59,121,0,0,0,0,58,112,111,119,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,0,58,
-112,111,119,0,18,120,0,59,119,0,0,18,121,0,59,119,0,0,0,0,0,0,0,1,0,9,0,101,120,112,0,1,0,0,9,120,
-0,0,0,1,8,58,112,111,119,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,18,120,0,0,0,0,0,1,0,10,0,101,120,
-112,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,101,120,112,0,18,120,0,59,120,0,0,0,0,58,101,
-120,112,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,101,120,112,0,1,0,0,11,120,0,0,0,1,8,58,118,101,
-99,51,0,58,101,120,112,0,18,120,0,59,120,0,0,0,0,58,101,120,112,0,18,120,0,59,121,0,0,0,0,58,101,
-120,112,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,101,120,112,0,1,0,0,12,120,0,0,0,1,8,58,118,101,
-99,52,0,58,101,120,112,0,18,120,0,59,120,0,0,0,0,58,101,120,112,0,18,120,0,59,121,0,0,0,0,58,101,
-120,112,0,18,120,0,59,122,0,0,0,0,58,101,120,112,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,108,111,
-103,0,1,0,0,9,120,0,0,0,1,8,58,108,111,103,50,0,18,120,0,0,0,58,108,111,103,50,0,17,50,0,55,49,56,
-50,56,49,56,51,0,0,0,0,49,0,0,1,0,10,0,108,111,103,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,
-108,111,103,0,18,120,0,59,120,0,0,0,0,58,108,111,103,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,108,
-111,103,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,108,111,103,0,18,120,0,59,120,0,0,0,0,58,
-108,111,103,0,18,120,0,59,121,0,0,0,0,58,108,111,103,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,108,
-111,103,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,108,111,103,0,18,120,0,59,120,0,0,0,0,58,
-108,111,103,0,18,120,0,59,121,0,0,0,0,58,108,111,103,0,18,120,0,59,122,0,0,0,0,58,108,111,103,0,18,
-120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,101,120,112,50,0,1,0,0,9,120,0,0,0,1,8,58,112,111,119,0,17,50,0,
-48,0,0,0,18,120,0,0,0,0,0,1,0,10,0,101,120,112,50,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,
-101,120,112,50,0,18,120,0,59,120,0,0,0,0,58,101,120,112,50,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,
-0,101,120,112,50,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,101,120,112,50,0,18,120,0,59,120,0,
-0,0,0,58,101,120,112,50,0,18,120,0,59,121,0,0,0,0,58,101,120,112,50,0,18,120,0,59,122,0,0,0,0,0,0,
-0,1,0,12,0,101,120,112,50,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,101,120,112,50,0,18,120,0,
-59,120,0,0,0,0,58,101,120,112,50,0,18,120,0,59,121,0,0,0,0,58,101,120,112,50,0,18,120,0,59,122,0,0,
-0,0,58,101,120,112,50,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,108,111,103,50,0,1,0,0,9,120,0,0,0,1,
-8,17,48,0,48,0,0,0,0,1,0,10,0,108,111,103,50,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,108,
-111,103,50,0,18,120,0,59,120,0,0,0,0,58,108,111,103,50,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,
-108,111,103,50,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,108,111,103,50,0,18,120,0,59,120,0,0,
-0,0,58,108,111,103,50,0,18,120,0,59,121,0,0,0,0,58,108,111,103,50,0,18,120,0,59,122,0,0,0,0,0,0,0,
-1,0,12,0,108,111,103,50,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,108,111,103,50,0,18,120,0,
-59,120,0,0,0,0,58,108,111,103,50,0,18,120,0,59,121,0,0,0,0,58,108,111,103,50,0,18,120,0,59,122,0,0,
-0,0,58,108,111,103,50,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,115,113,114,116,0,1,0,0,9,120,0,0,0,
-1,8,58,112,111,119,0,18,120,0,0,17,48,0,53,0,0,0,0,0,0,1,0,10,0,115,113,114,116,0,1,0,0,10,120,0,0,
-0,1,8,58,118,101,99,50,0,58,115,113,114,116,0,18,120,0,59,120,0,0,0,0,58,115,113,114,116,0,18,120,
-0,59,121,0,0,0,0,0,0,0,1,0,11,0,115,113,114,116,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,115,
-113,114,116,0,18,120,0,59,120,0,0,0,0,58,115,113,114,116,0,18,120,0,59,121,0,0,0,0,58,115,113,114,
-116,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,113,114,116,0,1,0,0,12,120,0,0,0,1,8,58,118,101,
-99,52,0,58,115,113,114,116,0,18,120,0,59,120,0,0,0,0,58,115,113,114,116,0,18,120,0,59,121,0,0,0,0,
-58,115,113,114,116,0,18,120,0,59,122,0,0,0,0,58,115,113,114,116,0,18,120,0,59,119,0,0,0,0,0,0,0,1,
-0,9,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,9,120,0,0,0,1,8,17,49,0,48,0,0,58,115,
-113,114,116,0,18,120,0,0,0,49,0,0,1,0,10,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,10,
-120,0,0,0,1,8,58,118,101,99,50,0,58,105,110,118,101,114,115,101,115,113,114,116,0,18,120,0,59,120,
-0,0,0,0,58,105,110,118,101,114,115,101,115,113,114,116,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,
-105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,105,110,
-118,101,114,115,101,115,113,114,116,0,18,120,0,59,120,0,0,0,0,58,105,110,118,101,114,115,101,115,
-113,114,116,0,18,120,0,59,121,0,0,0,0,58,105,110,118,101,114,115,101,115,113,114,116,0,18,120,0,59,
-122,0,0,0,0,0,0,0,1,0,12,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,12,120,0,0,0,1,8,58,
-118,101,99,52,0,58,105,110,118,101,114,115,101,115,113,114,116,0,18,120,0,59,120,0,0,0,0,58,105,
-110,118,101,114,115,101,115,113,114,116,0,18,120,0,59,121,0,0,0,0,58,105,110,118,101,114,115,101,
-115,113,114,116,0,18,120,0,59,122,0,0,0,0,58,105,110,118,101,114,115,101,115,113,114,116,0,18,120,
-0,59,119,0,0,0,0,0,0,0,1,0,9,0,97,98,115,0,1,0,0,9,120,0,0,0,1,8,18,120,0,17,48,0,48,0,0,43,18,120,
-0,18,120,0,54,31,0,0,1,0,10,0,97,98,115,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,97,98,115,0,
-18,120,0,59,120,0,0,0,0,58,97,98,115,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,97,98,115,0,1,0,0,11,
-120,0,0,0,1,8,58,118,101,99,51,0,58,97,98,115,0,18,120,0,59,120,0,0,0,0,58,97,98,115,0,18,120,0,59,
-121,0,0,0,0,58,97,98,115,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,97,98,115,0,1,0,0,12,120,0,0,0,1,
-8,58,118,101,99,52,0,58,97,98,115,0,18,120,0,59,120,0,0,0,0,58,97,98,115,0,18,120,0,59,121,0,0,0,0,
-58,97,98,115,0,18,120,0,59,122,0,0,0,0,58,97,98,115,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,115,
-105,103,110,0,1,0,0,9,120,0,0,0,1,8,18,120,0,17,48,0,48,0,0,41,17,49,0,48,0,0,18,120,0,17,48,0,48,
-0,0,40,17,49,0,48,0,0,54,17,48,0,48,0,0,31,31,0,0,1,0,10,0,115,105,103,110,0,1,0,0,10,120,0,0,0,1,
-8,58,118,101,99,50,0,58,115,105,103,110,0,18,120,0,59,120,0,0,0,0,58,115,105,103,110,0,18,120,0,59,
-121,0,0,0,0,0,0,0,1,0,11,0,115,105,103,110,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,115,105,
-103,110,0,18,120,0,59,120,0,0,0,0,58,115,105,103,110,0,18,120,0,59,121,0,0,0,0,58,115,105,103,110,
-0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,105,103,110,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,
-0,58,115,105,103,110,0,18,120,0,59,120,0,0,0,0,58,115,105,103,110,0,18,120,0,59,121,0,0,0,0,58,115,
-105,103,110,0,18,120,0,59,122,0,0,0,0,58,115,105,103,110,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,
-102,108,111,111,114,0,1,0,0,9,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,102,108,111,111,114,0,1,0,
-0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,102,108,111,111,114,0,18,120,0,59,120,0,0,0,0,58,102,108,
-111,111,114,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,102,108,111,111,114,0,1,0,0,11,120,0,0,0,1,8,
-58,118,101,99,51,0,58,102,108,111,111,114,0,18,120,0,59,120,0,0,0,0,58,102,108,111,111,114,0,18,
-120,0,59,121,0,0,0,0,58,102,108,111,111,114,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,102,108,111,
-111,114,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,102,108,111,111,114,0,18,120,0,59,120,0,0,0,
-0,58,102,108,111,111,114,0,18,120,0,59,121,0,0,0,0,58,102,108,111,111,114,0,18,120,0,59,122,0,0,0,
-0,58,102,108,111,111,114,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,99,101,105,108,0,1,0,0,9,120,0,0,
-0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,99,101,105,108,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,99,
-101,105,108,0,18,120,0,59,120,0,0,0,0,58,99,101,105,108,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,
-99,101,105,108,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,99,101,105,108,0,18,120,0,59,120,0,0,
-0,0,58,99,101,105,108,0,18,120,0,59,121,0,0,0,0,58,99,101,105,108,0,18,120,0,59,122,0,0,0,0,0,0,0,
-1,0,12,0,99,101,105,108,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,99,101,105,108,0,18,120,0,
-59,120,0,0,0,0,58,99,101,105,108,0,18,120,0,59,121,0,0,0,0,58,99,101,105,108,0,18,120,0,59,122,0,0,
-0,0,58,99,101,105,108,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,102,114,97,99,116,0,1,0,0,9,120,0,0,
-0,1,8,18,120,0,58,102,108,111,111,114,0,18,120,0,0,0,47,0,0,1,0,10,0,102,114,97,99,116,0,1,0,0,10,
-120,0,0,0,1,8,58,118,101,99,50,0,58,102,114,97,99,116,0,18,120,0,59,120,0,0,0,0,58,102,114,97,99,
-116,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,102,114,97,99,116,0,1,0,0,11,120,0,0,0,1,8,58,118,101,
-99,51,0,58,102,114,97,99,116,0,18,120,0,59,120,0,0,0,0,58,102,114,97,99,116,0,18,120,0,59,121,0,0,
-0,0,58,102,114,97,99,116,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,102,114,97,99,116,0,1,0,0,12,120,
-0,0,0,1,8,58,118,101,99,52,0,58,102,114,97,99,116,0,18,120,0,59,120,0,0,0,0,58,102,114,97,99,116,0,
-18,120,0,59,121,0,0,0,0,58,102,114,97,99,116,0,18,120,0,59,122,0,0,0,0,58,102,114,97,99,116,0,18,
-120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,109,111,100,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,
-121,0,58,102,108,111,111,114,0,18,120,0,18,121,0,49,0,0,48,47,0,0,1,0,10,0,109,111,100,0,1,0,0,10,
-120,0,0,1,0,0,9,121,0,0,0,1,8,58,118,101,99,50,0,58,109,111,100,0,18,120,0,59,120,0,0,18,121,0,0,0,
-0,58,109,111,100,0,18,120,0,59,121,0,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,111,100,0,1,0,0,11,120,0,
-0,1,0,0,9,121,0,0,0,1,8,58,118,101,99,51,0,58,109,111,100,0,18,120,0,59,120,0,0,18,121,0,0,0,0,58,
-109,111,100,0,18,120,0,59,121,0,0,18,121,0,0,0,0,58,109,111,100,0,18,120,0,59,122,0,0,18,121,0,0,0,
-0,0,0,0,1,0,12,0,109,111,100,0,1,0,0,12,120,0,0,1,0,0,9,121,0,0,0,1,8,58,118,101,99,52,0,58,109,
-111,100,0,18,120,0,59,120,0,0,18,121,0,0,0,0,58,109,111,100,0,18,120,0,59,121,0,0,18,121,0,0,0,0,
-58,109,111,100,0,18,120,0,59,122,0,0,18,121,0,0,0,0,58,109,111,100,0,18,120,0,59,119,0,0,18,121,0,
-0,0,0,0,0,0,1,0,10,0,109,111,100,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,118,101,99,50,0,58,
-109,111,100,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,109,111,100,0,18,120,0,59,121,0,0,18,
-121,0,59,121,0,0,0,0,0,0,0,1,0,11,0,109,111,100,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,118,
-101,99,51,0,58,109,111,100,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,109,111,100,0,18,120,0,
-59,121,0,0,18,121,0,59,121,0,0,0,0,58,109,111,100,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,0,0,
-0,0,1,0,12,0,109,111,100,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,0,1,8,58,118,101,99,52,0,58,109,111,
-100,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,109,111,100,0,18,120,0,59,121,0,0,18,121,0,59,
-121,0,0,0,0,58,109,111,100,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,0,58,109,111,100,0,18,120,0,
-59,119,0,0,18,121,0,59,119,0,0,0,0,0,0,0,1,0,9,0,109,105,110,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,
-8,18,121,0,18,120,0,40,18,121,0,18,120,0,31,0,0,1,0,10,0,109,105,110,0,1,0,0,10,120,0,0,1,0,0,9,
-121,0,0,0,1,8,58,118,101,99,50,0,58,109,105,110,0,18,120,0,59,120,0,0,18,121,0,0,0,0,58,109,105,
-110,0,18,120,0,59,121,0,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,105,110,0,1,0,0,11,120,0,0,1,0,0,9,121,
-0,0,0,1,8,58,118,101,99,51,0,58,109,105,110,0,18,120,0,59,120,0,0,18,121,0,0,0,0,58,109,105,110,0,
-18,120,0,59,121,0,0,18,121,0,0,0,0,58,109,105,110,0,18,120,0,59,122,0,0,18,121,0,0,0,0,0,0,0,1,0,
-12,0,109,105,110,0,1,0,0,12,120,0,0,1,0,0,9,121,0,0,0,1,8,58,118,101,99,52,0,58,109,105,110,0,18,
-120,0,59,120,0,0,18,121,0,0,0,0,58,109,105,110,0,18,120,0,59,121,0,0,18,121,0,0,0,0,58,109,105,110,
-0,18,120,0,59,122,0,0,18,121,0,0,0,0,58,109,105,110,0,18,120,0,59,119,0,0,18,121,0,0,0,0,0,0,0,1,0,
-10,0,109,105,110,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,118,101,99,50,0,58,109,105,110,0,18,
-120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,109,105,110,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,
-0,0,0,0,0,1,0,11,0,109,105,110,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,118,101,99,51,0,58,109,
-105,110,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,109,105,110,0,18,120,0,59,121,0,0,18,121,
-0,59,121,0,0,0,0,58,109,105,110,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,0,0,0,0,1,0,12,0,109,
-105,110,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,0,1,8,58,118,101,99,52,0,58,109,105,110,0,18,120,0,59,
-120,0,0,18,121,0,59,120,0,0,0,0,58,109,105,110,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,0,0,58,
-109,105,110,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,0,58,109,105,110,0,18,120,0,59,119,0,0,18,
-121,0,59,119,0,0,0,0,0,0,0,1,0,9,0,109,97,120,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,58,109,105,
-110,0,18,121,0,0,18,120,0,0,0,0,0,1,0,10,0,109,97,120,0,1,0,0,10,120,0,0,1,0,0,9,121,0,0,0,1,8,58,
-118,101,99,50,0,58,109,97,120,0,18,120,0,59,120,0,0,18,121,0,0,0,0,58,109,97,120,0,18,120,0,59,121,
-0,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,97,120,0,1,0,0,11,120,0,0,1,0,0,9,121,0,0,0,1,8,58,118,101,
-99,51,0,58,109,97,120,0,18,120,0,59,120,0,0,18,121,0,0,0,0,58,109,97,120,0,18,120,0,59,121,0,0,18,
-121,0,0,0,0,58,109,97,120,0,18,120,0,59,122,0,0,18,121,0,0,0,0,0,0,0,1,0,12,0,109,97,120,0,1,0,0,
-12,120,0,0,1,0,0,9,121,0,0,0,1,8,58,118,101,99,52,0,58,109,97,120,0,18,120,0,59,120,0,0,18,121,0,0,
-0,0,58,109,97,120,0,18,120,0,59,121,0,0,18,121,0,0,0,0,58,109,97,120,0,18,120,0,59,122,0,0,18,121,
-0,0,0,0,58,109,97,120,0,18,120,0,59,119,0,0,18,121,0,0,0,0,0,0,0,1,0,10,0,109,97,120,0,1,0,0,10,
-120,0,0,1,0,0,10,121,0,0,0,1,8,58,118,101,99,50,0,58,109,97,120,0,18,120,0,59,120,0,0,18,121,0,59,
-120,0,0,0,0,58,109,97,120,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,0,0,0,0,0,1,0,11,0,109,97,120,
-0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,118,101,99,51,0,58,109,97,120,0,18,120,0,59,120,0,0,
-18,121,0,59,120,0,0,0,0,58,109,97,120,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,0,0,58,109,97,120,
-0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,0,0,0,0,1,0,12,0,109,97,120,0,1,0,0,12,120,0,0,1,0,0,
-12,121,0,0,0,1,8,58,118,101,99,52,0,58,109,97,120,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,0,58,
-109,97,120,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,0,0,58,109,97,120,0,18,120,0,59,122,0,0,18,
-121,0,59,122,0,0,0,0,58,109,97,120,0,18,120,0,59,119,0,0,18,121,0,59,119,0,0,0,0,0,0,0,1,0,9,0,99,
-108,97,109,112,0,1,0,0,9,120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,97,108,0,
-0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,
-86,97,108,0,0,0,0,0,1,0,10,0,99,108,97,109,112,0,1,0,0,10,120,0,0,1,0,0,9,109,105,110,86,97,108,0,
-0,1,0,0,9,109,97,120,86,97,108,0,0,0,1,8,58,118,101,99,50,0,58,99,108,97,109,112,0,18,120,0,59,120,
-0,0,18,109,105,110,86,97,108,0,0,18,109,97,120,86,97,108,0,0,0,0,58,99,108,97,109,112,0,18,120,0,
-59,121,0,0,18,109,105,110,86,97,108,0,0,18,109,97,120,86,97,108,0,0,0,0,0,0,0,1,0,11,0,99,108,97,
-109,112,0,1,0,0,11,120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,97,108,0,0,0,1,
-8,58,118,101,99,51,0,58,99,108,97,109,112,0,18,120,0,59,120,0,0,18,109,105,110,86,97,108,0,0,18,
-109,97,120,86,97,108,0,0,0,0,58,99,108,97,109,112,0,18,120,0,59,121,0,0,18,109,105,110,86,97,108,0,
-0,18,109,97,120,86,97,108,0,0,0,0,58,99,108,97,109,112,0,18,120,0,59,122,0,0,18,109,105,110,86,97,
-108,0,0,18,109,97,120,86,97,108,0,0,0,0,0,0,0,1,0,12,0,99,108,97,109,112,0,1,0,0,12,120,0,0,1,0,0,
-9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,97,108,0,0,0,1,8,58,118,101,99,52,0,58,99,108,97,
-109,112,0,18,120,0,59,120,0,0,18,109,105,110,86,97,108,0,0,18,109,97,120,86,97,108,0,0,0,0,58,99,
-108,97,109,112,0,18,120,0,59,121,0,0,18,109,105,110,86,97,108,0,0,18,109,97,120,86,97,108,0,0,0,0,
-58,99,108,97,109,112,0,18,120,0,59,122,0,0,18,109,105,110,86,97,108,0,0,18,109,97,120,86,97,108,0,
-0,0,0,58,99,108,97,109,112,0,18,120,0,59,119,0,0,18,109,105,110,86,97,108,0,0,18,109,97,120,86,97,
-108,0,0,0,0,0,0,0,1,0,10,0,99,108,97,109,112,0,1,0,0,10,120,0,0,1,0,0,10,109,105,110,86,97,108,0,0,
-1,0,0,10,109,97,120,86,97,108,0,0,0,1,8,58,118,101,99,50,0,58,99,108,97,109,112,0,18,120,0,59,120,
-0,0,18,109,105,110,86,97,108,0,59,120,0,0,18,109,97,120,86,97,108,0,59,120,0,0,0,0,58,99,108,97,
-109,112,0,18,120,0,59,121,0,0,18,109,105,110,86,97,108,0,59,121,0,0,18,109,97,120,86,97,108,0,59,
-121,0,0,0,0,0,0,0,1,0,11,0,99,108,97,109,112,0,1,0,0,11,120,0,0,1,0,0,11,109,105,110,86,97,108,0,0,
-1,0,0,11,109,97,120,86,97,108,0,0,0,1,8,58,118,101,99,51,0,58,99,108,97,109,112,0,18,120,0,59,120,
-0,0,18,109,105,110,86,97,108,0,59,120,0,0,18,109,97,120,86,97,108,0,59,120,0,0,0,0,58,99,108,97,
-109,112,0,18,120,0,59,121,0,0,18,109,105,110,86,97,108,0,59,121,0,0,18,109,97,120,86,97,108,0,59,
-121,0,0,0,0,58,99,108,97,109,112,0,18,120,0,59,122,0,0,18,109,105,110,86,97,108,0,59,122,0,0,18,
-109,97,120,86,97,108,0,59,122,0,0,0,0,0,0,0,1,0,12,0,99,108,97,109,112,0,1,0,0,12,120,0,0,1,0,0,12,
-109,105,110,86,97,108,0,0,1,0,0,12,109,97,120,86,97,108,0,0,0,1,8,58,118,101,99,52,0,58,99,108,97,
-109,112,0,18,120,0,59,120,0,0,18,109,105,110,86,97,108,0,59,120,0,0,18,109,97,120,86,97,108,0,59,
-121,0,0,0,0,58,99,108,97,109,112,0,18,120,0,59,121,0,0,18,109,105,110,86,97,108,0,59,121,0,0,18,
-109,97,120,86,97,108,0,59,121,0,0,0,0,58,99,108,97,109,112,0,18,120,0,59,122,0,0,18,109,105,110,86,
-97,108,0,59,122,0,0,18,109,97,120,86,97,108,0,59,122,0,0,0,0,58,99,108,97,109,112,0,18,120,0,59,
-119,0,0,18,109,105,110,86,97,108,0,59,119,0,0,18,109,97,120,86,97,108,0,59,119,0,0,0,0,0,0,0,1,0,9,
-0,109,105,120,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,
-0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,10,0,109,105,120,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,1,0,0,
-9,97,0,0,0,1,8,58,118,101,99,50,0,58,109,105,120,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,18,97,0,
-0,0,0,58,109,105,120,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,18,97,0,0,0,0,0,0,0,1,0,11,0,109,
-105,120,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,1,0,0,9,97,0,0,0,1,8,58,118,101,99,51,0,58,109,105,120,
-0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,18,97,0,0,0,0,58,109,105,120,0,18,120,0,59,121,0,0,18,
-121,0,59,121,0,0,18,97,0,0,0,0,58,109,105,120,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,18,97,0,0,
-0,0,0,0,0,1,0,12,0,109,105,120,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,1,0,0,9,97,0,0,0,1,8,58,118,101,
-99,52,0,58,109,105,120,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,18,97,0,0,0,0,58,109,105,120,0,18,
-120,0,59,121,0,0,18,121,0,59,121,0,0,18,97,0,0,0,0,58,109,105,120,0,18,120,0,59,122,0,0,18,121,0,
-59,122,0,0,18,97,0,0,0,0,58,109,105,120,0,18,120,0,59,119,0,0,18,121,0,59,119,0,0,18,97,0,0,0,0,0,
-0,0,1,0,10,0,109,105,120,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,1,0,0,10,97,0,0,0,1,8,58,118,101,99,
-50,0,58,109,105,120,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,18,97,0,59,120,0,0,0,0,58,109,105,
-120,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,18,97,0,59,121,0,0,0,0,0,0,0,1,0,11,0,109,105,120,0,
-1,0,0,11,120,0,0,1,0,0,11,121,0,0,1,0,0,11,97,0,0,0,1,8,58,118,101,99,51,0,58,109,105,120,0,18,120,
-0,59,120,0,0,18,121,0,59,120,0,0,18,97,0,59,120,0,0,0,0,58,109,105,120,0,18,120,0,59,121,0,0,18,
-121,0,59,121,0,0,18,97,0,59,121,0,0,0,0,58,109,105,120,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,
-18,97,0,59,122,0,0,0,0,0,0,0,1,0,12,0,109,105,120,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,1,0,0,12,97,
-0,0,0,1,8,58,118,101,99,52,0,58,109,105,120,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,18,97,0,59,
-120,0,0,0,0,58,109,105,120,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,18,97,0,59,121,0,0,0,0,58,109,
-105,120,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,18,97,0,59,122,0,0,0,0,58,109,105,120,0,18,120,0,
-59,119,0,0,18,121,0,59,119,0,0,18,97,0,59,119,0,0,0,0,0,0,0,1,0,9,0,115,116,101,112,0,1,0,0,9,101,
-100,103,101,0,0,1,0,0,9,120,0,0,0,1,8,18,120,0,18,101,100,103,101,0,40,17,48,0,48,0,0,17,49,0,48,0,
-0,31,0,0,1,0,10,0,115,116,101,112,0,1,0,0,9,101,100,103,101,0,0,1,0,0,10,120,0,0,0,1,8,58,118,101,
-99,50,0,58,115,116,101,112,0,18,101,100,103,101,0,0,18,120,0,59,120,0,0,0,0,58,115,116,101,112,0,
-18,101,100,103,101,0,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,115,116,101,112,0,1,0,0,9,101,100,
-103,101,0,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,115,116,101,112,0,18,101,100,103,101,0,0,
-18,120,0,59,120,0,0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,0,18,120,0,59,121,0,0,0,0,58,115,
-116,101,112,0,18,101,100,103,101,0,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,116,101,112,0,1,0,
-0,9,101,100,103,101,0,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,115,116,101,112,0,18,101,100,
-103,101,0,0,18,120,0,59,120,0,0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,0,18,120,0,59,121,0,
-0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,0,18,120,0,59,122,0,0,0,0,58,115,116,101,112,0,18,
-101,100,103,101,0,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,10,0,115,116,101,112,0,1,0,0,10,101,100,103,
-101,0,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,115,116,101,112,0,18,101,100,103,101,0,59,120,
-0,0,18,120,0,59,120,0,0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,59,121,0,0,18,120,0,59,121,0,
-0,0,0,0,0,0,1,0,11,0,115,116,101,112,0,1,0,0,11,101,100,103,101,0,0,1,0,0,11,120,0,0,0,1,8,58,118,
-101,99,51,0,58,115,116,101,112,0,18,101,100,103,101,0,59,120,0,0,18,120,0,59,120,0,0,0,0,58,115,
-116,101,112,0,18,101,100,103,101,0,59,121,0,0,18,120,0,59,121,0,0,0,0,58,115,116,101,112,0,18,101,
-100,103,101,0,59,122,0,0,18,120,0,59,122,0,0,0,0,0,0,0,1,0,12,0,115,116,101,112,0,1,0,0,12,101,100,
-103,101,0,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,115,116,101,112,0,18,101,100,103,101,0,59,
-120,0,0,18,120,0,59,120,0,0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,59,121,0,0,18,120,0,59,
-121,0,0,0,0,58,115,116,101,112,0,18,101,100,103,101,0,59,122,0,0,18,120,0,59,122,0,0,0,0,58,115,
-116,101,112,0,18,101,100,103,101,0,59,119,0,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,115,109,111,
-111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,49,0,0,1,0,0,
-9,120,0,0,0,1,3,2,1,9,1,116,0,2,58,99,108,97,109,112,0,18,120,0,18,101,100,103,101,48,0,47,18,101,
-100,103,101,49,0,18,101,100,103,101,48,0,47,49,0,17,48,0,48,0,0,0,17,49,0,48,0,0,0,0,0,0,8,18,116,
-0,18,116,0,48,17,51,0,48,0,0,17,50,0,48,0,0,18,116,0,48,47,48,0,0,1,0,10,0,115,109,111,111,116,104,
-115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,49,0,0,1,0,0,10,120,0,0,0,
-1,8,58,118,101,99,50,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,
-101,100,103,101,49,0,0,18,120,0,59,120,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,
-100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,115,109,111,
-111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,49,0,0,1,0,0,
-11,120,0,0,0,1,8,58,118,101,99,51,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,
-101,48,0,0,18,101,100,103,101,49,0,0,18,120,0,59,120,0,0,0,0,58,115,109,111,111,116,104,115,116,
-101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,120,0,59,121,0,0,0,0,58,115,109,
-111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,120,0,59,
-122,0,0,0,0,0,0,0,1,0,12,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,
-0,1,0,0,9,101,100,103,101,49,0,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,115,109,111,111,116,
-104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,120,0,59,120,0,0,0,0,
-58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,
-18,120,0,59,121,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,
-101,100,103,101,49,0,0,18,120,0,59,122,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,
-100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,10,0,115,109,111,
-111,116,104,115,116,101,112,0,1,0,0,10,101,100,103,101,48,0,0,1,0,0,10,101,100,103,101,49,0,0,1,0,
-0,10,120,0,0,0,1,8,58,118,101,99,50,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,
-101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,0,18,120,0,59,120,0,0,0,0,58,115,109,111,111,
-116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,
-120,0,59,121,0,0,0,0,0,0,0,1,0,11,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,11,101,100,103,
-101,48,0,0,1,0,0,11,101,100,103,101,49,0,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,58,115,109,
-111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,
-120,0,0,18,120,0,59,120,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,
-0,59,121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,120,0,59,121,0,0,0,0,58,115,109,111,111,116,104,
-115,116,101,112,0,18,101,100,103,101,48,0,59,122,0,0,18,101,100,103,101,49,0,59,122,0,0,18,120,0,
-59,122,0,0,0,0,0,0,0,1,0,12,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,12,101,100,103,101,
-48,0,0,1,0,0,12,101,100,103,101,49,0,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,58,115,109,111,
-111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,
-0,18,120,0,59,120,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,
-121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,120,0,59,121,0,0,0,0,58,115,109,111,111,116,104,115,
-116,101,112,0,18,101,100,103,101,48,0,59,122,0,0,18,101,100,103,101,49,0,59,122,0,0,18,120,0,59,
-122,0,0,0,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,119,0,0,18,101,
-100,103,101,49,0,59,119,0,0,18,120,0,59,119,0,0,0,0,0,0,0,1,0,9,0,100,111,116,0,1,0,0,9,120,0,0,1,
-0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,48,0,0,1,0,9,0,100,111,116,0,1,0,0,10,120,0,0,1,0,0,10,121,0,
-0,0,1,8,58,100,111,116,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,58,100,111,116,0,18,120,0,59,
-121,0,0,18,121,0,59,121,0,0,0,46,0,0,1,0,9,0,100,111,116,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,
-58,100,111,116,0,18,120,0,59,120,0,0,18,121,0,59,120,0,0,0,58,100,111,116,0,18,120,0,59,121,0,0,18,
-121,0,59,121,0,0,0,46,58,100,111,116,0,18,120,0,59,122,0,0,18,121,0,59,122,0,0,0,46,0,0,1,0,9,0,
-100,111,116,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,0,1,8,58,100,111,116,0,18,120,0,59,120,0,0,18,121,
-0,59,120,0,0,0,58,100,111,116,0,18,120,0,59,121,0,0,18,121,0,59,121,0,0,0,46,58,100,111,116,0,18,
-120,0,59,122,0,0,18,121,0,59,122,0,0,0,46,58,100,111,116,0,18,120,0,59,119,0,0,18,121,0,59,119,0,0,
-0,46,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,9,120,0,0,0,1,8,58,115,113,114,116,0,58,100,111,
-116,0,18,120,0,0,18,120,0,0,0,0,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,10,120,0,0,0,1,8,58,
-115,113,114,116,0,58,100,111,116,0,18,120,0,0,18,120,0,0,0,0,0,0,0,1,0,9,0,108,101,110,103,116,104,
-0,1,0,0,11,120,0,0,0,1,8,58,115,113,114,116,0,58,100,111,116,0,18,120,0,0,18,120,0,0,0,0,0,0,0,1,0,
-9,0,108,101,110,103,116,104,0,1,0,0,12,120,0,0,0,1,8,58,115,113,114,116,0,58,100,111,116,0,18,120,
-0,0,18,120,0,0,0,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,
-1,8,58,108,101,110,103,116,104,0,18,120,0,18,121,0,47,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,
-101,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,108,101,110,103,116,104,0,18,120,0,18,121,0,47,0,
-0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,108,101,
-110,103,116,104,0,18,120,0,18,121,0,47,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,12,
-120,0,0,1,0,0,12,121,0,0,0,1,8,58,108,101,110,103,116,104,0,18,120,0,18,121,0,47,0,0,0,0,1,0,11,0,
-99,114,111,115,115,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,118,101,99,51,0,18,120,0,59,121,0,
-18,121,0,59,122,0,48,18,121,0,59,121,0,18,120,0,59,122,0,48,47,0,18,120,0,59,122,0,18,121,0,59,120,
-0,48,18,121,0,59,122,0,18,120,0,59,120,0,48,47,0,18,120,0,59,120,0,18,121,0,59,121,0,48,18,121,0,
-59,120,0,18,120,0,59,121,0,48,47,0,0,0,0,1,0,9,0,110,111,114,109,97,108,105,122,101,0,1,0,0,9,120,
-0,0,0,1,8,17,49,0,48,0,0,0,0,1,0,10,0,110,111,114,109,97,108,105,122,101,0,1,0,0,10,120,0,0,0,1,8,
-18,120,0,58,108,101,110,103,116,104,0,18,120,0,0,0,49,0,0,1,0,11,0,110,111,114,109,97,108,105,122,
-101,0,1,0,0,11,120,0,0,0,1,8,18,120,0,58,108,101,110,103,116,104,0,18,120,0,0,0,49,0,0,1,0,12,0,
-110,111,114,109,97,108,105,122,101,0,1,0,0,12,120,0,0,0,1,8,18,120,0,58,108,101,110,103,116,104,0,
-18,120,0,0,0,49,0,0,1,0,9,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,9,78,0,0,1,0,0,9,73,0,
-0,1,0,0,9,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,
-0,40,18,78,0,18,78,0,54,31,0,0,1,0,10,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,10,78,0,0,
-1,0,0,10,73,0,0,1,0,0,10,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,18,73,0,0,
-0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,11,0,102,97,99,101,102,111,114,119,97,114,100,0,
-1,0,0,11,78,0,0,1,0,0,11,73,0,0,1,0,0,11,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,
-102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,12,0,102,97,99,101,102,111,114,
-119,97,114,100,0,1,0,0,12,78,0,0,1,0,0,12,73,0,0,1,0,0,12,78,114,101,102,0,0,0,1,8,58,100,111,116,
-0,18,78,114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,9,0,114,101,
-102,108,101,99,116,0,1,0,0,9,73,0,0,1,0,0,9,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,
-18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,10,0,114,101,102,108,101,99,116,0,1,0,0,10,73,0,0,1,
-0,0,10,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,
-0,0,1,0,11,0,114,101,102,108,101,99,116,0,1,0,0,11,73,0,0,1,0,0,11,78,0,0,0,1,8,18,73,0,17,50,0,48,
-0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,12,0,114,101,102,108,101,99,
-116,0,1,0,0,12,73,0,0,1,0,0,12,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,18,
-73,0,0,0,48,18,78,0,48,47,0,0,1,0,9,0,114,101,102,114,97,99,116,0,1,0,0,9,73,0,0,1,0,0,9,78,0,0,1,
-0,0,9,101,116,97,0,0,0,1,3,2,1,9,1,107,0,2,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,
-0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,
-0,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,101,
-116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,0,48,
-47,0,0,1,0,10,0,114,101,102,114,97,99,116,0,1,0,0,10,73,0,0,1,0,0,10,78,0,0,1,0,0,9,101,116,97,0,0,
-0,1,3,2,1,9,1,107,0,2,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,0,48,0,0,58,100,111,
-116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,0,0,10,18,107,0,17,
-48,0,48,0,0,40,0,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,
-101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,
-0,48,47,0,0,1,0,11,0,114,101,102,114,97,99,116,0,1,0,0,11,73,0,0,1,0,0,11,78,0,0,1,0,0,9,101,116,
-97,0,0,0,1,3,2,1,9,1,107,0,2,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,0,48,0,0,58,
-100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,0,0,10,18,
-107,0,17,48,0,48,0,0,40,0,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,9,14,0,8,18,101,116,97,0,18,73,
-0,48,18,101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,
-46,18,78,0,48,47,0,0,1,0,12,0,114,101,102,114,97,99,116,0,1,0,0,12,73,0,0,1,0,0,12,78,0,0,1,0,0,9,
-101,116,97,0,0,0,1,3,2,1,9,1,107,0,2,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,0,48,
-0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,0,0,
-10,18,107,0,17,48,0,48,0,0,40,0,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,9,14,0,8,18,101,116,97,0,
-18,73,0,48,18,101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,
-0,0,46,18,78,0,48,47,0,0,1,0,13,0,109,97,116,114,105,120,67,111,109,112,77,117,108,116,0,1,0,0,13,
-120,0,0,1,0,0,13,121,0,0,0,1,8,58,109,97,116,50,0,18,120,0,16,8,48,0,57,59,120,0,18,121,0,16,8,48,
-0,57,59,120,0,48,0,18,120,0,16,8,48,0,57,59,121,0,18,121,0,16,8,48,0,57,59,121,0,48,0,18,120,0,16,
-10,49,0,57,59,120,0,18,121,0,16,10,49,0,57,59,120,0,48,0,18,120,0,16,10,49,0,57,59,121,0,18,121,0,
-16,10,49,0,57,59,121,0,48,0,0,0,0,1,0,14,0,109,97,116,114,105,120,67,111,109,112,77,117,108,116,0,
-1,0,0,14,120,0,0,1,0,0,14,121,0,0,0,1,8,58,109,97,116,52,0,18,120,0,16,8,48,0,57,59,120,0,18,121,0,
-16,8,48,0,57,59,120,0,48,0,18,120,0,16,8,48,0,57,59,121,0,18,121,0,16,8,48,0,57,59,121,0,48,0,18,
-120,0,16,8,48,0,57,59,122,0,18,121,0,16,8,48,0,57,59,122,0,48,0,18,120,0,16,10,49,0,57,59,120,0,18,
-121,0,16,10,49,0,57,59,120,0,48,0,18,120,0,16,10,49,0,57,59,121,0,18,121,0,16,10,49,0,57,59,121,0,
-48,0,18,120,0,16,10,49,0,57,59,122,0,18,121,0,16,10,49,0,57,59,122,0,48,0,18,120,0,16,10,50,0,57,
-59,120,0,18,121,0,16,10,50,0,57,59,120,0,48,0,18,120,0,16,10,50,0,57,59,121,0,18,121,0,16,10,50,0,
-57,59,121,0,48,0,18,120,0,16,10,50,0,57,59,122,0,18,121,0,16,10,50,0,57,59,122,0,48,0,0,0,0,1,0,15,
-0,109,97,116,114,105,120,67,111,109,112,77,117,108,116,0,1,0,0,15,120,0,0,1,0,0,15,121,0,0,0,1,8,
-58,109,97,116,52,0,18,120,0,16,8,48,0,57,59,120,0,18,121,0,16,8,48,0,57,59,120,0,48,0,18,120,0,16,
-8,48,0,57,59,121,0,18,121,0,16,8,48,0,57,59,121,0,48,0,18,120,0,16,8,48,0,57,59,122,0,18,121,0,16,
-8,48,0,57,59,122,0,48,18,120,0,16,8,48,0,57,59,119,0,18,121,0,16,8,48,0,57,59,119,0,48,46,0,18,120,
-0,16,10,49,0,57,59,120,0,18,121,0,16,10,49,0,57,59,120,0,48,0,18,120,0,16,10,49,0,57,59,121,0,18,
-121,0,16,10,49,0,57,59,121,0,48,0,18,120,0,16,10,49,0,57,59,122,0,18,121,0,16,10,49,0,57,59,122,0,
-48,18,120,0,16,10,49,0,57,59,119,0,18,121,0,16,10,49,0,57,59,119,0,48,46,0,18,120,0,16,10,50,0,57,
-59,120,0,18,121,0,16,10,50,0,57,59,120,0,48,0,18,120,0,16,10,50,0,57,59,121,0,18,121,0,16,10,50,0,
-57,59,121,0,48,0,18,120,0,16,10,50,0,57,59,122,0,18,121,0,16,10,50,0,57,59,122,0,48,18,120,0,16,10,
-50,0,57,59,119,0,18,121,0,16,10,50,0,57,59,119,0,48,46,0,18,120,0,16,10,51,0,57,59,120,0,18,121,0,
-16,10,51,0,57,59,120,0,48,0,18,120,0,16,10,51,0,57,59,121,0,18,121,0,16,10,51,0,57,59,121,0,48,0,
-18,120,0,16,10,51,0,57,59,122,0,18,121,0,16,10,51,0,57,59,122,0,48,18,120,0,16,10,51,0,57,59,119,0,
-18,121,0,16,10,51,0,57,59,119,0,48,46,0,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,0,1,0,0,10,120,
-0,0,1,0,0,10,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,0,59,120,0,18,121,0,59,120,0,40,0,18,120,0,
-59,121,0,18,121,0,59,121,0,40,0,0,0,0,1,0,3,0,108,101,115,115,84,104,97,110,0,1,0,0,11,120,0,0,1,0,
-0,11,121,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,59,120,0,18,121,0,59,120,0,40,0,18,120,0,59,121,
-0,18,121,0,59,121,0,40,0,18,120,0,59,122,0,18,121,0,59,122,0,40,0,0,0,0,1,0,4,0,108,101,115,115,84,
-104,97,110,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,18,
-121,0,59,120,0,40,0,18,120,0,59,121,0,18,121,0,59,121,0,40,0,18,120,0,59,122,0,18,121,0,59,122,0,
-40,0,18,120,0,59,119,0,18,121,0,59,119,0,40,0,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,0,1,0,0,
-6,120,0,0,1,0,0,6,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,0,59,120,0,18,121,0,59,120,0,40,0,18,
-120,0,59,121,0,18,121,0,59,121,0,40,0,0,0,0,1,0,3,0,108,101,115,115,84,104,97,110,0,1,0,0,7,120,0,
-0,1,0,0,7,121,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,59,120,0,18,121,0,59,120,0,40,0,18,120,0,59,
-121,0,18,121,0,59,121,0,40,0,18,120,0,59,122,0,18,121,0,59,122,0,40,0,0,0,0,1,0,4,0,108,101,115,
-115,84,104,97,110,0,1,0,0,8,120,0,0,1,0,0,8,121,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,
-18,121,0,59,120,0,40,0,18,120,0,59,121,0,18,121,0,59,121,0,40,0,18,120,0,59,122,0,18,121,0,59,122,
-0,40,0,18,120,0,59,119,0,18,121,0,59,119,0,40,0,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,69,113,
-117,97,108,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,0,59,120,0,18,
-121,0,59,120,0,42,0,18,120,0,59,121,0,18,121,0,59,121,0,42,0,0,0,0,1,0,3,0,108,101,115,115,84,104,
-97,110,69,113,117,97,108,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,
-59,120,0,18,121,0,59,120,0,42,0,18,120,0,59,121,0,18,121,0,59,121,0,42,0,18,120,0,59,122,0,18,121,
-0,59,122,0,42,0,0,0,0,1,0,4,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,12,120,0,0,1,
-0,0,12,121,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,18,121,0,59,120,0,42,0,18,120,0,59,
-121,0,18,121,0,59,121,0,42,0,18,120,0,59,122,0,18,121,0,59,122,0,42,0,18,120,0,59,119,0,18,121,0,
-59,119,0,42,0,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,6,120,0,0,1,0,
-0,6,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,0,59,120,0,18,121,0,59,120,0,42,0,18,120,0,59,121,0,
-18,121,0,59,121,0,42,0,0,0,0,1,0,3,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,7,120,
-0,0,1,0,0,7,121,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,59,120,0,18,121,0,59,120,0,42,0,18,120,0,
-59,121,0,18,121,0,59,121,0,42,0,18,120,0,59,122,0,18,121,0,59,122,0,42,0,0,0,0,1,0,4,0,108,101,115,
-115,84,104,97,110,69,113,117,97,108,0,1,0,0,8,120,0,0,1,0,0,8,121,0,0,0,1,8,58,98,118,101,99,52,0,
-18,120,0,59,120,0,18,121,0,59,120,0,42,0,18,120,0,59,121,0,18,121,0,59,121,0,42,0,18,120,0,59,122,
-0,18,121,0,59,122,0,42,0,18,120,0,59,119,0,18,121,0,59,119,0,42,0,0,0,0,1,0,2,0,103,114,101,97,116,
-101,114,84,104,97,110,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,0,59,
-120,0,18,121,0,59,120,0,41,0,18,120,0,59,121,0,18,121,0,59,121,0,41,0,0,0,0,1,0,3,0,103,114,101,97,
-116,101,114,84,104,97,110,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,
-59,120,0,18,121,0,59,120,0,41,0,18,120,0,59,121,0,18,121,0,59,121,0,41,0,18,120,0,59,122,0,18,121,
-0,59,122,0,41,0,0,0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,12,120,0,0,1,0,0,12,
-121,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,18,121,0,59,120,0,41,0,18,120,0,59,121,0,18,
-121,0,59,121,0,41,0,18,120,0,59,122,0,18,121,0,59,122,0,41,0,18,120,0,59,119,0,18,121,0,59,119,0,
-41,0,0,0,0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,6,120,0,0,1,0,0,6,121,0,0,0,1,
-8,58,98,118,101,99,50,0,18,120,0,59,120,0,18,121,0,59,120,0,41,0,18,120,0,59,121,0,18,121,0,59,121,
-0,41,0,0,0,0,1,0,3,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,7,120,0,0,1,0,0,7,121,0,0,0,
-1,8,58,98,118,101,99,51,0,18,120,0,59,120,0,18,121,0,59,120,0,41,0,18,120,0,59,121,0,18,121,0,59,
-121,0,41,0,18,120,0,59,122,0,18,121,0,59,122,0,41,0,0,0,0,1,0,4,0,103,114,101,97,116,101,114,84,
-104,97,110,0,1,0,0,8,120,0,0,1,0,0,8,121,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,18,121,
-0,59,120,0,41,0,18,120,0,59,121,0,18,121,0,59,121,0,41,0,18,120,0,59,122,0,18,121,0,59,122,0,41,0,
-18,120,0,59,119,0,18,121,0,59,119,0,41,0,0,0,0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,110,69,
-113,117,97,108,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,0,59,120,0,
-18,121,0,59,120,0,43,0,18,120,0,59,121,0,18,121,0,59,121,0,43,0,0,0,0,1,0,3,0,103,114,101,97,116,
-101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,98,118,101,99,
-51,0,18,120,0,59,120,0,18,121,0,59,120,0,43,0,18,120,0,59,121,0,18,121,0,59,121,0,43,0,18,120,0,59,
-122,0,18,121,0,59,122,0,43,0,0,0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,
-108,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,18,121,0,59,
-120,0,43,0,18,120,0,59,121,0,18,121,0,59,121,0,43,0,18,120,0,59,122,0,18,121,0,59,122,0,43,0,18,
-120,0,59,119,0,18,121,0,59,119,0,43,0,0,0,0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,110,69,
-113,117,97,108,0,1,0,0,6,120,0,0,1,0,0,6,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,0,59,120,0,18,
-121,0,59,120,0,43,0,18,120,0,59,121,0,18,121,0,59,121,0,43,0,0,0,0,1,0,3,0,103,114,101,97,116,101,
-114,84,104,97,110,69,113,117,97,108,0,1,0,0,7,120,0,0,1,0,0,7,121,0,0,0,1,8,58,98,118,101,99,51,0,
-18,120,0,59,120,0,18,121,0,59,120,0,43,0,18,120,0,59,121,0,18,121,0,59,121,0,43,0,18,120,0,59,122,
-0,18,121,0,59,122,0,43,0,0,0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,
-0,1,0,0,8,120,0,0,1,0,0,8,121,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,18,121,0,59,120,0,
-43,0,18,120,0,59,121,0,18,121,0,59,121,0,43,0,18,120,0,59,122,0,18,121,0,59,122,0,43,0,18,120,0,59,
-119,0,18,121,0,59,119,0,43,0,0,0,0,1,0,2,0,101,113,117,97,108,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,
-0,1,8,58,98,118,101,99,50,0,18,120,0,59,120,0,18,121,0,59,120,0,38,0,18,120,0,59,121,0,18,121,0,59,
-121,0,38,0,0,0,0,1,0,3,0,101,113,117,97,108,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,98,118,
-101,99,51,0,18,120,0,59,120,0,18,121,0,59,120,0,38,0,18,120,0,59,121,0,18,121,0,59,121,0,38,0,18,
-120,0,59,122,0,18,121,0,59,122,0,38,0,0,0,0,1,0,4,0,101,113,117,97,108,0,1,0,0,12,120,0,0,1,0,0,12,
-121,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,18,121,0,59,120,0,38,0,18,120,0,59,121,0,18,
-121,0,59,121,0,38,0,18,120,0,59,122,0,18,121,0,59,122,0,38,0,18,120,0,59,119,0,18,121,0,59,119,0,
-38,0,0,0,0,1,0,2,0,101,113,117,97,108,0,1,0,0,6,120,0,0,1,0,0,6,121,0,0,0,1,8,58,98,118,101,99,50,
-0,18,120,0,59,120,0,18,121,0,59,120,0,38,0,18,120,0,59,121,0,18,121,0,59,121,0,38,0,0,0,0,1,0,3,0,
-101,113,117,97,108,0,1,0,0,7,120,0,0,1,0,0,7,121,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,59,120,0,
-18,121,0,59,120,0,38,0,18,120,0,59,121,0,18,121,0,59,121,0,38,0,18,120,0,59,122,0,18,121,0,59,122,
-0,38,0,0,0,0,1,0,4,0,101,113,117,97,108,0,1,0,0,8,120,0,0,1,0,0,8,121,0,0,0,1,8,58,98,118,101,99,
-52,0,18,120,0,59,120,0,18,121,0,59,120,0,38,0,18,120,0,59,121,0,18,121,0,59,121,0,38,0,18,120,0,59,
-122,0,18,121,0,59,122,0,38,0,18,120,0,59,119,0,18,121,0,59,119,0,38,0,0,0,0,1,0,2,0,110,111,116,69,
-113,117,97,108,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,0,59,120,0,
-18,121,0,59,120,0,39,0,18,120,0,59,121,0,18,121,0,59,121,0,39,0,0,0,0,1,0,3,0,110,111,116,69,113,
-117,97,108,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,59,120,0,18,
-121,0,59,120,0,39,0,18,120,0,59,121,0,18,121,0,59,121,0,39,0,18,120,0,59,122,0,18,121,0,59,122,0,
-39,0,0,0,0,1,0,4,0,110,111,116,69,113,117,97,108,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,0,1,8,58,98,
-118,101,99,52,0,18,120,0,59,120,0,18,121,0,59,120,0,39,0,18,120,0,59,121,0,18,121,0,59,121,0,39,0,
-18,120,0,59,122,0,18,121,0,59,122,0,39,0,18,120,0,59,119,0,18,121,0,59,119,0,39,0,0,0,0,1,0,2,0,
-110,111,116,69,113,117,97,108,0,1,0,0,6,120,0,0,1,0,0,6,121,0,0,0,1,8,58,98,118,101,99,50,0,18,120,
-0,59,120,0,18,121,0,59,120,0,39,0,18,120,0,59,121,0,18,121,0,59,121,0,39,0,0,0,0,1,0,3,0,110,111,
-116,69,113,117,97,108,0,1,0,0,7,120,0,0,1,0,0,7,121,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,59,
-120,0,18,121,0,59,120,0,39,0,18,120,0,59,121,0,18,121,0,59,121,0,39,0,18,120,0,59,122,0,18,121,0,
-59,122,0,39,0,0,0,0,1,0,4,0,110,111,116,69,113,117,97,108,0,1,0,0,8,120,0,0,1,0,0,8,121,0,0,0,1,8,
-58,98,118,101,99,52,0,18,120,0,59,120,0,18,121,0,59,120,0,39,0,18,120,0,59,121,0,18,121,0,59,121,0,
-39,0,18,120,0,59,122,0,18,121,0,59,122,0,39,0,18,120,0,59,119,0,18,121,0,59,119,0,39,0,0,0,0,1,0,1,
-0,97,110,121,0,1,0,0,2,120,0,0,0,1,8,18,120,0,59,120,0,18,120,0,59,121,0,32,0,0,1,0,1,0,97,110,121,
-0,1,0,0,3,120,0,0,0,1,8,18,120,0,59,120,0,18,120,0,59,121,0,32,18,120,0,59,122,0,32,0,0,1,0,1,0,97,
-110,121,0,1,0,0,4,120,0,0,0,1,8,18,120,0,59,120,0,18,120,0,59,121,0,32,18,120,0,59,122,0,32,18,120,
-0,59,119,0,32,0,0,1,0,1,0,97,108,108,0,1,0,0,2,120,0,0,0,1,8,18,120,0,59,120,0,18,120,0,59,121,0,
-34,0,0,1,0,1,0,97,108,108,0,1,0,0,3,120,0,0,0,1,8,18,120,0,59,120,0,18,120,0,59,121,0,34,18,120,0,
-59,122,0,34,0,0,1,0,1,0,97,108,108,0,1,0,0,4,120,0,0,0,1,8,18,120,0,59,120,0,18,120,0,59,121,0,34,
-18,120,0,59,122,0,34,18,120,0,59,119,0,34,0,0,1,0,2,0,110,111,116,0,1,0,0,2,120,0,0,0,1,8,58,98,
-118,101,99,50,0,18,120,0,59,120,0,56,0,18,120,0,59,121,0,56,0,0,0,0,1,0,3,0,110,111,116,0,1,0,0,3,
-120,0,0,0,1,8,58,98,118,101,99,51,0,18,120,0,59,120,0,56,0,18,120,0,59,121,0,56,0,18,120,0,59,122,
-0,56,0,0,0,0,1,0,4,0,110,111,116,0,1,0,0,4,120,0,0,0,1,8,58,98,118,101,99,52,0,18,120,0,59,120,0,
-56,0,18,120,0,59,121,0,56,0,18,120,0,59,122,0,56,0,18,120,0,59,119,0,56,0,0,0,0,1,0,12,0,116,101,
-120,116,117,114,101,49,68,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,9,99,111,111,114,100,0,0,
-0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,49,68,80,114,
-111,106,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,10,99,111,111,114,100,0,0,0,1,8,58,116,101,
-120,116,117,114,101,49,68,0,18,115,97,109,112,108,101,114,0,0,18,99,111,111,114,100,0,59,115,0,18,
-99,111,111,114,100,0,59,116,0,49,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,49,68,80,114,111,106,
-0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,8,58,116,101,120,116,
-117,114,101,49,68,0,18,115,97,109,112,108,101,114,0,0,18,99,111,111,114,100,0,59,115,0,18,99,111,
-111,114,100,0,59,113,0,49,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,68,0,1,0,0,17,115,97,109,
-112,108,101,114,0,0,1,0,0,10,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,
-0,1,0,12,0,116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,115,97,109,112,108,101,114,
-0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,116,101,120,116,117,114,101,50,68,0,18,115,97,109,112,
-108,101,114,0,0,58,118,101,99,50,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,112,
-0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,112,0,49,0,0,0,0,0,0,1,0,12,0,
-116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,
-12,99,111,111,114,100,0,0,0,1,8,58,116,101,120,116,117,114,101,50,68,0,18,115,97,109,112,108,101,
-114,0,0,58,118,101,99,50,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,
-18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,0,0,0,1,0,12,0,116,101,
-120,116,117,114,101,51,68,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,
-0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,80,
-114,111,106,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,8,58,116,
-101,120,116,117,114,101,51,68,0,18,115,97,109,112,108,101,114,0,0,58,118,101,99,51,0,18,99,111,111,
-114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,
-111,111,114,100,0,59,113,0,49,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,
-49,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,67,117,98,101,0,1,0,0,19,115,97,109,112,108,
-101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,
-0,115,104,97,100,111,119,49,68,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,
-100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,0,1,
-0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,
-48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,49,68,80,114,111,106,0,1,0,0,20,115,97,109,112,
-108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,8,58,115,104,97,100,111,119,49,68,0,18,115,97,
-109,112,108,101,114,0,0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,
-0,59,113,0,49,0,17,48,0,48,0,0,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,
-49,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,80,114,111,106,0,1,0,0,21,115,97,109,112,108,
-101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,8,58,115,104,97,100,111,119,50,68,0,18,115,97,109,
-112,108,101,114,0,0,58,118,101,99,51,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,
-113,0,49,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,0,18,99,111,111,
-114,100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,0,0,0,1,0,9,0,110,111,105,115,101,49,
-0,1,0,0,9,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,10,120,0,0,0,1,8,
-17,48,0,48,0,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,11,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,
-9,0,110,111,105,115,101,49,0,1,0,0,12,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,110,111,105,115,
-101,50,0,1,0,0,9,120,0,0,0,1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,10,0,110,111,105,115,
-101,50,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,10,0,110,111,105,115,
-101,50,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,10,0,110,111,105,115,
-101,50,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,110,111,105,115,
-101,51,0,1,0,0,9,120,0,0,0,1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,110,111,105,115,
-101,51,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,110,111,105,115,
-101,51,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,110,111,105,115,
-101,51,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,110,111,105,115,
-101,52,0,1,0,0,9,120,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,110,111,105,115,
-101,52,0,1,0,0,10,120,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,110,111,105,115,
-101,52,0,1,0,0,11,120,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,110,111,105,115,
-101,52,0,1,0,0,12,120,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,0
+\r
+/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */\r
+/* slang_common_builtin.gc */\r
+\r
+3,2,2,1,5,1,103,108,95,77,97,120,76,105,103,104,116,115,0,2,16,10,56,0,0,0,2,2,1,5,1,103,108,95,77,\r
+97,120,67,108,105,112,80,108,97,110,101,115,0,2,16,10,54,0,0,0,2,2,1,5,1,103,108,95,77,97,120,84,\r
+101,120,116,117,114,101,85,110,105,116,115,0,2,16,10,56,0,0,0,2,2,1,5,1,103,108,95,77,97,120,84,\r
+101,120,116,117,114,101,67,111,111,114,100,115,0,2,16,10,56,0,0,0,2,2,1,5,1,103,108,95,77,97,120,\r
+86,101,114,116,101,120,65,116,116,114,105,98,115,0,2,16,10,49,54,0,0,0,2,2,1,5,1,103,108,95,77,97,\r
+120,86,101,114,116,101,120,85,110,105,102,111,114,109,67,111,109,112,111,110,101,110,116,115,0,2,\r
+16,10,53,49,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,86,97,114,121,105,110,103,70,108,111,97,116,\r
+115,0,2,16,10,51,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,86,101,114,116,101,120,84,101,120,116,117,\r
+114,101,73,109,97,103,101,85,110,105,116,115,0,2,16,8,48,0,0,0,2,2,1,5,1,103,108,95,77,97,120,67,\r
+111,109,98,105,110,101,100,84,101,120,116,117,114,101,73,109,97,103,101,85,110,105,116,115,0,2,16,\r
+10,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,84,101,120,116,117,114,101,73,109,97,103,101,85,110,105,\r
+116,115,0,2,16,10,50,0,0,0,2,2,1,5,1,103,108,95,77,97,120,70,114,97,103,109,101,110,116,85,110,105,\r
+102,111,114,109,67,111,109,112,111,110,101,110,116,115,0,2,16,10,54,52,0,0,0,2,2,1,5,1,103,108,95,\r
+77,97,120,68,114,97,119,66,117,102,102,101,114,115,0,2,16,10,49,0,0,0,2,2,4,15,1,103,108,95,77,111,\r
+100,101,108,86,105,101,119,77,97,116,114,105,120,0,0,0,2,2,4,15,1,103,108,95,80,114,111,106,101,99,\r
+116,105,111,110,77,97,116,114,105,120,0,0,0,2,2,4,15,1,103,108,95,77,111,100,101,108,86,105,101,\r
+119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,0,0,0,2,2,4,15,1,103,108,95,84,101,\r
+120,116,117,114,101,77,97,116,114,105,120,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,\r
+67,111,111,114,100,115,0,0,0,2,2,4,14,1,103,108,95,78,111,114,109,97,108,77,97,116,114,105,120,0,0,\r
+0,2,2,4,15,1,103,108,95,77,111,100,101,108,86,105,101,119,77,97,116,114,105,120,73,110,118,101,114,\r
+115,101,0,0,0,2,2,4,15,1,103,108,95,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,73,\r
+110,118,101,114,115,101,0,0,0,2,2,4,15,1,103,108,95,77,111,100,101,108,86,105,101,119,80,114,111,\r
+106,101,99,116,105,111,110,77,97,116,114,105,120,73,110,118,101,114,115,101,0,0,0,2,2,4,15,1,103,\r
+108,95,84,101,120,116,117,114,101,77,97,116,114,105,120,73,110,118,101,114,115,101,0,3,18,103,108,\r
+95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,15,1,103,108,95,77,111,\r
+100,101,108,86,105,101,119,77,97,116,114,105,120,84,114,97,110,115,112,111,115,101,0,0,0,2,2,4,15,\r
+1,103,108,95,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,84,114,97,110,115,112,111,\r
+115,101,0,0,0,2,2,4,15,1,103,108,95,77,111,100,101,108,86,105,101,119,80,114,111,106,101,99,116,\r
+105,111,110,77,97,116,114,105,120,84,114,97,110,115,112,111,115,101,0,0,0,2,2,4,15,1,103,108,95,84,\r
+101,120,116,117,114,101,77,97,116,114,105,120,84,114,97,110,115,112,111,115,101,0,3,18,103,108,95,\r
+77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,15,1,103,108,95,77,111,100,\r
+101,108,86,105,101,119,77,97,116,114,105,120,73,110,118,101,114,115,101,84,114,97,110,115,112,111,\r
+115,101,0,0,0,2,2,4,15,1,103,108,95,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,73,\r
+110,118,101,114,115,101,84,114,97,110,115,112,111,115,101,0,0,0,2,2,4,15,1,103,108,95,77,111,100,\r
+101,108,86,105,101,119,80,114,111,106,101,99,116,105,111,110,77,97,116,114,105,120,73,110,118,101,\r
+114,115,101,84,114,97,110,115,112,111,115,101,0,0,0,2,2,4,15,1,103,108,95,84,101,120,116,117,114,\r
+101,77,97,116,114,105,120,73,110,118,101,114,115,101,84,114,97,110,115,112,111,115,101,0,3,18,103,\r
+108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,9,1,103,108,95,78,\r
+111,114,109,97,108,83,99,97,108,101,0,0,0,2,2,0,22,103,108,95,68,101,112,116,104,82,97,110,103,101,\r
+80,97,114,97,109,101,116,101,114,115,0,9,110,101,97,114,0,0,0,1,9,102,97,114,0,0,0,1,9,100,105,102,\r
+102,0,0,0,0,0,0,2,2,4,23,103,108,95,68,101,112,116,104,82,97,110,103,101,80,97,114,97,109,101,116,\r
+101,114,115,0,1,103,108,95,68,101,112,116,104,82,97,110,103,101,0,0,0,2,2,4,12,1,103,108,95,67,108,\r
+105,112,80,108,97,110,101,0,3,18,103,108,95,77,97,120,67,108,105,112,80,108,97,110,101,115,0,0,0,2,\r
+2,0,22,103,108,95,80,111,105,110,116,80,97,114,97,109,101,116,101,114,115,0,9,115,105,122,101,0,0,\r
+0,1,9,115,105,122,101,77,105,110,0,0,0,1,9,115,105,122,101,77,97,120,0,0,0,1,9,102,97,100,101,84,\r
+104,114,101,115,104,111,108,100,83,105,122,101,0,0,0,1,9,100,105,115,116,97,110,99,101,67,111,110,\r
+115,116,97,110,116,65,116,116,101,110,117,97,116,105,111,110,0,0,0,1,9,100,105,115,116,97,110,99,\r
+101,76,105,110,101,97,114,65,116,116,101,110,117,97,116,105,111,110,0,0,0,1,9,100,105,115,116,97,\r
+110,99,101,81,117,97,100,114,97,116,105,99,65,116,116,101,110,117,97,116,105,111,110,0,0,0,0,0,0,2,\r
+2,4,23,103,108,95,80,111,105,110,116,80,97,114,97,109,101,116,101,114,115,0,1,103,108,95,80,111,\r
+105,110,116,0,0,0,2,2,0,22,103,108,95,77,97,116,101,114,105,97,108,80,97,114,97,109,101,116,101,\r
+114,115,0,12,101,109,105,115,115,105,111,110,0,0,0,1,12,97,109,98,105,101,110,116,0,0,0,1,12,100,\r
+105,102,102,117,115,101,0,0,0,1,12,115,112,101,99,117,108,97,114,0,0,0,1,9,115,104,105,110,105,110,\r
+101,115,115,0,0,0,0,0,0,2,2,4,23,103,108,95,77,97,116,101,114,105,97,108,80,97,114,97,109,101,116,\r
+101,114,115,0,1,103,108,95,70,114,111,110,116,77,97,116,101,114,105,97,108,0,0,0,2,2,4,23,103,108,\r
+95,77,97,116,101,114,105,97,108,80,97,114,97,109,101,116,101,114,115,0,1,103,108,95,66,97,99,107,\r
+77,97,116,101,114,105,97,108,0,0,0,2,2,0,22,103,108,95,76,105,103,104,116,83,111,117,114,99,101,80,\r
+97,114,97,109,101,116,101,114,115,0,12,97,109,98,105,101,110,116,0,0,0,1,12,100,105,102,102,117,\r
+115,101,0,0,0,1,12,115,112,101,99,117,108,97,114,0,0,0,1,12,112,111,115,105,116,105,111,110,0,0,0,\r
+1,12,104,97,108,102,86,101,99,116,111,114,0,0,0,1,11,115,112,111,116,68,105,114,101,99,116,105,111,\r
+110,0,0,0,1,9,115,112,111,116,69,120,112,111,110,101,110,116,0,0,0,1,9,115,112,111,116,67,117,116,\r
+111,102,102,0,0,0,1,9,115,112,111,116,67,111,115,67,117,116,111,102,102,0,0,0,1,9,99,111,110,115,\r
+116,97,110,116,65,116,116,101,110,117,97,116,105,111,110,0,0,0,1,9,108,105,110,101,97,114,65,116,\r
+116,101,110,117,97,116,105,111,110,0,0,0,1,9,113,117,97,100,114,97,116,105,99,65,116,116,101,110,\r
+117,97,116,105,111,110,0,0,0,0,0,0,2,2,4,23,103,108,95,76,105,103,104,116,83,111,117,114,99,101,80,\r
+97,114,97,109,101,116,101,114,115,0,1,103,108,95,76,105,103,104,116,83,111,117,114,99,101,0,3,18,\r
+103,108,95,77,97,120,76,105,103,104,116,115,0,0,0,2,2,0,22,103,108,95,76,105,103,104,116,77,111,\r
+100,101,108,80,97,114,97,109,101,116,101,114,115,0,12,97,109,98,105,101,110,116,0,0,0,0,0,0,2,2,4,\r
+23,103,108,95,76,105,103,104,116,77,111,100,101,108,80,97,114,97,109,101,116,101,114,115,0,1,103,\r
+108,95,76,105,103,104,116,77,111,100,101,108,0,0,0,2,2,0,22,103,108,95,76,105,103,104,116,77,111,\r
+100,101,108,80,114,111,100,117,99,116,115,0,12,115,99,101,110,101,67,111,108,111,114,0,0,0,0,0,0,2,\r
+2,4,23,103,108,95,76,105,103,104,116,77,111,100,101,108,80,114,111,100,117,99,116,115,0,1,103,108,\r
+95,70,114,111,110,116,76,105,103,104,116,77,111,100,101,108,80,114,111,100,117,99,116,0,0,0,2,2,4,\r
+23,103,108,95,76,105,103,104,116,77,111,100,101,108,80,114,111,100,117,99,116,115,0,1,103,108,95,\r
+66,97,99,107,76,105,103,104,116,77,111,100,101,108,80,114,111,100,117,99,116,0,0,0,2,2,0,22,103,\r
+108,95,76,105,103,104,116,80,114,111,100,117,99,116,115,0,12,97,109,98,105,101,110,116,0,0,0,1,12,\r
+100,105,102,102,117,115,101,0,0,0,1,12,115,112,101,99,117,108,97,114,0,0,0,0,0,0,2,2,4,23,103,108,\r
+95,76,105,103,104,116,80,114,111,100,117,99,116,115,0,1,103,108,95,70,114,111,110,116,76,105,103,\r
+104,116,80,114,111,100,117,99,116,0,3,18,103,108,95,77,97,120,76,105,103,104,116,115,0,0,0,2,2,4,\r
+23,103,108,95,76,105,103,104,116,80,114,111,100,117,99,116,115,0,1,103,108,95,66,97,99,107,76,105,\r
+103,104,116,80,114,111,100,117,99,116,0,3,18,103,108,95,77,97,120,76,105,103,104,116,115,0,0,0,2,2,\r
+4,12,1,103,108,95,84,101,120,116,117,114,101,69,110,118,67,111,108,111,114,0,3,18,103,108,95,77,97,\r
+120,84,101,120,116,117,114,101,73,109,97,103,101,85,110,105,116,115,0,0,0,2,2,4,12,1,103,108,95,69,\r
+121,101,80,108,97,110,101,83,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,\r
+100,115,0,0,0,2,2,4,12,1,103,108,95,69,121,101,80,108,97,110,101,84,0,3,18,103,108,95,77,97,120,84,\r
+101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,12,1,103,108,95,69,121,101,80,108,97,\r
+110,101,82,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,\r
+4,12,1,103,108,95,69,121,101,80,108,97,110,101,81,0,3,18,103,108,95,77,97,120,84,101,120,116,117,\r
+114,101,67,111,111,114,100,115,0,0,0,2,2,4,12,1,103,108,95,79,98,106,101,99,116,80,108,97,110,101,\r
+83,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,12,1,\r
+103,108,95,79,98,106,101,99,116,80,108,97,110,101,84,0,3,18,103,108,95,77,97,120,84,101,120,116,\r
+117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,12,1,103,108,95,79,98,106,101,99,116,80,108,97,110,\r
+101,82,0,3,18,103,108,95,77,97,120,84,101,120,116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,4,\r
+12,1,103,108,95,79,98,106,101,99,116,80,108,97,110,101,81,0,3,18,103,108,95,77,97,120,84,101,120,\r
+116,117,114,101,67,111,111,114,100,115,0,0,0,2,2,0,22,103,108,95,70,111,103,80,97,114,97,109,101,\r
+116,101,114,115,0,12,99,111,108,111,114,0,0,0,1,9,100,101,110,115,105,116,121,0,0,0,1,9,115,116,97,\r
+114,116,0,0,0,1,9,101,110,100,0,0,0,1,9,115,99,97,108,101,0,0,0,0,0,0,2,2,4,23,103,108,95,70,111,\r
+103,80,97,114,97,109,101,116,101,114,115,0,1,103,108,95,70,111,103,0,0,0,1,0,9,0,114,97,100,105,97,\r
+110,115,0,1,0,0,9,100,101,103,0,0,0,1,8,17,51,0,49,52,49,53,57,51,0,0,18,100,101,103,0,48,17,49,56,\r
+48,0,48,0,0,49,0,0,1,0,10,0,114,97,100,105,97,110,115,0,1,0,0,10,100,101,103,0,0,0,1,8,58,118,101,\r
+99,50,0,17,51,0,49,52,49,53,57,51,0,0,0,0,18,100,101,103,0,48,58,118,101,99,50,0,17,49,56,48,0,48,\r
+0,0,0,0,49,0,0,1,0,11,0,114,97,100,105,97,110,115,0,1,0,0,11,100,101,103,0,0,0,1,8,58,118,101,99,\r
+51,0,17,51,0,49,52,49,53,57,51,0,0,0,0,18,100,101,103,0,48,58,118,101,99,51,0,17,49,56,48,0,48,0,0,\r
+0,0,49,0,0,1,0,12,0,114,97,100,105,97,110,115,0,1,0,0,12,100,101,103,0,0,0,1,8,58,118,101,99,52,0,\r
+17,51,0,49,52,49,53,57,51,0,0,0,0,18,100,101,103,0,48,58,118,101,99,52,0,17,49,56,48,0,48,0,0,0,0,\r
+49,0,0,1,0,9,0,100,101,103,114,101,101,115,0,1,0,0,9,114,97,100,0,0,0,1,8,17,49,56,48,0,48,0,0,18,\r
+114,97,100,0,48,17,51,0,49,52,49,53,57,51,0,0,49,0,0,1,0,10,0,100,101,103,114,101,101,115,0,1,0,0,\r
+10,114,97,100,0,0,0,1,8,58,118,101,99,50,0,17,49,56,48,0,48,0,0,0,0,18,114,97,100,0,48,58,118,101,\r
+99,50,0,17,51,0,49,52,49,53,57,51,0,0,0,0,49,0,0,1,0,11,0,100,101,103,114,101,101,115,0,1,0,0,11,\r
+114,97,100,0,0,0,1,8,58,118,101,99,51,0,17,49,56,48,0,48,0,0,0,0,18,114,97,100,0,48,58,118,101,99,\r
+51,0,17,51,0,49,52,49,53,57,51,0,0,0,0,49,0,0,1,0,12,0,100,101,103,114,101,101,115,0,1,0,0,12,114,\r
+97,100,0,0,0,1,8,58,118,101,99,52,0,17,49,56,48,0,48,0,0,0,0,18,114,97,100,0,48,58,118,101,99,52,0,\r
+17,51,0,49,52,49,53,57,51,0,0,0,0,49,0,0,1,0,9,0,115,105,110,0,1,0,0,9,97,110,103,108,101,0,0,0,1,\r
+3,2,0,9,1,120,0,0,0,4,102,108,111,97,116,95,115,105,110,101,0,18,120,0,0,18,97,110,103,108,101,0,0,\r
+0,8,18,120,0,0,0,1,0,10,0,115,105,110,0,1,0,0,10,97,110,103,108,101,0,0,0,1,3,2,0,10,1,117,0,0,0,9,\r
+18,117,0,59,120,0,58,115,105,110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,\r
+58,115,105,110,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,115,105,110,0,1,\r
+0,0,11,97,110,103,108,101,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,105,110,0,18,97,\r
+110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,105,110,0,18,97,110,103,108,101,0,\r
+59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,105,110,0,18,97,110,103,108,101,0,59,122,0,0,0,20,0,8,\r
+18,117,0,0,0,1,0,12,0,115,105,110,0,1,0,0,12,97,110,103,108,101,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,\r
+117,0,59,120,0,58,115,105,110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,\r
+115,105,110,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,105,110,0,18,97,\r
+110,103,108,101,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,115,105,110,0,18,97,110,103,108,101,0,\r
+59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,99,111,115,0,1,0,0,9,97,110,103,108,101,0,0,0,1,8,58,115,\r
+105,110,0,18,97,110,103,108,101,0,17,49,0,53,55,48,56,0,0,46,0,0,0,0,1,0,10,0,99,111,115,0,1,0,0,\r
+10,97,110,103,108,101,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,99,111,115,0,18,97,110,\r
+103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,\r
+0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,99,111,115,0,1,0,0,11,97,110,103,108,101,0,0,0,1,3,2,0,11,1,117,\r
+0,0,0,9,18,117,0,59,120,0,58,99,111,115,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,\r
+121,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,99,111,115,\r
+0,18,97,110,103,108,101,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,99,111,115,0,1,0,0,12,97,110,\r
+103,108,101,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,99,111,115,0,18,97,110,103,108,101,\r
+0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,99,111,115,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,\r
+9,18,117,0,59,122,0,58,99,111,115,0,18,97,110,103,108,101,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,\r
+58,99,111,115,0,18,97,110,103,108,101,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,116,97,110,0,1,0,\r
+0,9,97,110,103,108,101,0,0,0,1,8,58,115,105,110,0,18,97,110,103,108,101,0,0,0,58,99,111,115,0,18,\r
+97,110,103,108,101,0,0,0,49,0,0,1,0,10,0,116,97,110,0,1,0,0,10,97,110,103,108,101,0,0,0,1,3,2,0,10,\r
+1,117,0,0,0,9,18,117,0,59,120,0,58,116,97,110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,\r
+0,59,121,0,58,116,97,110,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,116,\r
+97,110,0,1,0,0,11,97,110,103,108,101,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,116,97,\r
+110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,116,97,110,0,18,97,110,103,\r
+108,101,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,116,97,110,0,18,97,110,103,108,101,0,59,122,0,0,\r
+0,20,0,8,18,117,0,0,0,1,0,12,0,116,97,110,0,1,0,0,12,97,110,103,108,101,0,0,0,1,3,2,0,12,1,117,0,0,\r
+0,9,18,117,0,59,120,0,58,116,97,110,0,18,97,110,103,108,101,0,59,120,0,0,0,20,0,9,18,117,0,59,121,\r
+0,58,116,97,110,0,18,97,110,103,108,101,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,116,97,110,0,18,\r
+97,110,103,108,101,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,116,97,110,0,18,97,110,103,108,101,0,\r
+59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,97,115,105,110,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,0,0,\r
+4,102,108,111,97,116,95,97,114,99,115,105,110,101,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,\r
+0,97,115,105,110,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,97,115,105,110,\r
+0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,115,105,110,0,18,118,0,59,121,0,0,0,20,0,8,\r
+18,117,0,0,0,1,0,11,0,97,115,105,110,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,\r
+0,58,97,115,105,110,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,115,105,110,0,18,118,0,\r
+59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,97,115,105,110,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,\r
+0,1,0,12,0,97,115,105,110,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,97,\r
+115,105,110,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,115,105,110,0,18,118,0,59,121,0,\r
+0,0,20,0,9,18,117,0,59,122,0,58,97,115,105,110,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,\r
+97,115,105,110,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,97,99,111,115,0,1,0,0,9,120,0,0,\r
+0,1,8,17,49,0,53,55,48,56,0,0,58,97,115,105,110,0,18,120,0,0,0,47,0,0,1,0,10,0,97,99,111,115,0,1,0,\r
+0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,97,99,111,115,0,18,118,0,59,120,0,0,0,\r
+20,0,9,18,117,0,59,121,0,58,97,99,111,115,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,97,\r
+99,111,115,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,97,99,111,115,0,18,\r
+118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,99,111,115,0,18,118,0,59,121,0,0,0,20,0,9,18,117,\r
+0,59,122,0,58,97,99,111,115,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,97,99,111,115,0,1,\r
+0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,97,99,111,115,0,18,118,0,59,120,0,0,\r
+0,20,0,9,18,117,0,59,121,0,58,97,99,111,115,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,97,\r
+99,111,115,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,97,99,111,115,0,18,118,0,59,119,0,0,\r
+0,20,0,8,18,117,0,0,0,1,0,9,0,97,116,97,110,0,1,0,0,9,121,95,111,118,101,114,95,120,0,0,0,1,3,2,0,\r
+9,1,122,0,0,0,4,102,108,111,97,116,95,97,114,99,116,97,110,0,18,122,0,0,18,121,95,111,118,101,114,\r
+95,120,0,0,0,8,18,122,0,0,0,1,0,10,0,97,116,97,110,0,1,0,0,10,121,95,111,118,101,114,95,120,0,0,0,\r
+1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,\r
+59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,\r
+0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,97,116,97,110,0,1,0,0,11,121,95,111,118,101,114,95,120,0,0,0,1,\r
+3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,\r
+120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,0,\r
+0,0,20,0,9,18,117,0,59,122,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,122,0,0,0,20,\r
+0,8,18,117,0,0,0,1,0,12,0,97,116,97,110,0,1,0,0,12,121,95,111,118,101,114,95,120,0,0,0,1,3,2,0,12,\r
+1,117,0,0,0,9,18,117,0,59,120,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,120,0,0,0,\r
+20,0,9,18,117,0,59,121,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,121,0,0,0,20,0,9,\r
+18,117,0,59,122,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,122,0,0,0,20,0,9,18,117,\r
+0,59,119,0,58,97,116,97,110,0,18,121,95,111,118,101,114,95,120,0,59,119,0,0,0,20,0,8,18,117,0,0,0,\r
+1,0,9,0,97,116,97,110,0,1,0,0,9,121,0,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,122,0,0,0,9,18,122,0,58,97,\r
+116,97,110,0,18,121,0,18,120,0,49,0,0,20,0,10,18,120,0,17,48,0,48,0,0,40,0,2,10,18,121,0,17,48,0,\r
+48,0,0,40,0,8,18,122,0,17,51,0,49,52,49,53,57,51,0,0,47,0,9,14,0,8,18,122,0,17,51,0,49,52,49,53,57,\r
+51,0,0,46,0,0,9,14,0,8,18,122,0,0,0,1,0,10,0,97,116,97,110,0,1,0,0,10,117,0,0,1,0,0,10,118,0,0,0,1,\r
+3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,58,97,116,97,110,0,18,117,0,59,120,0,0,18,118,0,59,120,0,\r
+0,0,20,0,9,18,116,0,59,121,0,58,97,116,97,110,0,18,117,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,8,\r
+18,116,0,0,0,1,0,11,0,97,116,97,110,0,1,0,0,11,117,0,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,116,0,0,0,9,\r
+18,116,0,59,120,0,58,97,116,97,110,0,18,117,0,59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,116,0,59,\r
+121,0,58,97,116,97,110,0,18,117,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,97,\r
+116,97,110,0,18,117,0,59,122,0,0,18,118,0,59,122,0,0,0,20,0,8,18,116,0,0,0,1,0,12,0,97,116,97,110,\r
+0,1,0,0,12,117,0,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,58,97,116,97,110,\r
+0,18,117,0,59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,97,116,97,110,0,18,117,0,\r
+59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,97,116,97,110,0,18,117,0,59,122,0,0,\r
+18,118,0,59,122,0,0,0,20,0,9,18,116,0,59,119,0,58,97,116,97,110,0,18,117,0,59,119,0,0,18,118,0,59,\r
+119,0,0,0,20,0,8,18,116,0,0,0,1,0,9,0,112,111,119,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,3,2,0,9,1,\r
+112,0,0,0,4,102,108,111,97,116,95,112,111,119,101,114,0,18,112,0,0,18,120,0,0,18,121,0,0,0,8,18,\r
+112,0,0,0,1,0,10,0,112,111,119,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,\r
+116,0,59,120,0,58,112,111,119,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,\r
+58,112,111,119,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,8,18,116,0,0,0,1,0,11,0,112,111,\r
+119,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,58,112,111,\r
+119,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,112,111,119,0,18,118,0,\r
+59,121,0,0,18,117,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,112,111,119,0,18,118,0,59,122,0,0,18,\r
+117,0,59,122,0,0,0,20,0,8,18,116,0,0,0,1,0,12,0,112,111,119,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,\r
+1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,58,112,111,119,0,18,118,0,59,120,0,0,18,117,0,59,120,0,\r
+0,0,20,0,9,18,116,0,59,121,0,58,112,111,119,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,9,18,\r
+116,0,59,122,0,58,112,111,119,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,9,18,116,0,59,119,0,\r
+58,112,111,119,0,18,118,0,59,119,0,0,18,117,0,59,119,0,0,0,20,0,8,18,116,0,0,0,1,0,9,0,101,120,112,\r
+0,1,0,0,9,120,0,0,0,1,8,58,112,111,119,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,18,120,0,0,0,0,0,1,\r
+0,10,0,101,120,112,0,1,0,0,10,118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,50,0,17,50,0,55,49,56,\r
+50,56,49,56,51,0,0,0,0,0,18,118,0,0,0,0,0,1,0,11,0,101,120,112,0,1,0,0,11,118,0,0,0,1,8,58,112,111,\r
+119,0,58,118,101,99,51,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,0,0,18,118,0,0,0,0,0,1,0,12,0,101,\r
+120,112,0,1,0,0,12,118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,52,0,17,50,0,55,49,56,50,56,49,56,\r
+51,0,0,0,0,0,18,118,0,0,0,0,0,1,0,9,0,108,111,103,50,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,0,0,4,\r
+102,108,111,97,116,95,108,111,103,50,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,0,108,111,103,\r
+50,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,108,111,103,50,0,18,118,0,59,\r
+120,0,0,0,20,0,9,18,117,0,59,121,0,58,108,111,103,50,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,\r
+0,11,0,108,111,103,50,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,108,111,\r
+103,50,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,108,111,103,50,0,18,118,0,59,121,0,0,0,\r
+20,0,9,18,117,0,59,122,0,58,108,111,103,50,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,\r
+108,111,103,50,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,108,111,103,50,0,\r
+18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,108,111,103,50,0,18,118,0,59,121,0,0,0,20,0,9,18,\r
+117,0,59,122,0,58,108,111,103,50,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,108,111,103,\r
+50,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,108,111,103,0,1,0,0,9,120,0,0,0,1,8,58,108,\r
+111,103,50,0,18,120,0,0,0,58,108,111,103,50,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,0,49,0,0,1,0,\r
+10,0,108,111,103,0,1,0,0,10,118,0,0,0,1,8,58,108,111,103,50,0,18,118,0,0,0,58,108,111,103,50,0,58,\r
+118,101,99,50,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,0,0,0,49,0,0,1,0,11,0,108,111,103,0,1,0,0,11,\r
+118,0,0,0,1,8,58,108,111,103,50,0,18,118,0,0,0,58,108,111,103,50,0,58,118,101,99,51,0,17,50,0,55,\r
+49,56,50,56,49,56,51,0,0,0,0,0,0,49,0,0,1,0,12,0,108,111,103,0,1,0,0,12,118,0,0,0,1,8,58,108,111,\r
+103,50,0,18,118,0,0,0,58,108,111,103,50,0,58,118,101,99,52,0,17,50,0,55,49,56,50,56,49,56,51,0,0,0,\r
+0,0,0,49,0,0,1,0,9,0,101,120,112,50,0,1,0,0,9,120,0,0,0,1,8,58,112,111,119,0,17,50,0,48,0,0,0,18,\r
+120,0,0,0,0,0,1,0,10,0,101,120,112,50,0,1,0,0,10,118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,50,0,\r
+17,50,0,48,0,0,0,0,0,18,118,0,0,0,0,0,1,0,11,0,101,120,112,50,0,1,0,0,11,118,0,0,0,1,8,58,112,111,\r
+119,0,58,118,101,99,51,0,17,50,0,48,0,0,0,0,0,18,118,0,0,0,0,0,1,0,12,0,101,120,112,50,0,1,0,0,12,\r
+118,0,0,0,1,8,58,112,111,119,0,58,118,101,99,52,0,17,50,0,48,0,0,0,0,0,18,118,0,0,0,0,0,1,0,9,0,\r
+115,113,114,116,0,1,0,0,9,120,0,0,0,1,8,58,112,111,119,0,18,120,0,0,17,48,0,53,0,0,0,0,0,0,1,0,10,\r
+0,115,113,114,116,0,1,0,0,10,118,0,0,0,1,8,58,112,111,119,0,18,118,0,0,58,118,101,99,50,0,17,48,0,\r
+53,0,0,0,0,0,0,0,0,1,0,11,0,115,113,114,116,0,1,0,0,11,118,0,0,0,1,8,58,112,111,119,0,18,118,0,0,\r
+58,118,101,99,51,0,17,48,0,53,0,0,0,0,0,0,0,0,1,0,12,0,115,113,114,116,0,1,0,0,12,118,0,0,0,1,8,58,\r
+112,111,119,0,18,118,0,0,58,118,101,99,52,0,17,48,0,53,0,0,0,0,0,0,0,0,1,0,9,0,105,110,118,101,114,\r
+115,101,115,113,114,116,0,1,0,0,9,120,0,0,0,1,8,17,49,0,48,0,0,58,115,113,114,116,0,18,120,0,0,0,\r
+49,0,0,1,0,10,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,10,118,0,0,0,1,8,58,118,101,99,\r
+50,0,17,49,0,48,0,0,0,0,58,115,113,114,116,0,18,118,0,0,0,49,0,0,1,0,11,0,105,110,118,101,114,115,\r
+101,115,113,114,116,0,1,0,0,11,118,0,0,0,1,8,58,118,101,99,51,0,17,49,0,48,0,0,0,0,58,115,113,114,\r
+116,0,18,118,0,0,0,49,0,0,1,0,12,0,105,110,118,101,114,115,101,115,113,114,116,0,1,0,0,12,118,0,0,\r
+0,1,8,58,118,101,99,52,0,17,49,0,48,0,0,0,0,58,115,113,114,116,0,18,118,0,0,0,49,0,0,1,0,9,0,97,98,\r
+115,0,1,0,0,9,120,0,0,0,1,8,18,120,0,17,48,0,48,0,0,43,18,120,0,18,120,0,54,31,0,0,1,0,10,0,97,98,\r
+115,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,97,98,115,0,18,118,0,59,120,\r
+0,0,0,20,0,9,18,117,0,59,121,0,58,97,98,115,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,\r
+97,98,115,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,97,98,115,0,18,118,0,\r
+59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,97,98,115,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,\r
+0,58,97,98,115,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,97,98,115,0,1,0,0,12,118,0,0,0,\r
+1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,97,98,115,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,\r
+121,0,58,97,98,115,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,97,98,115,0,18,118,0,59,122,\r
+0,0,0,20,0,9,18,117,0,59,119,0,58,97,98,115,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,\r
+115,105,103,110,0,1,0,0,9,120,0,0,0,1,8,18,120,0,17,48,0,48,0,0,41,17,49,0,48,0,0,18,120,0,17,48,0,\r
+48,0,0,40,17,49,0,48,0,0,54,17,48,0,48,0,0,31,31,0,0,1,0,10,0,115,105,103,110,0,1,0,0,10,118,0,0,0,\r
+1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,115,105,103,110,0,18,118,0,59,120,0,0,0,20,0,9,18,\r
+117,0,59,121,0,58,115,105,103,110,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,115,105,103,\r
+110,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,105,103,110,0,18,118,0,\r
+59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,105,103,110,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,\r
+59,122,0,58,115,105,103,110,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,115,105,103,110,0,\r
+1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,115,105,103,110,0,18,118,0,59,120,\r
+0,0,0,20,0,9,18,117,0,59,121,0,58,115,105,103,110,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,\r
+58,115,105,103,110,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,115,105,103,110,0,18,118,0,\r
+59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,102,108,111,111,114,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,\r
+0,0,4,102,108,111,97,116,95,102,108,111,111,114,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,0,\r
+102,108,111,111,114,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,102,108,111,\r
+111,114,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,102,108,111,111,114,0,18,118,0,59,121,\r
+0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,102,108,111,111,114,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,\r
+9,18,117,0,59,120,0,58,102,108,111,111,114,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,102,\r
+108,111,111,114,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,102,108,111,111,114,0,18,118,0,\r
+59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,102,108,111,111,114,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,\r
+117,0,0,0,9,18,117,0,59,120,0,58,102,108,111,111,114,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,\r
+121,0,58,102,108,111,111,114,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,102,108,111,111,\r
+114,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,102,108,111,111,114,0,18,118,0,59,119,0,0,\r
+0,20,0,8,18,117,0,0,0,1,0,9,0,99,101,105,108,0,1,0,0,9,120,0,0,0,1,3,2,0,9,1,121,0,0,0,4,102,108,\r
+111,97,116,95,99,101,105,108,0,18,121,0,0,18,120,0,0,0,8,18,121,0,0,0,1,0,10,0,99,101,105,108,0,1,\r
+0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,99,101,105,108,0,18,118,0,59,120,0,\r
+0,0,20,0,9,18,117,0,59,121,0,58,99,101,105,108,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,\r
+0,99,101,105,108,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,99,101,105,108,\r
+0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,99,101,105,108,0,18,118,0,59,121,0,0,0,20,0,9,\r
+18,117,0,59,122,0,58,99,101,105,108,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,99,101,\r
+105,108,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,99,101,105,108,0,18,118,\r
+0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,99,101,105,108,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,\r
+59,122,0,58,99,101,105,108,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,99,101,105,108,0,18,\r
+118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,102,114,97,99,116,0,1,0,0,9,120,0,0,0,1,8,18,120,0,\r
+58,102,108,111,111,114,0,18,120,0,0,0,47,0,0,1,0,10,0,102,114,97,99,116,0,1,0,0,10,118,0,0,0,1,8,\r
+18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,11,0,102,114,97,99,116,0,1,0,0,11,118,0,\r
+0,0,1,8,18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,12,0,102,114,97,99,116,0,1,0,0,\r
+12,118,0,0,0,1,8,18,118,0,58,102,108,111,111,114,0,18,118,0,0,0,47,0,0,1,0,9,0,109,111,100,0,1,0,0,\r
+9,120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,58,102,108,111,111,114,0,18,120,0,18,121,0,49,0,\r
+0,48,47,0,0,1,0,10,0,109,111,100,0,1,0,0,10,118,0,0,1,0,0,9,117,0,0,0,1,8,18,118,0,18,117,0,58,102,\r
+108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,11,0,109,111,100,0,1,0,0,11,118,0,0,1,0,0,\r
+9,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,\r
+12,0,109,111,100,0,1,0,0,12,118,0,0,1,0,0,9,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,\r
+0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,10,0,109,111,100,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,\r
+8,18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,11,0,109,111,\r
+100,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,18,118,0,18,117,0,58,102,108,111,111,114,0,18,118,0,\r
+18,117,0,49,0,0,48,47,0,0,1,0,12,0,109,111,100,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,18,118,0,\r
+18,117,0,58,102,108,111,111,114,0,18,118,0,18,117,0,49,0,0,48,47,0,0,1,0,9,0,109,105,110,0,1,0,0,9,\r
+120,0,0,1,0,0,9,121,0,0,0,1,8,18,120,0,18,121,0,40,18,120,0,18,121,0,31,0,0,1,0,10,0,109,105,110,0,\r
+1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,58,109,105,110,0,18,\r
+118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,105,110,0,18,118,0,59,121,0,\r
+0,18,117,0,59,121,0,0,0,20,0,8,18,116,0,0,0,1,0,11,0,109,105,110,0,1,0,0,11,118,0,0,1,0,0,11,117,0,\r
+0,0,1,3,2,0,11,1,116,0,0,0,9,18,116,0,59,120,0,58,109,105,110,0,18,118,0,59,120,0,0,18,117,0,59,\r
+120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,105,110,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,\r
+9,18,116,0,59,122,0,58,109,105,110,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,8,18,116,0,0,0,\r
+1,0,12,0,109,105,110,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,\r
+120,0,58,109,105,110,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,\r
+105,110,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,109,105,110,0,18,\r
+118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,9,18,116,0,59,119,0,58,109,105,110,0,18,118,0,59,119,0,\r
+0,18,117,0,59,119,0,0,0,20,0,8,18,116,0,0,0,1,0,10,0,109,105,110,0,1,0,0,10,118,0,0,1,0,0,9,121,0,\r
+0,0,1,8,58,109,105,110,0,18,118,0,0,58,118,101,99,50,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,105,110,0,\r
+1,0,0,11,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,105,110,0,18,118,0,0,58,118,101,99,51,0,18,121,0,0,0,\r
+0,0,0,0,1,0,12,0,109,105,110,0,1,0,0,12,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,105,110,0,18,118,0,0,\r
+58,118,101,99,52,0,18,121,0,0,0,0,0,0,0,1,0,9,0,109,97,120,0,1,0,0,9,120,0,0,1,0,0,9,121,0,0,0,1,8,\r
+18,120,0,18,121,0,40,18,121,0,18,120,0,31,0,0,1,0,10,0,109,97,120,0,1,0,0,10,118,0,0,1,0,0,10,117,\r
+0,0,0,1,3,2,0,10,1,116,0,0,0,9,18,116,0,59,120,0,58,109,97,120,0,18,118,0,59,120,0,0,18,117,0,59,\r
+120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,97,120,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,\r
+8,18,116,0,0,0,1,0,11,0,109,97,120,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,\r
+18,116,0,59,120,0,58,109,97,120,0,18,118,0,59,120,0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,\r
+0,58,109,97,120,0,18,118,0,59,121,0,0,18,117,0,59,121,0,0,0,20,0,9,18,116,0,59,122,0,58,109,97,120,\r
+0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,8,18,116,0,0,0,1,0,12,0,109,97,120,0,1,0,0,12,118,\r
+0,0,1,0,0,12,117,0,0,0,1,3,2,0,12,1,116,0,0,0,9,18,116,0,59,120,0,58,109,97,120,0,18,118,0,59,120,\r
+0,0,18,117,0,59,120,0,0,0,20,0,9,18,116,0,59,121,0,58,109,97,120,0,18,118,0,59,121,0,0,18,117,0,59,\r
+121,0,0,0,20,0,9,18,116,0,59,122,0,58,109,97,120,0,18,118,0,59,122,0,0,18,117,0,59,122,0,0,0,20,0,\r
+9,18,116,0,59,119,0,58,109,97,120,0,18,118,0,59,119,0,0,18,117,0,59,119,0,0,0,20,0,8,18,116,0,0,0,\r
+1,0,10,0,109,97,120,0,1,0,0,10,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,97,120,0,18,118,0,0,58,118,101,\r
+99,50,0,18,121,0,0,0,0,0,0,0,1,0,11,0,109,97,120,0,1,0,0,11,118,0,0,1,0,0,9,121,0,0,0,1,8,58,109,\r
+97,120,0,18,118,0,0,58,118,101,99,51,0,18,121,0,0,0,0,0,0,0,1,0,12,0,109,97,120,0,1,0,0,12,118,0,0,\r
+1,0,0,9,121,0,0,0,1,8,58,109,97,120,0,18,118,0,0,58,118,101,99,52,0,18,121,0,0,0,0,0,0,0,1,0,9,0,\r
+99,108,97,109,112,0,1,0,0,9,120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,97,108,\r
+0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,109,97,\r
+120,86,97,108,0,0,0,0,0,1,0,10,0,99,108,97,109,112,0,1,0,0,10,120,0,0,1,0,0,9,109,105,110,86,97,\r
+108,0,0,1,0,0,9,109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,\r
+105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,11,0,99,108,97,109,112,0,1,0,0,11,\r
+120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,\r
+58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,\r
+12,0,99,108,97,109,112,0,1,0,0,12,120,0,0,1,0,0,9,109,105,110,86,97,108,0,0,1,0,0,9,109,97,120,86,\r
+97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,\r
+109,97,120,86,97,108,0,0,0,0,0,1,0,10,0,99,108,97,109,112,0,1,0,0,10,120,0,0,1,0,0,10,109,105,110,\r
+86,97,108,0,0,1,0,0,10,109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,\r
+18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,11,0,99,108,97,109,112,0,1,\r
+0,0,11,120,0,0,1,0,0,11,109,105,110,86,97,108,0,0,1,0,0,11,109,97,120,86,97,108,0,0,0,1,8,58,109,\r
+105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,108,0,0,0,0,18,109,97,120,86,97,108,0,0,\r
+0,0,0,1,0,12,0,99,108,97,109,112,0,1,0,0,12,120,0,0,1,0,0,12,109,105,110,86,97,108,0,0,1,0,0,12,\r
+109,97,120,86,97,108,0,0,0,1,8,58,109,105,110,0,58,109,97,120,0,18,120,0,0,18,109,105,110,86,97,\r
+108,0,0,0,0,18,109,97,120,86,97,108,0,0,0,0,0,1,0,9,0,109,105,120,0,1,0,0,9,120,0,0,1,0,0,9,121,0,\r
+0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,10,0,\r
+109,105,120,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,\r
+0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,11,0,109,105,120,0,1,0,0,11,120,0,0,1,0,0,11,121,0,0,1,0,0,\r
+9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,12,0,109,105,\r
+120,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,1,0,0,9,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,\r
+18,121,0,18,97,0,48,46,0,0,1,0,10,0,109,105,120,0,1,0,0,10,120,0,0,1,0,0,10,121,0,0,1,0,0,10,97,0,\r
+0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,11,0,109,105,120,0,1,\r
+0,0,11,120,0,0,1,0,0,11,121,0,0,1,0,0,11,97,0,0,0,1,8,18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,\r
+0,18,97,0,48,46,0,0,1,0,12,0,109,105,120,0,1,0,0,12,120,0,0,1,0,0,12,121,0,0,1,0,0,12,97,0,0,0,1,8,\r
+18,120,0,17,49,0,48,0,0,18,97,0,47,48,18,121,0,18,97,0,48,46,0,0,1,0,9,0,115,116,101,112,0,1,0,0,9,\r
+101,100,103,101,0,0,1,0,0,9,120,0,0,0,1,8,18,120,0,18,101,100,103,101,0,40,17,48,0,48,0,0,17,49,0,\r
+48,0,0,31,0,0,1,0,10,0,115,116,101,112,0,1,0,0,10,101,100,103,101,0,0,1,0,0,10,118,0,0,0,1,3,2,0,\r
+10,1,117,0,0,0,9,18,117,0,59,120,0,58,115,116,101,112,0,18,101,100,103,101,0,59,120,0,0,18,118,0,\r
+59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,116,101,112,0,18,101,100,103,101,0,59,121,0,0,18,118,\r
+0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,115,116,101,112,0,1,0,0,11,101,100,103,101,0,0,1,0,0,\r
+11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,116,101,112,0,18,101,100,103,101,0,\r
+59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,116,101,112,0,18,101,100,103,101,\r
+0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,116,101,112,0,18,101,100,103,\r
+101,0,59,122,0,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,115,116,101,112,0,1,0,0,12,101,\r
+100,103,101,0,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,115,116,101,112,0,\r
+18,101,100,103,101,0,59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,116,101,112,\r
+0,18,101,100,103,101,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,116,101,\r
+112,0,18,101,100,103,101,0,59,122,0,0,18,118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,115,116,\r
+101,112,0,18,101,100,103,101,0,59,119,0,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,10,0,115,\r
+116,101,112,0,1,0,0,9,101,100,103,101,0,0,1,0,0,10,118,0,0,0,1,8,58,115,116,101,112,0,58,118,101,\r
+99,50,0,18,101,100,103,101,0,0,0,0,18,118,0,0,0,0,0,1,0,11,0,115,116,101,112,0,1,0,0,9,101,100,103,\r
+101,0,0,1,0,0,11,118,0,0,0,1,8,58,115,116,101,112,0,58,118,101,99,51,0,18,101,100,103,101,0,0,0,0,\r
+18,118,0,0,0,0,0,1,0,12,0,115,116,101,112,0,1,0,0,9,101,100,103,101,0,0,1,0,0,12,118,0,0,0,1,8,58,\r
+115,116,101,112,0,58,118,101,99,52,0,18,101,100,103,101,0,0,0,0,18,118,0,0,0,0,0,1,0,9,0,115,109,\r
+111,111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,49,0,0,1,\r
+0,0,9,120,0,0,0,1,3,2,0,9,1,116,0,0,0,9,18,116,0,58,99,108,97,109,112,0,18,120,0,18,101,100,103,\r
+101,48,0,47,18,101,100,103,101,49,0,18,101,100,103,101,48,0,47,49,0,17,48,0,48,0,0,0,17,49,0,48,0,\r
+0,0,0,20,0,8,18,116,0,18,116,0,48,17,51,0,48,0,0,17,50,0,48,0,0,18,116,0,48,47,48,0,0,1,0,10,0,115,\r
+109,111,111,116,104,115,116,101,112,0,1,0,0,10,101,100,103,101,48,0,0,1,0,0,10,101,100,103,101,49,\r
+0,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,116,104,115,\r
+116,101,112,0,18,101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,0,18,118,0,59,\r
+120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,\r
+48,0,59,121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,\r
+11,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,11,101,100,103,101,48,0,0,1,0,0,11,101,100,\r
+103,101,49,0,0,1,0,0,11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,\r
+116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,0,18,\r
+118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,\r
+100,103,101,48,0,59,121,0,0,18,101,100,103,101,49,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,\r
+0,59,122,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,122,0,0,18,101,\r
+100,103,101,49,0,59,122,0,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,115,109,111,111,116,\r
+104,115,116,101,112,0,1,0,0,12,101,100,103,101,48,0,0,1,0,0,12,101,100,103,101,49,0,0,1,0,0,12,118,\r
+0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,116,104,115,116,101,112,0,18,\r
+101,100,103,101,48,0,59,120,0,0,18,101,100,103,101,49,0,59,120,0,0,18,118,0,59,120,0,0,0,20,0,9,18,\r
+117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,121,0,0,18,\r
+101,100,103,101,49,0,59,121,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,109,111,111,\r
+116,104,115,116,101,112,0,18,101,100,103,101,48,0,59,122,0,0,18,101,100,103,101,49,0,59,122,0,0,18,\r
+118,0,59,122,0,0,0,20,0,9,18,117,0,59,119,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,\r
+100,103,101,48,0,59,119,0,0,18,101,100,103,101,49,0,59,119,0,0,18,118,0,59,119,0,0,0,20,0,8,18,117,\r
+0,0,0,1,0,10,0,115,109,111,111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,\r
+101,100,103,101,49,0,0,1,0,0,10,118,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,\r
+111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,\r
+120,0,0,0,20,0,9,18,117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,\r
+48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,121,0,0,0,20,0,8,18,117,0,0,0,1,0,11,0,115,109,111,\r
+111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,49,0,0,1,0,0,\r
+11,118,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,116,104,115,116,101,112,\r
+0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,120,0,0,0,20,0,9,18,117,0,59,121,\r
+0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,\r
+18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,\r
+100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,122,0,0,0,20,0,8,18,117,0,0,0,1,0,12,0,\r
+115,109,111,111,116,104,115,116,101,112,0,1,0,0,9,101,100,103,101,48,0,0,1,0,0,9,101,100,103,101,\r
+49,0,0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,117,0,0,0,9,18,117,0,59,120,0,58,115,109,111,111,116,104,\r
+115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,120,0,0,0,20,0,9,\r
+18,117,0,59,121,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,\r
+100,103,101,49,0,0,18,118,0,59,121,0,0,0,20,0,9,18,117,0,59,122,0,58,115,109,111,111,116,104,115,\r
+116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,103,101,49,0,0,18,118,0,59,122,0,0,0,20,0,9,18,\r
+117,0,59,119,0,58,115,109,111,111,116,104,115,116,101,112,0,18,101,100,103,101,48,0,0,18,101,100,\r
+103,101,49,0,0,18,118,0,59,119,0,0,0,20,0,8,18,117,0,0,0,1,0,9,0,100,111,116,0,1,0,0,9,120,0,0,1,0,\r
+0,9,121,0,0,0,1,8,18,120,0,18,121,0,48,0,0,1,0,9,0,100,111,116,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,\r
+0,1,8,18,118,0,59,120,0,18,117,0,59,120,0,48,18,118,0,59,121,0,18,117,0,59,121,0,48,46,0,0,1,0,9,0,\r
+100,111,116,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,8,18,118,0,59,120,0,18,117,0,59,120,0,48,18,\r
+118,0,59,121,0,18,117,0,59,121,0,48,46,18,118,0,59,122,0,18,117,0,59,122,0,48,46,0,0,1,0,9,0,100,\r
+111,116,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,18,118,0,59,120,0,18,117,0,59,120,0,48,18,118,0,\r
+59,121,0,18,117,0,59,121,0,48,46,18,118,0,59,122,0,18,117,0,59,122,0,48,46,18,118,0,59,119,0,18,\r
+117,0,59,119,0,48,46,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,9,120,0,0,0,1,8,58,115,113,114,\r
+116,0,58,100,111,116,0,18,120,0,0,18,120,0,0,0,0,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,10,\r
+118,0,0,0,1,8,58,115,113,114,116,0,58,100,111,116,0,18,118,0,0,18,118,0,0,0,0,0,0,0,1,0,9,0,108,\r
+101,110,103,116,104,0,1,0,0,11,118,0,0,0,1,8,58,115,113,114,116,0,58,100,111,116,0,18,118,0,0,18,\r
+118,0,0,0,0,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,12,118,0,0,0,1,8,58,115,113,114,116,0,58,\r
+100,111,116,0,18,118,0,0,18,118,0,0,0,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,9,120,\r
+0,0,1,0,0,9,121,0,0,0,1,8,58,108,101,110,103,116,104,0,18,120,0,18,121,0,47,0,0,0,0,1,0,9,0,100,\r
+105,115,116,97,110,99,101,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,8,58,108,101,110,103,116,104,0,\r
+18,118,0,18,117,0,47,0,0,0,0,1,0,9,0,100,105,115,116,97,110,99,101,0,1,0,0,11,118,0,0,1,0,0,11,117,\r
+0,0,0,1,8,58,108,101,110,103,116,104,0,18,118,0,18,117,0,47,0,0,0,0,1,0,9,0,100,105,115,116,97,110,\r
+99,101,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,8,58,108,101,110,103,116,104,0,18,118,0,18,117,0,47,\r
+0,0,0,0,1,0,11,0,99,114,111,115,115,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,11,1,116,0,0,0,9,\r
+18,116,0,59,120,0,18,118,0,59,121,0,18,117,0,59,122,0,48,18,117,0,59,121,0,18,118,0,59,122,0,48,47,\r
+20,0,9,18,116,0,59,121,0,18,118,0,59,122,0,18,117,0,59,120,0,48,18,117,0,59,122,0,18,118,0,59,120,\r
+0,48,47,20,0,9,18,116,0,59,122,0,18,118,0,59,120,0,18,117,0,59,121,0,48,18,117,0,59,120,0,18,118,0,\r
+59,121,0,48,47,20,0,8,18,116,0,0,0,1,0,9,0,110,111,114,109,97,108,105,122,101,0,1,0,0,9,120,0,0,0,\r
+1,8,17,49,0,48,0,0,0,0,1,0,10,0,110,111,114,109,97,108,105,122,101,0,1,0,0,10,118,0,0,0,1,8,18,118,\r
+0,58,108,101,110,103,116,104,0,18,118,0,0,0,49,0,0,1,0,11,0,110,111,114,109,97,108,105,122,101,0,1,\r
+0,0,11,118,0,0,0,1,8,18,118,0,58,108,101,110,103,116,104,0,18,118,0,0,0,49,0,0,1,0,12,0,110,111,\r
+114,109,97,108,105,122,101,0,1,0,0,12,118,0,0,0,1,8,18,118,0,58,108,101,110,103,116,104,0,18,118,0,\r
+0,0,49,0,0,1,0,9,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,9,78,0,0,1,0,0,9,73,0,0,1,0,0,\r
+9,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,\r
+78,0,18,78,0,54,31,0,0,1,0,10,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,10,78,0,0,1,0,0,\r
+10,73,0,0,1,0,0,10,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,18,73,0,0,0,17,\r
+48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,11,0,102,97,99,101,102,111,114,119,97,114,100,0,1,0,0,\r
+11,78,0,0,1,0,0,11,73,0,0,1,0,0,11,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,114,101,102,0,0,\r
+18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,12,0,102,97,99,101,102,111,114,119,97,\r
+114,100,0,1,0,0,12,78,0,0,1,0,0,12,73,0,0,1,0,0,12,78,114,101,102,0,0,0,1,8,58,100,111,116,0,18,78,\r
+114,101,102,0,0,18,73,0,0,0,17,48,0,48,0,0,40,18,78,0,18,78,0,54,31,0,0,1,0,9,0,114,101,102,108,\r
+101,99,116,0,1,0,0,9,73,0,0,1,0,0,9,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,\r
+18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,10,0,114,101,102,108,101,99,116,0,1,0,0,10,73,0,0,1,0,0,10,78,\r
+0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,\r
+11,0,114,101,102,108,101,99,116,0,1,0,0,11,73,0,0,1,0,0,11,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,\r
+100,111,116,0,18,78,0,0,18,73,0,0,0,48,18,78,0,48,47,0,0,1,0,12,0,114,101,102,108,101,99,116,0,1,0,\r
+0,12,73,0,0,1,0,0,12,78,0,0,0,1,8,18,73,0,17,50,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,\r
+18,78,0,48,47,0,0,1,0,9,0,114,101,102,114,97,99,116,0,1,0,0,9,73,0,0,1,0,0,9,78,0,0,1,0,0,9,101,\r
+116,97,0,0,0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,\r
+49,0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,\r
+47,20,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,\r
+101,116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,\r
+0,48,47,0,0,1,0,10,0,114,101,102,114,97,99,116,0,1,0,0,10,73,0,0,1,0,0,10,78,0,0,1,0,0,9,101,116,\r
+97,0,0,0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,\r
+0,48,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,\r
+20,0,10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,101,\r
+116,97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,0,48,\r
+47,0,0,1,0,11,0,114,101,102,114,97,99,116,0,1,0,0,11,73,0,0,1,0,0,11,78,0,0,1,0,0,9,101,116,97,0,0,\r
+0,1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,0,48,0,\r
+0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,20,0,\r
+10,18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,101,116,\r
+97,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,0,48,47,\r
+0,0,1,0,12,0,114,101,102,114,97,99,116,0,1,0,0,12,73,0,0,1,0,0,12,78,0,0,1,0,0,9,101,116,97,0,0,0,\r
+1,3,2,0,9,1,107,0,0,0,9,18,107,0,17,49,0,48,0,0,18,101,116,97,0,18,101,116,97,0,48,17,49,0,48,0,0,\r
+58,100,111,116,0,18,78,0,0,18,73,0,0,0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,47,48,47,20,0,10,\r
+18,107,0,17,48,0,48,0,0,40,0,8,17,48,0,48,0,0,0,9,14,0,8,18,101,116,97,0,18,73,0,48,18,101,116,97,\r
+0,58,100,111,116,0,18,78,0,0,18,73,0,0,0,48,58,115,113,114,116,0,18,107,0,0,0,46,18,78,0,48,47,0,0,\r
+1,0,13,0,109,97,116,114,105,120,67,111,109,112,77,117,108,116,0,1,0,0,13,109,0,0,1,0,0,13,110,0,0,\r
+0,1,3,2,0,13,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,48,20,\r
+0,9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,20,0,8,18,111,0,0,0,1,\r
+0,14,0,109,97,116,114,105,120,67,111,109,112,77,117,108,116,0,1,0,0,14,109,0,0,1,0,0,14,110,0,0,0,\r
+1,3,2,0,14,1,111,0,0,0,9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,48,20,0,\r
+9,18,111,0,16,10,49,0,57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,20,0,9,18,111,0,16,10,50,\r
+0,57,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,48,20,0,8,18,111,0,0,0,1,0,15,0,109,97,116,114,\r
+105,120,67,111,109,112,77,117,108,116,0,1,0,0,15,109,0,0,1,0,0,15,110,0,0,0,1,3,2,0,15,1,111,0,0,0,\r
+9,18,111,0,16,8,48,0,57,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,48,20,0,9,18,111,0,16,10,49,0,\r
+57,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,48,20,0,9,18,111,0,16,10,50,0,57,18,109,0,16,10,\r
+50,0,57,18,110,0,16,10,50,0,57,48,20,0,9,18,111,0,16,10,51,0,57,18,109,0,16,10,51,0,57,18,110,0,16,\r
+10,51,0,57,48,20,0,8,18,111,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,0,1,0,0,10,118,0,0,1,0,0,\r
+10,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,40,20,0,9,\r
+18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,40,20,0,8,18,98,0,0,0,1,0,3,0,108,101,115,115,\r
+84,104,97,110,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,\r
+0,59,120,0,18,117,0,59,120,0,40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,40,20,\r
+0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,40,20,0,8,18,98,0,0,0,1,0,4,0,108,101,115,\r
+115,84,104,97,110,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,\r
+118,0,59,120,0,18,117,0,59,120,0,40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,40,\r
+20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,40,20,0,9,18,98,0,59,119,0,18,118,0,59,\r
+119,0,18,117,0,59,119,0,40,20,0,8,18,98,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,0,1,0,0,6,118,\r
+0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,\r
+40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,40,20,0,8,18,98,0,0,0,1,0,3,0,108,\r
+101,115,115,84,104,97,110,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,18,98,0,59,\r
+120,0,18,118,0,59,120,0,18,117,0,59,120,0,40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,\r
+121,0,40,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,40,20,0,8,18,98,0,0,0,1,0,4,0,\r
+108,101,115,115,84,104,97,110,0,1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,\r
+59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,40,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,\r
+59,121,0,40,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,40,20,0,9,18,98,0,59,119,0,\r
+18,118,0,59,119,0,18,117,0,59,119,0,40,20,0,8,18,98,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,69,\r
+113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,\r
+118,0,59,120,0,18,117,0,59,120,0,42,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,\r
+20,0,8,18,98,0,0,0,1,0,3,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,11,118,0,0,1,0,\r
+0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,42,20,0,\r
+9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,20,0,9,18,98,0,59,122,0,18,118,0,59,122,\r
+0,18,117,0,59,122,0,42,20,0,8,18,98,0,0,0,1,0,4,0,108,101,115,115,84,104,97,110,69,113,117,97,108,\r
+0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,\r
+117,0,59,120,0,42,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,20,0,9,18,98,0,59,\r
+122,0,18,118,0,59,122,0,18,117,0,59,122,0,42,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,\r
+119,0,42,20,0,8,18,98,0,0,0,1,0,2,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,6,118,\r
+0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,\r
+42,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,20,0,8,18,98,0,0,0,1,0,3,0,108,\r
+101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,1,98,0,0,\r
+0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,42,20,0,9,18,98,0,59,121,0,18,118,0,59,\r
+121,0,18,117,0,59,121,0,42,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,42,20,0,8,\r
+18,98,0,0,0,1,0,4,0,108,101,115,115,84,104,97,110,69,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,117,\r
+0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,42,20,0,9,18,98,\r
+0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,42,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,\r
+0,59,122,0,42,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,42,20,0,8,18,98,0,0,0,1,\r
+0,2,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,2,1,\r
+98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,118,\r
+0,59,121,0,18,117,0,59,121,0,41,20,0,8,18,98,0,0,0,1,0,3,0,103,114,101,97,116,101,114,84,104,97,\r
+110,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,\r
+0,18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,41,20,0,9,18,98,\r
+0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,41,20,0,8,18,98,0,0,0,1,0,4,0,103,114,101,97,116,\r
+101,114,84,104,97,110,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,\r
+0,18,118,0,59,120,0,18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,\r
+0,41,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,41,20,0,9,18,98,0,59,119,0,18,118,\r
+0,59,119,0,18,117,0,59,119,0,41,20,0,8,18,98,0,0,0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,\r
+110,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,\r
+18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,41,20,0,8,18,98,0,\r
+0,0,1,0,3,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,\r
+1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,41,20,0,9,18,98,0,59,121,0,18,\r
+118,0,59,121,0,18,117,0,59,121,0,41,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,41,\r
+20,0,8,18,98,0,0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,0,1,0,0,8,118,0,0,1,0,0,8,117,\r
+0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,41,20,0,9,18,98,\r
+0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,41,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,\r
+0,59,122,0,41,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,41,20,0,8,18,98,0,0,0,1,\r
+0,2,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,10,117,0,\r
+0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,98,0,\r
+59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,43,20,0,8,18,98,0,0,0,1,0,3,0,103,114,101,97,116,101,\r
+114,84,104,97,110,69,113,117,97,108,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,\r
+18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,\r
+18,117,0,59,121,0,43,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,43,20,0,8,18,98,0,\r
+0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,\r
+117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,\r
+98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,43,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,\r
+117,0,59,122,0,43,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,43,20,0,8,18,98,0,0,\r
+0,1,0,2,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,6,118,0,0,1,0,0,6,117,\r
+0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,98,\r
+0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,43,20,0,8,18,98,0,0,0,1,0,3,0,103,114,101,97,116,\r
+101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,\r
+18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,\r
+18,117,0,59,121,0,43,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,43,20,0,8,18,98,0,\r
+0,0,1,0,4,0,103,114,101,97,116,101,114,84,104,97,110,69,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,\r
+117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,43,20,0,9,18,\r
+98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,43,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,\r
+117,0,59,122,0,43,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,43,20,0,8,18,98,0,0,\r
+0,1,0,2,0,101,113,117,97,108,0,1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,\r
+59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,\r
+59,121,0,38,20,0,8,18,98,0,0,0,1,0,3,0,101,113,117,97,108,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,\r
+3,2,0,3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,\r
+0,18,118,0,59,121,0,18,117,0,59,121,0,38,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,\r
+0,38,20,0,8,18,98,0,0,0,1,0,4,0,101,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,\r
+1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,\r
+118,0,59,121,0,18,117,0,59,121,0,38,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,38,\r
+20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,38,20,0,8,18,98,0,0,0,1,0,2,0,101,113,\r
+117,97,108,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,\r
+120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,38,20,0,8,\r
+18,98,0,0,0,1,0,3,0,101,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,3,1,98,0,0,0,9,\r
+18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,\r
+18,117,0,59,121,0,38,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,38,20,0,8,18,98,0,\r
+0,0,1,0,4,0,101,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,3,2,0,4,1,98,0,0,0,9,18,98,0,\r
+59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,38,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,\r
+59,121,0,38,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,38,20,0,9,18,98,0,59,119,0,\r
+18,118,0,59,119,0,18,117,0,59,119,0,38,20,0,8,18,98,0,0,0,1,0,2,0,110,111,116,69,113,117,97,108,0,\r
+1,0,0,10,118,0,0,1,0,0,10,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,\r
+117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,39,20,0,8,18,98,0,0,\r
+0,1,0,3,0,110,111,116,69,113,117,97,108,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,3,1,98,0,0,0,\r
+9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,118,0,59,121,\r
+0,18,117,0,59,121,0,39,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,39,20,0,8,18,98,\r
+0,0,0,1,0,4,0,110,111,116,69,113,117,97,108,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,3,2,0,4,1,98,0,\r
+0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,118,0,59,\r
+121,0,18,117,0,59,121,0,39,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,39,20,0,9,\r
+18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,39,20,0,8,18,98,0,0,0,1,0,2,0,110,111,116,69,\r
+113,117,97,108,0,1,0,0,6,118,0,0,1,0,0,6,117,0,0,0,1,3,2,0,2,1,98,0,0,0,9,18,98,0,59,120,0,18,118,\r
+0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,118,0,59,121,0,18,117,0,59,121,0,39,20,\r
+0,8,18,98,0,0,0,1,0,3,0,110,111,116,69,113,117,97,108,0,1,0,0,7,118,0,0,1,0,0,7,117,0,0,0,1,3,2,0,\r
+3,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,18,\r
+118,0,59,121,0,18,117,0,59,121,0,39,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,39,\r
+20,0,8,18,98,0,0,0,1,0,4,0,110,111,116,69,113,117,97,108,0,1,0,0,8,118,0,0,1,0,0,8,117,0,0,0,1,3,2,\r
+0,4,1,98,0,0,0,9,18,98,0,59,120,0,18,118,0,59,120,0,18,117,0,59,120,0,39,20,0,9,18,98,0,59,121,0,\r
+18,118,0,59,121,0,18,117,0,59,121,0,39,20,0,9,18,98,0,59,122,0,18,118,0,59,122,0,18,117,0,59,122,0,\r
+39,20,0,9,18,98,0,59,119,0,18,118,0,59,119,0,18,117,0,59,119,0,39,20,0,8,18,98,0,0,0,1,0,1,0,97,\r
+110,121,0,1,0,0,2,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,32,0,0,1,0,1,0,97,110,121,0,1,\r
+0,0,3,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,32,18,118,0,59,122,0,32,0,0,1,0,1,0,97,110,\r
+121,0,1,0,0,4,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,32,18,118,0,59,122,0,32,18,118,0,\r
+59,119,0,32,0,0,1,0,1,0,97,108,108,0,1,0,0,2,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,34,\r
+0,0,1,0,1,0,97,108,108,0,1,0,0,3,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,34,18,118,0,59,\r
+122,0,34,0,0,1,0,1,0,97,108,108,0,1,0,0,4,118,0,0,0,1,8,18,118,0,59,120,0,18,118,0,59,121,0,34,18,\r
+118,0,59,122,0,34,18,118,0,59,119,0,34,0,0,1,0,2,0,110,111,116,0,1,0,0,2,118,0,0,0,1,3,2,0,2,1,117,\r
+0,0,0,9,18,117,0,59,120,0,18,118,0,59,120,0,56,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,56,20,0,\r
+8,18,117,0,0,0,1,0,3,0,110,111,116,0,1,0,0,3,118,0,0,0,1,3,2,0,3,1,117,0,0,0,9,18,117,0,59,120,0,\r
+18,118,0,59,120,0,56,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,56,20,0,9,18,117,0,59,122,0,18,118,\r
+0,59,122,0,56,20,0,8,18,117,0,0,0,1,0,4,0,110,111,116,0,1,0,0,4,118,0,0,0,1,3,2,0,4,1,117,0,0,0,9,\r
+18,117,0,59,120,0,18,118,0,59,120,0,56,20,0,9,18,117,0,59,121,0,18,118,0,59,121,0,56,20,0,9,18,117,\r
+0,59,122,0,18,118,0,59,122,0,56,20,0,9,18,117,0,59,119,0,18,118,0,59,119,0,56,20,0,8,18,117,0,0,0,\r
+1,0,12,0,116,101,120,116,117,114,101,49,68,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,9,99,\r
+111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,\r
+114,101,49,68,80,114,111,106,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,10,99,111,111,114,100,\r
+0,0,0,1,8,58,116,101,120,116,117,114,101,49,68,0,18,115,97,109,112,108,101,114,0,0,18,99,111,111,\r
+114,100,0,59,115,0,18,99,111,111,114,100,0,59,116,0,49,0,0,0,0,1,0,12,0,116,101,120,116,117,114,\r
+101,49,68,80,114,111,106,0,1,0,0,16,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,\r
+0,1,8,58,116,101,120,116,117,114,101,49,68,0,18,115,97,109,112,108,101,114,0,0,18,99,111,111,114,\r
+100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,\r
+68,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,10,99,111,111,114,100,0,0,0,1,8,58,118,101,99,\r
+52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,\r
+115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,\r
+59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,112,0,49,20,0,9,18,117,0,59,\r
+116,0,18,99,111,111,114,100,0,59,116,0,18,99,111,111,114,100,0,59,112,0,49,20,0,8,58,116,101,120,\r
+116,117,114,101,50,68,0,18,115,97,109,112,108,101,114,0,0,18,117,0,0,0,0,0,1,0,12,0,116,101,120,\r
+116,117,114,101,50,68,80,114,111,106,0,1,0,0,17,115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,\r
+114,100,0,0,0,1,3,2,0,10,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,\r
+111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,114,100,0,59,116,0,18,99,111,\r
+111,114,100,0,59,113,0,49,20,0,8,58,116,101,120,116,117,114,101,50,68,0,18,115,97,109,112,108,101,\r
+114,0,0,18,117,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,0,1,0,0,18,115,97,109,112,108,\r
+101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,\r
+0,116,101,120,116,117,114,101,51,68,80,114,111,106,0,1,0,0,18,115,97,109,112,108,101,114,0,0,1,0,0,\r
+12,99,111,111,114,100,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,111,114,100,0,59,\r
+115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,114,100,0,59,116,\r
+0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,112,0,18,99,111,111,114,100,0,59,112,0,18,\r
+99,111,111,114,100,0,59,113,0,49,20,0,8,58,116,101,120,116,117,114,101,51,68,0,18,115,97,109,112,\r
+108,101,114,0,0,18,117,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,67,117,98,101,0,1,0,0,19,115,\r
+97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,\r
+0,0,0,0,1,0,12,0,115,104,97,100,111,119,49,68,0,1,0,0,20,115,97,109,112,108,101,114,0,0,1,0,0,11,\r
+99,111,111,114,100,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,\r
+119,50,68,0,1,0,0,21,115,97,109,112,108,101,114,0,0,1,0,0,11,99,111,111,114,100,0,0,0,1,8,58,118,\r
+101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,49,68,80,114,111,106,0,1,0,0,20,\r
+115,97,109,112,108,101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,\r
+59,115,0,18,99,111,111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,\r
+116,0,17,48,0,48,0,0,20,0,9,18,117,0,59,112,0,18,99,111,111,114,100,0,59,112,0,18,99,111,111,114,\r
+100,0,59,113,0,49,20,0,8,58,115,104,97,100,111,119,49,68,0,18,115,97,109,112,108,101,114,0,0,18,\r
+117,0,0,0,0,0,1,0,12,0,115,104,97,100,111,119,50,68,80,114,111,106,0,1,0,0,21,115,97,109,112,108,\r
+101,114,0,0,1,0,0,12,99,111,111,114,100,0,0,0,1,3,2,0,11,1,117,0,0,0,9,18,117,0,59,115,0,18,99,111,\r
+111,114,100,0,59,115,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,116,0,18,99,111,111,\r
+114,100,0,59,116,0,18,99,111,111,114,100,0,59,113,0,49,20,0,9,18,117,0,59,112,0,18,99,111,111,114,\r
+100,0,59,112,0,18,99,111,111,114,100,0,59,113,0,49,20,0,8,58,115,104,97,100,111,119,50,68,0,18,115,\r
+97,109,112,108,101,114,0,0,18,117,0,0,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,9,120,0,0,0,1,8,\r
+17,48,0,48,0,0,0,0,1,0,9,0,110,111,105,115,101,49,0,1,0,0,10,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,\r
+9,0,110,111,105,115,101,49,0,1,0,0,11,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,9,0,110,111,105,115,101,\r
+49,0,1,0,0,12,120,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,9,120,0,0,0,\r
+1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,10,120,0,0,0,\r
+1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,11,120,0,0,0,\r
+1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,10,0,110,111,105,115,101,50,0,1,0,0,12,120,0,0,0,\r
+1,8,58,118,101,99,50,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,9,120,0,0,0,\r
+1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,10,120,0,0,0,\r
+1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,11,120,0,0,0,\r
+1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,11,0,110,111,105,115,101,51,0,1,0,0,12,120,0,0,0,\r
+1,8,58,118,101,99,51,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,9,120,0,0,0,\r
+1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,10,120,0,0,0,\r
+1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,11,120,0,0,0,\r
+1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,12,0,110,111,105,115,101,52,0,1,0,0,12,120,0,0,0,\r
+1,8,58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,0\r