From 209657f69055b17b00c3db3f99c7f411a6e8d176 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Fri, 17 Feb 2017 16:11:01 +0100 Subject: nx-X11/extras/Mesa: Drop bundled Mesa, place a symlink to imported Git subtree of Mesa_6.4.1 instead. --- .../shader/slang/library/slang_common_builtin_gc.h | 1410 ------------ .../slang/library/slang_common_builtin_gc_bin.h | 943 -------- .../src/mesa/shader/slang/library/slang_core_gc.h | 1565 ------------- .../mesa/shader/slang/library/slang_core_gc_bin.h | 490 ---- .../slang/library/slang_fragment_builtin_gc.h | 366 --- .../slang/library/slang_fragment_builtin_gc_bin.h | 87 - .../mesa/shader/slang/library/slang_shader_syn.h | 758 ------- .../mesa/shader/slang/library/slang_version_syn.h | 64 - .../shader/slang/library/slang_vertex_builtin_gc.h | 262 --- .../slang/library/slang_vertex_builtin_gc_bin.h | 82 - .../Mesa/src/mesa/shader/slang/slang_assemble.c | 1208 ---------- .../Mesa/src/mesa/shader/slang/slang_assemble.h | 145 -- .../mesa/shader/slang/slang_assemble_assignment.c | 187 -- .../mesa/shader/slang/slang_assemble_assignment.h | 45 - .../mesa/shader/slang/slang_assemble_conditional.c | 485 ---- .../mesa/shader/slang/slang_assemble_conditional.h | 67 - .../mesa/shader/slang/slang_assemble_constructor.c | 339 --- .../mesa/shader/slang/slang_assemble_constructor.h | 80 - .../mesa/shader/slang/slang_assemble_typeinfo.c | 430 ---- .../mesa/shader/slang/slang_assemble_typeinfo.h | 67 - .../Mesa/src/mesa/shader/slang/slang_compile.c | 2369 -------------------- .../Mesa/src/mesa/shader/slang/slang_compile.h | 271 --- .../Mesa/src/mesa/shader/slang/slang_execute.c | 352 --- .../Mesa/src/mesa/shader/slang/slang_execute.h | 57 - .../Mesa/src/mesa/shader/slang/slang_preprocess.c | 87 - .../Mesa/src/mesa/shader/slang/slang_preprocess.h | 39 - .../Mesa/src/mesa/shader/slang/slang_storage.c | 255 --- .../Mesa/src/mesa/shader/slang/slang_storage.h | 109 - .../Mesa/src/mesa/shader/slang/slang_utility.c | 73 - .../Mesa/src/mesa/shader/slang/slang_utility.h | 51 - .../Mesa/src/mesa/shader/slang/traverse_wrap.h | 112 - 31 files changed, 12855 deletions(-) delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_common_builtin_gc.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_common_builtin_gc_bin.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_core_gc.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_core_gc_bin.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_fragment_builtin_gc.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_fragment_builtin_gc_bin.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_shader_syn.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_version_syn.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_vertex_builtin_gc.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_vertex_builtin_gc_bin.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_assignment.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_assignment.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_conditional.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_conditional.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_constructor.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_constructor.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_typeinfo.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_typeinfo.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_compile.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_compile.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_execute.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_execute.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_preprocess.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_preprocess.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_storage.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_storage.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_utility.c delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/slang_utility.h delete mode 100644 nx-X11/extras/Mesa/src/mesa/shader/slang/traverse_wrap.h (limited to 'nx-X11/extras/Mesa/src/mesa/shader/slang') diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_common_builtin_gc.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_common_builtin_gc.h deleted file mode 100644 index cd9d9ac7d..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_common_builtin_gc.h +++ /dev/null @@ -1,1410 +0,0 @@ -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"const int gl_MaxLights = 8;\n" -"const int gl_MaxClipPlanes = 6;\n" -"const int gl_MaxTextureUnits = 2;\n" -"const int gl_MaxTextureCoords = 2;\n" -"const int gl_MaxVertexAttribs = 16;\n" -"const int gl_MaxVertexUniformComponents = 512;\n" -"const int gl_MaxVaryingFloats = 32;\n" -"const int gl_MaxVertexTextureImageUnits = 0;\n" -"const int gl_MaxCombinedTextureImageUnits = 2;\n" -"const int gl_MaxTextureImageUnits = 2;\n" -"const int gl_MaxFragmentUniformComponents = 64;\n" -"const int gl_MaxDrawBuffers = 1;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"uniform mat4 gl_ModelViewMatrix;\n" -"uniform mat4 gl_ProjectionMatrix;\n" -"uniform mat4 gl_ModelViewProjectionMatrix;\n" -"uniform mat4 gl_TextureMatrix[gl_MaxTextureCoords];\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"uniform mat3 gl_NormalMatrix;\n" -"\n" -"\n" -"uniform mat4 gl_ModelViewMatrixInverse;\n" -"uniform mat4 gl_ProjectionMatrixInverse;\n" -"uniform mat4 gl_ModelViewProjectionMatrixInverse;\n" -"uniform mat4 gl_TextureMatrixInverse[gl_MaxTextureCoords];\n" -"\n" -"uniform mat4 gl_ModelViewMatrixTranspose;\n" -"uniform mat4 gl_ProjectionMatrixTranspose;\n" -"uniform mat4 gl_ModelViewProjectionMatrixTranspose;\n" -"uniform mat4 gl_TextureMatrixTranspose[gl_MaxTextureCoords];\n" -"\n" -"uniform mat4 gl_ModelViewMatrixInverseTranspose;\n" -"uniform mat4 gl_ProjectionMatrixInverseTranspose;\n" -"uniform mat4 gl_ModelViewProjectionMatrixInverseTranspose;\n" -"uniform mat4 gl_TextureMatrixInverseTranspose[gl_MaxTextureCoords];\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"uniform float gl_NormalScale;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"struct gl_DepthRangeParameters {\n" -" float near;\n" -" float far;\n" -" float diff;\n" -"};\n" -"\n" -"uniform gl_DepthRangeParameters gl_DepthRange;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"uniform vec4 gl_ClipPlane[gl_MaxClipPlanes];\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"struct gl_PointParameters {\n" -" float size;\n" -" float sizeMin;\n" -" float sizeMax;\n" -" float fadeThresholdSize;\n" -" float distanceConstantAttenuation;\n" -" float distanceLinearAttenuation;\n" -" float distanceQuadraticAttenuation;\n" -"};\n" -"\n" -"uniform gl_PointParameters gl_Point;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"struct gl_MaterialParameters {\n" -" vec4 emission;\n" -" vec4 ambient;\n" -" vec4 diffuse;\n" -" vec4 specular;\n" -" float shininess;\n" -"};\n" -"\n" -"uniform gl_MaterialParameters gl_FrontMaterial;\n" -"uniform gl_MaterialParameters gl_BackMaterial;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"struct gl_LightSourceParameters {\n" -" vec4 ambient;\n" -" vec4 diffuse;\n" -" vec4 specular;\n" -" vec4 position;\n" -" vec4 halfVector;\n" -" vec3 spotDirection;\n" -" float spotExponent;\n" -" float spotCutoff;\n" -"\n" -" float spotCosCutoff;\n" -"\n" -" float constantAttenuation;\n" -" float linearAttenuation;\n" -" float quadraticAttenuation;\n" -"};\n" -"\n" -"uniform gl_LightSourceParameters gl_LightSource[gl_MaxLights];\n" -"\n" -"struct gl_LightModelParameters {\n" -" vec4 ambient;\n" -"};\n" -"\n" -"uniform gl_LightModelParameters gl_LightModel;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"struct gl_LightModelProducts {\n" -" vec4 sceneColor;\n" -"};\n" -"\n" -"uniform gl_LightModelProducts gl_FrontLightModelProduct;\n" -"uniform gl_LightModelProducts gl_BackLightModelProduct;\n" -"\n" -"struct gl_LightProducts {\n" -" vec4 ambient;\n" -" vec4 diffuse;\n" -" vec4 specular;\n" -"};\n" -"\n" -"uniform gl_LightProducts gl_FrontLightProduct[gl_MaxLights];\n" -"uniform gl_LightProducts gl_BackLightProduct[gl_MaxLights];\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"uniform vec4 gl_TextureEnvColor[gl_MaxTextureImageUnits];\n" -"uniform vec4 gl_EyePlaneS[gl_MaxTextureCoords];\n" -"uniform vec4 gl_EyePlaneT[gl_MaxTextureCoords];\n" -"uniform vec4 gl_EyePlaneR[gl_MaxTextureCoords];\n" -"uniform vec4 gl_EyePlaneQ[gl_MaxTextureCoords];\n" -"uniform vec4 gl_ObjectPlaneS[gl_MaxTextureCoords];\n" -"uniform vec4 gl_ObjectPlaneT[gl_MaxTextureCoords];\n" -"uniform vec4 gl_ObjectPlaneR[gl_MaxTextureCoords];\n" -"uniform vec4 gl_ObjectPlaneQ[gl_MaxTextureCoords];\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"struct gl_FogParameters {\n" -" vec4 color;\n" -" float density;\n" -" float start;\n" -" float end;\n" -" float scale;\n" -"};\n" -"\n" -"uniform gl_FogParameters gl_Fog;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float radians (float deg) {\n" -" return 3.141593 * deg / 180.0;\n" -"}\n" -"vec2 radians (vec2 deg) {\n" -" return vec2 (radians (deg.x), radians (deg.y));\n" -"}\n" -"vec3 radians (vec3 deg) {\n" -" return vec3 (radians (deg.x), radians (deg.y), radians (deg.z));\n" -"}\n" -"vec4 radians (vec4 deg) {\n" -" return vec4 (radians (deg.x), radians (deg.y), radians (deg.z), radians (deg.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float degrees (float rad) {\n" -" return 180.0 * rad / 3.141593;\n" -"}\n" -"vec2 degrees (vec2 rad) {\n" -" return vec2 (degrees (rad.x), degrees (rad.y));\n" -"}\n" -"vec3 degrees (vec3 rad) {\n" -" return vec3 (degrees (rad.x), degrees (rad.y), degrees (rad.z));\n" -"}\n" -"vec4 degrees (vec4 rad) {\n" -" return vec4 (degrees (rad.x), degrees (rad.y), degrees (rad.z), degrees (rad.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float sin (float angle) {\n" -" return 0.0;\n" -"}\n" -"vec2 sin (vec2 angle) {\n" -" return vec2 (sin (angle.x), sin (angle.y));\n" -"}\n" -"vec3 sin (vec3 angle) {\n" -" return vec3 (sin (angle.x), sin (angle.y), sin (angle.z));\n" -"}\n" -"vec4 sin (vec4 angle) {\n" -" return vec4 (sin (angle.x), sin (angle.y), sin (angle.z), sin (angle.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float cos (float angle) {\n" -" return sin (angle + 1.5708);\n" -"}\n" -"vec2 cos (vec2 angle) {\n" -" return vec2 (cos (angle.x), cos (angle.y));\n" -"}\n" -"vec3 cos (vec3 angle) {\n" -" return vec3 (cos (angle.x), cos (angle.y), cos (angle.z));\n" -"}\n" -"vec4 cos (vec4 angle) {\n" -" return vec4 (cos (angle.x), cos (angle.y), cos (angle.z), cos (angle.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float tan (float angle) {\n" -" return sin (angle) / cos (angle);\n" -"}\n" -"vec2 tan (vec2 angle) {\n" -" return vec2 (tan (angle.x), tan (angle.y));\n" -"}\n" -"vec3 tan (vec3 angle) {\n" -" return vec3 (tan (angle.x), tan (angle.y), tan (angle.z));\n" -"}\n" -"vec4 tan (vec4 angle) {\n" -" return vec4 (tan (angle.x), tan (angle.y), tan (angle.z), tan (angle.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float asin (float x) {\n" -" return 0.0;\n" -"}\n" -"vec2 asin (vec2 x) {\n" -" return vec2 (asin (x.x), asin (x.y));\n" -"}\n" -"vec3 asin (vec3 x) {\n" -" return vec3 (asin (x.x), asin (x.y), asin (x.z));\n" -"}\n" -"vec4 asin (vec4 x) {\n" -" return vec4 (asin (x.x), asin (x.y), asin (x.z), asin (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float acos (float x) {\n" -" return 0.0;\n" -"}\n" -"vec2 acos (vec2 x) {\n" -" return vec2 (acos (x.x), acos (x.y));\n" -"}\n" -"vec3 acos (vec3 x) {\n" -" return vec3 (acos (x.x), acos (x.y), acos (x.z));\n" -"}\n" -"vec4 acos (vec4 x) {\n" -" return vec4 (acos (x.x), acos (x.y), acos (x.z), acos (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float atan (float x, float y) {\n" -" return 0.0;\n" -"}\n" -"vec2 atan (vec2 x, vec2 y) {\n" -" return vec2 (atan (x.x, y.x), atan (x.y, y.y));\n" -"}\n" -"vec3 atan (vec3 x, vec3 y) {\n" -" return vec3 (atan (x.x, y.x), atan (x.y, y.y), atan (x.z, y.z));\n" -"}\n" -"vec4 atan (vec4 x, vec4 y) {\n" -" return vec4 (atan (x.x, y.x), atan (x.y, y.y), atan (x.z, y.z), atan (x.w, y.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float atan (float y_over_x) {\n" -" return 0.0;\n" -"}\n" -"vec2 atan (vec2 y_over_x) {\n" -" return vec2 (atan (y_over_x.x), atan (y_over_x.y));\n" -"}\n" -"vec3 atan (vec3 y_over_x) {\n" -" return vec3 (atan (y_over_x.x), atan (y_over_x.y), atan (y_over_x.z));\n" -"}\n" -"vec4 atan (vec4 y_over_x) {\n" -" return vec4 (atan (y_over_x.x), atan (y_over_x.y), atan (y_over_x.z), atan (y_over_x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float pow (float x, float y) {\n" -" return 0.0;\n" -"}\n" -"vec2 pow (vec2 x, vec2 y) {\n" -" return vec2 (pow (x.x, y.x), pow (x.y, y.y));\n" -"}\n" -"vec3 pow (vec3 x, vec3 y) {\n" -" return vec3 (pow (x.x, y.x), pow (x.y, y.y), pow (x.z, y.z));\n" -"}\n" -"vec4 pow (vec4 x, vec4 y) {\n" -" return vec4 (pow (x.x, y.x), pow (x.y, y.y), pow (x.z, y.z), pow (x.w, y.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float exp (float x) {\n" -" return pow (2.71828183, x);\n" -"}\n" -"vec2 exp (vec2 x) {\n" -" return vec2 (exp (x.x), exp (x.y));\n" -"}\n" -"vec3 exp (vec3 x) {\n" -" return vec3 (exp (x.x), exp (x.y), exp (x.z));\n" -"}\n" -"vec4 exp (vec4 x) {\n" -" return vec4 (exp (x.x), exp (x.y), exp (x.z), exp (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float log (float x) {\n" -" return log2 (x) / log2 (2.71828183);\n" -"}\n" -"vec2 log (vec2 x) {\n" -" return vec2 (log (x.x), log (x.y));\n" -"}\n" -"vec3 log (vec3 x) {\n" -" return vec3 (log (x.x), log (x.y), log (x.z));\n" -"}\n" -"vec4 log (vec4 x) {\n" -" return vec4 (log (x.x), log (x.y), log (x.z), log (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float exp2 (float x) {\n" -" return pow (2.0, x);\n" -"}\n" -"vec2 exp2 (vec2 x) {\n" -" return vec2 (exp2 (x.x), exp2 (x.y));\n" -"}\n" -"vec3 exp2 (vec3 x) {\n" -" return vec3 (exp2 (x.x), exp2 (x.y), exp2 (x.z));\n" -"}\n" -"vec4 exp2 (vec4 x) {\n" -" return vec4 (exp2 (x.x), exp2 (x.y), exp2 (x.z), exp2 (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float log2 (float x) {\n" -" return 0.0;\n" -"}\n" -"vec2 log2 (vec2 x) {\n" -" return vec2 (log2 (x.x), log2 (x.y));\n" -"}\n" -"vec3 log2 (vec3 x) {\n" -" return vec3 (log2 (x.x), log2 (x.y), log2 (x.z));\n" -"}\n" -"vec4 log2 (vec4 x) {\n" -" return vec4 (log2 (x.x), log2 (x.y), log2 (x.z), log2 (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float sqrt (float x) {\n" -" return pow (x, 0.5);\n" -"}\n" -"vec2 sqrt (vec2 x) {\n" -" return vec2 (sqrt (x.x), sqrt (x.y));\n" -"}\n" -"vec3 sqrt (vec3 x) {\n" -" return vec3 (sqrt (x.x), sqrt (x.y), sqrt (x.z));\n" -"}\n" -"vec4 sqrt (vec4 x) {\n" -" return vec4 (sqrt (x.x), sqrt (x.y), sqrt (x.z), sqrt (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float inversesqrt (float x) {\n" -" return 1.0 / sqrt (x);\n" -"}\n" -"vec2 inversesqrt (vec2 x) {\n" -" return vec2 (inversesqrt (x.x), inversesqrt (x.y));\n" -"}\n" -"vec3 inversesqrt (vec3 x) {\n" -" return vec3 (inversesqrt (x.x), inversesqrt (x.y), inversesqrt (x.z));\n" -"}\n" -"vec4 inversesqrt (vec4 x) {\n" -" return vec4 (inversesqrt (x.x), inversesqrt (x.y), inversesqrt (x.z), inversesqrt (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float abs (float x) {\n" -" return x >= 0.0 ? x : -x;\n" -"}\n" -"vec2 abs (vec2 x) {\n" -" return vec2 (abs (x.x), abs (x.y));\n" -"}\n" -"vec3 abs (vec3 x) {\n" -" return vec3 (abs (x.x), abs (x.y), abs (x.z));\n" -"}\n" -"vec4 abs (vec4 x) {\n" -" return vec4 (abs (x.x), abs (x.y), abs (x.z), abs (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float sign (float x) {\n" -" return x > 0.0 ? 1.0 : x < 0.0 ? -1.0 : 0.0;\n" -"}\n" -"vec2 sign (vec2 x) {\n" -" return vec2 (sign (x.x), sign (x.y));\n" -"}\n" -"vec3 sign (vec3 x) {\n" -" return vec3 (sign (x.x), sign (x.y), sign (x.z));\n" -"}\n" -"vec4 sign (vec4 x) {\n" -" return vec4 (sign (x.x), sign (x.y), sign (x.z), sign (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float floor (float x) {\n" -" return 0.0;\n" -"}\n" -"vec2 floor (vec2 x) {\n" -" return vec2 (floor (x.x), floor (x.y));\n" -"}\n" -"vec3 floor (vec3 x) {\n" -" return vec3 (floor (x.x), floor (x.y), floor (x.z));\n" -"}\n" -"vec4 floor (vec4 x) {\n" -" return vec4 (floor (x.x), floor (x.y), floor (x.z), floor (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float ceil (float x) {\n" -" return 0.0;\n" -"}\n" -"vec2 ceil (vec2 x) {\n" -" return vec2 (ceil (x.x), ceil (x.y));\n" -"}\n" -"vec3 ceil (vec3 x) {\n" -" return vec3 (ceil (x.x), ceil (x.y), ceil (x.z));\n" -"}\n" -"vec4 ceil (vec4 x) {\n" -" return vec4 (ceil (x.x), ceil (x.y), ceil (x.z), ceil (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float fract (float x) {\n" -" return x - floor (x);\n" -"}\n" -"vec2 fract (vec2 x) {\n" -" return vec2 (fract (x.x), fract (x.y));\n" -"}\n" -"vec3 fract (vec3 x) {\n" -" return vec3 (fract (x.x), fract (x.y), fract (x.z));\n" -"}\n" -"vec4 fract (vec4 x) {\n" -" return vec4 (fract (x.x), fract (x.y), fract (x.z), fract (x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float mod (float x, float y) {\n" -" return x - y * floor (x / y);\n" -"}\n" -"vec2 mod (vec2 x, float y) {\n" -" return vec2 (mod (x.x, y), mod (x.y, y));\n" -"}\n" -"vec3 mod (vec3 x, float y) {\n" -" return vec3 (mod (x.x, y), mod (x.y, y), mod (x.z, y));\n" -"}\n" -"vec4 mod (vec4 x, float y) {\n" -" return vec4 (mod (x.x, y), mod (x.y, y), mod (x.z, y), mod (x.w, y));\n" -"}\n" -"vec2 mod (vec2 x, vec2 y) {\n" -" return vec2 (mod (x.x, y.x), mod (x.y, y.y));\n" -"}\n" -"vec3 mod (vec3 x, vec3 y) {\n" -" return vec3 (mod (x.x, y.x), mod (x.y, y.y), mod (x.z, y.z));\n" -"}\n" -"vec4 mod (vec4 x, vec4 y) {\n" -" return vec4 (mod (x.x, y.x), mod (x.y, y.y), mod (x.z, y.z), mod (x.w, y.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float min (float x, float y) {\n" -" return y < x ? y : x;\n" -"}\n" -"vec2 min (vec2 x, float y) {\n" -" return vec2 (min (x.x, y), min (x.y, y));\n" -"}\n" -"vec3 min (vec3 x, float y) {\n" -" return vec3 (min (x.x, y), min (x.y, y), min (x.z, y));\n" -"}\n" -"vec4 min (vec4 x, float y) {\n" -" return vec4 (min (x.x, y), min (x.y, y), min (x.z, y), min (x.w, y));\n" -"}\n" -"vec2 min (vec2 x, vec2 y) {\n" -" return vec2 (min (x.x, y.x), min (x.y, y.y));\n" -"}\n" -"vec3 min (vec3 x, vec3 y) {\n" -" return vec3 (min (x.x, y.x), min (x.y, y.y), min (x.z, y.z));\n" -"}\n" -"vec4 min (vec4 x, vec4 y) {\n" -" return vec4 (min (x.x, y.x), min (x.y, y.y), min (x.z, y.z), min (x.w, y.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float max (float x, float y) {\n" -" return min (y, x);\n" -"}\n" -"vec2 max (vec2 x, float y) {\n" -" return vec2 (max (x.x, y), max (x.y, y));\n" -"}\n" -"vec3 max (vec3 x, float y) {\n" -" return vec3 (max (x.x, y), max (x.y, y), max (x.z, y));\n" -"}\n" -"vec4 max (vec4 x, float y) {\n" -" return vec4 (max (x.x, y), max (x.y, y), max (x.z, y), max (x.w, y));\n" -"}\n" -"vec2 max (vec2 x, vec2 y) {\n" -" return vec2 (max (x.x, y.x), max (x.y, y.y));\n" -"}\n" -"vec3 max (vec3 x, vec3 y) {\n" -" return vec3 (max (x.x, y.x), max (x.y, y.y), max (x.z, y.z));\n" -"}\n" -"vec4 max (vec4 x, vec4 y) {\n" -" return vec4 (max (x.x, y.x), max (x.y, y.y), max (x.z, y.z), max (x.w, y.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float clamp (float x, float minVal, float maxVal) {\n" -" return min (max (x, minVal), maxVal);\n" -"}\n" -"vec2 clamp (vec2 x, float minVal, float maxVal) {\n" -" return vec2 (clamp (x.x, minVal, maxVal), clamp (x.y, minVal, maxVal));\n" -"}\n" -"vec3 clamp (vec3 x, float minVal, float maxVal) {\n" -" return vec3 (clamp (x.x, minVal, maxVal), clamp (x.y, minVal, maxVal),\n" -" clamp (x.z, minVal, maxVal));\n" -"}\n" -"vec4 clamp (vec4 x, float minVal, float maxVal) {\n" -" return vec4 (clamp (x.x, minVal, maxVal), clamp (x.y, minVal, maxVal),\n" -" clamp (x.z, minVal, maxVal), clamp (x.w, minVal, maxVal));\n" -"}\n" -"vec2 clamp (vec2 x, vec2 minVal, vec2 maxVal) {\n" -" return vec2 (clamp (x.x, minVal.x, maxVal.x), clamp (x.y, minVal.y, maxVal.y));\n" -"}\n" -"vec3 clamp (vec3 x, vec3 minVal, vec3 maxVal) {\n" -" return vec3 (clamp (x.x, minVal.x, maxVal.x), clamp (x.y, minVal.y, maxVal.y),\n" -" clamp (x.z, minVal.z, maxVal.z));\n" -"}\n" -"vec4 clamp (vec4 x, vec4 minVal, vec4 maxVal) {\n" -" return vec4 (clamp (x.x, minVal.x, maxVal.y), clamp (x.y, minVal.y, maxVal.y),\n" -" clamp (x.z, minVal.z, maxVal.z), clamp (x.w, minVal.w, maxVal.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float mix (float x, float y, float a) {\n" -" return x * (1.0 - a) + y * a;\n" -"}\n" -"vec2 mix (vec2 x, vec2 y, float a) {\n" -" return vec2 (mix (x.x, y.x, a), mix (x.y, y.y, a));\n" -"}\n" -"vec3 mix (vec3 x, vec3 y, float a) {\n" -" return vec3 (mix (x.x, y.x, a), mix (x.y, y.y, a), mix (x.z, y.z, a));\n" -"}\n" -"vec4 mix (vec4 x, vec4 y, float a) {\n" -" 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));\n" -"}\n" -"vec2 mix (vec2 x, vec2 y, vec2 a) {\n" -" return vec2 (mix (x.x, y.x, a.x), mix (x.y, y.y, a.y));\n" -"}\n" -"vec3 mix (vec3 x, vec3 y, vec3 a) {\n" -" return vec3 (mix (x.x, y.x, a.x), mix (x.y, y.y, a.y), mix (x.z, y.z, a.z));\n" -"}\n" -"vec4 mix (vec4 x, vec4 y, vec4 a) {\n" -" return vec4 (mix (x.x, y.x, a.x), mix (x.y, y.y, a.y), mix (x.z, y.z, a.z),\n" -" mix (x.w, y.w, a.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float step (float edge, float x) {\n" -" return x < edge ? 0.0 : 1.0;\n" -"}\n" -"vec2 step (float edge, vec2 x) {\n" -" return vec2 (step (edge, x.x), step (edge, x.y));\n" -"}\n" -"vec3 step (float edge, vec3 x) {\n" -" return vec3 (step (edge, x.x), step (edge, x.y), step (edge, x.z));\n" -"}\n" -"vec4 step (float edge, vec4 x) {\n" -" return vec4 (step (edge, x.x), step (edge, x.y), step (edge, x.z), step (edge, x.w));\n" -"}\n" -"vec2 step (vec2 edge, vec2 x) {\n" -" return vec2 (step (edge.x, x.x), step (edge.y, x.y));\n" -"}\n" -"vec3 step (vec3 edge, vec3 x) {\n" -" return vec3 (step (edge.x, x.x), step (edge.y, x.y), step (edge.z, x.z));\n" -"}\n" -"vec4 step (vec4 edge, vec4 x) {\n" -" return vec4 (step (edge.x, x.x), step (edge.y, x.y), step (edge.z, x.z), step (edge.w, x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float smoothstep (float edge0, float edge1, float x) {\n" -" const float t = clamp ((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n" -" return t * t * (3.0 - 2.0 * t);\n" -"}\n" -"vec2 smoothstep (float edge0, float edge1, vec2 x) {\n" -" return vec2 (smoothstep (edge0, edge1, x.x), smoothstep (edge0, edge1, x.y));\n" -"}\n" -"vec3 smoothstep (float edge0, float edge1, vec3 x) {\n" -" return vec3 (smoothstep (edge0, edge1, x.x), smoothstep (edge0, edge1, x.y),\n" -" smoothstep (edge0, edge1, x.z));\n" -"}\n" -"vec4 smoothstep (float edge0, float edge1, vec4 x) {\n" -" return vec4 (smoothstep (edge0, edge1, x.x), smoothstep (edge0, edge1, x.y),\n" -" smoothstep (edge0, edge1, x.z), smoothstep (edge0, edge1, x.w));\n" -"}\n" -"vec2 smoothstep (vec2 edge0, vec2 edge1, vec2 x) {\n" -" return vec2 (smoothstep (edge0.x, edge1.x, x.x), smoothstep (edge0.y, edge1.y, x.y));\n" -"}\n" -"vec3 smoothstep (vec3 edge0, vec3 edge1, vec3 x) {\n" -" return vec3 (smoothstep (edge0.x, edge1.x, x.x), smoothstep (edge0.y, edge1.y, x.y),\n" -" smoothstep (edge0.z, edge1.z, x.z));\n" -"}\n" -"vec4 smoothstep (vec4 edge0, vec4 edge1, vec4 x) {\n" -" return vec4 (smoothstep (edge0.x, edge1.x, x.x), smoothstep (edge0.y, edge1.y, x.y),\n" -" smoothstep (edge0.z, edge1.z, x.z), smoothstep (edge0.w, edge1.w, x.w));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float dot (float x, float y) {\n" -" return x * y;\n" -"}\n" -"float dot (vec2 x, vec2 y) {\n" -" return dot (x.x, y.x) + dot (x.y, y.y);\n" -"}\n" -"float dot (vec3 x, vec3 y) {\n" -" return dot (x.x, y.x) + dot (x.y, y.y) + dot (x.z, y.z);\n" -"}\n" -"float dot (vec4 x, vec4 y) {\n" -" return dot (x.x, y.x) + dot (x.y, y.y) + dot (x.z, y.z) + dot (x.w, y.w);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float length (float x) {\n" -" return sqrt (dot (x, x));\n" -"}\n" -"float length (vec2 x) {\n" -" return sqrt (dot (x, x));\n" -"}\n" -"float length (vec3 x) {\n" -" return sqrt (dot (x, x));\n" -"}\n" -"float length (vec4 x) {\n" -" return sqrt (dot (x, x));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float distance (float x, float y) {\n" -" return length (x - y);\n" -"}\n" -"float distance (vec2 x, vec2 y) {\n" -" return length (x - y);\n" -"}\n" -"float distance (vec3 x, vec3 y) {\n" -" return length (x - y);\n" -"}\n" -"float distance (vec4 x, vec4 y) {\n" -" return length (x - y);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec3 cross (vec3 x, vec3 y) {\n" -" 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);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float normalize (float x) {\n" -" return 1.0;\n" -"}\n" -"vec2 normalize (vec2 x) {\n" -" return x / length (x);\n" -"}\n" -"vec3 normalize (vec3 x) {\n" -" return x / length (x);\n" -"}\n" -"vec4 normalize (vec4 x) {\n" -" return x / length (x);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float faceforward (float N, float I, float Nref) {\n" -" return dot (Nref, I) < 0.0 ? N : -N;\n" -"}\n" -"vec2 faceforward (vec2 N, vec2 I, vec2 Nref) {\n" -" return dot (Nref, I) < 0.0 ? N : -N;\n" -"}\n" -"vec3 faceforward (vec3 N, vec3 I, vec3 Nref) {\n" -" return dot (Nref, I) < 0.0 ? N : -N;\n" -"}\n" -"vec4 faceforward (vec4 N, vec4 I, vec4 Nref) {\n" -" return dot (Nref, I) < 0.0 ? N : -N;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float reflect (float I, float N) {\n" -" return I - 2.0 * dot (N, I) * N;\n" -"}\n" -"vec2 reflect (vec2 I, vec2 N) {\n" -" return I - 2.0 * dot (N, I) * N;\n" -"}\n" -"vec3 reflect (vec3 I, vec3 N) {\n" -" return I - 2.0 * dot (N, I) * N;\n" -"}\n" -"vec4 reflect (vec4 I, vec4 N) {\n" -" return I - 2.0 * dot (N, I) * N;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float refract (float I, float N, float eta) {\n" -" const float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));\n" -" if (k < 0.0)\n" -" return 0.0;\n" -" return eta * I - (eta * dot (N, I) + sqrt (k)) * N;\n" -"}\n" -"vec2 refract (vec2 I, vec2 N, float eta) {\n" -" const float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));\n" -" if (k < 0.0)\n" -" return vec2 (0.0);\n" -" return eta * I - (eta * dot (N, I) + sqrt (k)) * N;\n" -"}\n" -"vec3 refract (vec3 I, vec3 N, float eta) {\n" -" const float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));\n" -" if (k < 0.0)\n" -" return vec3 (0.0);\n" -" return eta * I - (eta * dot (N, I) + sqrt (k)) * N;\n" -"}\n" -"vec4 refract (vec4 I, vec4 N, float eta) {\n" -" const float k = 1.0 - eta * eta * (1.0 - dot (N, I) * dot (N, I));\n" -" if (k < 0.0)\n" -" return vec4 (0.0);\n" -" return eta * I - (eta * dot (N, I) + sqrt (k)) * N;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"mat2 matrixCompMult (mat2 x, mat2 y) {\n" -" return mat2 (\n" -" x[0].x * y[0].x, x[0].y * y[0].y,\n" -" x[1].x * y[1].x, x[1].y * y[1].y\n" -" );\n" -"}\n" -"mat3 matrixCompMult (mat3 x, mat3 y) {\n" -" return mat4 (\n" -" x[0].x * y[0].x, x[0].y * y[0].y, x[0].z * y[0].z,\n" -" x[1].x * y[1].x, x[1].y * y[1].y, x[1].z * y[1].z,\n" -" x[2].x * y[2].x, x[2].y * y[2].y, x[2].z * y[2].z\n" -" );\n" -"}\n" -"mat4 matrixCompMult (mat4 x, mat4 y) {\n" -" return mat4 (\n" -" x[0].x * y[0].x, x[0].y * y[0].y, x[0].z * y[0].z + x[0].w * y[0].w,\n" -" x[1].x * y[1].x, x[1].y * y[1].y, x[1].z * y[1].z + x[1].w * y[1].w,\n" -" x[2].x * y[2].x, x[2].y * y[2].y, x[2].z * y[2].z + x[2].w * y[2].w,\n" -" x[3].x * y[3].x, x[3].y * y[3].y, x[3].z * y[3].z + x[3].w * y[3].w\n" -" );\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bvec2 lessThan (vec2 x, vec2 y) {\n" -" return bvec2 (x.x < y.x, x.y < y.y);\n" -"}\n" -"bvec3 lessThan (vec3 x, vec3 y) {\n" -" return bvec3 (x.x < y.x, x.y < y.y, x.z < y.z);\n" -"}\n" -"bvec4 lessThan (vec4 x, vec4 y) {\n" -" return bvec4 (x.x < y.x, x.y < y.y, x.z < y.z, x.w < y.w);\n" -"}\n" -"bvec2 lessThan (ivec2 x, ivec2 y) {\n" -" return bvec2 (x.x < y.x, x.y < y.y);\n" -"}\n" -"bvec3 lessThan (ivec3 x, ivec3 y) {\n" -" return bvec3 (x.x < y.x, x.y < y.y, x.z < y.z);\n" -"}\n" -"bvec4 lessThan (ivec4 x, ivec4 y) {\n" -" return bvec4 (x.x < y.x, x.y < y.y, x.z < y.z, x.w < y.w);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bvec2 lessThanEqual (vec2 x, vec2 y) {\n" -" return bvec2 (x.x <= y.x, x.y <= y.y);\n" -"}\n" -"bvec3 lessThanEqual (vec3 x, vec3 y) {\n" -" return bvec3 (x.x <= y.x, x.y <= y.y, x.z <= y.z);\n" -"}\n" -"bvec4 lessThanEqual (vec4 x, vec4 y) {\n" -" return bvec4 (x.x <= y.x, x.y <= y.y, x.z <= y.z, x.w <= y.w);\n" -"}\n" -"bvec2 lessThanEqual (ivec2 x, ivec2 y) {\n" -" return bvec2 (x.x <= y.x, x.y <= y.y);\n" -"}\n" -"bvec3 lessThanEqual (ivec3 x, ivec3 y) {\n" -" return bvec3 (x.x <= y.x, x.y <= y.y, x.z <= y.z);\n" -"}\n" -"bvec4 lessThanEqual (ivec4 x, ivec4 y) {\n" -" return bvec4 (x.x <= y.x, x.y <= y.y, x.z <= y.z, x.w <= y.w);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bvec2 greaterThan (vec2 x, vec2 y) {\n" -" return bvec2 (x.x > y.x, x.y > y.y);\n" -"}\n" -"bvec3 greaterThan (vec3 x, vec3 y) {\n" -" return bvec3 (x.x > y.x, x.y > y.y, x.z > y.z);\n" -"}\n" -"bvec4 greaterThan (vec4 x, vec4 y) {\n" -" return bvec4 (x.x > y.x, x.y > y.y, x.z > y.z, x.w > y.w);\n" -"}\n" -"bvec2 greaterThan (ivec2 x, ivec2 y) {\n" -" return bvec2 (x.x > y.x, x.y > y.y);\n" -"}\n" -"bvec3 greaterThan (ivec3 x, ivec3 y) {\n" -" return bvec3 (x.x > y.x, x.y > y.y, x.z > y.z);\n" -"}\n" -"bvec4 greaterThan (ivec4 x, ivec4 y) {\n" -" return bvec4 (x.x > y.x, x.y > y.y, x.z > y.z, x.w > y.w);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bvec2 greaterThanEqual (vec2 x, vec2 y) {\n" -" return bvec2 (x.x >= y.x, x.y >= y.y);\n" -"}\n" -"bvec3 greaterThanEqual (vec3 x, vec3 y) {\n" -" return bvec3 (x.x >= y.x, x.y >= y.y, x.z >= y.z);\n" -"}\n" -"bvec4 greaterThanEqual (vec4 x, vec4 y) {\n" -" return bvec4 (x.x >= y.x, x.y >= y.y, x.z >= y.z, x.w >= y.w);\n" -"}\n" -"bvec2 greaterThanEqual (ivec2 x, ivec2 y) {\n" -" return bvec2 (x.x >= y.x, x.y >= y.y);\n" -"}\n" -"bvec3 greaterThanEqual (ivec3 x, ivec3 y) {\n" -" return bvec3 (x.x >= y.x, x.y >= y.y, x.z >= y.z);\n" -"}\n" -"bvec4 greaterThanEqual (ivec4 x, ivec4 y) {\n" -" return bvec4 (x.x >= y.x, x.y >= y.y, x.z >= y.z, x.w >= y.w);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bvec2 equal (vec2 x, vec2 y) {\n" -" return bvec2 (x.x == y.x, x.y == y.y);\n" -"}\n" -"bvec3 equal (vec3 x, vec3 y) {\n" -" return bvec3 (x.x == y.x, x.y == y.y, x.z == y.z);\n" -"}\n" -"bvec4 equal (vec4 x, vec4 y) {\n" -" return bvec4 (x.x == y.x, x.y == y.y, x.z == y.z, x.w == y.w);\n" -"}\n" -"bvec2 equal (ivec2 x, ivec2 y) {\n" -" return bvec2 (x.x == y.x, x.y == y.y);\n" -"}\n" -"bvec3 equal (ivec3 x, ivec3 y) {\n" -" return bvec3 (x.x == y.x, x.y == y.y, x.z == y.z);\n" -"}\n" -"bvec4 equal (ivec4 x, ivec4 y) {\n" -" return bvec4 (x.x == y.x, x.y == y.y, x.z == y.z, x.w == y.w);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bvec2 notEqual (vec2 x, vec2 y) {\n" -" return bvec2 (x.x != y.x, x.y != y.y);\n" -"}\n" -"bvec3 notEqual (vec3 x, vec3 y) {\n" -" return bvec3 (x.x != y.x, x.y != y.y, x.z != y.z);\n" -"}\n" -"bvec4 notEqual (vec4 x, vec4 y) {\n" -" return bvec4 (x.x != y.x, x.y != y.y, x.z != y.z, x.w != y.w);\n" -"}\n" -"bvec2 notEqual (ivec2 x, ivec2 y) {\n" -" return bvec2 (x.x != y.x, x.y != y.y);\n" -"}\n" -"bvec3 notEqual (ivec3 x, ivec3 y) {\n" -" return bvec3 (x.x != y.x, x.y != y.y, x.z != y.z);\n" -"}\n" -"bvec4 notEqual (ivec4 x, ivec4 y) {\n" -" return bvec4 (x.x != y.x, x.y != y.y, x.z != y.z, x.w != y.w);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bool any (bvec2 x) {\n" -" return x.x || x.y;\n" -"}\n" -"bool any (bvec3 x) {\n" -" return x.x || x.y || x.z;\n" -"}\n" -"bool any (bvec4 x) {\n" -" return x.x || x.y || x.z || x.w;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bool all (bvec2 x) {\n" -" return x.x && x.y;\n" -"}\n" -"bool all (bvec3 x) {\n" -" return x.x && x.y && x.z;\n" -"}\n" -"bool all (bvec4 x) {\n" -" return x.x && x.y && x.z && x.w;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bvec2 not (bvec2 x) {\n" -" return bvec2 (!x.x, !x.y);\n" -"}\n" -"bvec3 not (bvec3 x) {\n" -" return bvec3 (!x.x, !x.y, !x.z);\n" -"}\n" -"bvec4 not (bvec4 x) {\n" -" return bvec4 (!x.x, !x.y, !x.z, !x.w);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture1D (sampler1D sampler, float coord) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture1DProj (sampler1D sampler, vec2 coord) {\n" -" return texture1D (sampler, coord.s / coord.t);\n" -"}\n" -"vec4 texture1DProj (sampler1D sampler, vec4 coord) {\n" -" return texture1D (sampler, coord.s / coord.q);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture2D (sampler2D sampler, vec2 coord) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture2DProj (sampler2D sampler, vec3 coord) {\n" -" return texture2D (sampler, vec2 (coord.s / coord.p, coord.t / coord.p));\n" -"}\n" -"vec4 texture2DProj (sampler2D sampler, vec4 coord) {\n" -" return texture2D (sampler, vec2 (coord.s / coord.q, coord.t / coord.q));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture3D (sampler3D sampler, vec3 coord) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture3DProj (sampler3D sampler, vec4 coord) {\n" -" return texture3D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 textureCube (samplerCube sampler, vec3 coord) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 shadow1D (sampler1DShadow sampler, vec3 coord) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"vec4 shadow2D (sampler2DShadow sampler, vec3 coord) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord) {\n" -" return shadow1D (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q));\n" -"}\n" -"vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord) {\n" -" return shadow2D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q));\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float noise1 (float x) {\n" -" return 0.0;\n" -"}\n" -"\n" -"float noise1 (vec2 x) {\n" -" return 0.0;\n" -"}\n" -"\n" -"float noise1 (vec3 x) {\n" -" return 0.0;\n" -"}\n" -"\n" -"float noise1 (vec4 x) {\n" -" return 0.0;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec2 noise2 (float x) {\n" -" return vec2 (0.0);\n" -"}\n" -"\n" -"vec2 noise2 (vec2 x) {\n" -" return vec2 (0.0);\n" -"}\n" -"\n" -"vec2 noise2 (vec3 x) {\n" -" return vec2 (0.0);\n" -"}\n" -"\n" -"vec2 noise2 (vec4 x) {\n" -" return vec2 (0.0);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec3 noise3 (float x) {\n" -" return vec3 (0.0);\n" -"}\n" -"\n" -"vec3 noise3 (vec2 x) {\n" -" return vec3 (0.0);\n" -"}\n" -"\n" -"vec3 noise3 (vec3 x) {\n" -" return vec3 (0.0);\n" -"}\n" -"\n" -"vec3 noise3 (vec4 x) {\n" -" return vec3 (0.0);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 noise4 (float x) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"vec4 noise4 (vec2 x) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"vec4 noise4 (vec3 x) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"vec4 noise4 (vec4 x) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_common_builtin_gc_bin.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_common_builtin_gc_bin.h deleted file mode 100644 index 971229a92..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_common_builtin_gc_bin.h +++ /dev/null @@ -1,943 +0,0 @@ -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 \ No newline at end of file diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_core_gc.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_core_gc.h deleted file mode 100644 index f838859bb..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_core_gc.h +++ /dev/null @@ -1,1565 +0,0 @@ -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"int __constructor (const float _f) {\n" -" int _i;\n" -" __asm float_to_int _i, _f;\n" -" return _i;\n" -"}\n" -"\n" -"bool __constructor (const int _i) {\n" -" return _i != 0;\n" -"}\n" -"\n" -"bool __constructor (const float _f) {\n" -" return _f != 0.0;\n" -"}\n" -"\n" -"int __constructor (const bool _b) {\n" -" return _b ? 1 : 0;\n" -"}\n" -"\n" -"float __constructor (const bool _b) {\n" -" return _b ? 1.0 : 0.0;\n" -"}\n" -"\n" -"float __constructor (const int _i) {\n" -" float _f;\n" -" __asm int_to_float _f, _i;\n" -" return _f;\n" -"}\n" -"\n" -"bool __constructor (const bool _b) {\n" -" return _b;\n" -"}\n" -"\n" -"int __constructor (const int _i) {\n" -" return _i;\n" -"}\n" -"\n" -"float __constructor (const float _f) {\n" -" return _f;\n" -"}\n" -"\n" -"vec2 __constructor (const float _f) {\n" -" return vec2 (_f, _f);\n" -"}\n" -"\n" -"vec2 __constructor (const int _i) {\n" -" return vec2 (_i, _i);\n" -"}\n" -"\n" -"vec2 __constructor (const bool _b) {\n" -" return vec2 (_b, _b);\n" -"}\n" -"\n" -"vec3 __constructor (const float _f) {\n" -" return vec3 (_f, _f, _f);\n" -"}\n" -"\n" -"vec3 __constructor (const int _i) {\n" -" return vec3 (_i, _i, _i);\n" -"}\n" -"\n" -"vec3 __constructor (const bool _b) {\n" -" return vec3 (_b, _b, _b);\n" -"}\n" -"\n" -"vec4 __constructor (const float _f) {\n" -" return vec4 (_f, _f, _f, _f);\n" -"}\n" -"\n" -"vec4 __constructor (const int _i) {\n" -" return vec4 (_i, _i, _i, _i);\n" -"}\n" -"\n" -"vec4 __constructor (const bool _b) {\n" -" return vec4 (_b, _b, _b, _b);\n" -"}\n" -"\n" -"ivec2 __constructor (const int _i) {\n" -" return ivec2 (_i, _i);\n" -"}\n" -"\n" -"ivec2 __constructor (const float _f) {\n" -" return ivec2 (_f, _f);\n" -"}\n" -"\n" -"ivec2 __constructor (const bool _b) {\n" -" return ivec2 (_b, _b);\n" -"}\n" -"\n" -"ivec3 __constructor (const int _i) {\n" -" return ivec3 (_i, _i, _i);\n" -"}\n" -"\n" -"ivec3 __constructor (const float _f) {\n" -" return ivec3 (_f, _f, _f);\n" -"}\n" -"\n" -"ivec3 __constructor (const bool _b) {\n" -" return ivec3 (_b, _b, _b);\n" -"}\n" -"\n" -"ivec4 __constructor (const int _i) {\n" -" return ivec4 (_i, _i, _i, _i);\n" -"}\n" -"\n" -"ivec4 __constructor (const float _f) {\n" -" return ivec4 (_f, _f, _f, _f);\n" -"}\n" -"\n" -"ivec4 __constructor (const bool _b) {\n" -" return ivec4 (_b, _b, _b, _b);\n" -"}\n" -"\n" -"bvec2 __constructor (const bool _b) {\n" -" return bvec2 (_b, _b);\n" -"}\n" -"\n" -"bvec2 __constructor (const float _f) {\n" -" return bvec2 (_f, _f);\n" -"}\n" -"\n" -"bvec2 __constructor (const int _i) {\n" -" return bvec2 (_i, _i);\n" -"}\n" -"\n" -"bvec3 __constructor (const bool _b) {\n" -" return bvec3 (_b, _b, _b);\n" -"}\n" -"\n" -"bvec3 __constructor (const float _f) {\n" -" return bvec3 (_f, _f, _f);\n" -"}\n" -"\n" -"bvec3 __constructor (const int _i) {\n" -" return bvec3 (_i, _i, _i);\n" -"}\n" -"\n" -"bvec4 __constructor (const bool _b) {\n" -" return bvec4 (_b, _b, _b, _b);\n" -"}\n" -"\n" -"bvec4 __constructor (const float _f) {\n" -" return bvec4 (_f, _f, _f, _f);\n" -"}\n" -"\n" -"bvec4 __constructor (const int _i) {\n" -" return bvec4 (_i, _i, _i, _i);\n" -"}\n" -"\n" -"mat2 __constructor (const float _f) {\n" -" return mat2 (\n" -" _f, .0,\n" -" .0, _f\n" -" );\n" -"}\n" -"\n" -"mat2 __constructor (const int _i) {\n" -" return mat2 (\n" -" _i, .0,\n" -" .0, _i\n" -" );\n" -"}\n" -"\n" -"mat2 __constructor (const bool _b) {\n" -" return mat2 (\n" -" _b, .0,\n" -" .0, _b\n" -" );\n" -"}\n" -"\n" -"mat3 __constructor (const float _f) {\n" -" return mat3 (\n" -" _f, .0, .0,\n" -" .0, _f, .0,\n" -" .0, .0, _f\n" -" );\n" -"}\n" -"\n" -"mat3 __constructor (const int _i) {\n" -" return mat3 (\n" -" _i, .0, .0,\n" -" .0, _i, .0,\n" -" .0, .0, _i\n" -" );\n" -"}\n" -"\n" -"mat3 __constructor (const bool _b) {\n" -" return mat3 (\n" -" _b, .0, .0,\n" -" .0, _b, .0,\n" -" .0, .0, _b\n" -" );\n" -"}\n" -"\n" -"mat4 __constructor (const float _f) {\n" -" return mat4 (\n" -" _f, .0, .0, .0,\n" -" .0, _f, .0, .0,\n" -" .0, .0, _f, .0,\n" -" .0, .0, .0, _f\n" -" );\n" -"}\n" -"\n" -"mat4 __constructor (const int _i) {\n" -" return mat4 (\n" -" _i, .0, .0, .0,\n" -" .0, _i, .0, .0,\n" -" .0, .0, _i, .0,\n" -" .0, .0, .0, _i\n" -" );\n" -"}\n" -"\n" -"mat4 __constructor (const bool _b) {\n" -" return mat4 (\n" -" _b, .0, .0, .0,\n" -" .0, _b, .0, .0,\n" -" .0, .0, _b, .0,\n" -" .0, .0, .0, _b\n" -" );\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"void __operator += (inout float a, const float b) {\n" -" __asm float_add a, a, b;\n" -"}\n" -"\n" -"float __operator - (const float a) {\n" -" float c;\n" -" __asm float_negate c, a;\n" -" return c;\n" -"}\n" -"\n" -"void __operator -= (inout float a, const float b) {\n" -" a += -b;\n" -"}\n" -"\n" -"void __operator *= (inout float a, const float b) {\n" -" __asm float_multiply a, a, b;\n" -"}\n" -"\n" -"void __operator /= (inout float a, const float b) {\n" -" __asm float_divide a, a, b;\n" -"}\n" -"\n" -"float __operator + (const float a, const float b) {\n" -" float c;\n" -" c = a;\n" -" return c += b;\n" -"}\n" -"\n" -"void __operator += (inout int a, const int b) {\n" -" a = int (float (a) + float (b));\n" -"}\n" -"\n" -"int __operator - (const int a) {\n" -" return int (-float (a));\n" -"}\n" -"\n" -"void __operator -= (inout int a, const int b) {\n" -" a += -b;\n" -"}\n" -"\n" -"float __operator * (const float a, const float b) {\n" -" float c;\n" -" c = a;\n" -" return c *= b;\n" -"}\n" -"\n" -"void __operator *= (inout int a, const int b) {\n" -" a = int (float (a) * float (b));\n" -"}\n" -"\n" -"float __operator / (const float a, const float b) {\n" -" float c;\n" -" c = a;\n" -" return c /= b;\n" -"}\n" -"\n" -"void __operator /= (inout int a, const int b) {\n" -" a = int (float (a) / float (b));\n" -"}\n" -"\n" -"void __operator += (inout vec2 v, const vec2 u) {\n" -" v.x += u.x, v.y += u.y;\n" -"}\n" -"\n" -"void __operator -= (inout vec2 v, const vec2 u) {\n" -" v.x -= u.x, v.y -= u.y;\n" -"}\n" -"\n" -"void __operator *= (inout vec2 v, const vec2 u) {\n" -" v.x *= u.x, v.y *= u.y;\n" -"}\n" -"\n" -"void __operator /= (inout vec2 v, const vec2 u) {\n" -" v.x /= u.x, v.y /= u.y;\n" -"}\n" -"\n" -"void __operator += (inout vec3 v, const vec3 u) {\n" -" v.x += u.x, v.y += u.y, v.z += u.z;\n" -"}\n" -"\n" -"void __operator -= (inout vec3 v, const vec3 u) {\n" -" v.x -= u.x, v.y -= u.y, v.z -= u.z;\n" -"}\n" -"\n" -"void __operator *= (inout vec3 v, const vec3 u) {\n" -" v.x *= u.x, v.y *= u.y, v.z *= u.z;\n" -"}\n" -"\n" -"void __operator /= (inout vec3 v, const vec3 u) {\n" -" v.x /= u.x, v.y /= u.y, v.z /= u.z;\n" -"}\n" -"\n" -"void __operator += (inout vec4 v, const vec4 u) {\n" -" v.x += u.x, v.y += u.y, v.z += u.z, v.w += u.w;\n" -"}\n" -"\n" -"void __operator -= (inout vec4 v, const vec4 u) {\n" -" v.x -= u.x, v.y -= u.y, v.z -= u.z, v.w -= u.w;\n" -"}\n" -"\n" -"void __operator *= (inout vec4 v, const vec4 u) {\n" -" v.x *= u.x, v.y *= u.y, v.z *= u.z, v.w *= u.w;\n" -"}\n" -"\n" -"void __operator /= (inout vec4 v, const vec4 u) {\n" -" v.x /= u.x, v.y /= u.y, v.z /= u.z, v.w /= u.w;\n" -"}\n" -"\n" -"void __operator += (inout ivec2 v, const ivec2 u) {\n" -" v.x += u.x, v.y += u.y;\n" -"}\n" -"\n" -"void __operator -= (inout ivec2 v, const ivec2 u) {\n" -" v.x -= u.x, v.y -= u.y;\n" -"}\n" -"\n" -"void __operator *= (inout ivec2 v, const ivec2 u) {\n" -" v.x *= u.x, v.y *= u.y;\n" -"}\n" -"\n" -"void __operator /= (inout ivec2 v, const ivec2 u) {\n" -" v.x /= u.x, v.y /= u.y;\n" -"}\n" -"\n" -"void __operator += (inout ivec3 v, const ivec3 u) {\n" -" v.x += u.x, v.y += u.y, v.z += u.z;\n" -"}\n" -"\n" -"void __operator -= (inout ivec3 v, const ivec3 u) {\n" -" v.x -= u.x, v.y -= u.y, v.z -= u.z;\n" -"}\n" -"\n" -"void __operator *= (inout ivec3 v, const ivec3 u) {\n" -" v.x *= u.x, v.y *= u.y, v.z *= u.z;\n" -"}\n" -"\n" -"void __operator /= (inout ivec3 v, const ivec3 u) {\n" -" v.x /= u.x, v.y /= u.y, v.z /= u.z;\n" -"}\n" -"\n" -"void __operator += (inout ivec4 v, const ivec4 u) {\n" -" v.x += u.x, v.y += u.y, v.z += u.z, v.w += u.w;\n" -"}\n" -"\n" -"void __operator -= (inout ivec4 v, const ivec4 u) {\n" -" v.x -= u.x, v.y -= u.y, v.z -= u.z, v.w -= u.w;\n" -"}\n" -"\n" -"void __operator *= (inout ivec4 v, const ivec4 u) {\n" -" v.x *= u.x, v.y *= u.y, v.z *= u.z, v.w *= u.w;\n" -"}\n" -"\n" -"void __operator /= (inout ivec4 v, const ivec4 u) {\n" -" v.x /= u.x, v.y /= u.y, v.z /= u.z, v.w /= u.w;\n" -"}\n" -"\n" -"void __operator += (inout mat2 m, const mat2 n) {\n" -" m[0] += n[0], m[1] += n[1];\n" -"}\n" -"\n" -"void __operator -= (inout mat2 m, const mat2 n) {\n" -" m[0] -= n[0], m[1] -= n[1];\n" -"}\n" -"\n" -"vec2 __operator * (const mat2 m, const vec2 v) {\n" -" return vec2 (\n" -" v.x * m[0].x + v.y * m[1].x,\n" -" v.x * m[0].y + v.y * m[1].y\n" -" );\n" -"}\n" -"\n" -"mat2 __operator * (const mat2 m, const mat2 n) {\n" -" return mat2 (m * n[0], m * n[1]);\n" -"}\n" -"\n" -"void __operator *= (inout mat2 m, const mat2 n) {\n" -" m = m * n;\n" -"}\n" -"\n" -"void __operator /= (inout mat2 m, const mat2 n) {\n" -" m[0] /= n[0], m[1] /= n[1];\n" -"}\n" -"\n" -"void __operator += (inout mat3 m, const mat3 n) {\n" -" m[0] += n[0], m[1] += n[1], m[2] += n[2];\n" -"}\n" -"\n" -"void __operator -= (inout mat3 m, const mat3 n) {\n" -" m[0] -= n[0], m[1] -= n[1], m[2] -= n[2];\n" -"}\n" -"\n" -"vec3 __operator * (const mat3 m, const vec3 v) {\n" -" return vec3 (\n" -" v.x * m[0].x + v.y * m[1].x + v.z * m[2].x,\n" -" v.x * m[0].y + v.y * m[1].y + v.z * m[2].y,\n" -" v.x * m[0].z + v.y * m[1].z + v.z * m[2].z\n" -" );\n" -"}\n" -"\n" -"mat3 __operator * (const mat3 m, const mat3 n) {\n" -" return mat3 (m * n[0], m * n[1], m * n[2]);\n" -"}\n" -"\n" -"void __operator *= (inout mat3 m, const mat3 n) {\n" -" m = m * n;\n" -"}\n" -"\n" -"void __operator /= (inout mat3 m, const mat3 n) {\n" -" m[0] /= n[0], m[1] /= n[1], m[2] /= n[2];\n" -"}\n" -"\n" -"void __operator += (inout mat4 m, const mat4 n) {\n" -" m[0] += n[0], m[1] += n[1], m[2] += n[2], m[3] += n[3];\n" -"}\n" -"\n" -"void __operator -= (inout mat4 m, const mat4 n) {\n" -" m[0] -= n[0], m[1] -= n[1], m[2] -= n[2], m[3] -= n[3];\n" -"}\n" -"\n" -"vec4 __operator * (const mat4 m, const vec4 v) {\n" -" return vec4 (\n" -" v.x * m[0].x + v.y * m[1].x + v.z * m[2].x + v.w * m[3].x,\n" -" v.x * m[0].y + v.y * m[1].y + v.z * m[2].y + v.w * m[3].y,\n" -" v.x * m[0].z + v.y * m[1].z + v.z * m[2].z + v.w * m[3].z,\n" -" v.x * m[0].w + v.y * m[1].w + v.z * m[2].w + v.w * m[3].w\n" -" );\n" -"}\n" -"\n" -"mat4 __operator * (const mat4 m, const mat4 n) {\n" -" return mat4 (m * n[0], m * n[1], m * n[2], m * n[3]);\n" -"}\n" -"\n" -"void __operator *= (inout mat4 m, const mat4 n) {\n" -" m = m * n;\n" -"}\n" -"\n" -"void __operator /= (inout mat4 m, const mat4 n) {\n" -" m[0] /= n[0], m[1] /= n[1], m[2] /= n[2], m[3] /= n[3];\n" -"}\n" -"\n" -"void __operator += (inout vec2 v, const float a) {\n" -" v.x += a, v.y += a;\n" -"}\n" -"\n" -"void __operator -= (inout vec2 v, const float a) {\n" -" v.x -= a, v.y -= a;\n" -"}\n" -"\n" -"void __operator *= (inout vec2 v, const float a) {\n" -" v.x *= a, v.y *= a;\n" -"}\n" -"\n" -"void __operator /= (inout vec2 v, const float a) {\n" -" v.x /= a, v.y /= a;\n" -"}\n" -"\n" -"void __operator += (inout vec3 v, const float a) {\n" -" v.x += a, v.y += a, v.z += a;\n" -"}\n" -"\n" -"void __operator -= (inout vec3 v, const float a) {\n" -" v.x -= a, v.y -= a, v.z -= a;\n" -"}\n" -"\n" -"void __operator *= (inout vec3 v, const float a) {\n" -" v.x *= a, v.y *= a, v.z *= a;\n" -"}\n" -"\n" -"void __operator /= (inout vec3 v, const float a) {\n" -" v.x /= a, v.y /= a, v.z /= a;\n" -"}\n" -"\n" -"void __operator += (inout vec4 v, const float a) {\n" -" v.x += a, v.y += a, v.z += a, v.w += a;\n" -"}\n" -"\n" -"void __operator -= (inout vec4 v, const float a) {\n" -" v.x -= a, v.y -= a, v.z -= a, v.w -= a;\n" -"}\n" -"\n" -"void __operator *= (inout vec4 v, const float a) {\n" -" v.x *= a, v.y *= a, v.z *= a, v.w *= a;\n" -"}\n" -"\n" -"void __operator /= (inout vec4 v, const float a) {\n" -" v.x /= a, v.y /= a, v.z /= a, v.w /= a;\n" -"}\n" -"\n" -"void __operator += (inout mat2 m, const float a) {\n" -" m[0] += a, m[1] += a;\n" -"}\n" -"\n" -"void __operator -= (inout mat2 m, const float a) {\n" -" m[0] -= a, m[1] -= a;\n" -"}\n" -"\n" -"void __operator *= (inout mat2 m, const float a) {\n" -" m[0] *= a, m[1] *= a;\n" -"}\n" -"\n" -"void __operator /= (inout mat2 m, const float a) {\n" -" m[0] /= a, m[1] /= a;\n" -"}\n" -"\n" -"void __operator += (inout mat3 m, const float a) {\n" -" m[0] += a, m[1] += a, m[2] += a;\n" -"}\n" -"\n" -"void __operator -= (inout mat3 m, const float a) {\n" -" m[0] -= a, m[1] -= a, m[2] -= a;\n" -"}\n" -"\n" -"void __operator *= (inout mat3 m, const float a) {\n" -" m[0] *= a, m[1] *= a, m[2] *= a;\n" -"}\n" -"\n" -"void __operator /= (inout mat3 m, const float a) {\n" -" m[0] /= a, m[1] /= a, m[2] /= a;\n" -"}\n" -"\n" -"void __operator += (inout mat4 m, const float a) {\n" -" m[0] += a, m[1] += a, m[2] += a, m[3] += a;\n" -"}\n" -"\n" -"void __operator -= (inout mat4 m, const float a) {\n" -" m[0] -= a, m[1] -= a, m[2] -= a, m[3] -= a;\n" -"}\n" -"\n" -"void __operator *= (inout mat4 m, const float a) {\n" -" m[0] *= a, m[1] *= a, m[2] *= a, m[3] *= a;\n" -"}\n" -"\n" -"void __operator /= (inout mat4 m, const float a) {\n" -" m[0] /= a, m[1] /= a, m[2] /= a, m[3] /= a;\n" -"}\n" -"\n" -"vec2 __operator * (const vec2 v, const mat2 m) {\n" -" return vec2 (\n" -" v.x * m[0].x + v.y * m[0].y,\n" -" v.x * m[1].x + v.y * m[1].y\n" -" );\n" -"}\n" -"\n" -"void __operator *= (inout vec2 v, const mat2 m) {\n" -" v = v * m;\n" -"}\n" -"\n" -"vec3 __operator * (const vec3 v, const mat3 m) {\n" -" return vec3 (\n" -" v.x * m[0].x + v.y * m[0].y + v.z * m[0].z,\n" -" v.x * m[1].x + v.y * m[1].y + v.z * m[1].z,\n" -" v.x * m[2].x + v.y * m[2].y + v.z * m[2].z\n" -" );\n" -"}\n" -"\n" -"void __operator *= (inout vec3 v, const mat3 m) {\n" -" v = v * m;\n" -"}\n" -"\n" -"vec4 __operator * (const vec4 v, const mat4 m) {\n" -" return vec4 (\n" -" v.x * m[0].x + v.y * m[0].y + v.z * m[0].z + v.w * m[0].w,\n" -" v.x * m[1].x + v.y * m[1].y + v.z * m[1].z + v.w * m[1].w,\n" -" v.x * m[2].x + v.y * m[2].y + v.z * m[2].z + v.w * m[2].w,\n" -" v.x * m[3].x + v.y * m[3].y + v.z * m[3].z + v.w * m[3].w\n" -" );\n" -"}\n" -"\n" -"void __operator *= (inout vec4 v, const mat4 m) {\n" -" v = v * m;\n" -"}\n" -"\n" -"float __operator - (const float a, const float b) {\n" -" return a + -b;\n" -"}\n" -"\n" -"int __operator + (const int a, const int b) {\n" -" int c;\n" -" c = a;\n" -" return c += b;\n" -"}\n" -"\n" -"int __operator - (const int a, const int b) {\n" -" return a + -b;\n" -"}\n" -"\n" -"int __operator * (const int a, const int b) {\n" -" int c;\n" -" return (c = a) *= b;\n" -"}\n" -"\n" -"int __operator / (const int a, const int b) {\n" -" int c;\n" -" return (c = a) /= b;\n" -"}\n" -"\n" -"vec2 __operator + (const vec2 v, const vec2 u) {\n" -" return vec2 (v.x + u.x, v.y + u.y);\n" -"}\n" -"\n" -"vec2 __operator - (const vec2 v, const vec2 u) {\n" -" return vec2 (v.x - u.x, v.y - u.y);\n" -"}\n" -"\n" -"vec3 __operator + (const vec3 v, const vec3 u) {\n" -" return vec3 (v.x + u.x, v.y + u.y, v.z + u.z);\n" -"}\n" -"\n" -"vec3 __operator - (const vec3 v, const vec3 u) {\n" -" return vec3 (v.x - u.x, v.y - u.y, v.z - u.z);\n" -"}\n" -"\n" -"vec4 __operator + (const vec4 v, const vec4 u) {\n" -" return vec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\n" -"}\n" -"\n" -"vec4 __operator - (const vec4 v, const vec4 u) {\n" -" return vec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\n" -"}\n" -"\n" -"ivec2 __operator + (const ivec2 v, const ivec2 u) {\n" -" return ivec2 (v.x + u.x, v.y + u.y);\n" -"}\n" -"\n" -"ivec2 __operator - (const ivec2 v, const ivec2 u) {\n" -" return ivec2 (v.x - u.x, v.y - u.y);\n" -"}\n" -"\n" -"ivec3 __operator + (const ivec3 v, const ivec3 u) {\n" -" return ivec3 (v.x + u.x, v.y + u.y, v.z + u.z);\n" -"}\n" -"\n" -"ivec3 __operator - (const ivec3 v, const ivec3 u) {\n" -" return ivec3 (v.x - u.x, v.y - u.y, v.z - u.z);\n" -"}\n" -"\n" -"ivec4 __operator + (const ivec4 v, const ivec4 u) {\n" -" return ivec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\n" -"}\n" -"\n" -"ivec4 __operator - (const ivec4 v, const ivec4 u) {\n" -" return ivec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\n" -"}\n" -"\n" -"mat2 __operator + (const mat2 m, const mat2 n) {\n" -" return mat2 (m[0] + n[0], m[1] + n[1]);\n" -"}\n" -"\n" -"mat2 __operator - (const mat2 m, const mat2 n) {\n" -" return mat2 (m[0] - n[0], m[1] - n[1]);\n" -"}\n" -"\n" -"mat3 __operator + (const mat3 m, const mat3 n) {\n" -" return mat3 (m[0] + n[0], m[1] + n[1], m[2] + n[2]);\n" -"}\n" -"\n" -"mat3 __operator - (const mat3 m, const mat3 n) {\n" -" return mat3 (m[0] - n[0], m[1] - n[1], m[2] - n[2]);\n" -"}\n" -"\n" -"mat4 __operator + (const mat4 m, const mat4 n) {\n" -" return mat4 (m[0] + n[0], m[1] + n[1], m[2] + n[2], m[3] + n[3]);\n" -"}\n" -"\n" -"mat4 __operator - (const mat4 m, const mat4 n) {\n" -" return mat4 (m[0] - n[0], m[1] - n[1], m[2] - n[2], m[3] - n[3]);\n" -"}\n" -"\n" -"vec2 __operator + (const float a, const vec2 u) {\n" -" return vec2 (a + u.x, a + u.y);\n" -"}\n" -"\n" -"vec2 __operator + (const vec2 v, const float b) {\n" -" return vec2 (v.x + b, v.y + b);\n" -"}\n" -"\n" -"vec2 __operator - (const float a, const vec2 u) {\n" -" return vec2 (a - u.x, a - u.y);\n" -"}\n" -"\n" -"vec2 __operator - (const vec2 v, const float b) {\n" -" return vec2 (v.x - b, v.y - b);\n" -"}\n" -"\n" -"vec2 __operator * (const float a, const vec2 u) {\n" -" return vec2 (a * u.x, a * u.y);\n" -"}\n" -"\n" -"vec2 __operator * (const vec2 v, const float b) {\n" -" return vec2 (v.x * b, v.y * b);\n" -"}\n" -"\n" -"vec2 __operator / (const float a, const vec2 u) {\n" -" return vec2 (a / u.x, a / u.y);\n" -"}\n" -"\n" -"vec2 __operator / (const vec2 v, const float b) {\n" -" return vec2 (v.x / b, v.y / b);\n" -"}\n" -"\n" -"vec3 __operator + (const float a, const vec3 u) {\n" -" return vec3 (a + u.x, a + u.y, a + u.z);\n" -"}\n" -"\n" -"vec3 __operator + (const vec3 v, const float b) {\n" -" return vec3 (v.x + b, v.y + b, v.z + b);\n" -"}\n" -"\n" -"vec3 __operator - (const float a, const vec3 u) {\n" -" return vec3 (a - u.x, a - u.y, a - u.z);\n" -"}\n" -"\n" -"vec3 __operator - (const vec3 v, const float b) {\n" -" return vec3 (v.x - b, v.y - b, v.z - b);\n" -"}\n" -"\n" -"vec3 __operator * (const float a, const vec3 u) {\n" -" return vec3 (a * u.x, a * u.y, a * u.z);\n" -"}\n" -"\n" -"vec3 __operator * (const vec3 v, const float b) {\n" -" return vec3 (v.x * b, v.y * b, v.z * b);\n" -"}\n" -"\n" -"vec3 __operator / (const float a, const vec3 u) {\n" -" return vec3 (a / u.x, a / u.y, a / u.z);\n" -"}\n" -"\n" -"vec3 __operator / (const vec3 v, const float b) {\n" -" return vec3 (v.x / b, v.y / b, v.z / b);\n" -"}\n" -"\n" -"vec4 __operator + (const float a, const vec4 u) {\n" -" return vec4 (a + u.x, a + u.y, a + u.z, a + u.w);\n" -"}\n" -"\n" -"vec4 __operator + (const vec4 v, const float b) {\n" -" return vec4 (v.x + b, v.y + b, v.z + b, v.w + b);\n" -"}\n" -"\n" -"vec4 __operator - (const float a, const vec4 u) {\n" -" return vec4 (a - u.x, a - u.y, a - u.z, a - u.w);\n" -"}\n" -"\n" -"vec4 __operator - (const vec4 v, const float b) {\n" -" return vec4 (v.x - b, v.y - b, v.z - b, v.w - b);\n" -"}\n" -"\n" -"vec4 __operator * (const float a, const vec4 u) {\n" -" return vec4 (a * u.x, a * u.y, a * u.z, a * u.w);\n" -"}\n" -"\n" -"vec4 __operator * (const vec4 v, const float b) {\n" -" return vec4 (v.x * b, v.y * b, v.z * b, v.w * b);\n" -"}\n" -"\n" -"vec4 __operator / (const float a, const vec4 u) {\n" -" return vec4 (a / u.x, a / u.y, a / u.z, a / u.w);\n" -"}\n" -"\n" -"vec4 __operator / (const vec4 v, const float b) {\n" -" return vec4 (v.x / b, v.y / b, v.z / b, v.w / b);\n" -"}\n" -"\n" -"mat2 __operator + (const float a, const mat2 n) {\n" -" return mat2 (a + n[0], a + n[1]);\n" -"}\n" -"\n" -"mat2 __operator + (const mat2 m, const float b) {\n" -" return mat2 (m[0] + b, m[1] + b);\n" -"}\n" -"\n" -"mat2 __operator - (const float a, const mat2 n) {\n" -" return mat2 (a - n[0], a - n[1]);\n" -"}\n" -"\n" -"mat2 __operator - (const mat2 m, const float b) {\n" -" return mat2 (m[0] - b, m[1] - b);\n" -"}\n" -"\n" -"mat2 __operator * (const float a, const mat2 n) {\n" -" return mat2 (a * n[0], a * n[1]);\n" -"}\n" -"\n" -"mat2 __operator * (const mat2 m, const float b) {\n" -" return mat2 (m[0] * b, m[1] * b);\n" -"}\n" -"\n" -"mat2 __operator / (const float a, const mat2 n) {\n" -" return mat2 (a / n[0], a / n[1]);\n" -"}\n" -"\n" -"mat2 __operator / (const mat2 m, const float b) {\n" -" return mat2 (m[0] / b, m[1] / b);\n" -"}\n" -"\n" -"mat3 __operator + (const float a, const mat3 n) {\n" -" return mat3 (a + n[0], a + n[1], a + n[2]);\n" -"}\n" -"\n" -"mat3 __operator + (const mat3 m, const float b) {\n" -" return mat3 (m[0] + b, m[1] + b, m[2] + b);\n" -"}\n" -"\n" -"mat3 __operator - (const float a, const mat3 n) {\n" -" return mat3 (a - n[0], a - n[1], a - n[2]);\n" -"}\n" -"\n" -"mat3 __operator - (const mat3 m, const float b) {\n" -" return mat3 (m[0] - b, m[1] - b, m[2] - b);\n" -"}\n" -"\n" -"mat3 __operator * (const float a, const mat3 n) {\n" -" return mat3 (a * n[0], a * n[1], a * n[2]);\n" -"}\n" -"\n" -"mat3 __operator * (const mat3 m, const float b) {\n" -" return mat3 (m[0] * b, m[1] * b, m[2] * b);\n" -"}\n" -"\n" -"mat3 __operator / (const float a, const mat3 n) {\n" -" return mat3 (a / n[0], a / n[1], a / n[2]);\n" -"}\n" -"\n" -"mat3 __operator / (const mat3 m, const float b) {\n" -" return mat3 (m[0] / b, m[1] / b, m[2] / b);\n" -"}\n" -"\n" -"mat4 __operator + (const float a, const mat4 n) {\n" -" return mat4 (a + n[0], a + n[1], a + n[2], a + n[3]);\n" -"}\n" -"\n" -"mat4 __operator + (const mat4 m, const float b) {\n" -" return mat4 (m[0] + b, m[1] + b, m[2] + b, m[3] + b);\n" -"}\n" -"\n" -"mat4 __operator - (const float a, const mat4 n) {\n" -" return mat4 (a - n[0], a - n[1], a - n[2], a - n[3]);\n" -"}\n" -"\n" -"mat4 __operator - (const mat4 m, const float b) {\n" -" return mat4 (m[0] - b, m[1] - b, m[2] - b, m[3] - b);\n" -"}\n" -"\n" -"mat4 __operator * (const float a, const mat4 n) {\n" -" return mat4 (a * n[0], a * n[1], a * n[2], a * n[3]);\n" -"}\n" -"\n" -"mat4 __operator * (const mat4 m, const float b) {\n" -" return mat4 (m[0] * b, m[1] * b, m[2] * b, m[3] * b);\n" -"}\n" -"\n" -"mat4 __operator / (const float a, const mat4 n) {\n" -" return mat4 (a / n[0], a / n[1], a / n[2], a / n[3]);\n" -"}\n" -"\n" -"mat4 __operator / (const mat4 m, const float b) {\n" -" return mat4 (m[0] / b, m[1] / b, m[2] / b, m[3] / b);\n" -"}\n" -"\n" -"ivec2 __operator + (const int a, const ivec2 u) {\n" -" return ivec2 (a + u.x, a + u.y);\n" -"}\n" -"\n" -"ivec2 __operator + (const ivec2 v, const int b) {\n" -" return ivec2 (v.x + b, v.y + b);\n" -"}\n" -"\n" -"ivec2 __operator - (const int a, const ivec2 u) {\n" -" return ivec2 (a - u.x, a - u.y);\n" -"}\n" -"\n" -"ivec2 __operator - (const ivec2 v, const int b) {\n" -" return ivec2 (v.x - b, v.y - b);\n" -"}\n" -"\n" -"ivec2 __operator * (const int a, const ivec2 u) {\n" -" return ivec2 (a * u.x, a * u.y);\n" -"}\n" -"\n" -"ivec2 __operator * (const ivec2 v, const int b) {\n" -" return ivec2 (v.x * b, v.y * b);\n" -"}\n" -"\n" -"ivec2 __operator / (const int a, const ivec2 u) {\n" -" return ivec2 (a / u.x, a / u.y);\n" -"}\n" -"\n" -"ivec2 __operator / (const ivec2 v, const int b) {\n" -" return ivec2 (v.x / b, v.y / b);\n" -"}\n" -"\n" -"ivec3 __operator + (const int a, const ivec3 u) {\n" -" return ivec3 (a + u.x, a + u.y, a + u.z);\n" -"}\n" -"\n" -"ivec3 __operator + (const ivec3 v, const int b) {\n" -" return ivec3 (v.x + b, v.y + b, v.z + b);\n" -"}\n" -"\n" -"ivec3 __operator - (const int a, const ivec3 u) {\n" -" return ivec3 (a - u.x, a - u.y, a - u.z);\n" -"}\n" -"\n" -"ivec3 __operator - (const ivec3 v, const int b) {\n" -" return ivec3 (v.x - b, v.y - b, v.z - b);\n" -"}\n" -"\n" -"ivec3 __operator * (const int a, const ivec3 u) {\n" -" return ivec3 (a * u.x, a * u.y, a * u.z);\n" -"}\n" -"\n" -"ivec3 __operator * (const ivec3 v, const int b) {\n" -" return ivec3 (v.x * b, v.y * b, v.z * b);\n" -"}\n" -"\n" -"ivec3 __operator / (const int a, const ivec3 u) {\n" -" return ivec3 (a / u.x, a / u.y, a / u.z);\n" -"}\n" -"\n" -"ivec3 __operator / (const ivec3 v, const int b) {\n" -" return ivec3 (v.x / b, v.y / b, v.z / b);\n" -"}\n" -"\n" -"ivec4 __operator + (const int a, const ivec4 u) {\n" -" return ivec4 (a + u.x, a + u.y, a + u.z, a + u.w);\n" -"}\n" -"\n" -"ivec4 __operator + (const ivec4 v, const int b) {\n" -" return ivec4 (v.x + b, v.y + b, v.z + b, v.w + b);\n" -"}\n" -"\n" -"ivec4 __operator - (const int a, const ivec4 u) {\n" -" return ivec4 (a - u.x, a - u.y, a - u.z, a - u.w);\n" -"}\n" -"\n" -"ivec4 __operator - (const ivec4 v, const int b) {\n" -" return ivec4 (v.x - b, v.y - b, v.z - b, v.w - b);\n" -"}\n" -"\n" -"ivec4 __operator * (const int a, const ivec4 u) {\n" -" return ivec4 (a * u.x, a * u.y, a * u.z, a * u.w);\n" -"}\n" -"\n" -"ivec4 __operator * (const ivec4 v, const int b) {\n" -" return ivec4 (v.x * b, v.y * b, v.z * b, v.w * b);\n" -"}\n" -"\n" -"ivec4 __operator / (const int a, const ivec4 u) {\n" -" return ivec4 (a / u.x, a / u.y, a / u.z, a / u.w);\n" -"}\n" -"\n" -"ivec4 __operator / (const ivec4 v, const int b) {\n" -" return ivec4 (v.x / b, v.y / b, v.z / b, v.w / b);\n" -"}\n" -"\n" -"vec2 __operator * (const vec2 v, const vec2 u) {\n" -" return vec2 (v.x * u.x, v.y * u.y);\n" -"}\n" -"\n" -"vec3 __operator * (const vec3 v, const vec3 u) {\n" -" return vec3 (v.x * u.x, v.y * u.y, v.z * u.z);\n" -"}\n" -"\n" -"vec4 __operator * (const vec4 v, const vec4 u) {\n" -" return vec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\n" -"}\n" -"\n" -"ivec2 __operator * (const ivec2 v, const ivec2 u) {\n" -" return ivec2 (v.x * u.x, v.y * u.y);\n" -"}\n" -"\n" -"ivec3 __operator * (const ivec3 v, const ivec3 u) {\n" -" return ivec3 (v.x * u.x, v.y * u.y, v.z * u.z);\n" -"}\n" -"\n" -"ivec4 __operator * (const ivec4 v, const ivec4 u) {\n" -" return ivec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\n" -"}\n" -"\n" -"vec2 __operator / (const vec2 v, const vec2 u) {\n" -" return vec2 (v.x / u.x, v.y / u.y);\n" -"}\n" -"\n" -"vec3 __operator / (const vec3 v, const vec3 u) {\n" -" return vec3 (v.x / u.x, v.y / u.y, v.z / u.z);\n" -"}\n" -"\n" -"vec4 __operator / (const vec4 v, const vec4 u) {\n" -" return vec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\n" -"}\n" -"\n" -"ivec2 __operator / (const ivec2 v, const ivec2 u) {\n" -" return ivec2 (v.x / u.x, v.y / u.y);\n" -"}\n" -"\n" -"ivec3 __operator / (const ivec3 v, const ivec3 u) {\n" -" return ivec3 (v.x / u.x, v.y / u.y, v.z / u.z);\n" -"}\n" -"\n" -"ivec4 __operator / (const ivec4 v, const ivec4 u) {\n" -" return ivec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\n" -"}\n" -"\n" -"mat2 __operator / (const mat2 m, const mat2 n) {\n" -" return mat2 (m[0] / n[0], m[1] / n[1]);\n" -"}\n" -"\n" -"mat3 __operator / (const mat3 m, const mat3 n) {\n" -" return mat3 (m[0] / n[0], m[1] / n[1], m[2] / n[2]);\n" -"}\n" -"\n" -"mat4 __operator / (const mat4 m, const mat4 n) {\n" -" return mat4 (m[0] / n[0], m[1] / n[1], m[2] / n[2], m[3] / n[3]);\n" -"}\n" -"\n" -"vec2 __operator - (const vec2 v) {\n" -" return vec2 (-v.x, -v.y);\n" -"}\n" -"\n" -"vec3 __operator - (const vec3 v) {\n" -" return vec3 (-v.x, -v.y, -v.z);\n" -"}\n" -"\n" -"vec4 __operator - (const vec4 v) {\n" -" return vec4 (-v.x, -v.y, -v.z, -v.w);\n" -"}\n" -"\n" -"ivec2 __operator - (const ivec2 v) {\n" -" return ivec2 (-v.x, -v.y);\n" -"}\n" -"\n" -"ivec3 __operator - (const ivec3 v) {\n" -" return ivec3 (-v.x, -v.y, -v.z);\n" -"}\n" -"\n" -"ivec4 __operator - (const ivec4 v) {\n" -" return ivec4 (-v.x, -v.y, -v.z, -v.w);\n" -"}\n" -"\n" -"mat2 __operator - (const mat2 m) {\n" -" return mat2 (-m[0], -m[1]);\n" -"}\n" -"\n" -"mat3 __operator - (const mat3 m) {\n" -" return mat3 (-m[0], -m[1], -m[2]);\n" -"}\n" -"\n" -"mat4 __operator - (const mat4 m) {\n" -" return mat4 (-m[0], -m[1], -m[2], -m[3]);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"void __operator -- (inout float a) {\n" -" a -= 1.0;\n" -"}\n" -"\n" -"void __operator -- (inout int a) {\n" -" a -= 1;\n" -"}\n" -"\n" -"void __operator -- (inout vec2 v) {\n" -" --v.x, --v.y;\n" -"}\n" -"\n" -"void __operator -- (inout vec3 v) {\n" -" --v.x, --v.y, --v.z;\n" -"}\n" -"\n" -"void __operator -- (inout vec4 v) {\n" -" --v.x, --v.y, --v.z, --v.w;\n" -"}\n" -"\n" -"void __operator -- (inout ivec2 v) {\n" -" --v.x, --v.y;\n" -"}\n" -"\n" -"void __operator -- (inout ivec3 v) {\n" -" --v.x, --v.y, --v.z;\n" -"}\n" -"\n" -"void __operator -- (inout ivec4 v) {\n" -" --v.x, --v.y, --v.z, --v.w;\n" -"}\n" -"\n" -"void __operator -- (inout mat2 m) {\n" -" --m[0], --m[1];\n" -"}\n" -"\n" -"void __operator -- (inout mat3 m) {\n" -" --m[0], --m[1], --m[2];\n" -"}\n" -"\n" -"void __operator -- (inout mat4 m) {\n" -" --m[0], --m[1], --m[2], --m[3];\n" -"}\n" -"\n" -"void __operator ++ (inout float a) {\n" -" a += 1.0;\n" -"}\n" -"\n" -"void __operator ++ (inout int a) {\n" -" a += 1;\n" -"}\n" -"\n" -"void __operator ++ (inout vec2 v) {\n" -" ++v.x, ++v.y;\n" -"}\n" -"\n" -"void __operator ++ (inout vec3 v) {\n" -" ++v.x, ++v.y, ++v.z;\n" -"}\n" -"\n" -"void __operator ++ (inout vec4 v) {\n" -" ++v.x, ++v.y, ++v.z, ++v.w;\n" -"}\n" -"\n" -"void __operator ++ (inout ivec2 v) {\n" -" ++v.x, ++v.y;\n" -"}\n" -"\n" -"void __operator ++ (inout ivec3 v) {\n" -" ++v.x, ++v.y, ++v.z;\n" -"}\n" -"\n" -"void __operator ++ (inout ivec4 v) {\n" -" ++v.x, ++v.y, ++v.z, ++v.w;\n" -"}\n" -"\n" -"void __operator ++ (inout mat2 m) {\n" -" ++m[0], ++m[1];\n" -"}\n" -"\n" -"void __operator ++ (inout mat3 m) {\n" -" ++m[0], ++m[1], ++m[2];\n" -"}\n" -"\n" -"void __operator ++ (inout mat4 m) {\n" -" ++m[0], ++m[1], ++m[2], ++m[3];\n" -"}\n" -"\n" -"float __operator -- (inout float a, const int) {\n" -" float c;\n" -" c = a;\n" -" --a;\n" -" return c;\n" -"}\n" -"\n" -"int __operator -- (inout int a, const int) {\n" -" int c;\n" -" c = a;\n" -" --a;\n" -" return c;\n" -"}\n" -"\n" -"vec2 __operator -- (inout vec2 v, const int) {\n" -" return vec2 (v.x--, v.y--);\n" -"}\n" -"\n" -"vec3 __operator -- (inout vec3 v, const int) {\n" -" return vec3 (v.x--, v.y--, v.z--);\n" -"}\n" -"\n" -"vec4 __operator -- (inout vec4 v, const int) {\n" -" return vec4 (v.x--, v.y--, v.z--, v.w--);\n" -"}\n" -"\n" -"ivec2 __operator -- (inout ivec2 v, const int) {\n" -" return ivec2 (v.x--, v.y--);\n" -"}\n" -"\n" -"ivec3 __operator -- (inout ivec3 v, const int) {\n" -" return ivec3 (v.x--, v.y--, v.z--);\n" -"}\n" -"\n" -"ivec4 __operator -- (inout ivec4 v, const int) {\n" -" return ivec4 (v.x--, v.y--, v.z--, v.w--);\n" -"}\n" -"\n" -"mat2 __operator -- (inout mat2 m, const int) {\n" -" return mat2 (m[0]--, m[1]--);\n" -"}\n" -"\n" -"mat3 __operator -- (inout mat3 m, const int) {\n" -" return mat3 (m[0]--, m[1]--, m[2]--);\n" -"}\n" -"\n" -"mat4 __operator -- (inout mat4 m, const int) {\n" -" return mat4 (m[0]--, m[1]--, m[2]--, m[3]--);\n" -"}\n" -"\n" -"float __operator ++ (inout float a, const int) {\n" -" float c;\n" -" c = a;\n" -" ++a;\n" -" return c;\n" -"}\n" -"\n" -"int __operator ++ (inout int a, const int) {\n" -" int c;\n" -" c = a;\n" -" ++a;\n" -" return c;\n" -"}\n" -"\n" -"vec2 __operator ++ (inout vec2 v, const int) {\n" -" return vec2 (v.x++, v.y++);\n" -"}\n" -"\n" -"vec3 __operator ++ (inout vec3 v, const int) {\n" -" return vec3 (v.x++, v.y++, v.z++);\n" -"}\n" -"\n" -"vec4 __operator ++ (inout vec4 v, const int) {\n" -" return vec4 (v.x++, v.y++, v.z++, v.w++);\n" -"}\n" -"\n" -"ivec2 __operator ++ (inout ivec2 v, const int) {\n" -" return ivec2 (v.x++, v.y++);\n" -"}\n" -"\n" -"ivec3 __operator ++ (inout ivec3 v, const int) {\n" -" return ivec3 (v.x++, v.y++, v.z++);\n" -"}\n" -"\n" -"ivec4 __operator ++ (inout ivec4 v, const int) {\n" -" return ivec4 (v.x++, v.y++, v.z++, v.w++);\n" -"}\n" -"\n" -"mat2 __operator ++ (inout mat2 m, const int) {\n" -" return mat2 (m[0]++, m[1]++);\n" -"}\n" -"\n" -"mat3 __operator ++ (inout mat3 m, const int) {\n" -" return mat3 (m[0]++, m[1]++, m[2]++);\n" -"}\n" -"\n" -"mat4 __operator ++ (inout mat4 m, const int) {\n" -" return mat4 (m[0]++, m[1]++, m[2]++, m[3]++);\n" -"}\n" -"\n" -"bool __operator < (const float a, const float b) {\n" -" bool c;\n" -" __asm float_less c, a, b;\n" -" return c;\n" -"}\n" -"\n" -"bool __operator < (const int a, const int b) {\n" -" return float (a) < float (b);\n" -"}\n" -"\n" -"bool __operator > (const float a, const float b) {\n" -" return b < a;\n" -"}\n" -"\n" -"bool __operator > (const int a, const int b) {\n" -" return b < a;\n" -"}\n" -"\n" -"bool __operator >= (const float a, const float b) {\n" -" return a > b || a == b;\n" -"}\n" -"\n" -"bool __operator >= (const int a, const int b) {\n" -" return a > b || a == b;\n" -"}\n" -"\n" -"bool __operator <= (const float a, const float b) {\n" -" return a < b || a == b;\n" -"}\n" -"\n" -"bool __operator <= (const int a, const int b) {\n" -" return a < b || a == b;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bool __operator ^^ (const bool a, const bool b) {\n" -" return a != b;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"bool __operator ! (const bool a) {\n" -" return a == false;\n" -"}\n" -"\n" diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_core_gc_bin.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_core_gc_bin.h deleted file mode 100644 index ac53ceea8..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_core_gc_bin.h +++ /dev/null @@ -1,490 +0,0 @@ -2,1,0,5,1,1,1,0,9,95,102,0,0,0,1,3,2,0,5,1,95,105,0,0,0,4,102,108,111,97,116,95,116,111,95,105,110, -116,0,18,95,105,0,0,18,95,102,0,0,0,8,18,95,105,0,0,0,1,0,1,1,1,1,0,5,95,105,0,0,0,1,8,18,95,105,0, -16,8,48,0,39,0,0,1,0,1,1,1,1,0,9,95,102,0,0,0,1,8,18,95,102,0,17,48,0,48,0,0,39,0,0,1,0,5,1,1,1,0,1, -95,98,0,0,0,1,8,18,95,98,0,16,10,49,0,16,8,48,0,31,0,0,1,0,9,1,1,1,0,1,95,98,0,0,0,1,8,18,95,98,0, -17,49,0,48,0,0,17,48,0,48,0,0,31,0,0,1,0,9,1,1,1,0,5,95,105,0,0,0,1,3,2,0,9,1,95,102,0,0,0,4,105, -110,116,95,116,111,95,102,108,111,97,116,0,18,95,102,0,0,18,95,105,0,0,0,8,18,95,102,0,0,0,1,0,1,1, -1,1,0,1,95,98,0,0,0,1,8,18,95,98,0,0,0,1,0,5,1,1,1,0,5,95,105,0,0,0,1,8,18,95,105,0,0,0,1,0,9,1,1,1, -0,9,95,102,0,0,0,1,8,18,95,102,0,0,0,1,0,10,1,1,1,0,9,95,102,0,0,0,1,8,58,118,101,99,50,0,18,95,102, -0,0,18,95,102,0,0,0,0,0,1,0,10,1,1,1,0,5,95,105,0,0,0,1,8,58,118,101,99,50,0,18,95,105,0,0,18,95, -105,0,0,0,0,0,1,0,10,1,1,1,0,1,95,98,0,0,0,1,8,58,118,101,99,50,0,18,95,98,0,0,18,95,98,0,0,0,0,0,1, -0,11,1,1,1,0,9,95,102,0,0,0,1,8,58,118,101,99,51,0,18,95,102,0,0,18,95,102,0,0,18,95,102,0,0,0,0,0, -1,0,11,1,1,1,0,5,95,105,0,0,0,1,8,58,118,101,99,51,0,18,95,105,0,0,18,95,105,0,0,18,95,105,0,0,0,0, -0,1,0,11,1,1,1,0,1,95,98,0,0,0,1,8,58,118,101,99,51,0,18,95,98,0,0,18,95,98,0,0,18,95,98,0,0,0,0,0, -1,0,12,1,1,1,0,9,95,102,0,0,0,1,8,58,118,101,99,52,0,18,95,102,0,0,18,95,102,0,0,18,95,102,0,0,18, -95,102,0,0,0,0,0,1,0,12,1,1,1,0,5,95,105,0,0,0,1,8,58,118,101,99,52,0,18,95,105,0,0,18,95,105,0,0, -18,95,105,0,0,18,95,105,0,0,0,0,0,1,0,12,1,1,1,0,1,95,98,0,0,0,1,8,58,118,101,99,52,0,18,95,98,0,0, -18,95,98,0,0,18,95,98,0,0,18,95,98,0,0,0,0,0,1,0,6,1,1,1,0,5,95,105,0,0,0,1,8,58,105,118,101,99,50, -0,18,95,105,0,0,18,95,105,0,0,0,0,0,1,0,6,1,1,1,0,9,95,102,0,0,0,1,8,58,105,118,101,99,50,0,18,95, -102,0,0,18,95,102,0,0,0,0,0,1,0,6,1,1,1,0,1,95,98,0,0,0,1,8,58,105,118,101,99,50,0,18,95,98,0,0,18, -95,98,0,0,0,0,0,1,0,7,1,1,1,0,5,95,105,0,0,0,1,8,58,105,118,101,99,51,0,18,95,105,0,0,18,95,105,0,0, -18,95,105,0,0,0,0,0,1,0,7,1,1,1,0,9,95,102,0,0,0,1,8,58,105,118,101,99,51,0,18,95,102,0,0,18,95,102, -0,0,18,95,102,0,0,0,0,0,1,0,7,1,1,1,0,1,95,98,0,0,0,1,8,58,105,118,101,99,51,0,18,95,98,0,0,18,95, -98,0,0,18,95,98,0,0,0,0,0,1,0,8,1,1,1,0,5,95,105,0,0,0,1,8,58,105,118,101,99,52,0,18,95,105,0,0,18, -95,105,0,0,18,95,105,0,0,18,95,105,0,0,0,0,0,1,0,8,1,1,1,0,9,95,102,0,0,0,1,8,58,105,118,101,99,52, -0,18,95,102,0,0,18,95,102,0,0,18,95,102,0,0,18,95,102,0,0,0,0,0,1,0,8,1,1,1,0,1,95,98,0,0,0,1,8,58, -105,118,101,99,52,0,18,95,98,0,0,18,95,98,0,0,18,95,98,0,0,18,95,98,0,0,0,0,0,1,0,2,1,1,1,0,1,95,98, -0,0,0,1,8,58,98,118,101,99,50,0,18,95,98,0,0,18,95,98,0,0,0,0,0,1,0,2,1,1,1,0,9,95,102,0,0,0,1,8,58, -98,118,101,99,50,0,18,95,102,0,0,18,95,102,0,0,0,0,0,1,0,2,1,1,1,0,5,95,105,0,0,0,1,8,58,98,118,101, -99,50,0,18,95,105,0,0,18,95,105,0,0,0,0,0,1,0,3,1,1,1,0,1,95,98,0,0,0,1,8,58,98,118,101,99,51,0,18, -95,98,0,0,18,95,98,0,0,18,95,98,0,0,0,0,0,1,0,3,1,1,1,0,9,95,102,0,0,0,1,8,58,98,118,101,99,51,0,18, -95,102,0,0,18,95,102,0,0,18,95,102,0,0,0,0,0,1,0,3,1,1,1,0,5,95,105,0,0,0,1,8,58,98,118,101,99,51,0, -18,95,105,0,0,18,95,105,0,0,18,95,105,0,0,0,0,0,1,0,4,1,1,1,0,1,95,98,0,0,0,1,8,58,98,118,101,99,52, -0,18,95,98,0,0,18,95,98,0,0,18,95,98,0,0,18,95,98,0,0,0,0,0,1,0,4,1,1,1,0,9,95,102,0,0,0,1,8,58,98, -118,101,99,52,0,18,95,102,0,0,18,95,102,0,0,18,95,102,0,0,18,95,102,0,0,0,0,0,1,0,4,1,1,1,0,5,95, -105,0,0,0,1,8,58,98,118,101,99,52,0,18,95,105,0,0,18,95,105,0,0,18,95,105,0,0,18,95,105,0,0,0,0,0,1, -0,13,1,1,1,0,9,95,102,0,0,0,1,8,58,109,97,116,50,0,18,95,102,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95, -102,0,0,0,0,0,1,0,13,1,1,1,0,5,95,105,0,0,0,1,8,58,109,97,116,50,0,18,95,105,0,0,17,0,48,0,0,0,17,0, -48,0,0,0,18,95,105,0,0,0,0,0,1,0,13,1,1,1,0,1,95,98,0,0,0,1,8,58,109,97,116,50,0,18,95,98,0,0,17,0, -48,0,0,0,17,0,48,0,0,0,18,95,98,0,0,0,0,0,1,0,14,1,1,1,0,9,95,102,0,0,0,1,8,58,109,97,116,51,0,18, -95,102,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95,102,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0, -48,0,0,0,18,95,102,0,0,0,0,0,1,0,14,1,1,1,0,5,95,105,0,0,0,1,8,58,109,97,116,51,0,18,95,105,0,0,17, -0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95,105,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18, -95,105,0,0,0,0,0,1,0,14,1,1,1,0,1,95,98,0,0,0,1,8,58,109,97,116,51,0,18,95,98,0,0,17,0,48,0,0,0,17, -0,48,0,0,0,17,0,48,0,0,0,18,95,98,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95,98,0,0,0,0,0, -1,0,15,1,1,1,0,9,95,102,0,0,0,1,8,58,109,97,116,52,0,18,95,102,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0, -48,0,0,0,17,0,48,0,0,0,18,95,102,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95, -102,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95,102,0,0,0,0,0,1,0,15,1,1,1,0, -5,95,105,0,0,0,1,8,58,109,97,116,52,0,18,95,105,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0, -48,0,0,0,18,95,105,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95,105,0,0,17,0, -48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95,105,0,0,0,0,0,1,0,15,1,1,1,0,1,95,98,0,0,0, -1,8,58,109,97,116,52,0,18,95,98,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95, -98,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95,98,0,0,17,0,48,0,0,0,17,0,48,0, -0,0,17,0,48,0,0,0,17,0,48,0,0,0,18,95,98,0,0,0,0,0,1,0,0,2,2,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,1,4, -102,108,111,97,116,95,97,100,100,0,18,97,0,0,18,97,0,0,18,98,0,0,0,0,1,0,9,2,30,1,1,0,9,97,0,0,0,1, -3,2,0,9,1,99,0,0,0,4,102,108,111,97,116,95,110,101,103,97,116,101,0,18,99,0,0,18,97,0,0,0,8,18,99,0, -0,0,1,0,0,2,3,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,1,9,18,97,0,18,98,0,54,21,0,0,1,0,0,2,4,1,0,2,9,97,0, -0,1,1,0,9,98,0,0,0,1,4,102,108,111,97,116,95,109,117,108,116,105,112,108,121,0,18,97,0,0,18,97,0,0, -18,98,0,0,0,0,1,0,0,2,5,1,0,2,9,97,0,0,1,1,0,9,98,0,0,0,1,4,102,108,111,97,116,95,100,105,118,105, -100,101,0,18,97,0,0,18,97,0,0,18,98,0,0,0,0,1,0,9,2,29,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,9,1, -99,0,0,0,9,18,99,0,18,97,0,20,0,8,18,99,0,18,98,0,21,0,0,1,0,0,2,2,1,0,2,5,97,0,0,1,1,0,5,98,0,0,0, -1,9,18,97,0,58,105,110,116,0,58,102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0, -0,46,0,0,20,0,0,1,0,5,2,30,1,1,0,5,97,0,0,0,1,8,58,105,110,116,0,58,102,108,111,97,116,0,18,97,0,0, -0,54,0,0,0,0,1,0,0,2,3,1,0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,18,98,0,54,21,0,0,1,0,9,2,24,1,1, -0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,9,1,99,0,0,0,9,18,99,0,18,97,0,20,0,8,18,99,0,18,98,0,23,0,0,1, -0,0,2,4,1,0,2,5,97,0,0,1,1,0,5,98,0,0,0,1,9,18,97,0,58,105,110,116,0,58,102,108,111,97,116,0,18,97, -0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,48,0,0,20,0,0,1,0,9,2,25,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0, -1,3,2,0,9,1,99,0,0,0,9,18,99,0,18,97,0,20,0,8,18,99,0,18,98,0,24,0,0,1,0,0,2,5,1,0,2,5,97,0,0,1,1,0, -5,98,0,0,0,1,9,18,97,0,58,105,110,116,0,58,102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,116,0, -18,98,0,0,0,49,0,0,20,0,0,1,0,0,2,2,1,0,2,10,118,0,0,1,1,0,10,117,0,0,0,1,9,18,118,0,59,120,0,18, -117,0,59,120,0,21,18,118,0,59,121,0,18,117,0,59,121,0,21,19,0,0,1,0,0,2,3,1,0,2,10,118,0,0,1,1,0,10, -117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,18,118,0,59,121,0,18,117,0,59,121,0,22,19,0,0, -1,0,0,2,4,1,0,2,10,118,0,0,1,1,0,10,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,18,118,0, -59,121,0,18,117,0,59,121,0,23,19,0,0,1,0,0,2,5,1,0,2,10,118,0,0,1,1,0,10,117,0,0,0,1,9,18,118,0,59, -120,0,18,117,0,59,120,0,24,18,118,0,59,121,0,18,117,0,59,121,0,24,19,0,0,1,0,0,2,2,1,0,2,11,118,0,0, -1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,18,118,0,59,121,0,18,117,0,59,121,0, -21,19,18,118,0,59,122,0,18,117,0,59,122,0,21,19,0,0,1,0,0,2,3,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1, -9,18,118,0,59,120,0,18,117,0,59,120,0,22,18,118,0,59,121,0,18,117,0,59,121,0,22,19,18,118,0,59,122, -0,18,117,0,59,122,0,22,19,0,0,1,0,0,2,4,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0, -18,117,0,59,120,0,23,18,118,0,59,121,0,18,117,0,59,121,0,23,19,18,118,0,59,122,0,18,117,0,59,122,0, -23,19,0,0,1,0,0,2,5,1,0,2,11,118,0,0,1,1,0,11,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24, -18,118,0,59,121,0,18,117,0,59,121,0,24,19,18,118,0,59,122,0,18,117,0,59,122,0,24,19,0,0,1,0,0,2,2,1, -0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,18,118,0,59,121,0,18, -117,0,59,121,0,21,19,18,118,0,59,122,0,18,117,0,59,122,0,21,19,18,118,0,59,119,0,18,117,0,59,119,0, -21,19,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22, -18,118,0,59,121,0,18,117,0,59,121,0,22,19,18,118,0,59,122,0,18,117,0,59,122,0,22,19,18,118,0,59,119, -0,18,117,0,59,119,0,22,19,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,9,18,118,0,59,120,0, -18,117,0,59,120,0,23,18,118,0,59,121,0,18,117,0,59,121,0,23,19,18,118,0,59,122,0,18,117,0,59,122,0, -23,19,18,118,0,59,119,0,18,117,0,59,119,0,23,19,0,0,1,0,0,2,5,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1, -9,18,118,0,59,120,0,18,117,0,59,120,0,24,18,118,0,59,121,0,18,117,0,59,121,0,24,19,18,118,0,59,122, -0,18,117,0,59,122,0,24,19,18,118,0,59,119,0,18,117,0,59,119,0,24,19,0,0,1,0,0,2,2,1,0,2,6,118,0,0,1, -1,0,6,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,18,118,0,59,121,0,18,117,0,59,121,0,21, -19,0,0,1,0,0,2,3,1,0,2,6,118,0,0,1,1,0,6,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,18, -118,0,59,121,0,18,117,0,59,121,0,22,19,0,0,1,0,0,2,4,1,0,2,6,118,0,0,1,1,0,6,117,0,0,0,1,9,18,118,0, -59,120,0,18,117,0,59,120,0,23,18,118,0,59,121,0,18,117,0,59,121,0,23,19,0,0,1,0,0,2,5,1,0,2,6,118,0, -0,1,1,0,6,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,18,118,0,59,121,0,18,117,0,59,121,0, -24,19,0,0,1,0,0,2,2,1,0,2,7,118,0,0,1,1,0,7,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,21,18, -118,0,59,121,0,18,117,0,59,121,0,21,19,18,118,0,59,122,0,18,117,0,59,122,0,21,19,0,0,1,0,0,2,3,1,0, -2,7,118,0,0,1,1,0,7,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,22,18,118,0,59,121,0,18,117,0, -59,121,0,22,19,18,118,0,59,122,0,18,117,0,59,122,0,22,19,0,0,1,0,0,2,4,1,0,2,7,118,0,0,1,1,0,7,117, -0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,23,18,118,0,59,121,0,18,117,0,59,121,0,23,19,18,118,0, -59,122,0,18,117,0,59,122,0,23,19,0,0,1,0,0,2,5,1,0,2,7,118,0,0,1,1,0,7,117,0,0,0,1,9,18,118,0,59, -120,0,18,117,0,59,120,0,24,18,118,0,59,121,0,18,117,0,59,121,0,24,19,18,118,0,59,122,0,18,117,0,59, -122,0,24,19,0,0,1,0,0,2,2,1,0,2,8,118,0,0,1,1,0,8,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0, -21,18,118,0,59,121,0,18,117,0,59,121,0,21,19,18,118,0,59,122,0,18,117,0,59,122,0,21,19,18,118,0,59, -119,0,18,117,0,59,119,0,21,19,0,0,1,0,0,2,3,1,0,2,8,118,0,0,1,1,0,8,117,0,0,0,1,9,18,118,0,59,120,0, -18,117,0,59,120,0,22,18,118,0,59,121,0,18,117,0,59,121,0,22,19,18,118,0,59,122,0,18,117,0,59,122,0, -22,19,18,118,0,59,119,0,18,117,0,59,119,0,22,19,0,0,1,0,0,2,4,1,0,2,8,118,0,0,1,1,0,8,117,0,0,0,1,9, -18,118,0,59,120,0,18,117,0,59,120,0,23,18,118,0,59,121,0,18,117,0,59,121,0,23,19,18,118,0,59,122,0, -18,117,0,59,122,0,23,19,18,118,0,59,119,0,18,117,0,59,119,0,23,19,0,0,1,0,0,2,5,1,0,2,8,118,0,0,1,1, -0,8,117,0,0,0,1,9,18,118,0,59,120,0,18,117,0,59,120,0,24,18,118,0,59,121,0,18,117,0,59,121,0,24,19, -18,118,0,59,122,0,18,117,0,59,122,0,24,19,18,118,0,59,119,0,18,117,0,59,119,0,24,19,0,0,1,0,0,2,2,1, -0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,21,18,109,0,16,10, -49,0,57,18,110,0,16,10,49,0,57,21,19,0,0,1,0,0,2,3,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0, -16,8,48,0,57,18,110,0,16,8,48,0,57,22,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,22,19,0,0,1,0, -10,2,24,1,1,0,13,109,0,0,1,1,0,10,118,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,109,0,16,8, -48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,120,0,48,46,0,18,118,0,59,120,0,18, -109,0,16,8,48,0,57,59,121,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,0,0,0,0,1,0, -13,2,24,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,50,0,18,109,0,18,110,0,16,8,48,0,57, -48,0,18,109,0,18,110,0,16,10,49,0,57,48,0,0,0,0,1,0,0,2,4,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9, -18,109,0,18,109,0,18,110,0,48,20,0,0,1,0,0,2,5,1,0,2,13,109,0,0,1,1,0,13,110,0,0,0,1,9,18,109,0,16, -8,48,0,57,18,110,0,16,8,48,0,57,24,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,24,19,0,0,1,0,0,2, -2,1,0,2,14,109,0,0,1,1,0,14,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,21,18,109,0, -16,10,49,0,57,18,110,0,16,10,49,0,57,21,19,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,21,19,0,0, -1,0,0,2,3,1,0,2,14,109,0,0,1,1,0,14,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,22,18, -109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,22,19,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,22, -19,0,0,1,0,11,2,24,1,1,0,14,109,0,0,1,1,0,11,118,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18, -109,0,16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,120,0,48,46,18,118,0,59, -122,0,18,109,0,16,10,50,0,57,59,120,0,48,46,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,121,0,48, -18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59, -121,0,48,46,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,122,0,48,18,118,0,59,121,0,18,109,0,16,10, -49,0,57,59,122,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,0,0,0,0,1,0,14,2,24, -1,1,0,14,109,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,109,0,18,110,0,16,8,48,0,57,48,0,18, -109,0,18,110,0,16,10,49,0,57,48,0,18,109,0,18,110,0,16,10,50,0,57,48,0,0,0,0,1,0,0,2,4,1,0,2,14,109, -0,0,1,1,0,14,110,0,0,0,1,9,18,109,0,18,109,0,18,110,0,48,20,0,0,1,0,0,2,5,1,0,2,14,109,0,0,1,1,0,14, -110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,24,18,109,0,16,10,49,0,57,18,110,0,16,10, -49,0,57,24,19,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,24,19,0,0,1,0,0,2,2,1,0,2,15,109,0,0,1, -1,0,15,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,21,18,109,0,16,10,49,0,57,18,110,0, -16,10,49,0,57,21,19,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,21,19,18,109,0,16,10,51,0,57,18, -110,0,16,10,51,0,57,21,19,0,0,1,0,0,2,3,1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,16,8,48,0, -57,18,110,0,16,8,48,0,57,22,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,22,19,18,109,0,16,10,50,0, -57,18,110,0,16,10,50,0,57,22,19,18,109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,22,19,0,0,1,0,12,2,24, -1,1,0,15,109,0,0,1,1,0,12,118,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57, -59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,120,0,48,46,18,118,0,59,122,0,18,109,0,16, -10,50,0,57,59,120,0,48,46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,120,0,48,46,0,18,118,0,59,120, -0,18,109,0,16,8,48,0,57,59,121,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118, -0,59,122,0,18,109,0,16,10,50,0,57,59,121,0,48,46,18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,121,0, -48,46,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,122,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0, -57,59,122,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109, -0,16,10,51,0,57,59,122,0,48,46,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,119,0,48,18,118,0,59, -121,0,18,109,0,16,10,49,0,57,59,119,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,119,0,48,46, -18,118,0,59,119,0,18,109,0,16,10,51,0,57,59,119,0,48,46,0,0,0,0,1,0,15,2,24,1,1,0,15,109,0,0,1,1,0, -15,110,0,0,0,1,8,58,109,97,116,52,0,18,109,0,18,110,0,16,8,48,0,57,48,0,18,109,0,18,110,0,16,10,49, -0,57,48,0,18,109,0,18,110,0,16,10,50,0,57,48,0,18,109,0,18,110,0,16,10,51,0,57,48,0,0,0,0,1,0,0,2,4, -1,0,2,15,109,0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,18,109,0,18,110,0,48,20,0,0,1,0,0,2,5,1,0,2,15,109, -0,0,1,1,0,15,110,0,0,0,1,9,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,24,18,109,0,16,10,49,0,57,18, -110,0,16,10,49,0,57,24,19,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,24,19,18,109,0,16,10,51,0, -57,18,110,0,16,10,51,0,57,24,19,0,0,1,0,0,2,2,1,0,2,10,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120, -0,18,97,0,21,18,118,0,59,121,0,18,97,0,21,19,0,0,1,0,0,2,3,1,0,2,10,118,0,0,1,1,0,9,97,0,0,0,1,9,18, -118,0,59,120,0,18,97,0,22,18,118,0,59,121,0,18,97,0,22,19,0,0,1,0,0,2,4,1,0,2,10,118,0,0,1,1,0,9,97, -0,0,0,1,9,18,118,0,59,120,0,18,97,0,23,18,118,0,59,121,0,18,97,0,23,19,0,0,1,0,0,2,5,1,0,2,10,118,0, -0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,24,18,118,0,59,121,0,18,97,0,24,19,0,0,1,0,0,2,2,1, -0,2,11,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,21,18,118,0,59,121,0,18,97,0,21,19,18, -118,0,59,122,0,18,97,0,21,19,0,0,1,0,0,2,3,1,0,2,11,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0, -18,97,0,22,18,118,0,59,121,0,18,97,0,22,19,18,118,0,59,122,0,18,97,0,22,19,0,0,1,0,0,2,4,1,0,2,11, -118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,23,18,118,0,59,121,0,18,97,0,23,19,18,118,0, -59,122,0,18,97,0,23,19,0,0,1,0,0,2,5,1,0,2,11,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97, -0,24,18,118,0,59,121,0,18,97,0,24,19,18,118,0,59,122,0,18,97,0,24,19,0,0,1,0,0,2,2,1,0,2,12,118,0,0, -1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,21,18,118,0,59,121,0,18,97,0,21,19,18,118,0,59,122,0, -18,97,0,21,19,18,118,0,59,119,0,18,97,0,21,19,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,9, -18,118,0,59,120,0,18,97,0,22,18,118,0,59,121,0,18,97,0,22,19,18,118,0,59,122,0,18,97,0,22,19,18,118, -0,59,119,0,18,97,0,22,19,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18, -97,0,23,18,118,0,59,121,0,18,97,0,23,19,18,118,0,59,122,0,18,97,0,23,19,18,118,0,59,119,0,18,97,0, -23,19,0,0,1,0,0,2,5,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,9,18,118,0,59,120,0,18,97,0,24,18,118,0,59, -121,0,18,97,0,24,19,18,118,0,59,122,0,18,97,0,24,19,18,118,0,59,119,0,18,97,0,24,19,0,0,1,0,0,2,2,1, -0,2,13,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,21,18,109,0,16,10,49,0,57,18,97,0, -21,19,0,0,1,0,0,2,3,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,22,18,109,0, -16,10,49,0,57,18,97,0,22,19,0,0,1,0,0,2,4,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0, -57,18,97,0,23,18,109,0,16,10,49,0,57,18,97,0,23,19,0,0,1,0,0,2,5,1,0,2,13,109,0,0,1,1,0,9,97,0,0,0, -1,9,18,109,0,16,8,48,0,57,18,97,0,24,18,109,0,16,10,49,0,57,18,97,0,24,19,0,0,1,0,0,2,2,1,0,2,14, -109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,21,18,109,0,16,10,49,0,57,18,97,0,21,19, -18,109,0,16,10,50,0,57,18,97,0,21,19,0,0,1,0,0,2,3,1,0,2,14,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0, -16,8,48,0,57,18,97,0,22,18,109,0,16,10,49,0,57,18,97,0,22,19,18,109,0,16,10,50,0,57,18,97,0,22,19,0, -0,1,0,0,2,4,1,0,2,14,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,23,18,109,0,16,10, -49,0,57,18,97,0,23,19,18,109,0,16,10,50,0,57,18,97,0,23,19,0,0,1,0,0,2,5,1,0,2,14,109,0,0,1,1,0,9, -97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,24,18,109,0,16,10,49,0,57,18,97,0,24,19,18,109,0,16,10, -50,0,57,18,97,0,24,19,0,0,1,0,0,2,2,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18, -97,0,21,18,109,0,16,10,49,0,57,18,97,0,21,19,18,109,0,16,10,50,0,57,18,97,0,21,19,18,109,0,16,10,51, -0,57,18,97,0,21,19,0,0,1,0,0,2,3,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97, -0,22,18,109,0,16,10,49,0,57,18,97,0,22,19,18,109,0,16,10,50,0,57,18,97,0,22,19,18,109,0,16,10,51,0, -57,18,97,0,22,19,0,0,1,0,0,2,4,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0, -23,18,109,0,16,10,49,0,57,18,97,0,23,19,18,109,0,16,10,50,0,57,18,97,0,23,19,18,109,0,16,10,51,0,57, -18,97,0,23,19,0,0,1,0,0,2,5,1,0,2,15,109,0,0,1,1,0,9,97,0,0,0,1,9,18,109,0,16,8,48,0,57,18,97,0,24, -18,109,0,16,10,49,0,57,18,97,0,24,19,18,109,0,16,10,50,0,57,18,97,0,24,19,18,109,0,16,10,51,0,57,18, -97,0,24,19,0,0,1,0,10,2,24,1,1,0,10,118,0,0,1,1,0,13,109,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59, -120,0,18,109,0,16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,8,48,0,57,59,121,0,48,46,0,18, -118,0,59,120,0,18,109,0,16,10,49,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0, -48,46,0,0,0,0,1,0,0,2,4,1,0,2,10,118,0,0,1,1,0,13,109,0,0,0,1,9,18,118,0,18,118,0,18,109,0,48,20,0, -0,1,0,11,2,24,1,1,0,11,118,0,0,1,1,0,14,109,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,109,0, -16,8,48,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,8,48,0,57,59,121,0,48,46,18,118,0,59,122,0, -18,109,0,16,8,48,0,57,59,122,0,48,46,0,18,118,0,59,120,0,18,109,0,16,10,49,0,57,59,120,0,48,18,118, -0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,49,0,57,59,122,0, -48,46,0,18,118,0,59,120,0,18,109,0,16,10,50,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,50,0, -57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,0,0,0,0,1,0,0,2,4,1,0,2, -11,118,0,0,1,1,0,14,109,0,0,0,1,9,18,118,0,18,118,0,18,109,0,48,20,0,0,1,0,12,2,24,1,1,0,12,118,0,0, -1,1,0,15,109,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,109,0,16,8,48,0,57,59,120,0,48,18, -118,0,59,121,0,18,109,0,16,8,48,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,8,48,0,57,59,122, -0,48,46,18,118,0,59,119,0,18,109,0,16,8,48,0,57,59,119,0,48,46,0,18,118,0,59,120,0,18,109,0,16,10, -49,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,49,0,57,59,121,0,48,46,18,118,0,59,122,0,18, -109,0,16,10,49,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,0,16,10,49,0,57,59,119,0,48,46,0,18,118, -0,59,120,0,18,109,0,16,10,50,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16,10,50,0,57,59,121,0,48, -46,18,118,0,59,122,0,18,109,0,16,10,50,0,57,59,122,0,48,46,18,118,0,59,119,0,18,109,0,16,10,50,0,57, -59,119,0,48,46,0,18,118,0,59,120,0,18,109,0,16,10,51,0,57,59,120,0,48,18,118,0,59,121,0,18,109,0,16, -10,51,0,57,59,121,0,48,46,18,118,0,59,122,0,18,109,0,16,10,51,0,57,59,122,0,48,46,18,118,0,59,119,0, -18,109,0,16,10,51,0,57,59,119,0,48,46,0,0,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,15,109,0,0,0,1,9,18, -118,0,18,118,0,18,109,0,48,20,0,0,1,0,9,2,30,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,8,18,97,0,18,98,0,54, -46,0,0,1,0,5,2,29,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,5,1,99,0,0,0,9,18,99,0,18,97,0,20,0,8,18, -99,0,18,98,0,21,0,0,1,0,5,2,30,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,8,18,97,0,18,98,0,54,46,0,0,1,0,5, -2,24,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,5,1,99,0,0,0,8,18,99,0,18,97,0,20,18,98,0,23,0,0,1,0,5, -2,25,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,3,2,0,5,1,99,0,0,0,8,18,99,0,18,97,0,20,18,98,0,24,0,0,1,0, -10,2,29,1,1,0,10,118,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59, -120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,0,0,0,1,0,10,2,30,1,1,0,10,118,0,0,1,1,0,10,117, -0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,117,0,59, -121,0,47,0,0,0,0,1,0,11,2,29,1,1,0,11,118,0,0,1,1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59, -120,0,18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,18,118,0,59,122,0,18,117,0,59, -122,0,46,0,0,0,0,1,0,11,2,30,1,1,0,11,118,0,0,1,1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59, -120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,117,0,59,121,0,47,0,18,118,0,59,122,0,18,117,0,59, -122,0,47,0,0,0,0,1,0,12,2,29,1,1,0,12,118,0,0,1,1,0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59, -120,0,18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,18,118,0,59,122,0,18,117,0,59, -122,0,46,0,18,118,0,59,119,0,18,117,0,59,119,0,46,0,0,0,0,1,0,12,2,30,1,1,0,12,118,0,0,1,1,0,12,117, -0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,117,0,59, -121,0,47,0,18,118,0,59,122,0,18,117,0,59,122,0,47,0,18,118,0,59,119,0,18,117,0,59,119,0,47,0,0,0,0, -1,0,6,2,29,1,1,0,6,118,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,117,0, -59,120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,0,0,0,1,0,6,2,30,1,1,0,6,118,0,0,1,1,0,6,117, -0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,117, -0,59,121,0,47,0,0,0,0,1,0,7,2,29,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18, -118,0,59,120,0,18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,18,118,0,59,122,0,18, -117,0,59,122,0,46,0,0,0,0,1,0,7,2,30,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0, -18,118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59,121,0,18,117,0,59,121,0,47,0,18,118,0,59,122,0, -18,117,0,59,122,0,47,0,0,0,0,1,0,8,2,29,1,1,0,8,118,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52, -0,18,118,0,59,120,0,18,117,0,59,120,0,46,0,18,118,0,59,121,0,18,117,0,59,121,0,46,0,18,118,0,59,122, -0,18,117,0,59,122,0,46,0,18,118,0,59,119,0,18,117,0,59,119,0,46,0,0,0,0,1,0,8,2,30,1,1,0,8,118,0,0, -1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,47,0,18,118,0,59, -121,0,18,117,0,59,121,0,47,0,18,118,0,59,122,0,18,117,0,59,122,0,47,0,18,118,0,59,119,0,18,117,0,59, -119,0,47,0,0,0,0,1,0,13,2,29,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16, -8,48,0,57,18,110,0,16,8,48,0,57,46,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,46,0,0,0,0,1,0, -13,2,30,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18,110,0, -16,8,48,0,57,47,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,47,0,0,0,0,1,0,14,2,29,1,1,0,14,109, -0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,46,0,18, -109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,46,0,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,46,0, -0,0,0,1,0,14,2,30,1,1,0,14,109,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57, -18,110,0,16,8,48,0,57,47,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,47,0,18,109,0,16,10,50,0, -57,18,110,0,16,10,50,0,57,47,0,0,0,0,1,0,15,2,29,1,1,0,15,109,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97, -116,52,0,18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,46,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49, -0,57,46,0,18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,46,0,18,109,0,16,10,51,0,57,18,110,0,16,10, -51,0,57,46,0,0,0,0,1,0,15,2,30,1,1,0,15,109,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97,116,52,0,18,109,0, -16,8,48,0,57,18,110,0,16,8,48,0,57,47,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,47,0,18,109,0, -16,10,50,0,57,18,110,0,16,10,50,0,57,47,0,18,109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,47,0,0,0,0, -1,0,10,2,29,1,1,0,9,97,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,97,0,18,117,0,59,120,0,46,0, -18,97,0,18,117,0,59,121,0,46,0,0,0,0,1,0,10,2,29,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101, -99,50,0,18,118,0,59,120,0,18,98,0,46,0,18,118,0,59,121,0,18,98,0,46,0,0,0,0,1,0,10,2,30,1,1,0,9,97, -0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,97,0,18,117,0,59,120,0,47,0,18,97,0,18,117,0,59, -121,0,47,0,0,0,0,1,0,10,2,30,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59, -120,0,18,98,0,47,0,18,118,0,59,121,0,18,98,0,47,0,0,0,0,1,0,10,2,24,1,1,0,9,97,0,0,1,1,0,10,117,0,0, -0,1,8,58,118,101,99,50,0,18,97,0,18,117,0,59,120,0,48,0,18,97,0,18,117,0,59,121,0,48,0,0,0,0,1,0,10, -2,24,1,1,0,10,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,98,0,48,0,18,118, -0,59,121,0,18,98,0,48,0,0,0,0,1,0,10,2,25,1,1,0,9,97,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0, -18,97,0,18,117,0,59,120,0,49,0,18,97,0,18,117,0,59,121,0,49,0,0,0,0,1,0,10,2,25,1,1,0,10,118,0,0,1, -1,0,9,98,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,98,0,49,0,18,118,0,59,121,0,18,98,0,49,0, -0,0,0,1,0,11,2,29,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18,97,0,18,117,0,59,120, -0,46,0,18,97,0,18,117,0,59,121,0,46,0,18,97,0,18,117,0,59,122,0,46,0,0,0,0,1,0,11,2,29,1,1,0,11,118, -0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,98,0,46,0,18,118,0,59,121,0,18,98, -0,46,0,18,118,0,59,122,0,18,98,0,46,0,0,0,0,1,0,11,2,30,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,8,58, -118,101,99,51,0,18,97,0,18,117,0,59,120,0,47,0,18,97,0,18,117,0,59,121,0,47,0,18,97,0,18,117,0,59, -122,0,47,0,0,0,0,1,0,11,2,30,1,1,0,11,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59, -120,0,18,98,0,47,0,18,118,0,59,121,0,18,98,0,47,0,18,118,0,59,122,0,18,98,0,47,0,0,0,0,1,0,11,2,24, -1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18,97,0,18,117,0,59,120,0,48,0,18,97,0,18, -117,0,59,121,0,48,0,18,97,0,18,117,0,59,122,0,48,0,0,0,0,1,0,11,2,24,1,1,0,11,118,0,0,1,1,0,9,98,0, -0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,98,0,48,0,18,118,0,59,121,0,18,98,0,48,0,18,118,0, -59,122,0,18,98,0,48,0,0,0,0,1,0,11,2,25,1,1,0,9,97,0,0,1,1,0,11,117,0,0,0,1,8,58,118,101,99,51,0,18, -97,0,18,117,0,59,120,0,49,0,18,97,0,18,117,0,59,121,0,49,0,18,97,0,18,117,0,59,122,0,49,0,0,0,0,1,0, -11,2,25,1,1,0,11,118,0,0,1,1,0,9,98,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,98,0,49,0,18, -118,0,59,121,0,18,98,0,49,0,18,118,0,59,122,0,18,98,0,49,0,0,0,0,1,0,12,2,29,1,1,0,9,97,0,0,1,1,0, -12,117,0,0,0,1,8,58,118,101,99,52,0,18,97,0,18,117,0,59,120,0,46,0,18,97,0,18,117,0,59,121,0,46,0, -18,97,0,18,117,0,59,122,0,46,0,18,97,0,18,117,0,59,119,0,46,0,0,0,0,1,0,12,2,29,1,1,0,12,118,0,0,1, -1,0,9,98,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,98,0,46,0,18,118,0,59,121,0,18,98,0,46,0, -18,118,0,59,122,0,18,98,0,46,0,18,118,0,59,119,0,18,98,0,46,0,0,0,0,1,0,12,2,30,1,1,0,9,97,0,0,1,1, -0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,97,0,18,117,0,59,120,0,47,0,18,97,0,18,117,0,59,121,0,47,0, -18,97,0,18,117,0,59,122,0,47,0,18,97,0,18,117,0,59,119,0,47,0,0,0,0,1,0,12,2,30,1,1,0,12,118,0,0,1, -1,0,9,98,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,98,0,47,0,18,118,0,59,121,0,18,98,0,47,0, -18,118,0,59,122,0,18,98,0,47,0,18,118,0,59,119,0,18,98,0,47,0,0,0,0,1,0,12,2,24,1,1,0,9,97,0,0,1,1, -0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,97,0,18,117,0,59,120,0,48,0,18,97,0,18,117,0,59,121,0,48,0, -18,97,0,18,117,0,59,122,0,48,0,18,97,0,18,117,0,59,119,0,48,0,0,0,0,1,0,12,2,24,1,1,0,12,118,0,0,1, -1,0,9,98,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,98,0,48,0,18,118,0,59,121,0,18,98,0,48,0, -18,118,0,59,122,0,18,98,0,48,0,18,118,0,59,119,0,18,98,0,48,0,0,0,0,1,0,12,2,25,1,1,0,9,97,0,0,1,1, -0,12,117,0,0,0,1,8,58,118,101,99,52,0,18,97,0,18,117,0,59,120,0,49,0,18,97,0,18,117,0,59,121,0,49,0, -18,97,0,18,117,0,59,122,0,49,0,18,97,0,18,117,0,59,119,0,49,0,0,0,0,1,0,12,2,25,1,1,0,12,118,0,0,1, -1,0,9,98,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,98,0,49,0,18,118,0,59,121,0,18,98,0,49,0, -18,118,0,59,122,0,18,98,0,49,0,18,118,0,59,119,0,18,98,0,49,0,0,0,0,1,0,13,2,29,1,1,0,9,97,0,0,1,1, -0,13,110,0,0,0,1,8,58,109,97,116,50,0,18,97,0,18,110,0,16,8,48,0,57,46,0,18,97,0,18,110,0,16,10,49, -0,57,46,0,0,0,0,1,0,13,2,29,1,1,0,13,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8, -48,0,57,18,98,0,46,0,18,109,0,16,10,49,0,57,18,98,0,46,0,0,0,0,1,0,13,2,30,1,1,0,9,97,0,0,1,1,0,13, -110,0,0,0,1,8,58,109,97,116,50,0,18,97,0,18,110,0,16,8,48,0,57,47,0,18,97,0,18,110,0,16,10,49,0,57, -47,0,0,0,0,1,0,13,2,30,1,1,0,13,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0, -57,18,98,0,47,0,18,109,0,16,10,49,0,57,18,98,0,47,0,0,0,0,1,0,13,2,24,1,1,0,9,97,0,0,1,1,0,13,110,0, -0,0,1,8,58,109,97,116,50,0,18,97,0,18,110,0,16,8,48,0,57,48,0,18,97,0,18,110,0,16,10,49,0,57,48,0,0, -0,0,1,0,13,2,24,1,1,0,13,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18, -98,0,48,0,18,109,0,16,10,49,0,57,18,98,0,48,0,0,0,0,1,0,13,2,25,1,1,0,9,97,0,0,1,1,0,13,110,0,0,0,1, -8,58,109,97,116,50,0,18,97,0,18,110,0,16,8,48,0,57,49,0,18,97,0,18,110,0,16,10,49,0,57,49,0,0,0,0,1, -0,13,2,25,1,1,0,13,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,18,98,0,49, -0,18,109,0,16,10,49,0,57,18,98,0,49,0,0,0,0,1,0,14,2,29,1,1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,8,58, -109,97,116,51,0,18,97,0,18,110,0,16,8,48,0,57,46,0,18,97,0,18,110,0,16,10,49,0,57,46,0,18,97,0,18, -110,0,16,10,50,0,57,46,0,0,0,0,1,0,14,2,29,1,1,0,14,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,51,0, -18,109,0,16,8,48,0,57,18,98,0,46,0,18,109,0,16,10,49,0,57,18,98,0,46,0,18,109,0,16,10,50,0,57,18,98, -0,46,0,0,0,0,1,0,14,2,30,1,1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,97,0,18,110,0, -16,8,48,0,57,47,0,18,97,0,18,110,0,16,10,49,0,57,47,0,18,97,0,18,110,0,16,10,50,0,57,47,0,0,0,0,1,0, -14,2,30,1,1,0,14,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,18,98,0,47,0, -18,109,0,16,10,49,0,57,18,98,0,47,0,18,109,0,16,10,50,0,57,18,98,0,47,0,0,0,0,1,0,14,2,24,1,1,0,9, -97,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,97,0,18,110,0,16,8,48,0,57,48,0,18,97,0,18,110, -0,16,10,49,0,57,48,0,18,97,0,18,110,0,16,10,50,0,57,48,0,0,0,0,1,0,14,2,24,1,1,0,14,109,0,0,1,1,0,9, -98,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,18,98,0,48,0,18,109,0,16,10,49,0,57,18,98,0, -48,0,18,109,0,16,10,50,0,57,18,98,0,48,0,0,0,0,1,0,14,2,25,1,1,0,9,97,0,0,1,1,0,14,110,0,0,0,1,8,58, -109,97,116,51,0,18,97,0,18,110,0,16,8,48,0,57,49,0,18,97,0,18,110,0,16,10,49,0,57,49,0,18,97,0,18, -110,0,16,10,50,0,57,49,0,0,0,0,1,0,14,2,25,1,1,0,14,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,51,0, -18,109,0,16,8,48,0,57,18,98,0,49,0,18,109,0,16,10,49,0,57,18,98,0,49,0,18,109,0,16,10,50,0,57,18,98, -0,49,0,0,0,0,1,0,15,2,29,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97,116,52,0,18,97,0,18,110,0, -16,8,48,0,57,46,0,18,97,0,18,110,0,16,10,49,0,57,46,0,18,97,0,18,110,0,16,10,50,0,57,46,0,18,97,0, -18,110,0,16,10,51,0,57,46,0,0,0,0,1,0,15,2,29,1,1,0,15,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116, -52,0,18,109,0,16,8,48,0,57,18,98,0,46,0,18,109,0,16,10,49,0,57,18,98,0,46,0,18,109,0,16,10,50,0,57, -18,98,0,46,0,18,109,0,16,10,51,0,57,18,98,0,46,0,0,0,0,1,0,15,2,30,1,1,0,9,97,0,0,1,1,0,15,110,0,0, -0,1,8,58,109,97,116,52,0,18,97,0,18,110,0,16,8,48,0,57,47,0,18,97,0,18,110,0,16,10,49,0,57,47,0,18, -97,0,18,110,0,16,10,50,0,57,47,0,18,97,0,18,110,0,16,10,51,0,57,47,0,0,0,0,1,0,15,2,30,1,1,0,15,109, -0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,48,0,57,18,98,0,47,0,18,109,0,16,10,49,0, -57,18,98,0,47,0,18,109,0,16,10,50,0,57,18,98,0,47,0,18,109,0,16,10,51,0,57,18,98,0,47,0,0,0,0,1,0, -15,2,24,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97,116,52,0,18,97,0,18,110,0,16,8,48,0,57,48,0, -18,97,0,18,110,0,16,10,49,0,57,48,0,18,97,0,18,110,0,16,10,50,0,57,48,0,18,97,0,18,110,0,16,10,51,0, -57,48,0,0,0,0,1,0,15,2,24,1,1,0,15,109,0,0,1,1,0,9,98,0,0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,48, -0,57,18,98,0,48,0,18,109,0,16,10,49,0,57,18,98,0,48,0,18,109,0,16,10,50,0,57,18,98,0,48,0,18,109,0, -16,10,51,0,57,18,98,0,48,0,0,0,0,1,0,15,2,25,1,1,0,9,97,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97,116,52, -0,18,97,0,18,110,0,16,8,48,0,57,49,0,18,97,0,18,110,0,16,10,49,0,57,49,0,18,97,0,18,110,0,16,10,50, -0,57,49,0,18,97,0,18,110,0,16,10,51,0,57,49,0,0,0,0,1,0,15,2,25,1,1,0,15,109,0,0,1,1,0,9,98,0,0,0,1, -8,58,109,97,116,52,0,18,109,0,16,8,48,0,57,18,98,0,49,0,18,109,0,16,10,49,0,57,18,98,0,49,0,18,109, -0,16,10,50,0,57,18,98,0,49,0,18,109,0,16,10,51,0,57,18,98,0,49,0,0,0,0,1,0,6,2,29,1,1,0,5,97,0,0,1, -1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,18,117,0,59,120,0,46,0,18,97,0,18,117,0,59,121,0, -46,0,0,0,0,1,0,6,2,29,1,1,0,6,118,0,0,1,1,0,5,98,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0, -18,98,0,46,0,18,118,0,59,121,0,18,98,0,46,0,0,0,0,1,0,6,2,30,1,1,0,5,97,0,0,1,1,0,6,117,0,0,0,1,8, -58,105,118,101,99,50,0,18,97,0,18,117,0,59,120,0,47,0,18,97,0,18,117,0,59,121,0,47,0,0,0,0,1,0,6,2, -30,1,1,0,6,118,0,0,1,1,0,5,98,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,98,0,47,0,18, -118,0,59,121,0,18,98,0,47,0,0,0,0,1,0,6,2,24,1,1,0,5,97,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99, -50,0,18,97,0,18,117,0,59,120,0,48,0,18,97,0,18,117,0,59,121,0,48,0,0,0,0,1,0,6,2,24,1,1,0,6,118,0,0, -1,1,0,5,98,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,98,0,48,0,18,118,0,59,121,0,18,98, -0,48,0,0,0,0,1,0,6,2,25,1,1,0,5,97,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,97,0,18,117, -0,59,120,0,49,0,18,97,0,18,117,0,59,121,0,49,0,0,0,0,1,0,6,2,25,1,1,0,6,118,0,0,1,1,0,5,98,0,0,0,1, -8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,98,0,49,0,18,118,0,59,121,0,18,98,0,49,0,0,0,0,1,0,7, -2,29,1,1,0,5,97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,18,117,0,59,120,0,46,0,18, -97,0,18,117,0,59,121,0,46,0,18,97,0,18,117,0,59,122,0,46,0,0,0,0,1,0,7,2,29,1,1,0,7,118,0,0,1,1,0,5, -98,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,18,98,0,46,0,18,118,0,59,121,0,18,98,0,46,0, -18,118,0,59,122,0,18,98,0,46,0,0,0,0,1,0,7,2,30,1,1,0,5,97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101, -99,51,0,18,97,0,18,117,0,59,120,0,47,0,18,97,0,18,117,0,59,121,0,47,0,18,97,0,18,117,0,59,122,0,47, -0,0,0,0,1,0,7,2,30,1,1,0,7,118,0,0,1,1,0,5,98,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,18, -98,0,47,0,18,118,0,59,121,0,18,98,0,47,0,18,118,0,59,122,0,18,98,0,47,0,0,0,0,1,0,7,2,24,1,1,0,5,97, -0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0,18,117,0,59,120,0,48,0,18,97,0,18,117,0,59, -121,0,48,0,18,97,0,18,117,0,59,122,0,48,0,0,0,0,1,0,7,2,24,1,1,0,7,118,0,0,1,1,0,5,98,0,0,0,1,8,58, -105,118,101,99,51,0,18,118,0,59,120,0,18,98,0,48,0,18,118,0,59,121,0,18,98,0,48,0,18,118,0,59,122,0, -18,98,0,48,0,0,0,0,1,0,7,2,25,1,1,0,5,97,0,0,1,1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,97,0, -18,117,0,59,120,0,49,0,18,97,0,18,117,0,59,121,0,49,0,18,97,0,18,117,0,59,122,0,49,0,0,0,0,1,0,7,2, -25,1,1,0,7,118,0,0,1,1,0,5,98,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,18,98,0,49,0,18, -118,0,59,121,0,18,98,0,49,0,18,118,0,59,122,0,18,98,0,49,0,0,0,0,1,0,8,2,29,1,1,0,5,97,0,0,1,1,0,8, -117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,18,117,0,59,120,0,46,0,18,97,0,18,117,0,59,121,0,46,0, -18,97,0,18,117,0,59,122,0,46,0,18,97,0,18,117,0,59,119,0,46,0,0,0,0,1,0,8,2,29,1,1,0,8,118,0,0,1,1, -0,5,98,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,98,0,46,0,18,118,0,59,121,0,18,98,0,46, -0,18,118,0,59,122,0,18,98,0,46,0,18,118,0,59,119,0,18,98,0,46,0,0,0,0,1,0,8,2,30,1,1,0,5,97,0,0,1,1, -0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,18,117,0,59,120,0,47,0,18,97,0,18,117,0,59,121,0, -47,0,18,97,0,18,117,0,59,122,0,47,0,18,97,0,18,117,0,59,119,0,47,0,0,0,0,1,0,8,2,30,1,1,0,8,118,0,0, -1,1,0,5,98,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,98,0,47,0,18,118,0,59,121,0,18,98, -0,47,0,18,118,0,59,122,0,18,98,0,47,0,18,118,0,59,119,0,18,98,0,47,0,0,0,0,1,0,8,2,24,1,1,0,5,97,0, -0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,18,117,0,59,120,0,48,0,18,97,0,18,117,0,59, -121,0,48,0,18,97,0,18,117,0,59,122,0,48,0,18,97,0,18,117,0,59,119,0,48,0,0,0,0,1,0,8,2,24,1,1,0,8, -118,0,0,1,1,0,5,98,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,98,0,48,0,18,118,0,59,121, -0,18,98,0,48,0,18,118,0,59,122,0,18,98,0,48,0,18,118,0,59,119,0,18,98,0,48,0,0,0,0,1,0,8,2,25,1,1,0, -5,97,0,0,1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,97,0,18,117,0,59,120,0,49,0,18,97,0,18,117, -0,59,121,0,49,0,18,97,0,18,117,0,59,122,0,49,0,18,97,0,18,117,0,59,119,0,49,0,0,0,0,1,0,8,2,25,1,1, -0,8,118,0,0,1,1,0,5,98,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,98,0,49,0,18,118,0,59, -121,0,18,98,0,49,0,18,118,0,59,122,0,18,98,0,49,0,18,118,0,59,119,0,18,98,0,49,0,0,0,0,1,0,10,2,24, -1,1,0,10,118,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0, -18,118,0,59,121,0,18,117,0,59,121,0,48,0,0,0,0,1,0,11,2,24,1,1,0,11,118,0,0,1,1,0,11,117,0,0,0,1,8, -58,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,18,117,0,59,121,0,48, -0,18,118,0,59,122,0,18,117,0,59,122,0,48,0,0,0,0,1,0,12,2,24,1,1,0,12,118,0,0,1,1,0,12,117,0,0,0,1, -8,58,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,18,117,0,59,121,0, -48,0,18,118,0,59,122,0,18,117,0,59,122,0,48,0,18,118,0,59,119,0,18,117,0,59,119,0,48,0,0,0,0,1,0,6, -2,24,1,1,0,6,118,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,18,117,0,59,120, -0,48,0,18,118,0,59,121,0,18,117,0,59,121,0,48,0,0,0,0,1,0,7,2,24,1,1,0,7,118,0,0,1,1,0,7,117,0,0,0, -1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,18,117,0,59, -121,0,48,0,18,118,0,59,122,0,18,117,0,59,122,0,48,0,0,0,0,1,0,8,2,24,1,1,0,8,118,0,0,1,1,0,8,117,0, -0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,48,0,18,118,0,59,121,0,18,117,0, -59,121,0,48,0,18,118,0,59,122,0,18,117,0,59,122,0,48,0,18,118,0,59,119,0,18,117,0,59,119,0,48,0,0,0, -0,1,0,10,2,25,1,1,0,10,118,0,0,1,1,0,10,117,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,18,117,0, -59,120,0,49,0,18,118,0,59,121,0,18,117,0,59,121,0,49,0,0,0,0,1,0,11,2,25,1,1,0,11,118,0,0,1,1,0,11, -117,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,49,0,18,118,0,59,121,0,18,117, -0,59,121,0,49,0,18,118,0,59,122,0,18,117,0,59,122,0,49,0,0,0,0,1,0,12,2,25,1,1,0,12,118,0,0,1,1,0, -12,117,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,49,0,18,118,0,59,121,0,18, -117,0,59,121,0,49,0,18,118,0,59,122,0,18,117,0,59,122,0,49,0,18,118,0,59,119,0,18,117,0,59,119,0,49, -0,0,0,0,1,0,6,2,25,1,1,0,6,118,0,0,1,1,0,6,117,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0, -18,117,0,59,120,0,49,0,18,118,0,59,121,0,18,117,0,59,121,0,49,0,0,0,0,1,0,7,2,25,1,1,0,7,118,0,0,1, -1,0,7,117,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,18,117,0,59,120,0,49,0,18,118,0,59,121, -0,18,117,0,59,121,0,49,0,18,118,0,59,122,0,18,117,0,59,122,0,49,0,0,0,0,1,0,8,2,25,1,1,0,8,118,0,0, -1,1,0,8,117,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,18,117,0,59,120,0,49,0,18,118,0,59, -121,0,18,117,0,59,121,0,49,0,18,118,0,59,122,0,18,117,0,59,122,0,49,0,18,118,0,59,119,0,18,117,0,59, -119,0,49,0,0,0,0,1,0,13,2,25,1,1,0,13,109,0,0,1,1,0,13,110,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16, -8,48,0,57,18,110,0,16,8,48,0,57,49,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,49,0,0,0,0,1,0, -14,2,25,1,1,0,14,109,0,0,1,1,0,14,110,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,18,110,0, -16,8,48,0,57,49,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,49,0,18,109,0,16,10,50,0,57,18,110, -0,16,10,50,0,57,49,0,0,0,0,1,0,15,2,25,1,1,0,15,109,0,0,1,1,0,15,110,0,0,0,1,8,58,109,97,116,52,0, -18,109,0,16,8,48,0,57,18,110,0,16,8,48,0,57,49,0,18,109,0,16,10,49,0,57,18,110,0,16,10,49,0,57,49,0, -18,109,0,16,10,50,0,57,18,110,0,16,10,50,0,57,49,0,18,109,0,16,10,51,0,57,18,110,0,16,10,51,0,57,49, -0,0,0,0,1,0,10,2,30,1,1,0,10,118,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,54,0,18,118,0,59, -121,0,54,0,0,0,0,1,0,11,2,30,1,1,0,11,118,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,54,0,18, -118,0,59,121,0,54,0,18,118,0,59,122,0,54,0,0,0,0,1,0,12,2,30,1,1,0,12,118,0,0,0,1,8,58,118,101,99, -52,0,18,118,0,59,120,0,54,0,18,118,0,59,121,0,54,0,18,118,0,59,122,0,54,0,18,118,0,59,119,0,54,0,0, -0,0,1,0,6,2,30,1,1,0,6,118,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,54,0,18,118,0,59,121, -0,54,0,0,0,0,1,0,7,2,30,1,1,0,7,118,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,54,0,18,118, -0,59,121,0,54,0,18,118,0,59,122,0,54,0,0,0,0,1,0,8,2,30,1,1,0,8,118,0,0,0,1,8,58,105,118,101,99,52, -0,18,118,0,59,120,0,54,0,18,118,0,59,121,0,54,0,18,118,0,59,122,0,54,0,18,118,0,59,119,0,54,0,0,0,0, -1,0,13,2,30,1,1,0,13,109,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,54,0,18,109,0,16,10,49, -0,57,54,0,0,0,0,1,0,14,2,30,1,1,0,14,109,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,54,0,18, -109,0,16,10,49,0,57,54,0,18,109,0,16,10,50,0,57,54,0,0,0,0,1,0,15,2,30,1,1,0,15,109,0,0,0,1,8,58, -109,97,116,52,0,18,109,0,16,8,48,0,57,54,0,18,109,0,16,10,49,0,57,54,0,18,109,0,16,10,50,0,57,54,0, -18,109,0,16,10,51,0,57,54,0,0,0,0,1,0,0,2,28,1,0,2,9,97,0,0,0,1,9,18,97,0,17,49,0,48,0,0,22,0,0,1,0, -0,2,28,1,0,2,5,97,0,0,0,1,9,18,97,0,16,10,49,0,22,0,0,1,0,0,2,28,1,0,2,10,118,0,0,0,1,9,18,118,0,59, -120,0,52,18,118,0,59,121,0,52,19,0,0,1,0,0,2,28,1,0,2,11,118,0,0,0,1,9,18,118,0,59,120,0,52,18,118, -0,59,121,0,52,19,18,118,0,59,122,0,52,19,0,0,1,0,0,2,28,1,0,2,12,118,0,0,0,1,9,18,118,0,59,120,0,52, -18,118,0,59,121,0,52,19,18,118,0,59,122,0,52,19,18,118,0,59,119,0,52,19,0,0,1,0,0,2,28,1,0,2,6,118, -0,0,0,1,9,18,118,0,59,120,0,52,18,118,0,59,121,0,52,19,0,0,1,0,0,2,28,1,0,2,7,118,0,0,0,1,9,18,118, -0,59,120,0,52,18,118,0,59,121,0,52,19,18,118,0,59,122,0,52,19,0,0,1,0,0,2,28,1,0,2,8,118,0,0,0,1,9, -18,118,0,59,120,0,52,18,118,0,59,121,0,52,19,18,118,0,59,122,0,52,19,18,118,0,59,119,0,52,19,0,0,1, -0,0,2,28,1,0,2,13,109,0,0,0,1,9,18,109,0,16,8,48,0,57,52,18,109,0,16,10,49,0,57,52,19,0,0,1,0,0,2, -28,1,0,2,14,109,0,0,0,1,9,18,109,0,16,8,48,0,57,52,18,109,0,16,10,49,0,57,52,19,18,109,0,16,10,50,0, -57,52,19,0,0,1,0,0,2,28,1,0,2,15,109,0,0,0,1,9,18,109,0,16,8,48,0,57,52,18,109,0,16,10,49,0,57,52, -19,18,109,0,16,10,50,0,57,52,19,18,109,0,16,10,51,0,57,52,19,0,0,1,0,0,2,27,1,0,2,9,97,0,0,0,1,9,18, -97,0,17,49,0,48,0,0,21,0,0,1,0,0,2,27,1,0,2,5,97,0,0,0,1,9,18,97,0,16,10,49,0,21,0,0,1,0,0,2,27,1,0, -2,10,118,0,0,0,1,9,18,118,0,59,120,0,51,18,118,0,59,121,0,51,19,0,0,1,0,0,2,27,1,0,2,11,118,0,0,0,1, -9,18,118,0,59,120,0,51,18,118,0,59,121,0,51,19,18,118,0,59,122,0,51,19,0,0,1,0,0,2,27,1,0,2,12,118, -0,0,0,1,9,18,118,0,59,120,0,51,18,118,0,59,121,0,51,19,18,118,0,59,122,0,51,19,18,118,0,59,119,0,51, -19,0,0,1,0,0,2,27,1,0,2,6,118,0,0,0,1,9,18,118,0,59,120,0,51,18,118,0,59,121,0,51,19,0,0,1,0,0,2,27, -1,0,2,7,118,0,0,0,1,9,18,118,0,59,120,0,51,18,118,0,59,121,0,51,19,18,118,0,59,122,0,51,19,0,0,1,0, -0,2,27,1,0,2,8,118,0,0,0,1,9,18,118,0,59,120,0,51,18,118,0,59,121,0,51,19,18,118,0,59,122,0,51,19, -18,118,0,59,119,0,51,19,0,0,1,0,0,2,27,1,0,2,13,109,0,0,0,1,9,18,109,0,16,8,48,0,57,51,18,109,0,16, -10,49,0,57,51,19,0,0,1,0,0,2,27,1,0,2,14,109,0,0,0,1,9,18,109,0,16,8,48,0,57,51,18,109,0,16,10,49,0, -57,51,19,18,109,0,16,10,50,0,57,51,19,0,0,1,0,0,2,27,1,0,2,15,109,0,0,0,1,9,18,109,0,16,8,48,0,57, -51,18,109,0,16,10,49,0,57,51,19,18,109,0,16,10,50,0,57,51,19,18,109,0,16,10,51,0,57,51,19,0,0,1,0,9, -2,28,1,0,2,9,97,0,0,1,1,0,5,0,0,0,1,3,2,0,9,1,99,0,0,0,9,18,99,0,18,97,0,20,0,9,18,97,0,52,0,8,18, -99,0,0,0,1,0,5,2,28,1,0,2,5,97,0,0,1,1,0,5,0,0,0,1,3,2,0,5,1,99,0,0,0,9,18,99,0,18,97,0,20,0,9,18, -97,0,52,0,8,18,99,0,0,0,1,0,10,2,28,1,0,2,10,118,0,0,1,1,0,5,0,0,0,1,8,58,118,101,99,50,0,18,118,0, -59,120,0,61,0,18,118,0,59,121,0,61,0,0,0,0,1,0,11,2,28,1,0,2,11,118,0,0,1,1,0,5,0,0,0,1,8,58,118, -101,99,51,0,18,118,0,59,120,0,61,0,18,118,0,59,121,0,61,0,18,118,0,59,122,0,61,0,0,0,0,1,0,12,2,28, -1,0,2,12,118,0,0,1,1,0,5,0,0,0,1,8,58,118,101,99,52,0,18,118,0,59,120,0,61,0,18,118,0,59,121,0,61,0, -18,118,0,59,122,0,61,0,18,118,0,59,119,0,61,0,0,0,0,1,0,6,2,28,1,0,2,6,118,0,0,1,1,0,5,0,0,0,1,8,58, -105,118,101,99,50,0,18,118,0,59,120,0,61,0,18,118,0,59,121,0,61,0,0,0,0,1,0,7,2,28,1,0,2,7,118,0,0, -1,1,0,5,0,0,0,1,8,58,105,118,101,99,51,0,18,118,0,59,120,0,61,0,18,118,0,59,121,0,61,0,18,118,0,59, -122,0,61,0,0,0,0,1,0,8,2,28,1,0,2,8,118,0,0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59, -120,0,61,0,18,118,0,59,121,0,61,0,18,118,0,59,122,0,61,0,18,118,0,59,119,0,61,0,0,0,0,1,0,13,2,28,1, -0,2,13,109,0,0,1,1,0,5,0,0,0,1,8,58,109,97,116,50,0,18,109,0,16,8,48,0,57,61,0,18,109,0,16,10,49,0, -57,61,0,0,0,0,1,0,14,2,28,1,0,2,14,109,0,0,1,1,0,5,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0, -57,61,0,18,109,0,16,10,49,0,57,61,0,18,109,0,16,10,50,0,57,61,0,0,0,0,1,0,15,2,28,1,0,2,15,109,0,0, -1,1,0,5,0,0,0,1,8,58,109,97,116,52,0,18,109,0,16,8,48,0,57,61,0,18,109,0,16,10,49,0,57,61,0,18,109, -0,16,10,50,0,57,61,0,18,109,0,16,10,51,0,57,61,0,0,0,0,1,0,9,2,27,1,0,2,9,97,0,0,1,1,0,5,0,0,0,1,3, -2,0,9,1,99,0,0,0,9,18,99,0,18,97,0,20,0,9,18,97,0,51,0,8,18,99,0,0,0,1,0,5,2,27,1,0,2,5,97,0,0,1,1, -0,5,0,0,0,1,3,2,0,5,1,99,0,0,0,9,18,99,0,18,97,0,20,0,9,18,97,0,51,0,8,18,99,0,0,0,1,0,10,2,27,1,0, -2,10,118,0,0,1,1,0,5,0,0,0,1,8,58,118,101,99,50,0,18,118,0,59,120,0,60,0,18,118,0,59,121,0,60,0,0,0, -0,1,0,11,2,27,1,0,2,11,118,0,0,1,1,0,5,0,0,0,1,8,58,118,101,99,51,0,18,118,0,59,120,0,60,0,18,118,0, -59,121,0,60,0,18,118,0,59,122,0,60,0,0,0,0,1,0,12,2,27,1,0,2,12,118,0,0,1,1,0,5,0,0,0,1,8,58,118, -101,99,52,0,18,118,0,59,120,0,60,0,18,118,0,59,121,0,60,0,18,118,0,59,122,0,60,0,18,118,0,59,119,0, -60,0,0,0,0,1,0,6,2,27,1,0,2,6,118,0,0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,50,0,18,118,0,59,120,0,60, -0,18,118,0,59,121,0,60,0,0,0,0,1,0,7,2,27,1,0,2,7,118,0,0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,51,0, -18,118,0,59,120,0,60,0,18,118,0,59,121,0,60,0,18,118,0,59,122,0,60,0,0,0,0,1,0,8,2,27,1,0,2,8,118,0, -0,1,1,0,5,0,0,0,1,8,58,105,118,101,99,52,0,18,118,0,59,120,0,60,0,18,118,0,59,121,0,60,0,18,118,0, -59,122,0,60,0,18,118,0,59,119,0,60,0,0,0,0,1,0,13,2,27,1,0,2,13,109,0,0,1,1,0,5,0,0,0,1,8,58,109,97, -116,50,0,18,109,0,16,8,48,0,57,60,0,18,109,0,16,10,49,0,57,60,0,0,0,0,1,0,14,2,27,1,0,2,14,109,0,0, -1,1,0,5,0,0,0,1,8,58,109,97,116,51,0,18,109,0,16,8,48,0,57,60,0,18,109,0,16,10,49,0,57,60,0,18,109, -0,16,10,50,0,57,60,0,0,0,0,1,0,15,2,27,1,0,2,15,109,0,0,1,1,0,5,0,0,0,1,8,58,109,97,116,52,0,18,109, -0,16,8,48,0,57,60,0,18,109,0,16,10,49,0,57,60,0,18,109,0,16,10,50,0,57,60,0,18,109,0,16,10,51,0,57, -60,0,0,0,0,1,0,1,2,18,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,3,2,0,1,1,99,0,0,0,4,102,108,111,97,116,95, -108,101,115,115,0,18,99,0,0,18,97,0,0,18,98,0,0,0,8,18,99,0,0,0,1,0,1,2,18,1,1,0,5,97,0,0,1,1,0,5, -98,0,0,0,1,8,58,102,108,111,97,116,0,18,97,0,0,0,58,102,108,111,97,116,0,18,98,0,0,0,40,0,0,1,0,1,2, -19,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,8,18,98,0,18,97,0,40,0,0,1,0,1,2,19,1,1,0,5,97,0,0,1,1,0,5,98, -0,0,0,1,8,18,98,0,18,97,0,40,0,0,1,0,1,2,21,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,8,18,97,0,18,98,0,41, -18,97,0,18,98,0,38,32,0,0,1,0,1,2,21,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,8,18,97,0,18,98,0,41,18,97,0, -18,98,0,38,32,0,0,1,0,1,2,20,1,1,0,9,97,0,0,1,1,0,9,98,0,0,0,1,8,18,97,0,18,98,0,40,18,97,0,18,98,0, -38,32,0,0,1,0,1,2,20,1,1,0,5,97,0,0,1,1,0,5,98,0,0,0,1,8,18,97,0,18,98,0,40,18,97,0,18,98,0,38,32,0, -0,1,0,1,2,12,1,1,0,1,97,0,0,1,1,0,1,98,0,0,0,1,8,18,97,0,18,98,0,39,0,0,1,0,1,2,32,1,1,0,1,97,0,0,0, -1,8,18,97,0,15,2,48,0,38,0,0,0 \ No newline at end of file diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_fragment_builtin_gc.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_fragment_builtin_gc.h deleted file mode 100644 index 85f74bda8..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_fragment_builtin_gc.h +++ /dev/null @@ -1,366 +0,0 @@ -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"__fixed_input vec4 gl_FragCoord;\n" -"__fixed_input bool gl_FrontFacing;\n" -"__fixed_output vec4 gl_FragColor;\n" -"__fixed_output vec4 gl_FragData[gl_MaxDrawBuffers];\n" -"__fixed_output float gl_FragDepth;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"varying vec4 gl_Color;\n" -"varying vec4 gl_SecondaryColor;\n" -"varying vec4 gl_TexCoord[];\n" -"varying float gl_FogFragCoord;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture1D (sampler1D sampler, float coord, float bias) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture1DProj (sampler1D sampler, vec2 coord, float bias) {\n" -" return texture1D (sampler, coord.s / coord.t, bias);\n" -"}\n" -"vec4 texture1DProj (sampler1D sampler, vec4 coord, float bias) {\n" -" return texture1D (sampler, coord.s / coord.q, bias);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture2D (sampler2D sampler, vec2 coord, float bias) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture2DProj (sampler2D sampler, vec3 coord, float bias) {\n" -" return texture2D (sampler, vec2 (coord.s / coord.p, coord.t / coord.p), bias);\n" -"}\n" -"vec4 texture2DProj (sampler2D sampler, vec4 coord, float bias) {\n" -" return texture2D (sampler, vec2 (coord.s / coord.q, coord.s / coord.q), bias);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture3D (sampler3D sampler, vec3 coord, float bias) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture3DProj (sampler3D sampler, vec4 coord, float bias) {\n" -" return texture3DProj (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q),\n" -" bias);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 textureCube (samplerCube sampler, vec3 coord, float bias) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 shadow1D (sampler1DShadow sampler, vec3 coord, float bias) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"vec4 shadow2D (sampler2DShadow sampler, vec3 coord, float bias) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 shadow1DProj (sampler1DShadow sampler, vec4 coord, float bias) {\n" -" return shadow1D (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q), bias);\n" -"}\n" -"vec4 shadow2DProj (sampler2DShadow sampler, vec4 coord, float bias) {\n" -" return shadow2D (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q), bias);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float dFdx (float p) {\n" -" return 0.0;\n" -"}\n" -"\n" -"vec2 dFdx (vec2 p) {\n" -" return vec2 (0.0);\n" -"}\n" -"\n" -"vec3 dFdx (vec3 p) {\n" -" return vec3 (0.0);\n" -"}\n" -"\n" -"vec4 dFdx (vec4 p) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float dFdy (float p) {\n" -" return 0.0;\n" -"}\n" -"\n" -"vec2 dFdy (vec2 p) {\n" -" return vec2 (0.0);\n" -"}\n" -"\n" -"vec3 dFdy (vec3 p) {\n" -" return vec3 (0.0);\n" -"}\n" -"\n" -"vec4 dFdy (vec4 p) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"float fwidth (float p) {\n" -" return abs (dFdx (p)) + abs (dFdy (p));\n" -"}\n" -"vec2 fwidth (vec2 p) {\n" -" return abs (dFdx (p)) + abs (dFdy (p));\n" -"}\n" -"vec3 fwidth (vec3 p) {\n" -" return abs (dFdx (p)) + abs (dFdy (p));\n" -"}\n" -"vec4 fwidth (vec4 p) {\n" -" return abs (dFdx (p)) + abs (dFdy (p));\n" -"}\n" -"\n" diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_fragment_builtin_gc_bin.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_fragment_builtin_gc_bin.h deleted file mode 100644 index b566c8b33..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_fragment_builtin_gc_bin.h +++ /dev/null @@ -1,87 +0,0 @@ -2,2,2,6,12,1,103,108,95,70,114,97,103,67,111,111,114,100,0,0,0,2,2,6, -1,1,103,108,95,70,114,111,110,116,70,97,99,105,110,103,0,0,0,2,2,5,12,1, -103,108,95,70,114,97,103,67,111,108,111,114,0,0,0,2,2,5,12,1,103,108,95,70, -114,97,103,68,97,116,97,0,3,18,103,108,95,77,97,120,68,114,97,119,66,117,102,102, -101,114,115,0,0,0,2,2,5,9,1,103,108,95,70,114,97,103,68,101,112,116,104,0, -0,0,2,2,3,12,1,103,108,95,67,111,108,111,114,0,0,0,2,2,3,12,1,103, -108,95,83,101,99,111,110,100,97,114,121,67,111,108,111,114,0,0,0,2,2,3,12,1, -103,108,95,84,101,120,67,111,111,114,100,0,4,0,2,2,3,9,1,103,108,95,70,111, -103,70,114,97,103,67,111,111,114,100,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,1,0,0,9,98,105,97,115,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,1,0,0,9,98,105,97,115,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,18,98,105,97,115,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,12,99,111,111,114,100,0,0,1,0,0,9,98,105,97,115,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,18,98, -105,97,115,0,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,1,0, -0,9,98,105,97,115,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,1,0,0, -9,98,105,97,115,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,18,98,105,97,115,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,1,0,0,9,98,105,97,115,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,115,0,18,99,111,111,114,100,0,59,113, -0,49,0,0,0,18,98,105,97,115,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,1,0,0,9,98,105,97,115,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,1,0,0,9,98,105,97,115,0,0,0,1,8,58,116,101,120,116,117,114, -101,51,68,80,114,111,106,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,18,98,105,97, -115,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,1,0, -0,9,98,105,97,115,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,1,0,0,9,98,105,97,115, -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,1,0,0,9,98,105,97,115,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,1,0,0,9,98,105,97,115,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,18,98,105,97,115,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,1,0,0,9,98,105,97,115,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,18,98,105,97,115,0, -0,0,0,0,1,0,9,0,100,70,100,120,0,1,0,0,9,112,0,0,0,1,8,17, -48,0,48,0,0,0,0,1,0,10,0,100,70,100,120,0,1,0,0,10,112,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,100,70, -100,120,0,1,0,0,11,112,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,100,70,100,120,0,1,0,0,12,112,0,0,0,1,8, -58,118,101,99,52,0,17,48,0,48,0,0,0,0,0,0,1,0,9,0,100,70,100,121, -0,1,0,0,9,112,0,0,0,1,8,17,48,0,48,0,0,0,0,1,0,10,0,100, -70,100,121,0,1,0,0,10,112,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,100,70,100,121,0,1,0,0,11,112,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,100,70,100, -121,0,1,0,0,12,112,0,0,0,1,8,58,118,101,99,52,0,17,48,0,48,0,0, -0,0,0,0,1,0,9,0,102,119,105,100,116,104,0,1,0,0,9,112,0,0,0,1, -8,58,97,98,115,0,58,100,70,100,120,0,18,112,0,0,0,0,0,58,97,98,115,0, -58,100,70,100,121,0,18,112,0,0,0,0,0,46,0,0,1,0,10,0,102,119,105,100, -116,104,0,1,0,0,10,112,0,0,0,1,8,58,97,98,115,0,58,100,70,100,120,0, -18,112,0,0,0,0,0,58,97,98,115,0,58,100,70,100,121,0,18,112,0,0,0,0, -0,46,0,0,1,0,11,0,102,119,105,100,116,104,0,1,0,0,11,112,0,0,0,1, -8,58,97,98,115,0,58,100,70,100,120,0,18,112,0,0,0,0,0,58,97,98,115,0, -58,100,70,100,121,0,18,112,0,0,0,0,0,46,0,0,1,0,12,0,102,119,105,100, -116,104,0,1,0,0,12,112,0,0,0,1,8,58,97,98,115,0,58,100,70,100,120,0, -18,112,0,0,0,0,0,58,97,98,115,0,58,100,70,100,121,0,18,112,0,0,0,0, -0,46,0,0,0 \ No newline at end of file diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_shader_syn.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_shader_syn.h deleted file mode 100644 index 12e2a2137..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_shader_syn.h +++ /dev/null @@ -1,758 +0,0 @@ -".syntax translation_unit;\n" -".emtcode REVISION 2\n" -".emtcode EXTERNAL_NULL 0\n" -".emtcode EXTERNAL_FUNCTION_DEFINITION 1\n" -".emtcode EXTERNAL_DECLARATION 2\n" -".emtcode DECLARATION_FUNCTION_PROTOTYPE 1\n" -".emtcode DECLARATION_INIT_DECLARATOR_LIST 2\n" -".emtcode FUNCTION_ORDINARY 0\n" -".emtcode FUNCTION_CONSTRUCTOR 1\n" -".emtcode FUNCTION_OPERATOR 2\n" -".emtcode OPERATOR_ASSIGN 1\n" -".emtcode OPERATOR_ADDASSIGN 2\n" -".emtcode OPERATOR_SUBASSIGN 3\n" -".emtcode OPERATOR_MULASSIGN 4\n" -".emtcode OPERATOR_DIVASSIGN 5\n" -".emtcode OPERATOR_LOGICALXOR 12\n" -".emtcode OPERATOR_EQUAL 16\n" -".emtcode OPERATOR_NOTEQUAL 17\n" -".emtcode OPERATOR_LESS 18\n" -".emtcode OPERATOR_GREATER 19\n" -".emtcode OPERATOR_LESSEQUAL 20\n" -".emtcode OPERATOR_GREATEREQUAL 21\n" -".emtcode OPERATOR_MULTIPLY 24\n" -".emtcode OPERATOR_DIVIDE 25\n" -".emtcode OPERATOR_INCREMENT 27\n" -".emtcode OPERATOR_DECREMENT 28\n" -".emtcode OPERATOR_PLUS 29\n" -".emtcode OPERATOR_MINUS 30\n" -".emtcode OPERATOR_NOT 32\n" -".emtcode DECLARATOR_NONE 0\n" -".emtcode DECLARATOR_NEXT 1\n" -".emtcode VARIABLE_NONE 0\n" -".emtcode VARIABLE_IDENTIFIER 1\n" -".emtcode VARIABLE_INITIALIZER 2\n" -".emtcode VARIABLE_ARRAY_EXPLICIT 3\n" -".emtcode VARIABLE_ARRAY_UNKNOWN 4\n" -".emtcode TYPE_QUALIFIER_NONE 0\n" -".emtcode TYPE_QUALIFIER_CONST 1\n" -".emtcode TYPE_QUALIFIER_ATTRIBUTE 2\n" -".emtcode TYPE_QUALIFIER_VARYING 3\n" -".emtcode TYPE_QUALIFIER_UNIFORM 4\n" -".emtcode TYPE_QUALIFIER_FIXEDOUTPUT 5\n" -".emtcode TYPE_QUALIFIER_FIXEDINPUT 6\n" -".emtcode TYPE_SPECIFIER_VOID 0\n" -".emtcode TYPE_SPECIFIER_BOOL 1\n" -".emtcode TYPE_SPECIFIER_BVEC2 2\n" -".emtcode TYPE_SPECIFIER_BVEC3 3\n" -".emtcode TYPE_SPECIFIER_BVEC4 4\n" -".emtcode TYPE_SPECIFIER_INT 5\n" -".emtcode TYPE_SPECIFIER_IVEC2 6\n" -".emtcode TYPE_SPECIFIER_IVEC3 7\n" -".emtcode TYPE_SPECIFIER_IVEC4 8\n" -".emtcode TYPE_SPECIFIER_FLOAT 9\n" -".emtcode TYPE_SPECIFIER_VEC2 10\n" -".emtcode TYPE_SPECIFIER_VEC3 11\n" -".emtcode TYPE_SPECIFIER_VEC4 12\n" -".emtcode TYPE_SPECIFIER_MAT2 13\n" -".emtcode TYPE_SPECIFIER_MAT3 14\n" -".emtcode TYPE_SPECIFIER_MAT4 15\n" -".emtcode TYPE_SPECIFIER_SAMPLER1D 16\n" -".emtcode TYPE_SPECIFIER_SAMPLER2D 17\n" -".emtcode TYPE_SPECIFIER_SAMPLER3D 18\n" -".emtcode TYPE_SPECIFIER_SAMPLERCUBE 19\n" -".emtcode TYPE_SPECIFIER_SAMPLER1DSHADOW 20\n" -".emtcode TYPE_SPECIFIER_SAMPLER2DSHADOW 21\n" -".emtcode TYPE_SPECIFIER_STRUCT 22\n" -".emtcode TYPE_SPECIFIER_TYPENAME 23\n" -".emtcode FIELD_NONE 0\n" -".emtcode FIELD_NEXT 1\n" -".emtcode FIELD_ARRAY 2\n" -".emtcode OP_END 0\n" -".emtcode OP_BLOCK_BEGIN_NO_NEW_SCOPE 1\n" -".emtcode OP_BLOCK_BEGIN_NEW_SCOPE 2\n" -".emtcode OP_DECLARE 3\n" -".emtcode OP_ASM 4\n" -".emtcode OP_BREAK 5\n" -".emtcode OP_CONTINUE 6\n" -".emtcode OP_DISCARD 7\n" -".emtcode OP_RETURN 8\n" -".emtcode OP_EXPRESSION 9\n" -".emtcode OP_IF 10\n" -".emtcode OP_WHILE 11\n" -".emtcode OP_DO 12\n" -".emtcode OP_FOR 13\n" -".emtcode OP_PUSH_VOID 14\n" -".emtcode OP_PUSH_BOOL 15\n" -".emtcode OP_PUSH_INT 16\n" -".emtcode OP_PUSH_FLOAT 17\n" -".emtcode OP_PUSH_IDENTIFIER 18\n" -".emtcode OP_SEQUENCE 19\n" -".emtcode OP_ASSIGN 20\n" -".emtcode OP_ADDASSIGN 21\n" -".emtcode OP_SUBASSIGN 22\n" -".emtcode OP_MULASSIGN 23\n" -".emtcode OP_DIVASSIGN 24\n" -".emtcode OP_SELECT 31\n" -".emtcode OP_LOGICALOR 32\n" -".emtcode OP_LOGICALXOR 33\n" -".emtcode OP_LOGICALAND 34\n" -".emtcode OP_EQUAL 38\n" -".emtcode OP_NOTEQUAL 39\n" -".emtcode OP_LESS 40\n" -".emtcode OP_GREATER 41\n" -".emtcode OP_LESSEQUAL 42\n" -".emtcode OP_GREATEREQUAL 43\n" -".emtcode OP_ADD 46\n" -".emtcode OP_SUBTRACT 47\n" -".emtcode OP_MULTIPLY 48\n" -".emtcode OP_DIVIDE 49\n" -".emtcode OP_PREINCREMENT 51\n" -".emtcode OP_PREDECREMENT 52\n" -".emtcode OP_PLUS 53\n" -".emtcode OP_MINUS 54\n" -".emtcode OP_NOT 56\n" -".emtcode OP_SUBSCRIPT 57\n" -".emtcode OP_CALL 58\n" -".emtcode OP_FIELD 59\n" -".emtcode OP_POSTINCREMENT 60\n" -".emtcode OP_POSTDECREMENT 61\n" -".emtcode PARAM_QUALIFIER_IN 0\n" -".emtcode PARAM_QUALIFIER_OUT 1\n" -".emtcode PARAM_QUALIFIER_INOUT 2\n" -".emtcode PARAMETER_NONE 0\n" -".emtcode PARAMETER_NEXT 1\n" -".emtcode PARAMETER_ARRAY_NOT_PRESENT 0\n" -".emtcode PARAMETER_ARRAY_PRESENT 1\n" -".errtext INVALID_EXTERNAL_DECLARATION \"error 2001: invalid external declaration\"\n" -".errtext INVALID_OPERATOR_OVERRIDE \"error 2002: invalid operator override\"\n" -".errtext LBRACE_EXPECTED \"error 2003: '{' expected but '$err_token$' found\"\n" -".errtext LPAREN_EXPECTED \"error 2004: '(' expected but '$err_token$' found\"\n" -".errtext RPAREN_EXPECTED \"error 2005: ')' expected but '$err_token$' found\"\n" -".regbyte parsing_builtin 0\n" -".regbyte shader_type 0\n" -"variable_identifier\n" -" identifier .emit OP_PUSH_IDENTIFIER;\n" -"primary_expression\n" -" floatconstant .or boolconstant .or intconstant .or variable_identifier .or primary_expression_1;\n" -"primary_expression_1\n" -" lparen .and expression .and rparen;\n" -"postfix_expression\n" -" postfix_expression_1 .and .loop postfix_expression_2;\n" -"postfix_expression_1\n" -" function_call .or primary_expression;\n" -"postfix_expression_2\n" -" postfix_expression_3 .or postfix_expression_4 .or\n" -" plusplus .emit OP_POSTINCREMENT .or\n" -" minusminus .emit OP_POSTDECREMENT;\n" -"postfix_expression_3\n" -" lbracket .and integer_expression .and rbracket .emit OP_SUBSCRIPT;\n" -"postfix_expression_4\n" -" dot .and field_selection .emit OP_FIELD;\n" -"integer_expression\n" -" expression;\n" -"function_call\n" -" function_call_generic .emit OP_CALL .and .true .emit OP_END;\n" -"function_call_generic\n" -" function_call_generic_1 .or function_call_generic_2;\n" -"function_call_generic_1\n" -" function_call_header_with_parameters .and rparen .error RPAREN_EXPECTED;\n" -"function_call_generic_2\n" -" function_call_header_no_parameters .and rparen .error RPAREN_EXPECTED;\n" -"function_call_header_no_parameters\n" -" function_call_header .and function_call_header_no_parameters_1;\n" -"function_call_header_no_parameters_1\n" -" \"void\" .or .true;\n" -"function_call_header_with_parameters\n" -" function_call_header .and assignment_expression .and .true .emit OP_END .and\n" -" .loop function_call_header_with_parameters_1;\n" -"function_call_header_with_parameters_1\n" -" comma .and assignment_expression .and .true .emit OP_END;\n" -"function_call_header\n" -" function_identifier .and lparen;\n" -"function_identifier\n" -" identifier;\n" -"unary_expression\n" -" postfix_expression .or unary_expression_1 .or unary_expression_2 .or unary_expression_3 .or\n" -" unary_expression_4 .or unary_expression_5;\n" -"unary_expression_1\n" -" plusplus .and unary_expression .and .true .emit OP_PREINCREMENT;\n" -"unary_expression_2\n" -" minusminus .and unary_expression .and .true .emit OP_PREDECREMENT;\n" -"unary_expression_3\n" -" plus .and unary_expression .and .true .emit OP_PLUS;\n" -"unary_expression_4\n" -" minus .and unary_expression .and .true .emit OP_MINUS;\n" -"unary_expression_5\n" -" bang .and unary_expression .and .true .emit OP_NOT;\n" -"multiplicative_expression\n" -" unary_expression .and .loop multiplicative_expression_1;\n" -"multiplicative_expression_1\n" -" multiplicative_expression_2 .or multiplicative_expression_3;\n" -"multiplicative_expression_2\n" -" star .and unary_expression .and .true .emit OP_MULTIPLY;\n" -"multiplicative_expression_3\n" -" slash .and unary_expression .and .true .emit OP_DIVIDE;\n" -"additive_expression\n" -" multiplicative_expression .and .loop additive_expression_1;\n" -"additive_expression_1\n" -" additive_expression_2 .or additive_expression_3;\n" -"additive_expression_2\n" -" plus .and multiplicative_expression .and .true .emit OP_ADD;\n" -"additive_expression_3\n" -" minus .and multiplicative_expression .and .true .emit OP_SUBTRACT;\n" -"shift_expression\n" -" additive_expression;\n" -"relational_expression\n" -" shift_expression .and .loop relational_expression_1;\n" -"relational_expression_1\n" -" relational_expression_2 .or relational_expression_3 .or relational_expression_4 .or\n" -" relational_expression_5;\n" -"relational_expression_2\n" -" lessequals .and shift_expression .and .true .emit OP_LESSEQUAL;\n" -"relational_expression_3\n" -" greaterequals .and shift_expression .and .true .emit OP_GREATEREQUAL;\n" -"relational_expression_4\n" -" less .and shift_expression .and .true .emit OP_LESS;\n" -"relational_expression_5\n" -" greater .and shift_expression .and .true .emit OP_GREATER;\n" -"equality_expression\n" -" relational_expression .and .loop equality_expression_1;\n" -"equality_expression_1\n" -" equality_expression_2 .or equality_expression_3;\n" -"equality_expression_2\n" -" equalsequals .and relational_expression .and .true .emit OP_EQUAL;\n" -"equality_expression_3\n" -" bangequals .and relational_expression .and .true .emit OP_NOTEQUAL;\n" -"and_expression\n" -" equality_expression;\n" -"exclusive_or_expression\n" -" and_expression;\n" -"inclusive_or_expression\n" -" exclusive_or_expression;\n" -"logical_and_expression\n" -" inclusive_or_expression .and .loop logical_and_expression_1;\n" -"logical_and_expression_1\n" -" ampersandampersand .and inclusive_or_expression .and .true .emit OP_LOGICALAND;\n" -"logical_xor_expression\n" -" logical_and_expression .and .loop logical_xor_expression_1;\n" -"logical_xor_expression_1\n" -" caretcaret .and logical_and_expression .and .true .emit OP_LOGICALXOR;\n" -"logical_or_expression\n" -" logical_xor_expression .and .loop logical_or_expression_1;\n" -"logical_or_expression_1\n" -" barbar .and logical_xor_expression .and .true .emit OP_LOGICALOR;\n" -"conditional_expression\n" -" logical_or_expression .and .loop conditional_expression_1;\n" -"conditional_expression_1\n" -" question .and expression .and colon .and conditional_expression .and .true .emit OP_SELECT;\n" -"assignment_expression\n" -" assignment_expression_1 .or assignment_expression_2 .or assignment_expression_3 .or\n" -" assignment_expression_4 .or assignment_expression_5 .or conditional_expression;\n" -"assignment_expression_1\n" -" unary_expression .and equals .and assignment_expression .and .true .emit OP_ASSIGN;\n" -"assignment_expression_2\n" -" unary_expression .and starequals .and assignment_expression .and .true .emit OP_MULASSIGN;\n" -"assignment_expression_3\n" -" unary_expression .and slashequals .and assignment_expression .and .true .emit OP_DIVASSIGN;\n" -"assignment_expression_4\n" -" unary_expression .and plusequals .and assignment_expression .and .true .emit OP_ADDASSIGN;\n" -"assignment_expression_5\n" -" unary_expression .and minusequals .and assignment_expression .and .true .emit OP_SUBASSIGN;\n" -"expression\n" -" assignment_expression .and .loop expression_1;\n" -"expression_1\n" -" comma .and assignment_expression .and .true .emit OP_SEQUENCE;\n" -"constant_expression\n" -" conditional_expression .and .true .emit OP_END;\n" -"declaration\n" -" declaration_1 .or declaration_2;\n" -"declaration_1\n" -" function_prototype .emit DECLARATION_FUNCTION_PROTOTYPE .and semicolon;\n" -"declaration_2\n" -" init_declarator_list .emit DECLARATION_INIT_DECLARATOR_LIST .and semicolon;\n" -"function_prototype\n" -" function_declarator .and rparen .error RPAREN_EXPECTED .emit PARAMETER_NONE;\n" -"function_declarator\n" -" function_header_with_parameters .or function_header;\n" -"function_header_with_parameters\n" -" function_header .and parameter_declaration .and .loop function_header_with_parameters_1;\n" -"function_header_with_parameters_1\n" -" comma .and parameter_declaration;\n" -"function_header\n" -" function_header_nospace .or function_header_space;\n" -"function_header_space\n" -" fully_specified_type_space .and space .and function_decl_identifier .and lparen;\n" -"function_header_nospace\n" -" fully_specified_type_nospace .and function_decl_identifier .and lparen;\n" -"function_decl_identifier\n" -" .if (parsing_builtin != 0) __operator .emit FUNCTION_OPERATOR .or\n" -" .if (parsing_builtin != 0) \"__constructor\" .emit FUNCTION_CONSTRUCTOR .or\n" -" identifier .emit FUNCTION_ORDINARY;\n" -"__operator\n" -" \"__operator\" .and overriden_operator .error INVALID_OPERATOR_OVERRIDE;\n" -"overriden_operator\n" -" plusplus .emit OPERATOR_INCREMENT .or\n" -" plusequals .emit OPERATOR_ADDASSIGN .or\n" -" plus .emit OPERATOR_PLUS .or\n" -" minusminus .emit OPERATOR_DECREMENT .or\n" -" minusequals .emit OPERATOR_SUBASSIGN .or\n" -" minus .emit OPERATOR_MINUS .or\n" -" bangequals .emit OPERATOR_NOTEQUAL .or\n" -" bang .emit OPERATOR_NOT .or\n" -" starequals .emit OPERATOR_MULASSIGN .or\n" -" star .emit OPERATOR_MULTIPLY .or\n" -" slashequals .emit OPERATOR_DIVASSIGN .or\n" -" slash .emit OPERATOR_DIVIDE .or\n" -" lessequals .emit OPERATOR_LESSEQUAL .or\n" -" \n" -" \n" -" less .emit OPERATOR_LESS .or\n" -" greaterequals .emit OPERATOR_GREATEREQUAL .or\n" -" \n" -" \n" -" greater .emit OPERATOR_GREATER .or\n" -" equalsequals .emit OPERATOR_EQUAL .or\n" -" equals .emit OPERATOR_ASSIGN .or\n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" caretcaret .emit OPERATOR_LOGICALXOR ;\n" -"parameter_declarator\n" -" parameter_declarator_nospace .or parameter_declarator_space;\n" -"parameter_declarator_nospace\n" -" type_specifier_nospace .and identifier .and parameter_declarator_1;\n" -"parameter_declarator_space\n" -" type_specifier_space .and space .and identifier .and parameter_declarator_1;\n" -"parameter_declarator_1\n" -" parameter_declarator_2 .emit PARAMETER_ARRAY_PRESENT .or\n" -" .true .emit PARAMETER_ARRAY_NOT_PRESENT;\n" -"parameter_declarator_2\n" -" lbracket .and constant_expression .and rbracket;\n" -"parameter_declaration\n" -" parameter_declaration_1 .emit PARAMETER_NEXT;\n" -"parameter_declaration_1\n" -" parameter_declaration_2 .or parameter_declaration_3;\n" -"parameter_declaration_2\n" -" type_qualifier .and space .and parameter_qualifier .and parameter_declaration_4;\n" -"parameter_declaration_3\n" -" parameter_qualifier .emit TYPE_QUALIFIER_NONE .and parameter_declaration_4;\n" -"parameter_declaration_4\n" -" parameter_declarator .or parameter_type_specifier;\n" -"parameter_qualifier\n" -" parameter_qualifier_1 .or .true .emit PARAM_QUALIFIER_IN;\n" -"parameter_qualifier_1\n" -" parameter_qualifier_2 .and space;\n" -"parameter_qualifier_2\n" -" \"in\" .emit PARAM_QUALIFIER_IN .or\n" -" \"out\" .emit PARAM_QUALIFIER_OUT .or\n" -" \"inout\" .emit PARAM_QUALIFIER_INOUT;\n" -"parameter_type_specifier\n" -" parameter_type_specifier_1 .and .true .emit '\\0' .and parameter_type_specifier_2;\n" -"parameter_type_specifier_1\n" -" type_specifier_nospace .or type_specifier_space;\n" -"parameter_type_specifier_2\n" -" parameter_type_specifier_3 .emit PARAMETER_ARRAY_PRESENT .or\n" -" .true .emit PARAMETER_ARRAY_NOT_PRESENT;\n" -"parameter_type_specifier_3\n" -" lbracket .and constant_expression .and rbracket;\n" -"init_declarator_list\n" -" single_declaration .and .loop init_declarator_list_1 .emit DECLARATOR_NEXT .and\n" -" .true .emit DECLARATOR_NONE;\n" -"init_declarator_list_1\n" -" comma .and identifier .emit VARIABLE_IDENTIFIER .and init_declarator_list_2;\n" -"init_declarator_list_2\n" -" init_declarator_list_3 .or init_declarator_list_4 .or .true .emit VARIABLE_NONE;\n" -"init_declarator_list_3\n" -" equals .and initializer .emit VARIABLE_INITIALIZER;\n" -"init_declarator_list_4\n" -" lbracket .and init_declarator_list_5 .and rbracket;\n" -"init_declarator_list_5\n" -" constant_expression .emit VARIABLE_ARRAY_EXPLICIT .or .true .emit VARIABLE_ARRAY_UNKNOWN;\n" -"single_declaration\n" -" single_declaration_nospace .or single_declaration_space;\n" -"single_declaration_space\n" -" fully_specified_type_space .and single_declaration_space_1;\n" -"single_declaration_nospace\n" -" fully_specified_type_nospace .and single_declaration_nospace_1;\n" -"single_declaration_space_1\n" -" single_declaration_space_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;\n" -"single_declaration_nospace_1\n" -" single_declaration_nospace_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;\n" -"single_declaration_space_2\n" -" space .and identifier .and single_declaration_3;\n" -"single_declaration_nospace_2\n" -" identifier .and single_declaration_3;\n" -"single_declaration_3\n" -" single_declaration_4 .or single_declaration_5 .or .true .emit VARIABLE_NONE;\n" -"single_declaration_4\n" -" equals .and initializer .emit VARIABLE_INITIALIZER;\n" -"single_declaration_5\n" -" lbracket .and single_declaration_6 .and rbracket;\n" -"single_declaration_6\n" -" constant_expression .emit VARIABLE_ARRAY_EXPLICIT .or .true .emit VARIABLE_ARRAY_UNKNOWN;\n" -"fully_specified_type_space\n" -" fully_specified_type_1 .and type_specifier_space;\n" -"fully_specified_type_nospace\n" -" fully_specified_type_1 .and type_specifier_nospace;\n" -"fully_specified_type_1\n" -" fully_specified_type_2 .or .true .emit TYPE_QUALIFIER_NONE;\n" -"fully_specified_type_2\n" -" type_qualifier .and space;\n" -"type_qualifier\n" -" \"const\" .emit TYPE_QUALIFIER_CONST .or\n" -" .if (shader_type == 2) \"attribute\" .emit TYPE_QUALIFIER_ATTRIBUTE .or\n" -" \"varying\" .emit TYPE_QUALIFIER_VARYING .or\n" -" \"uniform\" .emit TYPE_QUALIFIER_UNIFORM .or\n" -" .if (parsing_builtin != 0) \"__fixed_output\" .emit TYPE_QUALIFIER_FIXEDOUTPUT .or\n" -" .if (parsing_builtin != 0) \"__fixed_input\" .emit TYPE_QUALIFIER_FIXEDINPUT;\n" -"type_specifier_space\n" -" \"void\" .emit TYPE_SPECIFIER_VOID .or\n" -" \"float\" .emit TYPE_SPECIFIER_FLOAT .or\n" -" \"int\" .emit TYPE_SPECIFIER_INT .or\n" -" \"bool\" .emit TYPE_SPECIFIER_BOOL .or\n" -" \"vec2\" .emit TYPE_SPECIFIER_VEC2 .or\n" -" \"vec3\" .emit TYPE_SPECIFIER_VEC3 .or\n" -" \"vec4\" .emit TYPE_SPECIFIER_VEC4 .or\n" -" \"bvec2\" .emit TYPE_SPECIFIER_BVEC2 .or\n" -" \"bvec3\" .emit TYPE_SPECIFIER_BVEC3 .or\n" -" \"bvec4\" .emit TYPE_SPECIFIER_BVEC4 .or\n" -" \"ivec2\" .emit TYPE_SPECIFIER_IVEC2 .or\n" -" \"ivec3\" .emit TYPE_SPECIFIER_IVEC3 .or\n" -" \"ivec4\" .emit TYPE_SPECIFIER_IVEC4 .or\n" -" \"mat2\" .emit TYPE_SPECIFIER_MAT2 .or\n" -" \"mat3\" .emit TYPE_SPECIFIER_MAT3 .or\n" -" \"mat4\" .emit TYPE_SPECIFIER_MAT4 .or\n" -" \"sampler1D\" .emit TYPE_SPECIFIER_SAMPLER1D .or\n" -" \"sampler2D\" .emit TYPE_SPECIFIER_SAMPLER2D .or\n" -" \"sampler3D\" .emit TYPE_SPECIFIER_SAMPLER3D .or\n" -" \"samplerCube\" .emit TYPE_SPECIFIER_SAMPLERCUBE .or\n" -" \"sampler1DShadow\" .emit TYPE_SPECIFIER_SAMPLER1DSHADOW .or\n" -" \"sampler2DShadow\" .emit TYPE_SPECIFIER_SAMPLER2DSHADOW .or\n" -" type_name .emit TYPE_SPECIFIER_TYPENAME;\n" -"type_specifier_nospace\n" -" struct_specifier .emit TYPE_SPECIFIER_STRUCT;\n" -"struct_specifier\n" -" \"struct\" .and struct_specifier_1 .and optional_space .and lbrace .error LBRACE_EXPECTED .and\n" -" struct_declaration_list .and rbrace .emit FIELD_NONE;\n" -"struct_specifier_1\n" -" struct_specifier_2 .or .true .emit '\\0';\n" -"struct_specifier_2\n" -" space .and identifier;\n" -"struct_declaration_list\n" -" struct_declaration .and .loop struct_declaration .emit FIELD_NEXT;\n" -"struct_declaration\n" -" struct_declaration_nospace .or struct_declaration_space;\n" -"struct_declaration_space\n" -" type_specifier_space .and space .and struct_declarator_list .and semicolon .emit FIELD_NONE;\n" -"struct_declaration_nospace\n" -" type_specifier_nospace .and struct_declarator_list .and semicolon .emit FIELD_NONE;\n" -"struct_declarator_list\n" -" struct_declarator .and .loop struct_declarator_list_1 .emit FIELD_NEXT;\n" -"struct_declarator_list_1\n" -" comma .and struct_declarator;\n" -"struct_declarator\n" -" identifier .and struct_declarator_1;\n" -"struct_declarator_1\n" -" struct_declarator_2 .emit FIELD_ARRAY .or .true .emit FIELD_NONE;\n" -"struct_declarator_2\n" -" lbracket .and constant_expression .and rbracket;\n" -"initializer\n" -" assignment_expression .and .true .emit OP_END;\n" -"declaration_statement\n" -" declaration;\n" -"statement\n" -" compound_statement .or simple_statement;\n" -"statement_space\n" -" compound_statement .or statement_space_1;\n" -"statement_space_1\n" -" space .and simple_statement;\n" -"simple_statement\n" -" .if (parsing_builtin != 0) __asm_statement .emit OP_ASM .or\n" -" selection_statement .or\n" -" iteration_statement .or\n" -" jump_statement .or\n" -" expression_statement .emit OP_EXPRESSION .or\n" -" declaration_statement .emit OP_DECLARE;\n" -"compound_statement\n" -" compound_statement_1 .emit OP_BLOCK_BEGIN_NEW_SCOPE .and .true .emit OP_END;\n" -"compound_statement_1\n" -" compound_statement_2 .or compound_statement_3;\n" -"compound_statement_2\n" -" lbrace .and rbrace;\n" -"compound_statement_3\n" -" lbrace .and statement_list .and rbrace;\n" -"statement_no_new_scope\n" -" compound_statement_no_new_scope .or simple_statement;\n" -"compound_statement_no_new_scope\n" -" compound_statement_no_new_scope_1 .emit OP_BLOCK_BEGIN_NO_NEW_SCOPE .and .true .emit OP_END;\n" -"compound_statement_no_new_scope_1\n" -" compound_statement_no_new_scope_2 .or compound_statement_no_new_scope_3;\n" -"compound_statement_no_new_scope_2\n" -" lbrace .and rbrace;\n" -"compound_statement_no_new_scope_3\n" -" lbrace .and statement_list .and rbrace;\n" -"statement_list\n" -" statement .and .loop statement;\n" -"expression_statement\n" -" expression_statement_1 .or expression_statement_2;\n" -"expression_statement_1\n" -" semicolon .emit OP_PUSH_VOID .emit OP_END;\n" -"expression_statement_2\n" -" expression .and semicolon .emit OP_END;\n" -"selection_statement\n" -" \"if\" .emit OP_IF .and lparen .error LPAREN_EXPECTED .and expression .and\n" -" rparen .error RPAREN_EXPECTED .emit OP_END .and selection_rest_statement;\n" -"selection_rest_statement\n" -" statement .and selection_rest_statement_1;\n" -"selection_rest_statement_1\n" -" selection_rest_statement_2 .or .true .emit OP_EXPRESSION .emit OP_PUSH_VOID .emit OP_END;\n" -"selection_rest_statement_2\n" -" \"else\" .and optional_space .and statement;\n" -"condition\n" -" condition_1 .emit OP_DECLARE .emit DECLARATION_INIT_DECLARATOR_LIST .or\n" -" condition_3 .emit OP_EXPRESSION;\n" -"condition_1\n" -" condition_1_nospace .or condition_1_space;\n" -"condition_1_nospace\n" -" fully_specified_type_nospace .and condition_2;\n" -"condition_1_space\n" -" fully_specified_type_space .and space .and condition_2;\n" -"condition_2\n" -" identifier .emit VARIABLE_IDENTIFIER .and equals .emit VARIABLE_INITIALIZER .and\n" -" initializer .and .true .emit DECLARATOR_NONE;\n" -"condition_3\n" -" expression .and .true .emit OP_END;\n" -"iteration_statement\n" -" iteration_statement_1 .or iteration_statement_2 .or iteration_statement_3;\n" -"iteration_statement_1\n" -" \"while\" .emit OP_WHILE .and lparen .error LPAREN_EXPECTED .and condition .and\n" -" rparen .error RPAREN_EXPECTED .and statement_no_new_scope;\n" -"iteration_statement_2\n" -" \"do\" .emit OP_DO .and statement_space .and \"while\" .and lparen .error LPAREN_EXPECTED .and\n" -" expression .and rparen .error RPAREN_EXPECTED .emit OP_END .and semicolon;\n" -"iteration_statement_3\n" -" \"for\" .emit OP_FOR .and lparen .error LPAREN_EXPECTED .and for_init_statement .and\n" -" for_rest_statement .and rparen .error RPAREN_EXPECTED .and statement_no_new_scope;\n" -"for_init_statement\n" -" expression_statement .emit OP_EXPRESSION .or declaration_statement .emit OP_DECLARE;\n" -"conditionopt\n" -" condition .or\n" -" .true .emit OP_EXPRESSION .emit OP_PUSH_BOOL .emit 2 .emit '1' .emit '\\0' .emit OP_END;\n" -"for_rest_statement\n" -" conditionopt .and semicolon .and for_rest_statement_1;\n" -"for_rest_statement_1\n" -" for_rest_statement_2 .or .true .emit OP_PUSH_VOID .emit OP_END;\n" -"for_rest_statement_2\n" -" expression .and .true .emit OP_END;\n" -"jump_statement\n" -" jump_statement_1 .or jump_statement_2 .or jump_statement_3 .or jump_statement_4 .or\n" -" .if (shader_type == 1) jump_statement_5;\n" -"jump_statement_1\n" -" \"continue\" .and semicolon .emit OP_CONTINUE;\n" -"jump_statement_2\n" -" \"break\" .and semicolon .emit OP_BREAK;\n" -"jump_statement_3\n" -" \"return\" .emit OP_RETURN .and optional_space .and expression .and semicolon .emit OP_END;\n" -"jump_statement_4\n" -" \"return\" .emit OP_RETURN .and semicolon .emit OP_PUSH_VOID .emit OP_END;\n" -"jump_statement_5\n" -" \"discard\" .and semicolon .emit OP_DISCARD;\n" -"__asm_statement\n" -" \"__asm\" .and space .and identifier .and space .and asm_arguments .and semicolon .emit OP_END;\n" -"asm_arguments\n" -" variable_identifier .and .true .emit OP_END .and .loop asm_arguments_1;\n" -"asm_arguments_1\n" -" comma .and variable_identifier .and .true .emit OP_END;\n" -"translation_unit\n" -" optional_space .emit REVISION .and external_declaration .error INVALID_EXTERNAL_DECLARATION .and\n" -" .loop external_declaration .and optional_space .and\n" -" '\\0' .error INVALID_EXTERNAL_DECLARATION .emit EXTERNAL_NULL;\n" -"external_declaration\n" -" function_definition .emit EXTERNAL_FUNCTION_DEFINITION .or\n" -" declaration .emit EXTERNAL_DECLARATION;\n" -"function_definition\n" -" function_prototype .and compound_statement_no_new_scope;\n" -"digit_oct\n" -" '0'-'7';\n" -"digit_dec\n" -" '0'-'9';\n" -"digit_hex\n" -" '0'-'9' .or 'A'-'F' .or 'a'-'f';\n" -"id_character_first\n" -" 'a'-'z' .or 'A'-'Z' .or '_';\n" -"id_character_next\n" -" id_character_first .or digit_dec;\n" -"identifier\n" -" id_character_first .emit * .and .loop id_character_next .emit * .and .true .emit '\\0';\n" -"float\n" -" float_1 .or float_2;\n" -"float_1\n" -" float_fractional_constant .and float_optional_exponent_part;\n" -"float_2\n" -" float_digit_sequence .and .true .emit '\\0' .and float_exponent_part;\n" -"float_fractional_constant\n" -" float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3;\n" -"float_fractional_constant_1\n" -" float_digit_sequence .and '.' .and float_digit_sequence;\n" -"float_fractional_constant_2\n" -" float_digit_sequence .and '.' .and .true .emit '\\0';\n" -"float_fractional_constant_3\n" -" '.' .emit '\\0' .and float_digit_sequence;\n" -"float_optional_exponent_part\n" -" float_exponent_part .or .true .emit '\\0';\n" -"float_digit_sequence\n" -" digit_dec .emit * .and .loop digit_dec .emit * .and .true .emit '\\0';\n" -"float_exponent_part\n" -" float_exponent_part_1 .or float_exponent_part_2;\n" -"float_exponent_part_1\n" -" 'e' .and float_optional_sign .and float_digit_sequence;\n" -"float_exponent_part_2\n" -" 'E' .and float_optional_sign .and float_digit_sequence;\n" -"float_optional_sign\n" -" float_sign .or .true;\n" -"float_sign\n" -" '+' .or '-' .emit '-';\n" -"integer\n" -" integer_hex .or integer_oct .or integer_dec;\n" -"integer_hex\n" -" '0' .and integer_hex_1 .emit 0x10 .and digit_hex .emit * .and .loop digit_hex .emit * .and\n" -" .true .emit '\\0';\n" -"integer_hex_1\n" -" 'x' .or 'X';\n" -"integer_oct\n" -" '0' .emit 8 .emit * .and .loop digit_oct .emit * .and .true .emit '\\0';\n" -"integer_dec\n" -" digit_dec .emit 10 .emit * .and .loop digit_dec .emit * .and .true .emit '\\0';\n" -"boolean\n" -" \"true\" .emit 2 .emit '1' .emit '\\0' .or\n" -" \"false\" .emit 2 .emit '0' .emit '\\0';\n" -"type_name\n" -" identifier;\n" -"field_selection\n" -" identifier;\n" -"floatconstant\n" -" float .emit OP_PUSH_FLOAT;\n" -"intconstant\n" -" integer .emit OP_PUSH_INT;\n" -"boolconstant\n" -" boolean .emit OP_PUSH_BOOL;\n" -"optional_space\n" -" .loop single_space;\n" -"space\n" -" single_space .and .loop single_space;\n" -"single_space\n" -" white_char .or c_style_comment_block .or cpp_style_comment_block;\n" -"white_char\n" -" ' ' .or '\\t' .or new_line .or '\\v' .or '\\f';\n" -"new_line\n" -" cr_lf .or lf_cr .or '\\n' .or '\\r';\n" -"cr_lf\n" -" '\\r' .and '\\n';\n" -"lf_cr\n" -" '\\n' .and '\\r';\n" -"c_style_comment_block\n" -" '/' .and '*' .and c_style_comment_rest;\n" -"c_style_comment_rest\n" -" .loop c_style_comment_char_no_star .and c_style_comment_rest_1;\n" -"c_style_comment_rest_1\n" -" c_style_comment_end .or c_style_comment_rest_2;\n" -"c_style_comment_rest_2\n" -" '*' .and c_style_comment_rest;\n" -"c_style_comment_char_no_star\n" -" '\\x2B'-'\\xFF' .or '\\x01'-'\\x29';\n" -"c_style_comment_end\n" -" '*' .and '/';\n" -"cpp_style_comment_block\n" -" '/' .and '/' .and cpp_style_comment_block_1;\n" -"cpp_style_comment_block_1\n" -" cpp_style_comment_block_2 .or cpp_style_comment_block_3;\n" -"cpp_style_comment_block_2\n" -" .loop cpp_style_comment_char .and new_line;\n" -"cpp_style_comment_block_3\n" -" .loop cpp_style_comment_char;\n" -"cpp_style_comment_char\n" -" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n" -"ampersandampersand\n" -" optional_space .and '&' .and '&' .and optional_space;\n" -"barbar\n" -" optional_space .and '|' .and '|' .and optional_space;\n" -"bang\n" -" optional_space .and '!' .and optional_space;\n" -"bangequals\n" -" optional_space .and '!' .and '=' .and optional_space;\n" -"caretcaret\n" -" optional_space .and '^' .and '^' .and optional_space;\n" -"colon\n" -" optional_space .and ':' .and optional_space;\n" -"comma\n" -" optional_space .and ',' .and optional_space;\n" -"dot\n" -" optional_space .and '.' .and optional_space;\n" -"equals\n" -" optional_space .and '=' .and optional_space;\n" -"equalsequals\n" -" optional_space .and '=' .and '=' .and optional_space;\n" -"greater\n" -" optional_space .and '>' .and optional_space;\n" -"greaterequals\n" -" optional_space .and '>' .and '=' .and optional_space;\n" -"lbrace\n" -" optional_space .and '{' .and optional_space;\n" -"lbracket\n" -" optional_space .and '[' .and optional_space;\n" -"less\n" -" optional_space .and '<' .and optional_space;\n" -"lessequals\n" -" optional_space .and '<' .and '=' .and optional_space;\n" -"lparen\n" -" optional_space .and '(' .and optional_space;\n" -"minus\n" -" optional_space .and '-' .and optional_space;\n" -"minusequals\n" -" optional_space .and '-' .and '=' .and optional_space;\n" -"minusminus\n" -" optional_space .and '-' .and '-' .and optional_space;\n" -"plus\n" -" optional_space .and '+' .and optional_space;\n" -"plusequals\n" -" optional_space .and '+' .and '=' .and optional_space;\n" -"plusplus\n" -" optional_space .and '+' .and '+' .and optional_space;\n" -"question\n" -" optional_space .and '?' .and optional_space;\n" -"rbrace\n" -" optional_space .and '}' .and optional_space;\n" -"rbracket\n" -" optional_space .and ']' .and optional_space;\n" -"rparen\n" -" optional_space .and ')' .and optional_space;\n" -"semicolon\n" -" optional_space .and ';' .and optional_space;\n" -"slash\n" -" optional_space .and '/' .and optional_space;\n" -"slashequals\n" -" optional_space .and '/' .and '=' .and optional_space;\n" -"star\n" -" optional_space .and '*' .and optional_space;\n" -"starequals\n" -" optional_space .and '*' .and '=' .and optional_space;\n" -".string string_lexer;\n" -"string_lexer\n" -" lex_first_identifier_character .and .loop lex_next_identifier_character;\n" -"lex_first_identifier_character\n" -" 'a'-'z' .or 'A'-'Z' .or '_';\n" -"lex_next_identifier_character\n" -" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\n" -"err_token\n" -" '~' .or '`' .or '!' .or '@' .or '#' .or '$' .or '%' .or '^' .or '&' .or '*' .or '(' .or ')' .or\n" -" '-' .or '+' .or '=' .or '|' .or '\\\\' .or '[' .or ']' .or '{' .or '}' .or ':' .or ';' .or '\"' .or\n" -" '\\'' .or '<' .or ',' .or '>' .or '.' .or '/' .or '?' .or err_identifier;\n" -"err_identifier\n" -" id_character_first .and .loop id_character_next;\n" -"" diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_version_syn.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_version_syn.h deleted file mode 100644 index 3b94d8592..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_version_syn.h +++ /dev/null @@ -1,64 +0,0 @@ -".syntax version_directive;\n" -"version_directive\n" -" version_directive_1 .and .loop version_directive_2;\n" -"version_directive_1\n" -" prior_optional_spaces .and optional_version_directive .and .true .emit $;\n" -"version_directive_2\n" -" prior_optional_spaces .and version_directive_body .and .true .emit $;\n" -"optional_version_directive\n" -" version_directive_body .or .true .emit 10 .emit 1;\n" -"version_directive_body\n" -" '#' .and optional_space .and \"version\" .and space .and version_number .and optional_space .and\n" -" new_line;\n" -"version_number\n" -" version_number_110;\n" -"version_number_110\n" -" leading_zeroes .and \"110\" .emit 10 .emit 1;\n" -"leading_zeroes\n" -" .loop zero;\n" -"zero\n" -" '0';\n" -"space\n" -" single_space .and .loop single_space;\n" -"optional_space\n" -" .loop single_space;\n" -"single_space\n" -" ' ' .or '\\t';\n" -"prior_optional_spaces\n" -" .loop prior_space;\n" -"prior_space\n" -" c_style_comment_block .or cpp_style_comment_block .or space .or new_line;\n" -"c_style_comment_block\n" -" '/' .and '*' .and c_style_comment_rest;\n" -"c_style_comment_rest\n" -" .loop c_style_comment_char_no_star .and c_style_comment_rest_1;\n" -"c_style_comment_rest_1\n" -" c_style_comment_end .or c_style_comment_rest_2;\n" -"c_style_comment_rest_2\n" -" '*' .and c_style_comment_rest;\n" -"c_style_comment_char_no_star\n" -" '\\x2B'-'\\xFF' .or '\\x01'-'\\x29';\n" -"c_style_comment_end\n" -" '*' .and '/';\n" -"cpp_style_comment_block\n" -" '/' .and '/' .and cpp_style_comment_block_1;\n" -"cpp_style_comment_block_1\n" -" cpp_style_comment_block_2 .or cpp_style_comment_block_3;\n" -"cpp_style_comment_block_2\n" -" .loop cpp_style_comment_char .and new_line;\n" -"cpp_style_comment_block_3\n" -" .loop cpp_style_comment_char;\n" -"cpp_style_comment_char\n" -" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n" -"new_line\n" -" cr_lf .or lf_cr .or '\\n' .or '\\r';\n" -"cr_lf\n" -" '\\r' .and '\\n';\n" -"lf_cr\n" -" '\\n' .and '\\r';\n" -".string __string_filter;\n" -"__string_filter\n" -" .loop __identifier_char;\n" -"__identifier_char\n" -" 'a'-'z' .or 'A'-'Z' .or '_' .or '0'-'9';\n" -"" diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_vertex_builtin_gc.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_vertex_builtin_gc.h deleted file mode 100644 index 746226180..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_vertex_builtin_gc.h +++ /dev/null @@ -1,262 +0,0 @@ -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"__fixed_output vec4 gl_Position;\n" -"__fixed_output float gl_PointSize;\n" -"__fixed_output vec4 gl_ClipVertex;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"attribute vec4 gl_Color;\n" -"attribute vec4 gl_SecondaryColor;\n" -"attribute vec3 gl_Normal;\n" -"attribute vec4 gl_Vertex;\n" -"attribute vec4 gl_MultiTexCoord0;\n" -"attribute vec4 gl_MultiTexCoord1;\n" -"attribute vec4 gl_MultiTexCoord2;\n" -"attribute vec4 gl_MultiTexCoord3;\n" -"attribute vec4 gl_MultiTexCoord4;\n" -"attribute vec4 gl_MultiTexCoord5;\n" -"attribute vec4 gl_MultiTexCoord6;\n" -"attribute vec4 gl_MultiTexCoord7;\n" -"attribute float gl_FogCoord;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"varying vec4 gl_FrontColor;\n" -"varying vec4 gl_BackColor;\n" -"varying vec4 gl_FrontSecondaryColor;\n" -"varying vec4 gl_BackSecondaryColor;\n" -"varying vec4 gl_TexCoord[];\n" -"varying float gl_FogFragCoord;\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 ftransform () {\n" -" return gl_ModelViewProjectionMatrix * gl_Vertex;\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture1DLod (sampler1D sampler, float coord, float lod) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture1DProjLod (sampler1D sampler, vec2 coord, float lod) {\n" -" return texture1DLod (sampler, coord.s / coord.t, lod);\n" -"}\n" -"vec4 texture1DProjLod (sampler1D sampler, vec4 coord, float lod) {\n" -" return texture1DLod (sampler, coord.s / coord.q, lod);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture2DLod (sampler2D sampler, vec2 coord, float lod) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture2DProjLod (sampler2D sampler, vec3 coord, float lod) {\n" -" return texture2DLod (sampler, vec2 (coord.s / coord.p, coord.t / coord.p), lod);\n" -"}\n" -"vec4 texture2DProjLod (sampler2D sampler, vec4 coord, float lod) {\n" -" return texture2DLod (sampler, vec2 (coord.s / coord.q, coord.t / coord.q), lod);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 texture3DProjLod (sampler3D sampler, vec4 coord, float lod) {\n" -" return texture3DLod (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.s / coord.q),\n" -" lod);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 textureCubeLod (samplerCube sampler, vec3 coord, float lod) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"vec4 shadow1DLod (sampler1DShadow sampler, vec3 coord, float lod) {\n" -" return vec4 (0.0);\n" -"}\n" -"\n" -"vec4 shadow2DLod (sampler2DShadow sampler, vec3 coord, float lod) {\n" -" return vec4 (0.0);\n" -"}\n" -"vec4 shadow1DProjLod (sampler1DShadow sampler, vec4 coord, float lod) {\n" -" return shadow1DLod (sampler, vec3 (coord.s / coord.q, 0.0, coord.p / coord.q), lod);\n" -"}\n" -"vec4 shadow2DProjLod (sampler2DShadow sampler, vec4 coord, float lod) {\n" -" return shadow2DLod (sampler, vec3 (coord.s / coord.q, coord.t / coord.q, coord.p / coord.q),\n" -" lod);\n" -"}\n" -"\n" diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_vertex_builtin_gc_bin.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_vertex_builtin_gc_bin.h deleted file mode 100644 index 31d1fce3a..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/library/slang_vertex_builtin_gc_bin.h +++ /dev/null @@ -1,82 +0,0 @@ -2,2,2,5,12,1,103,108,95,80,111,115,105,116,105,111,110,0,0,0,2,2,5,9, -1,103,108,95,80,111,105,110,116,83,105,122,101,0,0,0,2,2,5,12,1,103,108,95, -67,108,105,112,86,101,114,116,101,120,0,0,0,2,2,2,12,1,103,108,95,67,111,108, -111,114,0,0,0,2,2,2,12,1,103,108,95,83,101,99,111,110,100,97,114,121,67,111, -108,111,114,0,0,0,2,2,2,11,1,103,108,95,78,111,114,109,97,108,0,0,0,2, -2,2,12,1,103,108,95,86,101,114,116,101,120,0,0,0,2,2,2,12,1,103,108,95, -77,117,108,116,105,84,101,120,67,111,111,114,100,48,0,0,0,2,2,2,12,1,103,108, -95,77,117,108,116,105,84,101,120,67,111,111,114,100,49,0,0,0,2,2,2,12,1,103, -108,95,77,117,108,116,105,84,101,120,67,111,111,114,100,50,0,0,0,2,2,2,12,1, -103,108,95,77,117,108,116,105,84,101,120,67,111,111,114,100,51,0,0,0,2,2,2,12, -1,103,108,95,77,117,108,116,105,84,101,120,67,111,111,114,100,52,0,0,0,2,2,2, -12,1,103,108,95,77,117,108,116,105,84,101,120,67,111,111,114,100,53,0,0,0,2,2, -2,12,1,103,108,95,77,117,108,116,105,84,101,120,67,111,111,114,100,54,0,0,0,2, -2,2,12,1,103,108,95,77,117,108,116,105,84,101,120,67,111,111,114,100,55,0,0,0, -2,2,2,9,1,103,108,95,70,111,103,67,111,111,114,100,0,0,0,2,2,3,12,1, -103,108,95,70,114,111,110,116,67,111,108,111,114,0,0,0,2,2,3,12,1,103,108,95, -66,97,99,107,67,111,108,111,114,0,0,0,2,2,3,12,1,103,108,95,70,114,111,110, -116,83,101,99,111,110,100,97,114,121,67,111,108,111,114,0,0,0,2,2,3,12,1,103, -108,95,66,97,99,107,83,101,99,111,110,100,97,114,121,67,111,108,111,114,0,0,0,2, -2,3,12,1,103,108,95,84,101,120,67,111,111,114,100,0,4,0,2,2,3,9,1,103, -108,95,70,111,103,70,114,97,103,67,111,111,114,100,0,0,0,1,0,12,0,102,116,114, -97,110,115,102,111,114,109,0,0,1,8,18,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,18,103,108,95,86,101,114, -116,101,120,0,48,0,0,1,0,12,0,116,101,120,116,117,114,101,49,68,76,111,100,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, -1,0,0,9,108,111,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,76,111,100, -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,1,0,0,9,108,111,100,0,0,0,1,8,58,116,101,120,116,117,114,101,49,68,76, -111,100,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,18,108,111,100,0,0,0,0,0,1,0,12,0, -116,101,120,116,117,114,101,49,68,80,114,111,106,76,111,100,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,1,0,0,9,108,111,100, -0,0,0,1,8,58,116,101,120,116,117,114,101,49,68,76,111,100,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,18,108,111,100,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50, -68,76,111,100,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,1,0,0,9,108,111,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,76,111,100,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,1,0,0,9,108,111,100,0,0,0,1,8,58,116,101,120,116,117, -114,101,50,68,76,111,100,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,18,108, -111,100,0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,50,68,80,114,111,106, -76,111,100,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,1,0,0,9,108,111,100,0,0,0,1,8,58,116,101,120,116,117,114,101, -50,68,76,111,100,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,18,108,111,100, -0,0,0,0,0,1,0,12,0,116,101,120,116,117,114,101,51,68,76,111,100,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,1,0, -0,9,108,111,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,76,111,100,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,1, -0,0,9,108,111,100,0,0,0,1,8,58,116,101,120,116,117,114,101,51,68,76,111,100, -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,115,0,18, -99,111,111,114,100,0,59,113,0,49,0,0,0,18,108,111,100,0,0,0,0,0,1,0, -12,0,116,101,120,116,117,114,101,67,117,98,101,76,111,100,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,1,0,0,9,108,111,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,76,111,100,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,1,0,0,9,108,111,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,76,111,100,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,1,0,0,9,108,111,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,76,111,100,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,1,0,0,9,108,111,100,0,0,0,1,8,58,115,104, -97,100,111,119,49,68,76,111,100,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,18,108,111,100,0,0,0,0,0,1,0,12,0,115,104,97,100, -111,119,50,68,80,114,111,106,76,111,100,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,1,0,0,9,108,111,100,0,0,0,1,8, -58,115,104,97,100,111,119,50,68,76,111,100,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,18,108,111,100,0,0,0,0,0,0 \ No newline at end of file diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble.c deleted file mode 100644 index ef22a0172..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble.c +++ /dev/null @@ -1,1208 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_assemble.c - * slang intermediate code assembler - * \author Michal Krol - */ - -#include "imports.h" -#include "slang_utility.h" -#include "slang_assemble.h" -#include "slang_compile.h" -#include "slang_storage.h" -#include "slang_assemble_constructor.h" -#include "slang_assemble_typeinfo.h" -#include "slang_assemble_conditional.h" -#include "slang_assemble_assignment.h" - -/* slang_assembly */ - -static void slang_assembly_construct (slang_assembly *assem) -{ - assem->type = slang_asm_none; -} - -static void slang_assembly_destruct (slang_assembly *assem) -{ -} - -/* slang_assembly_file */ - -void slang_assembly_file_construct (slang_assembly_file *file) -{ - file->code = NULL; - file->count = 0; -} - -void slang_assembly_file_destruct (slang_assembly_file *file) -{ - unsigned int i; - - for (i = 0; i < file->count; i++) - slang_assembly_destruct (file->code + i); - slang_alloc_free (file->code); -} - -static int slang_assembly_file_push_new (slang_assembly_file *file) -{ - file->code = (slang_assembly *) slang_alloc_realloc (file->code, file->count * sizeof ( - slang_assembly), (file->count + 1) * sizeof (slang_assembly)); - if (file->code != NULL) - { - slang_assembly_construct (file->code + file->count); - file->count++; - return 1; - } - return 0; -} - -static int slang_assembly_file_push_general (slang_assembly_file *file, slang_assembly_type type, - GLfloat literal, GLuint label, GLuint size) -{ - slang_assembly *assem; - if (!slang_assembly_file_push_new (file)) - return 0; - assem = file->code + file->count - 1; - assem->type = type; - assem->literal = literal; - assem->param[0] = label; - assem->param[1] = size; - return 1; -} - -int slang_assembly_file_push (slang_assembly_file *file, slang_assembly_type type) -{ - return slang_assembly_file_push_general (file, type, (GLfloat) 0, 0, 0); -} - -int slang_assembly_file_push_label (slang_assembly_file *file, slang_assembly_type type, - GLuint label) -{ - return slang_assembly_file_push_general (file, type, (GLfloat) 0, label, 0); -} - -int slang_assembly_file_push_label2 (slang_assembly_file *file, slang_assembly_type type, - GLuint label1, GLuint label2) -{ - return slang_assembly_file_push_general (file, type, (GLfloat) 0, label1, label2); -} - -int slang_assembly_file_push_literal (slang_assembly_file *file, slang_assembly_type type, - GLfloat literal) -{ - return slang_assembly_file_push_general (file, type, literal, 0, 0); -} - -/* utility functions */ - -static int sizeof_variable (slang_type_specifier *spec, slang_type_qualifier qual, - slang_operation *array_size, slang_assembly_name_space *space, unsigned int *size) -{ - slang_storage_aggregate agg; - - slang_storage_aggregate_construct (&agg); - if (!_slang_aggregate_variable (&agg, spec, array_size, space->funcs, space->structs)) - { - slang_storage_aggregate_destruct (&agg); - return 0; - } - *size += _slang_sizeof_aggregate (&agg); - if (qual == slang_qual_out || qual == slang_qual_inout) - *size += 4; - slang_storage_aggregate_destruct (&agg); - return 1; -} - -static int sizeof_variable2 (slang_variable *var, slang_assembly_name_space *space, - unsigned int *size) -{ - var->address = *size; - if (var->type.qualifier == slang_qual_out || var->type.qualifier == slang_qual_inout) - var->address += 4; - return sizeof_variable (&var->type.specifier, var->type.qualifier, var->array_size, space, - size); -} - -static int sizeof_variables (slang_variable_scope *vars, unsigned int start, unsigned int stop, - slang_assembly_name_space *space, unsigned int *size) -{ - unsigned int i; - - for (i = start; i < stop; i++) - if (!sizeof_variable2 (vars->variables + i, space, size)) - return 0; - return 1; -} - -static int collect_locals (slang_operation *op, slang_assembly_name_space *space, - unsigned int *size) -{ - unsigned int i; - - if (!sizeof_variables (op->locals, 0, op->locals->num_variables, space, size)) - return 0; - for (i = 0; i < op->num_children; i++) - if (!collect_locals (op->children + i, space, size)) - return 0; - return 1; -} - -/* _slang_locate_function() */ - -slang_function *_slang_locate_function (const char *name, slang_operation *params, - unsigned int num_params, slang_assembly_name_space *space) -{ - unsigned int i; - - for (i = 0; i < space->funcs->num_functions; i++) - { - unsigned int j; - slang_function *f = space->funcs->functions + i; - - if (slang_string_compare (name, f->header.name) != 0) - continue; - if (f->param_count != num_params) - continue; - for (j = 0; j < num_params; j++) - { - slang_assembly_typeinfo ti; - slang_assembly_typeinfo_construct (&ti); - if (!_slang_typeof_operation (params + j, space, &ti)) - { - slang_assembly_typeinfo_destruct (&ti); - return 0; - } - if (!slang_type_specifier_equal (&ti.spec, &f->parameters->variables[j].type.specifier)) - { - slang_assembly_typeinfo_destruct (&ti); - break; - } - slang_assembly_typeinfo_destruct (&ti); - /* "out" and "inout" formal parameter requires the actual parameter to be l-value */ - if (!ti.can_be_referenced && - (f->parameters->variables[j].type.qualifier == slang_qual_out || - f->parameters->variables[j].type.qualifier == slang_qual_inout)) - break; - } - if (j == num_params) - return f; - } - if (space->funcs->outer_scope != NULL) - { - slang_assembly_name_space my_space = *space; - my_space.funcs = space->funcs->outer_scope; - return _slang_locate_function (name, params, num_params, &my_space); - } - return NULL; -} - -/* _slang_assemble_function() */ - -int _slang_assemble_function (slang_assembly_file *file, slang_function *fun, - slang_assembly_name_space *space) -{ - unsigned int param_size, local_size; - unsigned int skip, cleanup; - slang_assembly_flow_control flow; - slang_assembly_local_info info; - slang_assembly_stack_info stk; - - fun->address = file->count; - - if (fun->body == NULL) - { - /* TODO: jump to the actual function body */ - return 1; - } - - /* calculate return value and parameters size */ - param_size = 0; - if (fun->header.type.specifier.type != slang_spec_void) - if (!sizeof_variable (&fun->header.type.specifier, slang_qual_none, NULL, space, - ¶m_size)) - return 0; - info.ret_size = param_size; - if (!sizeof_variables (fun->parameters, 0, fun->param_count, space, ¶m_size)) - return 0; - - /* calculate local variables size, take into account the four-byte return address and - temporaries for various tasks */ - info.addr_tmp = param_size + 4; - info.swizzle_tmp = param_size + 4 + 4; - local_size = param_size + 4 + 4 + 16; - if (!sizeof_variables (fun->parameters, fun->param_count, fun->parameters->num_variables, space, - &local_size)) - return 0; - if (!collect_locals (fun->body, space, &local_size)) - return 0; - - /* allocate local variable storage */ - if (!slang_assembly_file_push_label (file, slang_asm_local_alloc, local_size - param_size - 4)) - return 0; - - /* mark a new frame for function variable storage */ - if (!slang_assembly_file_push_label (file, slang_asm_enter, local_size)) - return 0; - - /* skip the cleanup jump */ - skip = file->count; - if (!slang_assembly_file_push_new (file)) - return 0; - file->code[skip].type = slang_asm_jump; - - /* all "return" statements will be directed here */ - flow.function_end = file->count; - cleanup = file->count; - if (!slang_assembly_file_push_new (file)) - return 0; - file->code[cleanup].type = slang_asm_jump; - - /* execute the function body */ - file->code[skip].param[0] = file->count; - if (!_slang_assemble_operation (file, fun->body, 0, &flow, space, &info, &stk)) - return 0; - - /* this is the end of the function - restore the old function frame */ - file->code[cleanup].param[0] = file->count; - if (!slang_assembly_file_push (file, slang_asm_leave)) - return 0; - - /* free local variable storage */ - if (!slang_assembly_file_push_label (file, slang_asm_local_free, local_size - param_size - 4)) - return 0; - - /* jump out of the function */ - if (!slang_assembly_file_push (file, slang_asm_return)) - return 0; - return 1; -} - -int _slang_cleanup_stack (slang_assembly_file *file, slang_operation *op, int ref, - slang_assembly_name_space *space) -{ - slang_assembly_typeinfo ti; - unsigned int size; - - slang_assembly_typeinfo_construct (&ti); - if (!_slang_typeof_operation (op, space, &ti)) - { - slang_assembly_typeinfo_destruct (&ti); - return 0; - } - if (ti.spec.type == slang_spec_void) - size = 0; - else if (ref) - size = 4; - else - { - size = 0; - if (!sizeof_variable (&ti.spec, slang_qual_none, NULL, space, &size)) - { - slang_assembly_typeinfo_destruct (&ti); - return 0; - } - } - slang_assembly_typeinfo_destruct (&ti); - if (size != 0) - { - if (!slang_assembly_file_push_label (file, slang_asm_local_free, size)) - return 0; - } - return 1; -} - -/* _slang_assemble_operation() */ - -/* XXX: general swizzle! */ -static int dereference_aggregate (slang_assembly_file *file, const slang_storage_aggregate *agg, - unsigned int index, unsigned int *size, slang_assembly_local_info *info) -{ - unsigned int i; - - for (i = agg->count; i > 0; i--) - { - const slang_storage_array *arr = agg->arrays + i - 1; - unsigned int j; - - for (j = arr->length; j > 0; j--) - { - if (arr->type == slang_stor_aggregate) - { - if (!dereference_aggregate (file, arr->aggregate, index, size, info)) - return 0; - } - else - { - *size -= 4; - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, info->addr_tmp, - 4)) - return 0; - if (!slang_assembly_file_push (file, slang_asm_addr_deref)) - return 0; - if (!slang_assembly_file_push_label (file, slang_asm_addr_push, *size)) - return 0; - if (!slang_assembly_file_push (file, slang_asm_addr_add)) - return 0; - switch (arr->type) - { - case slang_stor_bool: - if (!slang_assembly_file_push (file, slang_asm_bool_deref)) - return 0; - break; - case slang_stor_int: - if (!slang_assembly_file_push (file, slang_asm_int_deref)) - return 0; - break; - case slang_stor_float: - if (!slang_assembly_file_push (file, slang_asm_float_deref)) - return 0; - break; - } - index += 4; - } - } - } - return 1; -} -/* XXX: general swizzle! */ -int dereference (slang_assembly_file *file, slang_operation *op, - slang_assembly_name_space *space, slang_assembly_local_info *info) -{ - slang_assembly_typeinfo ti; - int result; - slang_storage_aggregate agg; - unsigned int size; - - slang_assembly_typeinfo_construct (&ti); - if (!_slang_typeof_operation (op, space, &ti)) - { - slang_assembly_typeinfo_destruct (&ti); - return 0; - } - - slang_storage_aggregate_construct (&agg); - if (!_slang_aggregate_variable (&agg, &ti.spec, NULL, space->funcs, space->structs)) - { - slang_storage_aggregate_destruct (&agg); - slang_assembly_typeinfo_destruct (&ti); - return 0; - } - - size = _slang_sizeof_aggregate (&agg); - result = dereference_aggregate (file, &agg, 0, &size, info); - - slang_storage_aggregate_destruct (&agg); - slang_assembly_typeinfo_destruct (&ti); - return result; -} - -static int call_function (slang_assembly_file *file, slang_function *fun, slang_operation *params, - unsigned int param_count, int assignment, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - unsigned int i; - slang_assembly_stack_info stk; - - /* make room for the return value, if any */ - if (fun->header.type.specifier.type != slang_spec_void) - { - unsigned int ret_size = 0; - if (!sizeof_variable (&fun->header.type.specifier, slang_qual_none, NULL, space, &ret_size)) - return 0; - if (!slang_assembly_file_push_label (file, slang_asm_local_alloc, ret_size)) - return 0; - } - - /* push the actual parameters on the stack */ - for (i = 0; i < param_count; i++) - { - slang_assembly_flow_control flow; - - if (fun->parameters->variables[i].type.qualifier == slang_qual_inout || - fun->parameters->variables[i].type.qualifier == slang_qual_out) - { - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, info->addr_tmp, 4)) - return 0; - /* TODO: optimize the "out" parameter case */ - /* TODO: inspect stk */ - if (!_slang_assemble_operation (file, params + i, 1, &flow, space, info, &stk)) - return 0; - if (!slang_assembly_file_push (file, slang_asm_addr_copy)) - return 0; - if (!slang_assembly_file_push (file, slang_asm_addr_deref)) - return 0; - if (i == 0 && assignment) - { - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, info->addr_tmp, - 4)) - return 0; - if (!slang_assembly_file_push (file, slang_asm_addr_deref)) - return 0; - } - if (!dereference (file, params, space, info)) - return 0; - } - else - { - /* TODO: for "out" and "inout" parameters also push the address (first) */ - /* TODO: optimize the "out" parameter case */ - /* TODO: inspect stk */ - if (!_slang_assemble_operation (file, params + i, 0, &flow, space, info, &stk)) - return 0; - } - } - - /* call the function */ - if (!slang_assembly_file_push_label (file, slang_asm_call, fun->address)) - return 0; - - /* pop the parameters from the stack */ - for (i = param_count; i > 0; i--) - { - unsigned int j = i - 1; - if (fun->parameters->variables[j].type.qualifier == slang_qual_inout || - fun->parameters->variables[j].type.qualifier == slang_qual_out) - { - if (!_slang_assemble_assignment (file, params + j, space, info)) - return 0; - if (!slang_assembly_file_push_label (file, slang_asm_local_free, 4)) - return 0; - } - else - { - if (!_slang_cleanup_stack (file, params + j, 0, space)) - return 0; - } - } - - return 1; -} - -int call_function_name (slang_assembly_file *file, const char *name, slang_operation *params, - unsigned int param_count, int assignment, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - slang_function *fun = _slang_locate_function (name, params, param_count, space); - if (fun == NULL) - return 0; - return call_function (file, fun, params, param_count, assignment, space, info); -} - -static int call_function_name_dummyint (slang_assembly_file *file, const char *name, - slang_operation *params, slang_assembly_name_space *space, slang_assembly_local_info *info) -{ - slang_operation p2[2]; - int result; - - p2[0] = *params; - if (!slang_operation_construct_a (p2 + 1)) - return 0; - p2[1].type = slang_oper_literal_int; - result = call_function_name (file, name, p2, 2, 0, space, info); - slang_operation_destruct (p2 + 1); - return result; -} - -static int call_asm_instruction (slang_assembly_file *file, const char *name) -{ - const struct - { - const char *name; - slang_assembly_type code1, code2; - } inst[] = { - { "float_to_int", slang_asm_float_to_int, slang_asm_int_copy }, - { "int_to_float", slang_asm_int_to_float, slang_asm_float_copy }, - { "float_copy", slang_asm_float_copy, slang_asm_none }, - { "int_copy", slang_asm_int_copy, slang_asm_none }, - { "bool_copy", slang_asm_bool_copy, slang_asm_none }, - { "float_add", slang_asm_float_add, slang_asm_float_copy }, - { "float_multiply", slang_asm_float_multiply, slang_asm_float_copy }, - { "float_divide", slang_asm_float_divide, slang_asm_float_copy }, - { "float_negate", slang_asm_float_negate, slang_asm_float_copy }, - { "float_less", slang_asm_float_less, slang_asm_bool_copy }, - { "float_equal", slang_asm_float_equal, slang_asm_bool_copy }, - { NULL, slang_asm_none, slang_asm_none } - }; - unsigned int i; - - for (i = 0; inst[i].name != NULL; i++) - if (slang_string_compare (name, inst[i].name) == 0) - break; - if (inst[i].name == NULL) - return 0; - - if (!slang_assembly_file_push_label2 (file, inst[i].code1, 4, 0)) - return 0; - if (inst[i].code2 != slang_asm_none) - if (!slang_assembly_file_push_label2 (file, inst[i].code2, 4, 0)) - return 0; - - /* clean-up the stack from the remaining dst address */ - if (!slang_assembly_file_push_label (file, slang_asm_local_free, 4)) - return 0; - - return 1; -} - -/* XXX: general swizzle! */ -static int equality_aggregate (slang_assembly_file *file, const slang_storage_aggregate *agg, - unsigned int *index, unsigned int size, slang_assembly_local_info *info, unsigned int z_label) -{ - unsigned int i; - - for (i = 0; i < agg->count; i++) - { - const slang_storage_array *arr = agg->arrays + i; - unsigned int j; - - for (j = 0; j < arr->length; j++) - { - if (arr->type == slang_stor_aggregate) - { - if (!equality_aggregate (file, arr->aggregate, index, size, info, z_label)) - return 0; - } - else - { - if (!slang_assembly_file_push_label2 (file, slang_asm_float_equal, size + *index, - *index)) - return 0; - *index += 4; - if (!slang_assembly_file_push_label (file, slang_asm_jump_if_zero, z_label)) - return 0; - } - } - } - return 1; -} -/* XXX: general swizzle! */ -static int equality (slang_assembly_file *file, slang_operation *op, - slang_assembly_name_space *space, slang_assembly_local_info *info, int equal) -{ - slang_assembly_typeinfo ti; - int result; - slang_storage_aggregate agg; - unsigned int index, size; - unsigned int skip_jump, true_label, true_jump, false_label, false_jump; - - /* get type of operation */ - slang_assembly_typeinfo_construct (&ti); - if (!_slang_typeof_operation (op, space, &ti)) - { - slang_assembly_typeinfo_destruct (&ti); - return 0; - } - - /* convert it to an aggregate */ - slang_storage_aggregate_construct (&agg); - if (!(result = _slang_aggregate_variable (&agg, &ti.spec, NULL, space->funcs, space->structs))) - goto end; - - /* compute the size of the agregate - there are two such aggregates on the stack */ - size = _slang_sizeof_aggregate (&agg); - - /* jump to the actual data-comparison code */ - skip_jump = file->count; - if (!(result = slang_assembly_file_push (file, slang_asm_jump))) - goto end; - - /* pop off the stack the compared data and push 1 */ - true_label = file->count; - if (!(result = slang_assembly_file_push_label (file, slang_asm_local_free, size * 2))) - goto end; - if (!(result = slang_assembly_file_push_literal (file, slang_asm_bool_push, 1.0f))) - goto end; - true_jump = file->count; - if (!(result = slang_assembly_file_push (file, slang_asm_jump))) - goto end; - - false_label = file->count; - if (!(result = slang_assembly_file_push_label (file, slang_asm_local_free, size * 2))) - goto end; - if (!(result = slang_assembly_file_push_literal (file, slang_asm_bool_push, 0.0f))) - goto end; - false_jump = file->count; - if (!(result = slang_assembly_file_push (file, slang_asm_jump))) - goto end; - - file->code[skip_jump].param[0] = file->count; - - /* compare the data on stack, it will eventually jump either to true or false label */ - index = 0; - if (!(result = equality_aggregate (file, &agg, &index, size, info, - equal ? false_label : true_label))) - goto end; - if (!(result = slang_assembly_file_push_label (file, slang_asm_jump, - equal ? true_label : false_label))) - goto end; - - file->code[true_jump].param[0] = file->count; - file->code[false_jump].param[0] = file->count; - - result = 1; -end: - slang_storage_aggregate_destruct (&agg); - slang_assembly_typeinfo_destruct (&ti); - return result; -} - -int _slang_assemble_operation (slang_assembly_file *file, slang_operation *op, int reference, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info, slang_assembly_stack_info *stk) -{ - unsigned int assem; - - stk->swizzle_mask = 0; - - assem = file->count; - if (!slang_assembly_file_push_new (file)) - return 0; - - switch (op->type) - { - case slang_oper_block_no_new_scope: - case slang_oper_block_new_scope: - { - unsigned int i; - for (i = 0; i < op->num_children; i++) - { - slang_assembly_stack_info stk; - if (!_slang_assemble_operation (file, op->children + i, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children + i, 0, space)) - return 0; - } - } - break; - case slang_oper_variable_decl: - { - unsigned int i; - - for (i = 0; i < op->num_children; i++) - { - /* TODO: perform initialization of op->children[i] */ - /* TODO: clean-up stack */ - } - } - break; - case slang_oper_asm: - { - unsigned int i; - for (i = 0; i < op->num_children; i++) - { - slang_assembly_stack_info stk; - if (!_slang_assemble_operation (file, op->children + i, i == 0, flow, space, info, - &stk)) - return 0; - /* TODO: inspect stk */ - } - if (!call_asm_instruction (file, op->identifier)) - return 0; - } - break; - case slang_oper_break: - file->code[assem].type = slang_asm_jump; - file->code[assem].param[0] = flow->loop_end; - break; - case slang_oper_continue: - file->code[assem].type = slang_asm_jump; - file->code[assem].param[0] = flow->loop_start; - break; - case slang_oper_discard: - file->code[assem].type = slang_asm_discard; - if (!slang_assembly_file_push (file, slang_asm_exit)) - return 0; - break; - case slang_oper_return: - if (info->ret_size != 0) - { - slang_assembly_stack_info stk; - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, 0, info->ret_size)) - return 0; - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - if (!_slang_assemble_assignment (file, op->children, space, info)) - return 0; - if (!slang_assembly_file_push_label (file, slang_asm_local_free, 4)) - return 0; - } - if (!slang_assembly_file_push_label (file, slang_asm_jump, flow->function_end)) - return 0; - break; - case slang_oper_expression: - { - slang_assembly_stack_info stk; - if (!_slang_assemble_operation (file, op->children, reference, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - } - break; - case slang_oper_if: - if (!_slang_assemble_if (file, op, flow, space, info)) - return 0; - break; - case slang_oper_while: - if (!_slang_assemble_while (file, op, flow, space, info)) - return 0; - break; - case slang_oper_do: - if (!_slang_assemble_do (file, op, flow, space, info)) - return 0; - break; - case slang_oper_for: - if (!_slang_assemble_for (file, op, flow, space, info)) - return 0; - break; - case slang_oper_void: - break; - case slang_oper_literal_bool: - file->code[assem].type = slang_asm_bool_push; - file->code[assem].literal = op->literal; - break; - case slang_oper_literal_int: - file->code[assem].type = slang_asm_int_push; - file->code[assem].literal = op->literal; - break; - case slang_oper_literal_float: - file->code[assem].type = slang_asm_float_push; - file->code[assem].literal = op->literal; - break; - case slang_oper_identifier: - { - slang_variable *var; - unsigned int size; - var = _slang_locate_variable (op->locals, op->identifier, 1); - if (var == NULL) - return 0; - size = 0; - if (!sizeof_variable (&var->type.specifier, slang_qual_none, var->array_size, space, - &size)) - return 0; - if (var->initializer != NULL) - { - assert (!"var->initializer, oper_identifier"); - } - else - { - if (!reference) - { - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, - info->addr_tmp, 4)) - return 0; - } - /* XXX: globals! */ - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, var->address, - size)) - return 0; - if (!reference) - { - if (!slang_assembly_file_push (file, slang_asm_addr_copy)) - return 0; - if (!slang_assembly_file_push_label (file, slang_asm_local_free, 4)) - return 0; - if (!dereference (file, op, space, info)) - return 0; - } - } - } - break; - case slang_oper_sequence: - { - slang_assembly_stack_info stk; - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children, 0, space)) - return 0; - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, - &stk)) - return 0; - /* TODO: inspect stk */ - } - break; - case slang_oper_assign: - if (!_slang_assemble_assign (file, op, "=", reference, space, info)) - return 0; - break; - case slang_oper_addassign: - if (!_slang_assemble_assign (file, op, "+=", reference, space, info)) - return 0; - break; - case slang_oper_subassign: - if (!_slang_assemble_assign (file, op, "-=", reference, space, info)) - return 0; - break; - case slang_oper_mulassign: - if (!_slang_assemble_assign (file, op, "*=", reference, space, info)) - return 0; - break; - /*case slang_oper_modassign:*/ - /*case slang_oper_lshassign:*/ - /*case slang_oper_rshassign:*/ - /*case slang_oper_orassign:*/ - /*case slang_oper_xorassign:*/ - /*case slang_oper_andassign:*/ - case slang_oper_divassign: - if (!_slang_assemble_assign (file, op, "/=", reference, space, info)) - return 0; - break; - case slang_oper_select: - if (!_slang_assemble_select (file, op, flow, space, info)) - return 0; - break; - case slang_oper_logicalor: - if (!_slang_assemble_logicalor (file, op, flow, space, info)) - return 0; - break; - case slang_oper_logicaland: - if (!_slang_assemble_logicaland (file, op, flow, space, info)) - return 0; - break; - case slang_oper_logicalxor: - if (!call_function_name (file, "^^", op->children, 2, 0, space, info)) - return 0; - break; - /*case slang_oper_bitor:*/ - /*case slang_oper_bitxor:*/ - /*case slang_oper_bitand:*/ - case slang_oper_less: - if (!call_function_name (file, "<", op->children, 2, 0, space, info)) - return 0; - break; - case slang_oper_greater: - if (!call_function_name (file, ">", op->children, 2, 0, space, info)) - return 0; - break; - case slang_oper_lessequal: - if (!call_function_name (file, "<=", op->children, 2, 0, space, info)) - return 0; - break; - case slang_oper_greaterequal: - if (!call_function_name (file, ">=", op->children, 2, 0, space, info)) - return 0; - break; - /*case slang_oper_lshift:*/ - /*case slang_oper_rshift:*/ - case slang_oper_add: - if (!call_function_name (file, "+", op->children, 2, 0, space, info)) - return 0; - break; - case slang_oper_subtract: - if (!call_function_name (file, "-", op->children, 2, 0, space, info)) - return 0; - break; - case slang_oper_multiply: - if (!call_function_name (file, "*", op->children, 2, 0, space, info)) - return 0; - break; - /*case slang_oper_modulus:*/ - case slang_oper_divide: - if (!call_function_name (file, "/", op->children, 2, 0, space, info)) - return 0; - break; - case slang_oper_equal: - { - slang_assembly_stack_info stk; - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - if (!equality (file, op->children, space, info, 1)) - return 0; - } - break; - case slang_oper_notequal: - { - slang_assembly_stack_info stk; - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - if (!equality (file, op->children, space, info, 0)) - return 0; - } - break; - case slang_oper_preincrement: - if (!_slang_assemble_assign (file, op, "++", reference, space, info)) - return 0; - break; - case slang_oper_predecrement: - if (!_slang_assemble_assign (file, op, "--", reference, space, info)) - return 0; - break; - case slang_oper_plus: - if (!call_function_name (file, "+", op->children, 1, 0, space, info)) - return 0; - break; - case slang_oper_minus: - if (!call_function_name (file, "-", op->children, 1, 0, space, info)) - return 0; - break; - /*case slang_oper_complement:*/ - case slang_oper_not: - if (!call_function_name (file, "!", op->children, 1, 0, space, info)) - return 0; - break; - case slang_oper_subscript: - { - slang_assembly_stack_info _stk; - slang_assembly_typeinfo ti_arr, ti_elem; - unsigned int arr_size = 0, elem_size = 0; - if (!_slang_assemble_operation (file, op->children, reference, flow, space, info, - &_stk)) - return 0; - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &_stk)) - return 0; - slang_assembly_typeinfo_construct (&ti_arr); - if (!_slang_typeof_operation (op->children, space, &ti_arr)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - return 0; - } - if (!sizeof_variable (&ti_arr.spec, slang_qual_none, NULL, space, &arr_size)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - return 0; - } - slang_assembly_typeinfo_construct (&ti_elem); - if (!_slang_typeof_operation (op, space, &ti_elem)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - if (!sizeof_variable (&ti_elem.spec, slang_qual_none, NULL, space, &elem_size)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - if (!slang_assembly_file_push (file, slang_asm_int_to_addr)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - if (!slang_assembly_file_push_label (file, slang_asm_addr_push, elem_size)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - if (!slang_assembly_file_push (file, slang_asm_addr_multiply)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - if (reference) - { - if (!slang_assembly_file_push (file, slang_asm_addr_add)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - } - else - { - unsigned int i; - for (i = 0; i < elem_size; i += 4) - { - if (!slang_assembly_file_push_label2 (file, slang_asm_float_move, - arr_size - elem_size + i + 4, i + 4)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - } - if (!slang_assembly_file_push_label (file, slang_asm_local_free, 4)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - if (!slang_assembly_file_push_label (file, slang_asm_local_free, - arr_size - elem_size)) - { - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - return 0; - } - } - slang_assembly_typeinfo_destruct (&ti_arr); - slang_assembly_typeinfo_destruct (&ti_elem); - } - break; - case slang_oper_call: - { - slang_function *fun = _slang_locate_function (op->identifier, op->children, - op->num_children, space); - if (fun == NULL) - { - if (!_slang_assemble_constructor (file, op, flow, space, info)) - return 0; - } - else - { - if (!call_function (file, fun, op->children, op->num_children, 0, space, info)) - return 0; - } - } - break; - case slang_oper_field: - { - slang_assembly_typeinfo ti_after, ti_before; - slang_assembly_stack_info _stk; - slang_assembly_typeinfo_construct (&ti_after); - if (!_slang_typeof_operation (op, space, &ti_after)) - { - slang_assembly_typeinfo_destruct (&ti_after); - return 0; - } - slang_assembly_typeinfo_construct (&ti_before); - if (!_slang_typeof_operation (op->children, space, &ti_before)) - { - slang_assembly_typeinfo_destruct (&ti_after); - slang_assembly_typeinfo_destruct (&ti_before); - return 0; - } - if (!reference && ti_after.is_swizzled) - { - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, - info->swizzle_tmp, 16)) - { - slang_assembly_typeinfo_destruct (&ti_after); - slang_assembly_typeinfo_destruct (&ti_before); - return 0; - } - } - if (!_slang_assemble_operation (file, op->children, reference, flow, space, info, - &_stk)) - { - slang_assembly_typeinfo_destruct (&ti_after); - slang_assembly_typeinfo_destruct (&ti_before); - return 0; - } - /* TODO: inspect stk */ - if (ti_after.is_swizzled) - { - if (reference) - { - if (ti_after.swz.num_components == 1) - { - if (!slang_assembly_file_push_label (file, slang_asm_addr_push, - ti_after.swz.swizzle[0] * 4)) - { - slang_assembly_typeinfo_destruct (&ti_after); - slang_assembly_typeinfo_destruct (&ti_before); - return 0; - } - if (!slang_assembly_file_push (file, slang_asm_addr_add)) - { - slang_assembly_typeinfo_destruct (&ti_after); - slang_assembly_typeinfo_destruct (&ti_before); - return 0; - } - } - else - { - unsigned int i; - for (i = 0; i < ti_after.swz.num_components; i++) - stk->swizzle_mask |= 1 << ti_after.swz.swizzle[i]; - } - } - else - { - if (!_slang_assemble_constructor_from_swizzle (file, &ti_after.swz, - &ti_after.spec, &ti_before.spec, info)) - { - slang_assembly_typeinfo_destruct (&ti_after); - slang_assembly_typeinfo_destruct (&ti_before); - return 0; - } - } - } - else - { - if (reference) - { - /* TODO: struct field address */ - } - else - { - /* TODO: struct field value */ - } - } - slang_assembly_typeinfo_destruct (&ti_after); - slang_assembly_typeinfo_destruct (&ti_before); - } - break; - case slang_oper_postincrement: - if (!call_function_name_dummyint (file, "++", op->children, space, info)) - return 0; - if (!dereference (file, op, space, info)) - return 0; - break; - case slang_oper_postdecrement: - if (!call_function_name_dummyint (file, "--", op->children, space, info)) - return 0; - if (!dereference (file, op, space, info)) - return 0; - break; - default: - return 0; - } - return 1; -} - - - - - - - - - -void xxx_first (slang_assembly_file *file) -{ - slang_assembly_file_push (file, slang_asm_jump); -} - -void xxx_prolog (slang_assembly_file *file, unsigned int addr) -{ - file->code[0].param[0] = file->count; - slang_assembly_file_push_label (file, slang_asm_call, addr); - slang_assembly_file_push (file, slang_asm_exit); -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble.h deleted file mode 100644 index 04ba7cf04..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_ASSEMBLE_H -#define SLANG_ASSEMBLE_H - -#include "slang_compile.h" - -#if defined __cplusplus -extern "C" { -#endif - -typedef enum slang_assembly_type_ -{ - /* core */ - slang_asm_none, - slang_asm_float_copy, - slang_asm_float_move, - slang_asm_float_push, - slang_asm_float_deref, - slang_asm_float_add, - slang_asm_float_multiply, - slang_asm_float_divide, - slang_asm_float_negate, - slang_asm_float_less, - slang_asm_float_equal, - slang_asm_float_to_int, - slang_asm_int_copy, - slang_asm_int_move, - slang_asm_int_push, - slang_asm_int_deref, - slang_asm_int_to_float, - slang_asm_int_to_addr, - slang_asm_bool_copy, - slang_asm_bool_move, - slang_asm_bool_push, - slang_asm_bool_deref, - slang_asm_addr_copy, - slang_asm_addr_push, - slang_asm_addr_deref, - slang_asm_addr_add, - slang_asm_addr_multiply, - slang_asm_jump, - slang_asm_jump_if_zero, - slang_asm_enter, - slang_asm_leave, - slang_asm_local_alloc, - slang_asm_local_free, - slang_asm_local_addr, - slang_asm_call, - slang_asm_return, - slang_asm_discard, - slang_asm_exit, - slang_asm__last -} slang_assembly_type; - -typedef struct slang_assembly_ -{ - slang_assembly_type type; - GLfloat literal; - GLuint param[2]; -} slang_assembly; - -typedef struct slang_assembly_file_ -{ - slang_assembly *code; - unsigned int count; -} slang_assembly_file; - -void slang_assembly_file_construct (slang_assembly_file *); -void slang_assembly_file_destruct (slang_assembly_file *); -int slang_assembly_file_push (slang_assembly_file *, slang_assembly_type); -int slang_assembly_file_push_label (slang_assembly_file *, slang_assembly_type, GLuint); -int slang_assembly_file_push_label2 (slang_assembly_file *, slang_assembly_type, GLuint, GLuint); -int slang_assembly_file_push_literal (slang_assembly_file *, slang_assembly_type, GLfloat); - -typedef struct slang_assembly_flow_control_ -{ - unsigned int loop_start; /* for "continue" statement */ - unsigned int loop_end; /* for "break" statement */ - unsigned int function_end; /* for "return" statement */ -} slang_assembly_flow_control; - -typedef struct slang_assembly_name_space_ -{ - struct slang_function_scope_ *funcs; - struct slang_struct_scope_ *structs; - struct slang_variable_scope_ *vars; -} slang_assembly_name_space; - -slang_function *_slang_locate_function (const char *name, slang_operation *params, - unsigned int num_params, slang_assembly_name_space *space); - -int _slang_assemble_function (slang_assembly_file *, struct slang_function_ *, - slang_assembly_name_space *); - -typedef struct slang_assembly_stack_info_ -{ - unsigned int swizzle_mask; -} slang_assembly_stack_info; - -int _slang_cleanup_stack (slang_assembly_file *, slang_operation *, int ref, - slang_assembly_name_space *); - -typedef struct slang_assembly_local_info_ -{ - unsigned int ret_size; - unsigned int addr_tmp; - unsigned int swizzle_tmp; -} slang_assembly_local_info; - -int _slang_assemble_operation (slang_assembly_file *, struct slang_operation_ *, int reference, - slang_assembly_flow_control *, slang_assembly_name_space *, slang_assembly_local_info *, - slang_assembly_stack_info *); - -void xxx_first (slang_assembly_file *); -void xxx_prolog (slang_assembly_file *, unsigned int); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_assignment.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_assignment.c deleted file mode 100644 index 488c7a91f..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_assignment.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_assemble_assignment.c - * slang assignment expressions assembler - * \author Michal Krol - */ - -#include "imports.h" -#include "slang_assemble_assignment.h" -#include "slang_assemble_typeinfo.h" -#include "slang_storage.h" -#include "slang_utility.h" - -/* - _slang_assemble_assignment() - - copies values on the stack ( to ) to a memory - location pointed by ; - - in: - +------------------+ - | addr of variable | - +------------------+ - | component N-1 | - | ... | - | component 0 | - +------------------+ - - out: - +------------------+ - | addr of variable | - +------------------+ -*/ -/* TODO: add support for swizzle mask */ -static int assign_aggregate (slang_assembly_file *file, const slang_storage_aggregate *agg, - unsigned int *index, unsigned int size, slang_assembly_local_info *info) -{ - unsigned int i; - - for (i = 0; i < agg->count; i++) - { - const slang_storage_array *arr = agg->arrays + i; - unsigned int j; - - for (j = 0; j < arr->length; j++) - { - if (arr->type == slang_stor_aggregate) - { - if (!assign_aggregate (file, arr->aggregate, index, size, info)) - return 0; - } - else - { - slang_assembly_type ty; - - switch (arr->type) - { - case slang_stor_bool: - ty = slang_asm_bool_copy; - break; - case slang_stor_int: - ty = slang_asm_int_copy; - break; - case slang_stor_float: - ty = slang_asm_float_copy; - break; - default: - break; - } - if (!slang_assembly_file_push_label2 (file, ty, size - *index, *index)) - return 0; - *index += 4; - } - } - } - return 1; -} - -int _slang_assemble_assignment (slang_assembly_file *file, slang_operation *op, - slang_assembly_name_space *space, slang_assembly_local_info *info) -{ - slang_assembly_typeinfo ti; - int result; - slang_storage_aggregate agg; - unsigned int index, size; - - slang_assembly_typeinfo_construct (&ti); - if (!_slang_typeof_operation (op, space, &ti)) - { - slang_assembly_typeinfo_destruct (&ti); - return 0; - } - - slang_storage_aggregate_construct (&agg); - if (!_slang_aggregate_variable (&agg, &ti.spec, NULL, space->funcs, space->structs)) - { - slang_storage_aggregate_destruct (&agg); - slang_assembly_typeinfo_destruct (&ti); - return 0; - } - - index = 0; - size = _slang_sizeof_aggregate (&agg); - result = assign_aggregate (file, &agg, &index, size, info); - - slang_storage_aggregate_destruct (&agg); - slang_assembly_typeinfo_destruct (&ti); - return result; -} - -/* - _slang_assemble_assign() - - performs unary (pre ++ and --) or binary (=, +=, -=, *=, /=) assignment on the operation's - children -*/ - -int dereference (slang_assembly_file *file, slang_operation *op, - slang_assembly_name_space *space, slang_assembly_local_info *info); - -int call_function_name (slang_assembly_file *file, const char *name, slang_operation *params, - unsigned int param_count, int assignment, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -int _slang_assemble_assign (slang_assembly_file *file, slang_operation *op, const char *oper, - int ref, slang_assembly_name_space *space, slang_assembly_local_info *info) -{ - slang_assembly_stack_info stk; - slang_assembly_flow_control flow; - - if (!ref) - { - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, info->addr_tmp, 4)) - return 0; - } - - if (slang_string_compare ("=", oper) == 0) - { - if (!_slang_assemble_operation (file, op->children, 1, &flow, space, info, &stk)) - return 0; - if (!_slang_assemble_operation (file, op->children + 1, 0, &flow, space, info, &stk)) - return 0; - if (!_slang_assemble_assignment (file, op->children, space, info)) - return 0; - } - else - { - if (!call_function_name (file, oper, op->children, op->num_children, 1, space, info)) - return 0; - } - - if (!ref) - { - if (!slang_assembly_file_push (file, slang_asm_addr_copy)) - return 0; - if (!slang_assembly_file_push_label (file, slang_asm_local_free, 4)) - return 0; - if (!dereference (file, op->children, space, info)) - return 0; - } - - return 1; -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_assignment.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_assignment.h deleted file mode 100644 index 8ffd9e4cd..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_assignment.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_ASSEMBLE_ASSIGNMENT_H -#define SLANG_ASSEMBLE_ASSIGNMENT_H - -#include "slang_assemble.h" - -#if defined __cplusplus -extern "C" { -#endif - -int _slang_assemble_assignment (slang_assembly_file *, slang_operation *, - slang_assembly_name_space *, slang_assembly_local_info *); - -int _slang_assemble_assign (slang_assembly_file *, slang_operation *, const char *, int ref, - slang_assembly_name_space *, slang_assembly_local_info *); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_conditional.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_conditional.c deleted file mode 100644 index 2347475f4..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_conditional.c +++ /dev/null @@ -1,485 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_assemble_conditional.c - * slang condtional expressions assembler - * \author Michal Krol - */ - -#include "imports.h" -#include "slang_utility.h" -#include "slang_assemble_conditional.h" -#include "slang_assemble.h" - -/* _slang_assemble_logicaland() */ - -int _slang_assemble_logicaland (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - /* - and: - - jumpz zero - - jump end - zero: - push 0 - end: - */ - - unsigned int zero_jump, end_jump; - slang_assembly_stack_info stk; - - /* evaluate left expression */ - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - - /* jump to pushing 0 if not true */ - zero_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump_if_zero)) - return 0; - - /* evaluate right expression */ - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - - /* jump to the end of the expression */ - end_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* push 0 on stack */ - file->code[zero_jump].param[0] = file->count; - if (!slang_assembly_file_push (file, slang_asm_bool_push)) - return 0; - - /* the end of the expression */ - file->code[end_jump].param[0] = file->count; - - return 1; -} - -/* _slang_assemble_logicalor() */ - -int _slang_assemble_logicalor (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - /* - or: - - jumpz right - push 1 - jump end - right: - - end: - */ - - unsigned int right_jump, end_jump; - slang_assembly_stack_info stk; - - /* evaluate left expression */ - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - - /* jump to evaluation of right expression if not true */ - right_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump_if_zero)) - return 0; - - /* push 1 on stack */ - if (!slang_assembly_file_push_literal (file, slang_asm_bool_push, 1.0f)) - return 0; - - /* jump to the end of the expression */ - end_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* evaluate right expression */ - file->code[right_jump].param[0] = file->count; - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - - /* the end of the expression */ - file->code[end_jump].param[0] = file->count; - - return 1; -} - -/* _slang_assemble_select() */ - -int _slang_assemble_select (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - /* - select: - - jumpz false - - jump end - false: - - end: - */ - - unsigned int cond_jump, end_jump; - slang_assembly_stack_info stk; - - /* execute condition expression */ - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - - /* jump to false expression if not true */ - cond_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump_if_zero)) - return 0; - - /* execute true expression */ - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - - /* jump to the end of the expression */ - end_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* resolve false point */ - file->code[cond_jump].param[0] = file->count; - - /* execute false expression */ - if (!_slang_assemble_operation (file, op->children + 2, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - - /* resolve the end of the expression */ - file->code[end_jump].param[0] = file->count; - - return 1; -} - -/* _slang_assemble_for() */ - -int _slang_assemble_for (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - /* - for: - - jump start - break: - jump end - continue: - - start: - - jumpz end - - jump continue - end: - */ - - unsigned int start_jump, end_jump, cond_jump; - unsigned int break_label, cont_label; - slang_assembly_flow_control loop_flow = *flow; - slang_assembly_stack_info stk; - - /* execute initialization statement */ - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children, 0, space)) - return 0; - - /* skip the "go to the end of the loop" and loop-increment statements */ - start_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* go to the end of the loop - break statements are directed here */ - break_label = file->count; - end_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* resolve the beginning of the loop - continue statements are directed here */ - cont_label = file->count; - - /* execute loop-increment statement */ - if (!_slang_assemble_operation (file, op->children + 2, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children + 2, 0, space)) - return 0; - - /* resolve the condition point */ - file->code[start_jump].param[0] = file->count; - - /* execute condition statement */ - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &stk)) - return 0; - /* TODO: inspect stk */ - - /* jump to the end of the loop if not true */ - cond_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump_if_zero)) - return 0; - - /* execute loop body */ - loop_flow.loop_start = cont_label; - loop_flow.loop_end = break_label; - if (!_slang_assemble_operation (file, op->children + 3, 0, &loop_flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children + 3, 0, space)) - return 0; - - /* go to the beginning of the loop */ - if (!slang_assembly_file_push_label (file, slang_asm_jump, cont_label)) - return 0; - - /* resolve the end of the loop */ - file->code[end_jump].param[0] = file->count; - file->code[cond_jump].param[0] = file->count; - - return 1; -} - -/* _slang_assemble_do() */ - -int _slang_assemble_do (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - /* - do: - jump start - break: - jump end - continue: - jump condition - start: - - condition: - - jumpz end - jump start - end: - */ - - unsigned int skip_jump, end_jump, cont_jump, cond_jump; - unsigned int break_label, cont_label; - slang_assembly_flow_control loop_flow = *flow; - slang_assembly_stack_info stk; - - /* skip the "go to the end of the loop" and "go to condition" statements */ - skip_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* go to the end of the loop - break statements are directed here */ - break_label = file->count; - end_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* go to condition - continue statements are directed here */ - cont_label = file->count; - cont_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* resolve the beginning of the loop */ - file->code[skip_jump].param[0] = file->count; - - /* execute loop body */ - loop_flow.loop_start = cont_label; - loop_flow.loop_end = break_label; - if (!_slang_assemble_operation (file, op->children, 0, &loop_flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children, 0, space)) - return 0; - - /* resolve condition point */ - file->code[cont_jump].param[0] = file->count; - - /* execute condition statement */ - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - - /* jump to the end of the loop if not true */ - cond_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump_if_zero)) - return 0; - - /* jump to the beginning of the loop */ - if (!slang_assembly_file_push_label (file, slang_asm_jump, file->code[skip_jump].param[0])) - return 0; - - /* resolve the end of the loop */ - file->code[end_jump].param[0] = file->count; - file->code[cond_jump].param[0] = file->count; - - return 1; -} - -/* _slang_assemble_while() */ - -int _slang_assemble_while (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - /* - while: - jump continue - break: - jump end - continue: - - jumpz end - - jump continue - end: - */ - - unsigned int skip_jump, end_jump, cond_jump; - unsigned int break_label; - slang_assembly_flow_control loop_flow = *flow; - slang_assembly_stack_info stk; - - /* skip the "go to the end of the loop" statement */ - skip_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* go to the end of the loop - break statements are directed here */ - break_label = file->count; - end_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* resolve the beginning of the loop - continue statements are directed here */ - file->code[skip_jump].param[0] = file->count; - - /* execute condition statement */ - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - - /* jump to the end of the loop if not true */ - cond_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump_if_zero)) - return 0; - - /* execute loop body */ - loop_flow.loop_start = file->code[skip_jump].param[0]; - loop_flow.loop_end = break_label; - if (!_slang_assemble_operation (file, op->children + 1, 0, &loop_flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children + 1, 0, space)) - return 0; - - /* jump to the beginning of the loop */ - if (!slang_assembly_file_push_label (file, slang_asm_jump, file->code[skip_jump].param[0])) - return 0; - - /* resolve the end of the loop */ - file->code[end_jump].param[0] = file->count; - file->code[cond_jump].param[0] = file->count; - - return 1; -} - -/* _slang_assemble_if() */ - -int _slang_assemble_if (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - /* - if: - - jumpz else - - jump end - else: - - end: - */ - - unsigned int cond_jump, else_jump; - slang_assembly_stack_info stk; - - /* execute condition statement */ - if (!_slang_assemble_operation (file, op->children, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - - /* jump to false-statement if not true */ - cond_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump_if_zero)) - return 0; - - /* execute true-statement */ - if (!_slang_assemble_operation (file, op->children + 1, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children + 1, 0, space)) - return 0; - - /* skip if-false statement */ - else_jump = file->count; - if (!slang_assembly_file_push (file, slang_asm_jump)) - return 0; - - /* resolve start of false-statement */ - file->code[cond_jump].param[0] = file->count; - - /* execute false-statement */ - if (!_slang_assemble_operation (file, op->children + 2, 0, flow, space, info, &stk)) - return 0; - /* TODO: pass-in stk to cleanup */ - if (!_slang_cleanup_stack (file, op->children + 2, 0, space)) - return 0; - - /* resolve end of if-false statement */ - file->code[else_jump].param[0] = file->count; - - return 1; -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_conditional.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_conditional.h deleted file mode 100644 index b8defae68..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_conditional.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_ASSEMBLE_CONDITIONAL_H -#define SLANG_ASSEMBLE_CONDITIONAL_H - -#include "slang_assemble.h" - -#if defined __cplusplus -extern "C" { -#endif - -int _slang_assemble_logicaland (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -int _slang_assemble_logicalor (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -int _slang_assemble_select (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -int _slang_assemble_for (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -int _slang_assemble_do (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -int _slang_assemble_while (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -int _slang_assemble_if (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_constructor.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_constructor.c deleted file mode 100644 index 85ccea9e2..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_constructor.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_assemble_constructor.c - * slang constructor and vector swizzle assembler - * \author Michal Krol - */ - -#include "imports.h" -#include "slang_utility.h" -#include "slang_assemble_constructor.h" -#include "slang_assemble_typeinfo.h" -#include "slang_storage.h" - -/* _slang_is_swizzle() */ - -int _slang_is_swizzle (const char *field, unsigned int rows, slang_swizzle *swz) -{ - unsigned int i; - int xyzw = 0, rgba = 0, stpq = 0; - - /* the swizzle can be at most 4-component long */ - swz->num_components = slang_string_length (field); - if (swz->num_components > 4) - return 0; - - for (i = 0; i < swz->num_components; i++) - { - /* mark which swizzle group is used */ - switch (field[i]) - { - case 'x': - case 'y': - case 'z': - case 'w': - xyzw = 1; - break; - case 'r': - case 'g': - case 'b': - case 'a': - rgba = 1; - break; - case 's': - case 't': - case 'p': - case 'q': - stpq = 1; - break; - default: - return 0; - } - - /* collect swizzle component */ - switch (field[i]) - { - case 'x': - case 'r': - case 's': - swz->swizzle[i] = 0; - break; - case 'y': - case 'g': - case 't': - if (rows < 2) - return 0; - swz->swizzle[i] = 1; - break; - case 'z': - case 'b': - case 'p': - if (rows < 3) - return 0; - swz->swizzle[i] = 2; - break; - case 'w': - case 'a': - case 'q': - if (rows < 4) - return 0; - swz->swizzle[i] = 3; - break; - } - } - - /* only one swizzle group can be used */ - if ((xyzw && rgba) || (xyzw && stpq) || (rgba && stpq)) - return 0; - - return 1; -} - -/* _slang_is_swizzle_mask() */ - -int _slang_is_swizzle_mask (const slang_swizzle *swz, unsigned int rows) -{ - unsigned int c, i; - - if (swz->num_components > rows) - return 0; - c = swz->swizzle[0]; - for (i = 1; i < swz->num_components; i++) - { - if (swz->swizzle[i] <= c) - return 0; - c = swz->swizzle[i]; - } - return 1; -} - -/* _slang_multiply_swizzles() */ - -void _slang_multiply_swizzles (slang_swizzle *dst, const slang_swizzle *left, - const slang_swizzle *right) -{ - unsigned int i; - dst->num_components = right->num_components; - for (i = 0; i < right->num_components; i++) - dst->swizzle[i] = left->swizzle[right->swizzle[i]]; -} - -/* _slang_assemble_constructor() */ - -static int constructor_aggregate (slang_assembly_file *file, const slang_storage_aggregate *flat, - unsigned int *index, slang_operation *op, unsigned int size, slang_assembly_flow_control *flow, - slang_assembly_name_space *space, slang_assembly_local_info *info) -{ - slang_assembly_typeinfo ti; - int result; - slang_storage_aggregate agg, flat_agg; - slang_assembly_stack_info stk; - unsigned int i; - - slang_assembly_typeinfo_construct (&ti); - if (!(result = _slang_typeof_operation (op, space, &ti))) - goto end1; - - slang_storage_aggregate_construct (&agg); - if (!(result = _slang_aggregate_variable (&agg, &ti.spec, NULL, space->funcs, space->structs))) - goto end2; - - slang_storage_aggregate_construct (&flat_agg); - if (!(result = _slang_flatten_aggregate (&flat_agg, &agg))) - goto end; - - if (!(result = _slang_assemble_operation (file, op, 0, flow, space, info, &stk))) - goto end; - - for (i = 0; i < flat_agg.count; i++) - { - const slang_storage_array *arr1 = flat_agg.arrays + i; - const slang_storage_array *arr2 = flat->arrays + *index; - - if (arr1->type != arr2->type) - { - /* TODO: convert (generic) from arr1 to arr2 */ - } - (*index)++; - /* TODO: watch the index, if it reaches the size, pop off the stack subsequent values */ - } - - result = 1; -end: - slang_storage_aggregate_destruct (&flat_agg); -end2: - slang_storage_aggregate_destruct (&agg); -end1: - slang_assembly_typeinfo_destruct (&ti); - return result; -} -/* XXX: general swizzle! */ -int _slang_assemble_constructor (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info) -{ - slang_assembly_typeinfo ti; - int result; - slang_storage_aggregate agg, flat; - unsigned int size, index, i; - - slang_assembly_typeinfo_construct (&ti); - if (!(result = _slang_typeof_operation (op, space, &ti))) - goto end1; - - slang_storage_aggregate_construct (&agg); - if (!(result = _slang_aggregate_variable (&agg, &ti.spec, NULL, space->funcs, space->structs))) - goto end2; - - size = _slang_sizeof_aggregate (&agg); - - slang_storage_aggregate_construct (&flat); - if (!(result = _slang_flatten_aggregate (&flat, &agg))) - goto end; - - index = 0; - for (i = 0; i < op->num_children; i++) - { - if (!(result = constructor_aggregate (file, &flat, &index, op->children + i, size, flow, - space, info))) - goto end; - /* TODO: watch the index, if it reaches the size, raise an error */ - } - - result = 1; -end: - slang_storage_aggregate_destruct (&flat); -end2: - slang_storage_aggregate_destruct (&agg); -end1: - slang_assembly_typeinfo_destruct (&ti); - return result; -} - -/* _slang_assemble_constructor_from_swizzle() */ -/* XXX: wrong */ -int _slang_assemble_constructor_from_swizzle (slang_assembly_file *file, const slang_swizzle *swz, - slang_type_specifier *spec, slang_type_specifier *master_spec, slang_assembly_local_info *info) -{ - unsigned int master_rows, i; - switch (master_spec->type) - { - case slang_spec_bool: - case slang_spec_int: - case slang_spec_float: - master_rows = 1; - break; - case slang_spec_bvec2: - case slang_spec_ivec2: - case slang_spec_vec2: - master_rows = 2; - break; - case slang_spec_bvec3: - case slang_spec_ivec3: - case slang_spec_vec3: - master_rows = 3; - break; - case slang_spec_bvec4: - case slang_spec_ivec4: - case slang_spec_vec4: - master_rows = 4; - break; - default: - break; - } - for (i = 0; i < master_rows; i++) - { - switch (master_spec->type) - { - case slang_spec_bool: - case slang_spec_bvec2: - case slang_spec_bvec3: - case slang_spec_bvec4: - if (!slang_assembly_file_push_label2 (file, slang_asm_bool_copy, (master_rows - i) * 4, - i * 4)) - return 0; - break; - case slang_spec_int: - case slang_spec_ivec2: - case slang_spec_ivec3: - case slang_spec_ivec4: - if (!slang_assembly_file_push_label2 (file, slang_asm_int_copy, (master_rows - i) * 4, - i * 4)) - return 0; - break; - case slang_spec_float: - case slang_spec_vec2: - case slang_spec_vec3: - case slang_spec_vec4: - if (!slang_assembly_file_push_label2 (file, slang_asm_float_copy, - (master_rows - i) * 4, i * 4)) - return 0; - break; - default: - break; - } - } - if (!slang_assembly_file_push_label (file, slang_asm_local_free, 4)) - return 0; - for (i = swz->num_components; i > 0; i--) - { - unsigned int n = i - 1; - if (!slang_assembly_file_push_label2 (file, slang_asm_local_addr, info->swizzle_tmp, 16)) - return 0; - if (!slang_assembly_file_push_label (file, slang_asm_addr_push, swz->swizzle[n] * 4)) - return 0; - if (!slang_assembly_file_push (file, slang_asm_addr_add)) - return 0; - switch (master_spec->type) - { - case slang_spec_bool: - case slang_spec_bvec2: - case slang_spec_bvec3: - case slang_spec_bvec4: - if (!slang_assembly_file_push (file, slang_asm_bool_deref)) - return 0; - break; - case slang_spec_int: - case slang_spec_ivec2: - case slang_spec_ivec3: - case slang_spec_ivec4: - if (!slang_assembly_file_push (file, slang_asm_int_deref)) - return 0; - break; - case slang_spec_float: - case slang_spec_vec2: - case slang_spec_vec3: - case slang_spec_vec4: - if (!slang_assembly_file_push (file, slang_asm_float_deref)) - return 0; - break; - default: - break; - } - } - return 1; -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_constructor.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_constructor.h deleted file mode 100644 index 31048bc7b..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_constructor.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_ASSEMBLE_CONSTRUCTOR_H -#define SLANG_ASSEMBLE_CONSTRUCTOR_H - -#include "slang_assemble.h" -#include "slang_compile.h" - -#if defined __cplusplus -extern "C" { -#endif - -/* - holds a complete information about vector swizzle - the array contains - vector component sources indices, where 0 is "x", 1 is "y", ... - example: "xwz" --> { 3, { 0, 3, 2, n/u } } -*/ -typedef struct slang_swizzle_ -{ - unsigned int num_components; - unsigned int swizzle[4]; -} slang_swizzle; - -/* - checks if a field selector is a general swizzle (an r-value swizzle with replicated - components or an l-value swizzle mask) for a vector - returns 1 if this is the case, is filled with swizzle information - returns 0 otherwise -*/ -int _slang_is_swizzle (const char *field, unsigned int rows, slang_swizzle *swz); - -/* - checks if a general swizzle is an l-value swizzle - these swizzles do not have - duplicated fields and they are specified in order - returns 1 if this is a swizzle mask - returns 0 otherwise -*/ -int _slang_is_swizzle_mask (const slang_swizzle *swz, unsigned int rows); - -/* - combines two swizzles to form single swizzle - example: "wzyx.yx" --> "zw" -*/ -void _slang_multiply_swizzles (slang_swizzle *, const slang_swizzle *, const slang_swizzle *); - -int _slang_assemble_constructor (slang_assembly_file *file, slang_operation *op, - slang_assembly_flow_control *flow, slang_assembly_name_space *space, - slang_assembly_local_info *info); - -int _slang_assemble_constructor_from_swizzle (slang_assembly_file *file, const slang_swizzle *swz, - slang_type_specifier *spec, slang_type_specifier *master_spec, slang_assembly_local_info *info); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_typeinfo.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_typeinfo.c deleted file mode 100644 index d2cae447a..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_typeinfo.c +++ /dev/null @@ -1,430 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_assemble_typeinfo.c - * slang type info - * \author Michal Krol - */ - -#include "imports.h" -#include "slang_utility.h" -#include "slang_assemble_typeinfo.h" - -/* slang_assembly_typeinfo */ - -void slang_assembly_typeinfo_construct (slang_assembly_typeinfo *ti) -{ - slang_type_specifier_construct (&ti->spec); -} - -void slang_assembly_typeinfo_destruct (slang_assembly_typeinfo *ti) -{ - slang_type_specifier_destruct (&ti->spec); -} - -/* _slang_typeof_operation() */ - -int _slang_typeof_operation (slang_operation *op, slang_assembly_name_space *space, - slang_assembly_typeinfo *ti) -{ - ti->can_be_referenced = 0; - ti->is_swizzled = 0; - - switch (op->type) - { - case slang_oper_block_no_new_scope: - case slang_oper_block_new_scope: - case slang_oper_variable_decl: - case slang_oper_asm: - case slang_oper_break: - case slang_oper_continue: - case slang_oper_discard: - case slang_oper_return: - case slang_oper_if: - case slang_oper_while: - case slang_oper_do: - case slang_oper_for: - case slang_oper_void: - ti->spec.type = slang_spec_void; - break; - case slang_oper_expression: - case slang_oper_assign: - case slang_oper_addassign: - case slang_oper_subassign: - case slang_oper_mulassign: - case slang_oper_divassign: - case slang_oper_preincrement: - case slang_oper_predecrement: - if (!_slang_typeof_operation (op->children, space, ti)) - return 0; - break; - case slang_oper_literal_bool: - case slang_oper_logicalor: - case slang_oper_logicalxor: - case slang_oper_logicaland: - case slang_oper_equal: - case slang_oper_notequal: - case slang_oper_less: - case slang_oper_greater: - case slang_oper_lessequal: - case slang_oper_greaterequal: - case slang_oper_not: - ti->spec.type = slang_spec_bool; - break; - case slang_oper_literal_int: - ti->spec.type = slang_spec_int; - break; - case slang_oper_literal_float: - ti->spec.type = slang_spec_float; - break; - case slang_oper_identifier: - { - slang_variable *var; - - var = _slang_locate_variable (op->locals, op->identifier, 1); - if (var == NULL) - return 0; - if (!slang_type_specifier_copy (&ti->spec, &var->type.specifier)) - return 0; - ti->can_be_referenced = 1; - } - break; - case slang_oper_sequence: - /* TODO: check [0] and [1] if they match */ - if (!_slang_typeof_operation (op->children + 1, space, ti)) - return 0; - ti->can_be_referenced = 0; - ti->is_swizzled = 0; - break; - /*case slang_oper_modassign:*/ - /*case slang_oper_lshassign:*/ - /*case slang_oper_rshassign:*/ - /*case slang_oper_orassign:*/ - /*case slang_oper_xorassign:*/ - /*case slang_oper_andassign:*/ - case slang_oper_select: - /* TODO: check [1] and [2] if they match */ - if (!_slang_typeof_operation (op->children + 1, space, ti)) - return 0; - ti->can_be_referenced = 0; - ti->is_swizzled = 0; - break; - /*case slang_oper_bitor:*/ - /*case slang_oper_bitxor:*/ - /*case slang_oper_bitand:*/ - /*case slang_oper_lshift:*/ - /*case slang_oper_rshift:*/ - case slang_oper_add: - { - int exists; - if (!_slang_typeof_function ("+", op->children, 2, space, &ti->spec, &exists)) - return 0; - if (!exists) - return 0; - } - break; - case slang_oper_subtract: - { - int exists; - if (!_slang_typeof_function ("-", op->children, 2, space, &ti->spec, &exists)) - return 0; - if (!exists) - return 0; - } - break; - case slang_oper_multiply: - { - int exists; - if (!_slang_typeof_function ("*", op->children, 2, space, &ti->spec, &exists)) - return 0; - if (!exists) - return 0; - } - break; - case slang_oper_divide: - { - int exists; - if (!_slang_typeof_function ("/", op->children, 2, space, &ti->spec, &exists)) - return 0; - if (!exists) - return 0; - } - break; - /*case slang_oper_modulus:*/ - case slang_oper_plus: - { - int exists; - if (!_slang_typeof_function ("+", op->children, 1, space, &ti->spec, &exists)) - return 0; - if (!exists) - return 0; - } - break; - case slang_oper_minus: - { - int exists; - if (!_slang_typeof_function ("-", op->children, 1, space, &ti->spec, &exists)) - return 0; - if (!exists) - return 0; - } - break; - /*case slang_oper_complement:*/ - case slang_oper_subscript: - { - slang_assembly_typeinfo _ti; - slang_assembly_typeinfo_construct (&_ti); - if (!_slang_typeof_operation (op->children, space, &_ti)) - { - slang_assembly_typeinfo_destruct (&_ti); - return 0; - } - ti->can_be_referenced = _ti.can_be_referenced; - switch (_ti.spec.type) - { - case slang_spec_bvec2: - case slang_spec_bvec3: - case slang_spec_bvec4: - ti->spec.type = slang_spec_bool; - break; - case slang_spec_ivec2: - case slang_spec_ivec3: - case slang_spec_ivec4: - ti->spec.type = slang_spec_int; - break; - case slang_spec_vec2: - case slang_spec_vec3: - case slang_spec_vec4: - ti->spec.type = slang_spec_float; - break; - case slang_spec_mat2: - ti->spec.type = slang_spec_vec2; - break; - case slang_spec_mat3: - ti->spec.type = slang_spec_vec3; - break; - case slang_spec_mat4: - ti->spec.type = slang_spec_vec4; - break; - case slang_spec_array: - if (!slang_type_specifier_copy (&ti->spec, _ti.spec._array)) - { - slang_assembly_typeinfo_destruct (&_ti); - return 0; - } - break; - default: - slang_assembly_typeinfo_destruct (&_ti); - return 0; - } - slang_assembly_typeinfo_destruct (&_ti); - } - break; - case slang_oper_call: - { - int exists; - if (!_slang_typeof_function (op->identifier, op->children, op->num_children, space, - &ti->spec, &exists)) - return 0; - if (!exists) - { - slang_struct *s = slang_struct_scope_find (space->structs, op->identifier, 1); - if (s != NULL) - { - ti->spec.type = slang_spec_struct; - ti->spec._struct = (slang_struct *) slang_alloc_malloc (sizeof (slang_struct)); - if (ti->spec._struct == NULL) - return 0; - if (!slang_struct_construct_a (ti->spec._struct)) - { - slang_alloc_free (ti->spec._struct); - ti->spec._struct = NULL; - return 0; - } - if (!slang_struct_copy (ti->spec._struct, s)) - return 0; - } - else - { - slang_type_specifier_type type = slang_type_specifier_type_from_string ( - op->identifier); - if (type == slang_spec_void) - return 0; - ti->spec.type = type; - } - } - } - break; - case slang_oper_field: - { - slang_assembly_typeinfo _ti; - slang_assembly_typeinfo_construct (&_ti); - if (!_slang_typeof_operation (op->children, space, &_ti)) - { - slang_assembly_typeinfo_destruct (&_ti); - return 0; - } - if (_ti.spec.type == slang_spec_struct) - { - slang_variable *field = _slang_locate_variable (_ti.spec._struct->fields, - op->identifier, 0); - if (field == NULL) - { - slang_assembly_typeinfo_destruct (&_ti); - return 0; - } - if (!slang_type_specifier_copy (&ti->spec, &field->type.specifier)) - { - slang_assembly_typeinfo_destruct (&_ti); - return 0; - } - } - else - { - unsigned int rows; - switch (_ti.spec.type) - { - case slang_spec_vec2: - case slang_spec_ivec2: - case slang_spec_bvec2: - rows = 2; - break; - case slang_spec_vec3: - case slang_spec_ivec3: - case slang_spec_bvec3: - rows = 3; - break; - case slang_spec_vec4: - case slang_spec_ivec4: - case slang_spec_bvec4: - rows = 4; - break; - default: - slang_assembly_typeinfo_destruct (&_ti); - return 0; - } - if (!_slang_is_swizzle (op->identifier, rows, &ti->swz)) - return 0; - ti->is_swizzled = 1; - ti->can_be_referenced = _ti.can_be_referenced && _slang_is_swizzle_mask (&ti->swz, - rows); - if (_ti.is_swizzled) - { - slang_swizzle swz; - _slang_multiply_swizzles (&swz, &_ti.swz, &ti->swz); - ti->swz = swz; - } - switch (_ti.spec.type) - { - case slang_spec_vec2: - case slang_spec_vec3: - case slang_spec_vec4: - switch (ti->swz.num_components) - { - case 1: - ti->spec.type = slang_spec_float; - break; - case 2: - ti->spec.type = slang_spec_vec2; - break; - case 3: - ti->spec.type = slang_spec_vec3; - break; - case 4: - ti->spec.type = slang_spec_vec4; - break; - } - break; - case slang_spec_ivec2: - case slang_spec_ivec3: - case slang_spec_ivec4: - switch (ti->swz.num_components) - { - case 1: - ti->spec.type = slang_spec_int; - break; - case 2: - ti->spec.type = slang_spec_ivec2; - break; - case 3: - ti->spec.type = slang_spec_ivec3; - break; - case 4: - ti->spec.type = slang_spec_ivec4; - break; - } - break; - case slang_spec_bvec2: - case slang_spec_bvec3: - case slang_spec_bvec4: - switch (ti->swz.num_components) - { - case 1: - ti->spec.type = slang_spec_bool; - break; - case 2: - ti->spec.type = slang_spec_bvec2; - break; - case 3: - ti->spec.type = slang_spec_bvec3; - break; - case 4: - ti->spec.type = slang_spec_bvec4; - break; - } - break; - default: - break; - } - } - slang_assembly_typeinfo_destruct (&_ti); - return 1; - } - break; - case slang_oper_postincrement: - case slang_oper_postdecrement: - if (!_slang_typeof_operation (op->children, space, ti)) - return 0; - ti->can_be_referenced = 0; - ti->is_swizzled = 0; - break; - default: - return 0; - } - return 1; -} - -/* _slang_typeof_function() */ - -int _slang_typeof_function (const char *name, slang_operation *params, unsigned int num_params, - slang_assembly_name_space *space, slang_type_specifier *spec, int *exists) -{ - slang_function *fun = _slang_locate_function (name, params, num_params, space); - *exists = fun != NULL; - if (fun == NULL) - return 1; - return slang_type_specifier_copy (spec, &fun->header.type.specifier); -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_typeinfo.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_typeinfo.h deleted file mode 100644 index fc1f3e3ae..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_assemble_typeinfo.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_ASSEMBLE_TYPEINFO_H -#define SLANG_ASSEMBLE_TYPEINFO_H - -#include "slang_assemble_constructor.h" -#include "slang_compile.h" - -#if defined __cplusplus -extern "C" { -#endif - -typedef struct slang_assembly_typeinfo_ -{ - int can_be_referenced; - int is_swizzled; - slang_swizzle swz; - slang_type_specifier spec; -} slang_assembly_typeinfo; - -void slang_assembly_typeinfo_construct (slang_assembly_typeinfo *); -void slang_assembly_typeinfo_destruct (slang_assembly_typeinfo *); - -/* - retrieves type information about an operation - returns 1 on success - returns 0 otherwise -*/ -int _slang_typeof_operation (slang_operation *, slang_assembly_name_space *, - slang_assembly_typeinfo *); - -/* - retrieves type of a function prototype, if one exists - returns 1 on success, even if the function was not found - returns 0 otherwise -*/ -int _slang_typeof_function (const char *name, slang_operation *params, unsigned int num_params, - slang_assembly_name_space *space, slang_type_specifier *spec, int *exists); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_compile.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_compile.c deleted file mode 100644 index 2377173cf..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_compile.c +++ /dev/null @@ -1,2369 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_compile.c - * slang front-end compiler - * \author Michal Krol - */ - -#include "imports.h" -#include "grammar_mesa.h" -#include "slang_utility.h" -#include "slang_compile.h" -#include "slang_preprocess.h" -#include "slang_storage.h" -#include "slang_assemble.h" -#include "slang_execute.h" - -/* - This is a straightforward implementation of the slang front-end compiler. - Lots of error-checking functionality is missing but every well-formed shader source should - compile successfully and execute as expected. However, some semantically ill-formed shaders - may be accepted resulting in undefined behaviour. -*/ - -static void slang_variable_construct (slang_variable *); -static int slang_variable_copy (slang_variable *, const slang_variable *); -static void slang_struct_destruct (slang_struct *); -static int slang_struct_equal (const slang_struct *, const slang_struct *); -static void slang_variable_destruct (slang_variable *); - -/* slang_type_specifier_type */ - -/* these must match with slang_type_specifier_type enum */ -static const char *type_specifier_type_names[] = { - "void", - "bool", - "bvec2", - "bvec3", - "bvec4", - "int", - "ivec2", - "ivec3", - "ivec4", - "float", - "vec2", - "vec3", - "vec4", - "mat2", - "mat3", - "mat4", - "sampler1D", - "sampler2D", - "sampler3D", - "samplerCube", - "sampler1DShadow", - "sampler2DShadow", - NULL -}; - -slang_type_specifier_type slang_type_specifier_type_from_string (const char *name) -{ - const char **p = type_specifier_type_names; - while (*p != NULL) - { - if (slang_string_compare (*p, name) == 0) - return (slang_type_specifier_type) (p - type_specifier_type_names); - p++; - } - return slang_spec_void; -} - -/* slang_type_specifier */ - -void slang_type_specifier_construct (slang_type_specifier *spec) -{ - spec->type = slang_spec_void; - spec->_struct = NULL; - spec->_array = NULL; -} - -void slang_type_specifier_destruct (slang_type_specifier *spec) -{ - if (spec->_struct != NULL) - { - slang_struct_destruct (spec->_struct); - slang_alloc_free (spec->_struct); - } - if (spec->_array != NULL) - { - slang_type_specifier_destruct (spec->_array); - slang_alloc_free (spec->_array); - } -} - -int slang_type_specifier_copy (slang_type_specifier *x, const slang_type_specifier *y) -{ - slang_type_specifier_destruct (x); - slang_type_specifier_construct (x); - x->type = y->type; - if (x->type == slang_spec_struct) - { - x->_struct = (slang_struct *) slang_alloc_malloc (sizeof (slang_struct)); - if (x->_struct == NULL) - return 0; - if (!slang_struct_construct_a (x->_struct)) - { - slang_alloc_free (x->_struct); - x->_struct = NULL; - return 0; - } - return slang_struct_copy (x->_struct, y->_struct); - } - if (x->type == slang_spec_array) - { - x->_array = (slang_type_specifier *) slang_alloc_malloc (sizeof (slang_type_specifier)); - if (x->_array == NULL) - return 0; - slang_type_specifier_construct (x->_array); - return slang_type_specifier_copy (x->_array, y->_array); - } - return 1; -} - -int slang_type_specifier_equal (const slang_type_specifier *x, const slang_type_specifier *y) -{ - if (x->type != y->type) - return 0; - if (x->type == slang_spec_struct) - return slang_struct_equal (x->_struct, y->_struct); - if (x->type == slang_spec_array) - return slang_type_specifier_equal (x->_array, y->_array); - return 1; -} - -/* slang_fully_specified_type */ - -static void slang_fully_specified_type_construct (slang_fully_specified_type *type) -{ - type->qualifier = slang_qual_none; - slang_type_specifier_construct (&type->specifier); -} - -static void slang_fully_specified_type_destruct (slang_fully_specified_type *type) -{ - slang_type_specifier_destruct (&type->specifier); -} - -static int slang_fully_specified_type_copy (slang_fully_specified_type *x, - const slang_fully_specified_type *y) -{ - slang_fully_specified_type_construct (x); - slang_fully_specified_type_destruct (x); - x->qualifier = y->qualifier; - return slang_type_specifier_copy (&x->specifier, &y->specifier); -} - -/* slang_variable_scope */ - -static void slang_variable_scope_construct (slang_variable_scope *scope) -{ - scope->variables = NULL; - scope->num_variables = 0; - scope->outer_scope = NULL; -} - -static void slang_variable_scope_destruct (slang_variable_scope *scope) -{ - unsigned int i; - for (i = 0; i < scope->num_variables; i++) - slang_variable_destruct (scope->variables + i); - slang_alloc_free (scope->variables); -} - -static int slang_variable_scope_copy (slang_variable_scope *x, const slang_variable_scope *y) -{ - unsigned int i; - slang_variable_scope_destruct (x); - slang_variable_scope_construct (x); - x->variables = (slang_variable *) slang_alloc_malloc (y->num_variables * sizeof ( - slang_variable)); - if (x->variables == NULL) - return 0; - x->num_variables = y->num_variables; - for (i = 0; i < x->num_variables; i++) - slang_variable_construct (x->variables + i); - for (i = 0; i < x->num_variables; i++) - if (!slang_variable_copy (x->variables + i, y->variables + i)) - return 0; - x->outer_scope = y->outer_scope; - return 1; -} - -/* slang_operation */ - -int slang_operation_construct_a (slang_operation *oper) -{ - oper->type = slang_oper_none; - oper->children = NULL; - oper->num_children = 0; - oper->literal = (float) 0; - oper->identifier = NULL; - oper->locals = (slang_variable_scope *) slang_alloc_malloc (sizeof (slang_variable_scope)); - if (oper->locals == NULL) - return 0; - slang_variable_scope_construct (oper->locals); - return 1; -} - -void slang_operation_destruct (slang_operation *oper) -{ - unsigned int i; - for (i = 0; i < oper->num_children; i++) - slang_operation_destruct (oper->children + i); - slang_alloc_free (oper->children); - slang_alloc_free (oper->identifier); - slang_variable_scope_destruct (oper->locals); - slang_alloc_free (oper->locals); -} - -static int slang_operation_copy (slang_operation *x, const slang_operation *y) -{ - unsigned int i; - for (i = 0; i < x->num_children; i++) - slang_operation_destruct (x->children + i); - slang_alloc_free (x->children); - x->num_children = 0; - slang_alloc_free (x->identifier); - x->identifier = NULL; - slang_variable_scope_destruct (x->locals); - slang_variable_scope_construct (x->locals); - - x->type = y->type; - x->children = (slang_operation *) slang_alloc_malloc (y->num_children * sizeof ( - slang_operation)); - if (x->children == NULL) - return 0; - for (i = 0; i < y->num_children; i++) - if (!slang_operation_construct_a (x->children + i)) - { - unsigned int j; - for (j = 0; j < i; j++) - slang_operation_destruct (x->children + j); - slang_alloc_free (x->children); - x->children = NULL; - return 0; - } - x->num_children = y->num_children; - for (i = 0; i < x->num_children; i++) - if (!slang_operation_copy (x->children + i, y->children + i)) - return 0; - x->literal = y->literal; - if (y->identifier != NULL) - { - x->identifier = slang_string_duplicate (y->identifier); - if (x->identifier == NULL) - return 0; - } - if (!slang_variable_scope_copy (x->locals, y->locals)) - return 0; - return 1; -} - -/* slang_variable */ - -static void slang_variable_construct (slang_variable *var) -{ - slang_fully_specified_type_construct (&var->type); - var->name = NULL; - var->array_size = NULL; - var->initializer = NULL; - var->address = ~0; -} - -static void slang_variable_destruct (slang_variable *var) -{ - slang_fully_specified_type_destruct (&var->type); - slang_alloc_free (var->name); - if (var->array_size != NULL) - { - slang_operation_destruct (var->array_size); - slang_alloc_free (var->array_size); - } - if (var->initializer != NULL) - { - slang_operation_destruct (var->initializer); - slang_alloc_free (var->initializer); - } -} - -static int slang_variable_copy (slang_variable *x, const slang_variable *y) -{ - slang_variable_destruct (x); - slang_variable_construct (x); - if (!slang_fully_specified_type_copy (&x->type, &y->type)) - return 0; - if (y->name != NULL) - { - x->name = slang_string_duplicate (y->name); - if (x->name == NULL) - return 0; - } - if (y->array_size != NULL) - { - x->array_size = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation)); - if (x->array_size == NULL) - return 0; - if (!slang_operation_construct_a (x->array_size)) - { - slang_alloc_free (x->array_size); - x->array_size = NULL; - return 0; - } - if (!slang_operation_copy (x->array_size, y->array_size)) - return 0; - } - if (y->initializer != NULL) - { - x->initializer = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation)); - if (x->initializer == NULL) - return 0; - if (!slang_operation_construct_a (x->initializer)) - { - slang_alloc_free (x->initializer); - x->initializer = NULL; - return 0; - } - if (!slang_operation_copy (x->initializer, y->initializer)) - return 0; - } - return 1; -} - -slang_variable *_slang_locate_variable (slang_variable_scope *scope, const char *name, int all) -{ - unsigned int i; - for (i = 0; i < scope->num_variables; i++) - if (slang_string_compare (name, scope->variables[i].name) == 0) - return scope->variables + i; - if (all && scope->outer_scope != NULL) - return _slang_locate_variable (scope->outer_scope, name, 1); - return NULL; -} - -/* slang_struct_scope */ - -static void slang_struct_scope_construct (slang_struct_scope *scope) -{ - scope->structs = NULL; - scope->num_structs = 0; - scope->outer_scope = NULL; -} - -static void slang_struct_scope_destruct (slang_struct_scope *scope) -{ - unsigned int i; - for (i = 0; i < scope->num_structs; i++) - slang_struct_destruct (scope->structs + i); - slang_alloc_free (scope->structs); -} - -static int slang_struct_scope_copy (slang_struct_scope *x, const slang_struct_scope *y) -{ - unsigned int i; - slang_struct_scope_destruct (x); - slang_struct_scope_construct (x); - x->structs = (slang_struct *) slang_alloc_malloc (y->num_structs * sizeof (slang_struct)); - if (x->structs == NULL) - return 0; - x->num_structs = y->num_structs; - for (i = 0; i < x->num_structs; i++) - { - unsigned int j; - if (!slang_struct_construct_a (x->structs + i)) - { - for (j = 0; j < i; j++) - slang_struct_destruct (x->structs + j); - slang_alloc_free (x->structs); - x->structs = NULL; - return 0; - } - } - for (i = 0; i < x->num_structs; i++) - if (!slang_struct_copy (x->structs + i, y->structs + i)) - return 0; - x->outer_scope = y->outer_scope; - return 1; -} - -slang_struct *slang_struct_scope_find (slang_struct_scope *stru, const char *name, int all_scopes) -{ - unsigned int i; - for (i = 0; i < stru->num_structs; i++) - if (slang_string_compare (name, stru->structs[i].name) == 0) - return stru->structs + i; - if (all_scopes && stru->outer_scope != NULL) - return slang_struct_scope_find (stru->outer_scope, name, 1); - return NULL; -} - -/* slang_struct */ - -int slang_struct_construct_a (slang_struct *stru) -{ - stru->name = NULL; - stru->fields = (slang_variable_scope *) slang_alloc_malloc (sizeof (slang_variable_scope)); - if (stru->fields == NULL) - return 0; - slang_variable_scope_construct (stru->fields); - stru->structs = (slang_struct_scope *) slang_alloc_malloc (sizeof (slang_struct_scope)); - if (stru->structs == NULL) - { - slang_variable_scope_destruct (stru->fields); - slang_alloc_free (stru->fields); - return 0; - } - slang_struct_scope_construct (stru->structs); - return 1; -} - -static void slang_struct_destruct (slang_struct *stru) -{ - slang_alloc_free (stru->name); - slang_variable_scope_destruct (stru->fields); - slang_alloc_free (stru->fields); - slang_struct_scope_destruct (stru->structs); - slang_alloc_free (stru->structs); -} - -int slang_struct_copy (slang_struct *x, const slang_struct *y) -{ - slang_alloc_free (x->name); - x->name = NULL; - slang_variable_scope_destruct (x->fields); - slang_variable_scope_construct (x->fields); - slang_struct_scope_destruct (x->structs); - slang_struct_scope_construct (x->structs); - if (y->name != NULL) - { - x->name = slang_string_duplicate (y->name); - if (x->name == NULL) - return 0; - } - if (!slang_variable_scope_copy (x->fields, y->fields)) - return 0; - if (!slang_struct_scope_copy (x->structs, y->structs)) - return 0; - return 1; -} - -static int slang_struct_equal (const slang_struct *x, const slang_struct *y) -{ - unsigned int i; - if (x->fields->num_variables != y->fields->num_variables) - return 0; - for (i = 0; i < x->fields->num_variables; i++) - { - slang_variable *varx = x->fields->variables + i; - slang_variable *vary = y->fields->variables + i; - if (slang_string_compare (varx->name, vary->name) != 0) - return 0; - if (!slang_type_specifier_equal (&varx->type.specifier, &vary->type.specifier)) - return 0; - if (varx->type.specifier.type == slang_spec_array) - { - /* TODO compare array sizes */ - } - } - return 1; -} - -/* slang_function */ -/* XXX mem! */ -static void slang_function_construct (slang_function *func) -{ - func->kind = slang_func_ordinary; - slang_variable_construct (&func->header); - func->parameters = (slang_variable_scope *) slang_alloc_malloc (sizeof (slang_variable_scope)); - slang_variable_scope_construct (func->parameters); - func->body = NULL; - func->address = ~0; -} - -static void slang_function_destruct (slang_function *func) -{ - slang_variable_destruct (&func->header); - slang_variable_scope_destruct (func->parameters); - slang_alloc_free (func->parameters); - if (func->body != NULL) - { - slang_operation_destruct (func->body); - slang_alloc_free (func->body); - } -} - -/* slang_function_scope */ - -static void slang_function_scope_construct (slang_function_scope *scope) -{ - scope->functions = NULL; - scope->num_functions = 0; - scope->outer_scope = NULL; -} - -static void slang_function_scope_destruct (slang_function_scope *scope) -{ - unsigned int i; - for (i = 0; i < scope->num_functions; i++) - slang_function_destruct (scope->functions + i); - slang_alloc_free (scope->functions); -} - -static int slang_function_scope_find_by_name (slang_function_scope *funcs, const char *name, - int all_scopes) -{ - unsigned int i; - for (i = 0; i < funcs->num_functions; i++) - if (slang_string_compare (name, funcs->functions[i].header.name) == 0) - return 1; - if (all_scopes && funcs->outer_scope != NULL) - return slang_function_scope_find_by_name (funcs->outer_scope, name, 1); - return 0; -} - -static slang_function *slang_function_scope_find (slang_function_scope *funcs, slang_function *fun, - int all_scopes) -{ - unsigned int i; - for (i = 0; i < funcs->num_functions; i++) - { - slang_function *f = funcs->functions + i; - unsigned int j; - if (slang_string_compare (fun->header.name, f->header.name) != 0) - continue; - if (fun->param_count != f->param_count) - continue; - for (j = 0; j < fun->param_count; j++) - { - if (!slang_type_specifier_equal (&fun->parameters->variables[j].type.specifier, - &f->parameters->variables[j].type.specifier)) - { - break; - } - } - if (j == fun->param_count) - return f; - } - if (all_scopes && funcs->outer_scope != NULL) - return slang_function_scope_find (funcs->outer_scope, fun, 1); - return NULL; -} - -/* slang_translation_unit */ - -void slang_translation_unit_construct (slang_translation_unit *unit) -{ - slang_variable_scope_construct (&unit->globals); - slang_function_scope_construct (&unit->functions); - slang_struct_scope_construct (&unit->structs); -} - -void slang_translation_unit_destruct (slang_translation_unit *unit) -{ - slang_variable_scope_destruct (&unit->globals); - slang_function_scope_destruct (&unit->functions); - slang_struct_scope_destruct (&unit->structs); -} - -/* slang_info_log */ - -static char *out_of_memory = "error: out of memory\n"; - -void slang_info_log_construct (slang_info_log *log) -{ - log->text = NULL; - log->dont_free_text = 0; -} - -void slang_info_log_destruct (slang_info_log *log) -{ - if (!log->dont_free_text) - slang_alloc_free (log->text); -} - -static int slang_info_log_message (slang_info_log *log, const char *prefix, const char *msg) -{ - unsigned int new_size; - if (log->dont_free_text) - return 0; - new_size = slang_string_length (prefix) + 3 + slang_string_length (msg); - if (log->text != NULL) - { - log->text = (char *) slang_alloc_realloc (log->text, slang_string_length (log->text) + 1, - new_size + slang_string_length (log->text) + 1); - } - else - { - log->text = (char *) slang_alloc_malloc (new_size + 1); - if (log->text != NULL) - *log->text = '\0'; - } - if (log->text == NULL) - return 0; - slang_string_concat (log->text, prefix); - slang_string_concat (log->text, ": "); - slang_string_concat (log->text, msg); - slang_string_concat (log->text, "\n"); - return 1; -} - -int slang_info_log_error (slang_info_log *log, const char *msg, ...) -{ - va_list va; - char buf[1024]; - - va_start (va, msg); - vsprintf (buf, msg, va); - if (slang_info_log_message (log, "error", buf)) - return 1; - slang_info_log_memory (log); - va_end (va); - return 0; -} - -int slang_info_log_warning (slang_info_log *log, const char *msg, ...) -{ - va_list va; - char buf[1024]; - - va_start (va, msg); - vsprintf (buf, msg, va); - if (slang_info_log_message (log, "warning", buf)) - return 1; - slang_info_log_memory (log); - va_end (va); - return 0; -} - -void slang_info_log_memory (slang_info_log *log) -{ - if (!slang_info_log_message (log, "error", "out of memory")) - { - log->dont_free_text = 1; - log->text = out_of_memory; - } -} - -/* slang_parse_ctx */ - -typedef struct slang_parse_ctx_ -{ - const byte *I; - slang_info_log *L; - int parsing_builtin; -} slang_parse_ctx; - -/* _slang_compile() */ - -static int parse_identifier (slang_parse_ctx *C, char **id) -{ - *id = slang_string_duplicate ((const char *) C->I); - if (*id == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - C->I += strlen ((const char *) C->I) + 1; - return 1; -} - -static int parse_number (slang_parse_ctx *C, int *number) -{ - const int radix = (int) (*C->I++); - *number = 0; - while (*C->I != '\0') - { - int digit; - if (*C->I >= '0' && *C->I <= '9') - digit = (int) (*C->I - '0'); - else if (*C->I >= 'A' && *C->I <= 'Z') - digit = (int) (*C->I - 'A') + 10; - else - digit = (int) (*C->I - 'a') + 10; - *number = *number * radix + digit; - C->I++; - } - C->I++; - if (*number > 65535) - slang_info_log_warning (C->L, "%d: literal integer overflow", *number); - return 1; -} - -static int parse_float (slang_parse_ctx *C, float *number) -{ - char *integral = NULL; - char *fractional = NULL; - char *exponent = NULL; - char *whole = NULL; - - if (!parse_identifier (C, &integral)) - return 0; - - if (!parse_identifier (C, &fractional)) - { - slang_alloc_free (integral); - return 0; - } - - if (!parse_identifier (C, &exponent)) - { - slang_alloc_free (fractional); - slang_alloc_free (integral); - return 0; - } - - whole = (char *) (slang_alloc_malloc ((strlen (integral) + strlen (fractional) + strlen ( - exponent) + 3) * sizeof (char))); - if (whole == NULL) - { - slang_alloc_free (exponent); - slang_alloc_free (fractional); - slang_alloc_free (integral); - slang_info_log_memory (C->L); - return 0; - } - - slang_string_copy (whole, integral); - slang_string_concat (whole, "."); - slang_string_concat (whole, fractional); - slang_string_concat (whole, "E"); - slang_string_concat (whole, exponent); - - *number = (float) (atof (whole)); - - slang_alloc_free (whole); - slang_alloc_free (exponent); - slang_alloc_free (fractional); - slang_alloc_free (integral); - return 1; -} - -/* revision number - increment after each change affecting emitted output */ -#define REVISION 2 - -static int check_revision (slang_parse_ctx *C) -{ - if (*C->I != REVISION) - { - slang_info_log_error (C->L, "internal compiler error"); - return 0; - } - C->I++; - return 1; -} - -static int parse_statement (slang_parse_ctx *, slang_operation *, slang_variable_scope *, - slang_struct_scope *, slang_function_scope *); -static int parse_expression (slang_parse_ctx *, slang_operation *, slang_variable_scope *, - slang_struct_scope *, slang_function_scope *); - -/* type qualifier */ -#define TYPE_QUALIFIER_NONE 0 -#define TYPE_QUALIFIER_CONST 1 -#define TYPE_QUALIFIER_ATTRIBUTE 2 -#define TYPE_QUALIFIER_VARYING 3 -#define TYPE_QUALIFIER_UNIFORM 4 -#define TYPE_QUALIFIER_FIXEDOUTPUT 5 -#define TYPE_QUALIFIER_FIXEDINPUT 6 - -static int parse_type_qualifier (slang_parse_ctx *C, slang_type_qualifier *qual) -{ - switch (*C->I++) - { - case TYPE_QUALIFIER_NONE: - *qual = slang_qual_none; - break; - case TYPE_QUALIFIER_CONST: - *qual = slang_qual_const; - break; - case TYPE_QUALIFIER_ATTRIBUTE: - *qual = slang_qual_attribute; - break; - case TYPE_QUALIFIER_VARYING: - *qual = slang_qual_varying; - break; - case TYPE_QUALIFIER_UNIFORM: - *qual = slang_qual_uniform; - break; - case TYPE_QUALIFIER_FIXEDOUTPUT: - *qual = slang_qual_fixedoutput; - break; - case TYPE_QUALIFIER_FIXEDINPUT: - *qual = slang_qual_fixedinput; - break; - default: - return 0; - } - return 1; -} - -/* type specifier */ -#define TYPE_SPECIFIER_VOID 0 -#define TYPE_SPECIFIER_BOOL 1 -#define TYPE_SPECIFIER_BVEC2 2 -#define TYPE_SPECIFIER_BVEC3 3 -#define TYPE_SPECIFIER_BVEC4 4 -#define TYPE_SPECIFIER_INT 5 -#define TYPE_SPECIFIER_IVEC2 6 -#define TYPE_SPECIFIER_IVEC3 7 -#define TYPE_SPECIFIER_IVEC4 8 -#define TYPE_SPECIFIER_FLOAT 9 -#define TYPE_SPECIFIER_VEC2 10 -#define TYPE_SPECIFIER_VEC3 11 -#define TYPE_SPECIFIER_VEC4 12 -#define TYPE_SPECIFIER_MAT2 13 -#define TYPE_SPECIFIER_MAT3 14 -#define TYPE_SPECIFIER_MAT4 15 -#define TYPE_SPECIFIER_SAMPLER1D 16 -#define TYPE_SPECIFIER_SAMPLER2D 17 -#define TYPE_SPECIFIER_SAMPLER3D 18 -#define TYPE_SPECIFIER_SAMPLERCUBE 19 -#define TYPE_SPECIFIER_SAMPLER1DSHADOW 20 -#define TYPE_SPECIFIER_SAMPLER2DSHADOW 21 -#define TYPE_SPECIFIER_STRUCT 22 -#define TYPE_SPECIFIER_TYPENAME 23 - -/* structure field */ -#define FIELD_NONE 0 -#define FIELD_NEXT 1 -#define FIELD_ARRAY 2 - -static int parse_type_specifier (slang_parse_ctx *C, slang_type_specifier *spec, - slang_struct_scope *structs, slang_variable_scope *scope, slang_function_scope *funcs) -{ - switch (*C->I++) - { - case TYPE_SPECIFIER_VOID: - spec->type = slang_spec_void; - break; - case TYPE_SPECIFIER_BOOL: - spec->type = slang_spec_bool; - break; - case TYPE_SPECIFIER_BVEC2: - spec->type = slang_spec_bvec2; - break; - case TYPE_SPECIFIER_BVEC3: - spec->type = slang_spec_bvec3; - break; - case TYPE_SPECIFIER_BVEC4: - spec->type = slang_spec_bvec4; - break; - case TYPE_SPECIFIER_INT: - spec->type = slang_spec_int; - break; - case TYPE_SPECIFIER_IVEC2: - spec->type = slang_spec_ivec2; - break; - case TYPE_SPECIFIER_IVEC3: - spec->type = slang_spec_ivec3; - break; - case TYPE_SPECIFIER_IVEC4: - spec->type = slang_spec_ivec4; - break; - case TYPE_SPECIFIER_FLOAT: - spec->type = slang_spec_float; - break; - case TYPE_SPECIFIER_VEC2: - spec->type = slang_spec_vec2; - break; - case TYPE_SPECIFIER_VEC3: - spec->type = slang_spec_vec3; - break; - case TYPE_SPECIFIER_VEC4: - spec->type = slang_spec_vec4; - break; - case TYPE_SPECIFIER_MAT2: - spec->type = slang_spec_mat2; - break; - case TYPE_SPECIFIER_MAT3: - spec->type = slang_spec_mat3; - break; - case TYPE_SPECIFIER_MAT4: - spec->type = slang_spec_mat4; - break; - case TYPE_SPECIFIER_SAMPLER1D: - spec->type = slang_spec_sampler1D; - break; - case TYPE_SPECIFIER_SAMPLER2D: - spec->type = slang_spec_sampler2D; - break; - case TYPE_SPECIFIER_SAMPLER3D: - spec->type = slang_spec_sampler3D; - break; - case TYPE_SPECIFIER_SAMPLERCUBE: - spec->type = slang_spec_samplerCube; - break; - case TYPE_SPECIFIER_SAMPLER1DSHADOW: - spec->type = slang_spec_sampler1DShadow; - break; - case TYPE_SPECIFIER_SAMPLER2DSHADOW: - spec->type = slang_spec_sampler2DShadow; - break; - case TYPE_SPECIFIER_STRUCT: - spec->type = slang_spec_struct; - { - char *name; - if (!parse_identifier (C, &name)) - return 0; - if (*name != '\0' && slang_struct_scope_find (structs, name, 0) != NULL) - { - slang_info_log_error (C->L, "%s: duplicate type name", name); - slang_alloc_free (name); - return 0; - } - spec->_struct = (slang_struct *) slang_alloc_malloc (sizeof (slang_struct)); - if (spec->_struct == NULL) - { - slang_alloc_free (name); - slang_info_log_memory (C->L); - return 0; - } - if (!slang_struct_construct_a (spec->_struct)) - { - slang_alloc_free (spec->_struct); - spec->_struct = NULL; - slang_alloc_free (name); - slang_info_log_memory (C->L); - return 0; - } - spec->_struct->name = name; - spec->_struct->structs->outer_scope = structs; - } - do - { - slang_type_specifier sp; - slang_type_specifier_construct (&sp); - if (!parse_type_specifier (C, &sp, spec->_struct->structs, scope, funcs)) - { - slang_type_specifier_destruct (&sp); - return 0; - } - do - { - slang_variable *var; - spec->_struct->fields->variables = (slang_variable *) slang_alloc_realloc ( - spec->_struct->fields->variables, - spec->_struct->fields->num_variables * sizeof (slang_variable), - (spec->_struct->fields->num_variables + 1) * sizeof (slang_variable)); - if (spec->_struct->fields->variables == NULL) - { - slang_type_specifier_destruct (&sp); - slang_info_log_memory (C->L); - return 0; - } - var = spec->_struct->fields->variables + spec->_struct->fields->num_variables; - spec->_struct->fields->num_variables++; - slang_variable_construct (var); - if (!slang_type_specifier_copy (&var->type.specifier, &sp)) - { - slang_type_specifier_destruct (&sp); - return 0; - } - if (!parse_identifier (C, &var->name)) - { - slang_type_specifier_destruct (&sp); - return 0; - } - switch (*C->I++) - { - case FIELD_NONE: - break; - case FIELD_ARRAY: - var->array_size = (slang_operation *) slang_alloc_malloc (sizeof ( - slang_operation)); - if (var->array_size == NULL) - { - slang_type_specifier_destruct (&sp); - slang_info_log_memory (C->L); - return 0; - } - if (!slang_operation_construct_a (var->array_size)) - { - slang_alloc_free (var->array_size); - var->array_size = NULL; - slang_type_specifier_destruct (&sp); - slang_info_log_memory (C->L); - return 0; - } - if (!parse_expression (C, var->array_size, scope, structs, funcs)) - { - slang_type_specifier_destruct (&sp); - return 0; - } - break; - default: - return 0; - } - } - while (*C->I++ != FIELD_NONE); - } - while (*C->I++ != FIELD_NONE); - if (*spec->_struct->name != '\0') - { - slang_struct *s; - structs->structs = (slang_struct *) slang_alloc_realloc (structs->structs, - structs->num_structs * sizeof (slang_struct), - (structs->num_structs + 1) * sizeof (slang_struct)); - if (structs->structs == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - s = structs->structs + structs->num_structs; - if (!slang_struct_construct_a (s)) - return 0; - structs->num_structs++; - if (!slang_struct_copy (s, spec->_struct)) - return 0; - } - break; - case TYPE_SPECIFIER_TYPENAME: - spec->type = slang_spec_struct; - { - char *name; - slang_struct *stru; - if (!parse_identifier (C, &name)) - return 0; - stru = slang_struct_scope_find (structs, name, 1); - if (stru == NULL) - { - slang_info_log_error (C->L, "%s: undeclared type name", name); - slang_alloc_free (name); - return 0; - } - slang_alloc_free (name); - spec->_struct = (slang_struct *) slang_alloc_malloc (sizeof (slang_struct)); - if (spec->_struct == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - if (!slang_struct_construct_a (spec->_struct)) - { - slang_alloc_free (spec->_struct); - spec->_struct = NULL; - return 0; - } - if (!slang_struct_copy (spec->_struct, stru)) - return 0; - } - break; - default: - return 0; - } - return 1; -} - -static int parse_fully_specified_type (slang_parse_ctx *C, slang_fully_specified_type *type, - slang_struct_scope *structs, slang_variable_scope *scope, slang_function_scope *funcs) -{ - if (!parse_type_qualifier (C, &type->qualifier)) - return 0; - return parse_type_specifier (C, &type->specifier, structs, scope, funcs); -} - -/* operation */ -#define OP_END 0 -#define OP_BLOCK_BEGIN_NO_NEW_SCOPE 1 -#define OP_BLOCK_BEGIN_NEW_SCOPE 2 -#define OP_DECLARE 3 -#define OP_ASM 4 -#define OP_BREAK 5 -#define OP_CONTINUE 6 -#define OP_DISCARD 7 -#define OP_RETURN 8 -#define OP_EXPRESSION 9 -#define OP_IF 10 -#define OP_WHILE 11 -#define OP_DO 12 -#define OP_FOR 13 -#define OP_PUSH_VOID 14 -#define OP_PUSH_BOOL 15 -#define OP_PUSH_INT 16 -#define OP_PUSH_FLOAT 17 -#define OP_PUSH_IDENTIFIER 18 -#define OP_SEQUENCE 19 -#define OP_ASSIGN 20 -#define OP_ADDASSIGN 21 -#define OP_SUBASSIGN 22 -#define OP_MULASSIGN 23 -#define OP_DIVASSIGN 24 -/*#define OP_MODASSIGN 25*/ -/*#define OP_LSHASSIGN 26*/ -/*#define OP_RSHASSIGN 27*/ -/*#define OP_ORASSIGN 28*/ -/*#define OP_XORASSIGN 29*/ -/*#define OP_ANDASSIGN 30*/ -#define OP_SELECT 31 -#define OP_LOGICALOR 32 -#define OP_LOGICALXOR 33 -#define OP_LOGICALAND 34 -/*#define OP_BITOR 35*/ -/*#define OP_BITXOR 36*/ -/*#define OP_BITAND 37*/ -#define OP_EQUAL 38 -#define OP_NOTEQUAL 39 -#define OP_LESS 40 -#define OP_GREATER 41 -#define OP_LESSEQUAL 42 -#define OP_GREATEREQUAL 43 -/*#define OP_LSHIFT 44*/ -/*#define OP_RSHIFT 45*/ -#define OP_ADD 46 -#define OP_SUBTRACT 47 -#define OP_MULTIPLY 48 -#define OP_DIVIDE 49 -/*#define OP_MODULUS 50*/ -#define OP_PREINCREMENT 51 -#define OP_PREDECREMENT 52 -#define OP_PLUS 53 -#define OP_MINUS 54 -/*#define OP_COMPLEMENT 55*/ -#define OP_NOT 56 -#define OP_SUBSCRIPT 57 -#define OP_CALL 58 -#define OP_FIELD 59 -#define OP_POSTINCREMENT 60 -#define OP_POSTDECREMENT 61 - -static int parse_child_operation (slang_parse_ctx *C, slang_operation *oper, int statement, - slang_variable_scope *scope, slang_struct_scope *structs, slang_function_scope *funcs) -{ - oper->children = (slang_operation *) slang_alloc_realloc (oper->children, - oper->num_children * sizeof (slang_operation), - (oper->num_children + 1) * sizeof (slang_operation)); - if (oper->children == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - if (!slang_operation_construct_a (oper->children + oper->num_children)) - { - slang_info_log_memory (C->L); - return 0; - } - oper->num_children++; - if (statement) - return parse_statement (C, oper->children + oper->num_children - 1, scope, structs, funcs); - return parse_expression (C, oper->children + oper->num_children - 1, scope, structs, funcs); -} - -static int parse_declaration (slang_parse_ctx *C, slang_variable_scope *, slang_struct_scope *, - slang_function_scope *); - -static int parse_statement (slang_parse_ctx *C, slang_operation *oper, slang_variable_scope *scope, - slang_struct_scope *structs, slang_function_scope *funcs) -{ - oper->locals->outer_scope = scope; - switch (*C->I++) - { - case OP_BLOCK_BEGIN_NO_NEW_SCOPE: - oper->type = slang_oper_block_no_new_scope; - while (*C->I != OP_END) - if (!parse_child_operation (C, oper, 1, scope, structs, funcs)) - return 0; - C->I++; - break; - case OP_BLOCK_BEGIN_NEW_SCOPE: - oper->type = slang_oper_block_new_scope; - while (*C->I != OP_END) - if (!parse_child_operation (C, oper, 1, oper->locals, structs, funcs)) - return 0; - C->I++; - break; - case OP_DECLARE: - oper->type = slang_oper_variable_decl; - { - const unsigned int first_var = scope->num_variables; - if (!parse_declaration (C, scope, structs, funcs)) - return 0; - if (first_var < scope->num_variables) - { - const unsigned int num_vars = scope->num_variables - first_var; - unsigned int i; - oper->children = (slang_operation *) slang_alloc_malloc (num_vars * sizeof ( - slang_operation)); - if (oper->children == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - for (i = 0; i < num_vars; i++) - if (!slang_operation_construct_a (oper->children + i)) - { - unsigned int j; - for (j = 0; j < i; j++) - slang_operation_destruct (oper->children + j); - slang_alloc_free (oper->children); - oper->children = NULL; - slang_info_log_memory (C->L); - return 0; - } - oper->num_children = num_vars; - for (i = first_var; i < scope->num_variables; i++) - { - slang_operation *o = oper->children + i - first_var; - o->type = slang_oper_identifier; - o->locals->outer_scope = scope; - o->identifier = slang_string_duplicate (scope->variables[i].name); - if (o->identifier == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - } - } - } - break; - case OP_ASM: - oper->type = slang_oper_asm; - if (!parse_identifier (C, &oper->identifier)) - return 0; - while (*C->I != OP_END) - if (!parse_child_operation (C, oper, 0, scope, structs, funcs)) - return 0; - C->I++; - break; - case OP_BREAK: - oper->type = slang_oper_break; - break; - case OP_CONTINUE: - oper->type = slang_oper_continue; - break; - case OP_DISCARD: - oper->type = slang_oper_discard; - break; - case OP_RETURN: - oper->type = slang_oper_return; - if (!parse_child_operation (C, oper, 0, scope, structs, funcs)) - return 0; - break; - case OP_EXPRESSION: - oper->type = slang_oper_expression; - if (!parse_child_operation (C, oper, 0, scope, structs, funcs)) - return 0; - break; - case OP_IF: - oper->type = slang_oper_if; - if (!parse_child_operation (C, oper, 0, scope, structs, funcs)) - return 0; - if (!parse_child_operation (C, oper, 1, scope, structs, funcs)) - return 0; - if (!parse_child_operation (C, oper, 1, scope, structs, funcs)) - return 0; - break; - case OP_WHILE: - oper->type = slang_oper_while; - if (!parse_child_operation (C, oper, 1, oper->locals, structs, funcs)) - return 0; - if (!parse_child_operation (C, oper, 1, oper->locals, structs, funcs)) - return 0; - break; - case OP_DO: - oper->type = slang_oper_do; - if (!parse_child_operation (C, oper, 1, scope, structs, funcs)) - return 0; - if (!parse_child_operation (C, oper, 0, scope, structs, funcs)) - return 0; - break; - case OP_FOR: - oper->type = slang_oper_for; - if (!parse_child_operation (C, oper, 1, oper->locals, structs, funcs)) - return 0; - if (!parse_child_operation (C, oper, 1, oper->locals, structs, funcs)) - return 0; - if (!parse_child_operation (C, oper, 0, oper->locals, structs, funcs)) - return 0; - if (!parse_child_operation (C, oper, 1, oper->locals, structs, funcs)) - return 0; - break; - default: - return 0; - } - return 1; -} - -static int handle_trinary_expression (slang_parse_ctx *C, slang_operation *op, - slang_operation **ops, unsigned int *num_ops) -{ - op->num_children = 3; - op->children = (slang_operation *) slang_alloc_malloc (3 * sizeof (slang_operation)); - if (op->children == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - op->children[0] = (*ops)[*num_ops - 4]; - op->children[1] = (*ops)[*num_ops - 3]; - op->children[2] = (*ops)[*num_ops - 2]; - (*ops)[*num_ops - 4] = (*ops)[*num_ops - 1]; - *num_ops -= 3; - *ops = (slang_operation *) slang_alloc_realloc (*ops, (*num_ops + 3) * sizeof (slang_operation), - *num_ops * sizeof (slang_operation)); - if (*ops == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - return 1; -} - -static int handle_binary_expression (slang_parse_ctx *C, slang_operation *op, - slang_operation **ops, unsigned int *num_ops) -{ - op->num_children = 2; - op->children = (slang_operation *) slang_alloc_malloc (2 * sizeof (slang_operation)); - if (op->children == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - op->children[0] = (*ops)[*num_ops - 3]; - op->children[1] = (*ops)[*num_ops - 2]; - (*ops)[*num_ops - 3] = (*ops)[*num_ops - 1]; - *num_ops -= 2; - *ops = (slang_operation *) slang_alloc_realloc (*ops, (*num_ops + 2) * sizeof (slang_operation), - *num_ops * sizeof (slang_operation)); - if (*ops == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - return 1; -} - -static int handle_unary_expression (slang_parse_ctx *C, slang_operation *op, - slang_operation **ops, unsigned int *num_ops) -{ - op->num_children = 1; - op->children = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation)); - if (op->children == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - op->children[0] = (*ops)[*num_ops - 2]; - (*ops)[*num_ops - 2] = (*ops)[*num_ops - 1]; - (*num_ops)--; - *ops = (slang_operation *) slang_alloc_realloc (*ops, (*num_ops + 1) * sizeof (slang_operation), - *num_ops * sizeof (slang_operation)); - if (*ops == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - return 1; -} - -static int is_constructor_name (const char *name, slang_struct_scope *structs) -{ - if (slang_type_specifier_type_from_string (name) != slang_spec_void) - return 1; - return slang_struct_scope_find (structs, name, 1) != NULL; -} - -static int parse_expression (slang_parse_ctx *C, slang_operation *oper, slang_variable_scope *scope, - slang_struct_scope *structs, slang_function_scope *funcs) -{ - slang_operation *ops = NULL; - unsigned int num_ops = 0; - int number; - - while (*C->I != OP_END) - { - slang_operation *op; - const unsigned int op_code = *C->I++; - ops = (slang_operation *) slang_alloc_realloc (ops, - num_ops * sizeof (slang_operation), (num_ops + 1) * sizeof (slang_operation)); - if (ops == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - op = ops + num_ops; - if (!slang_operation_construct_a (op)) - { - slang_info_log_memory (C->L); - return 0; - } - num_ops++; - op->locals->outer_scope = scope; - switch (op_code) - { - case OP_PUSH_VOID: - op->type = slang_oper_void; - break; - case OP_PUSH_BOOL: - op->type = slang_oper_literal_bool; - if (!parse_number (C, &number)) - return 0; - op->literal = (float) number; - break; - case OP_PUSH_INT: - op->type = slang_oper_literal_int; - if (!parse_number (C, &number)) - return 0; - op->literal = (float) number; - break; - case OP_PUSH_FLOAT: - op->type = slang_oper_literal_float; - if (!parse_float (C, &op->literal)) - return 0; - break; - case OP_PUSH_IDENTIFIER: - op->type = slang_oper_identifier; - if (!parse_identifier (C, &op->identifier)) - return 0; - break; - case OP_SEQUENCE: - op->type = slang_oper_sequence; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_ASSIGN: - op->type = slang_oper_assign; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_ADDASSIGN: - op->type = slang_oper_addassign; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_SUBASSIGN: - op->type = slang_oper_subassign; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_MULASSIGN: - op->type = slang_oper_mulassign; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_DIVASSIGN: - op->type = slang_oper_divassign; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - /*case OP_MODASSIGN:*/ - /*case OP_LSHASSIGN:*/ - /*case OP_RSHASSIGN:*/ - /*case OP_ORASSIGN:*/ - /*case OP_XORASSIGN:*/ - /*case OP_ANDASSIGN:*/ - case OP_SELECT: - op->type = slang_oper_select; - if (!handle_trinary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_LOGICALOR: - op->type = slang_oper_logicalor; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_LOGICALXOR: - op->type = slang_oper_logicalxor; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_LOGICALAND: - op->type = slang_oper_logicaland; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - /*case OP_BITOR:*/ - /*case OP_BITXOR:*/ - /*case OP_BITAND:*/ - case OP_EQUAL: - op->type = slang_oper_equal; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_NOTEQUAL: - op->type = slang_oper_notequal; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_LESS: - op->type = slang_oper_less; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_GREATER: - op->type = slang_oper_greater; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_LESSEQUAL: - op->type = slang_oper_lessequal; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_GREATEREQUAL: - op->type = slang_oper_greaterequal; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - /*case OP_LSHIFT:*/ - /*case OP_RSHIFT:*/ - case OP_ADD: - op->type = slang_oper_add; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_SUBTRACT: - op->type = slang_oper_subtract; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_MULTIPLY: - op->type = slang_oper_multiply; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_DIVIDE: - op->type = slang_oper_divide; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - /*case OP_MODULUS:*/ - case OP_PREINCREMENT: - op->type = slang_oper_preincrement; - if (!handle_unary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_PREDECREMENT: - op->type = slang_oper_predecrement; - if (!handle_unary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_PLUS: - op->type = slang_oper_plus; - if (!handle_unary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_MINUS: - op->type = slang_oper_minus; - if (!handle_unary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_NOT: - op->type = slang_oper_not; - if (!handle_unary_expression (C, op, &ops, &num_ops)) - return 0; - break; - /*case OP_COMPLEMENT:*/ - case OP_SUBSCRIPT: - op->type = slang_oper_subscript; - if (!handle_binary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_CALL: - op->type = slang_oper_call; - if (!parse_identifier (C, &op->identifier)) - return 0; - while (*C->I != OP_END) - if (!parse_child_operation (C, op, 0, scope, structs, funcs)) - return 0; - C->I++; - if (!C->parsing_builtin && - !slang_function_scope_find_by_name (funcs, op->identifier, 1) && - !is_constructor_name (op->identifier, structs)) - { - slang_info_log_error (C->L, "%s: undeclared function name", op->identifier); - return 0; - } - break; - case OP_FIELD: - op->type = slang_oper_field; - if (!parse_identifier (C, &op->identifier)) - return 0; - if (!handle_unary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_POSTINCREMENT: - op->type = slang_oper_postincrement; - if (!handle_unary_expression (C, op, &ops, &num_ops)) - return 0; - break; - case OP_POSTDECREMENT: - op->type = slang_oper_postdecrement; - if (!handle_unary_expression (C, op, &ops, &num_ops)) - return 0; - break; - default: - return 0; - } - } - C->I++; - *oper = *ops; - slang_alloc_free (ops); - return 1; -} - -/* parameter qualifier */ -#define PARAM_QUALIFIER_IN 0 -#define PARAM_QUALIFIER_OUT 1 -#define PARAM_QUALIFIER_INOUT 2 - -/* function parameter array presence */ -#define PARAMETER_ARRAY_NOT_PRESENT 0 -#define PARAMETER_ARRAY_PRESENT 1 - -static int parse_parameter_declaration (slang_parse_ctx *C, slang_variable *param, - slang_struct_scope *structs, slang_variable_scope *scope, slang_function_scope *funcs) -{ - slang_storage_aggregate agg; - if (!parse_type_qualifier (C, ¶m->type.qualifier)) - return 0; - switch (*C->I++) - { - case PARAM_QUALIFIER_IN: - if (param->type.qualifier != slang_qual_const && param->type.qualifier != slang_qual_none) - { - slang_info_log_error (C->L, "invalid type qualifier"); - return 0; - } - break; - case PARAM_QUALIFIER_OUT: - if (param->type.qualifier == slang_qual_none) - param->type.qualifier = slang_qual_out; - else - { - slang_info_log_error (C->L, "invalid type qualifier"); - return 0; - } - break; - case PARAM_QUALIFIER_INOUT: - if (param->type.qualifier == slang_qual_none) - param->type.qualifier = slang_qual_inout; - else - { - slang_info_log_error (C->L, "invalid type qualifier"); - return 0; - } - break; - default: - return 0; - } - if (!parse_type_specifier (C, ¶m->type.specifier, structs, scope, funcs)) - return 0; - if (!parse_identifier (C, ¶m->name)) - return 0; - if (*C->I++ == PARAMETER_ARRAY_PRESENT) - { - param->array_size = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation)); - if (param->array_size == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - if (!slang_operation_construct_a (param->array_size)) - { - slang_alloc_free (param->array_size); - param->array_size = NULL; - slang_info_log_memory (C->L); - return 0; - } - if (!parse_expression (C, param->array_size, scope, structs, funcs)) - return 0; - } - slang_storage_aggregate_construct (&agg); - if (!_slang_aggregate_variable (&agg, ¶m->type.specifier, param->array_size, funcs, - structs)) - { - slang_storage_aggregate_destruct (&agg); - return 0; - } - slang_storage_aggregate_destruct (&agg); - return 1; -} - -/* function type */ -#define FUNCTION_ORDINARY 0 -#define FUNCTION_CONSTRUCTOR 1 -#define FUNCTION_OPERATOR 2 - -/* function parameter */ -#define PARAMETER_NONE 0 -#define PARAMETER_NEXT 1 - -/* operator type */ -#define OPERATOR_ASSIGN 1 -#define OPERATOR_ADDASSIGN 2 -#define OPERATOR_SUBASSIGN 3 -#define OPERATOR_MULASSIGN 4 -#define OPERATOR_DIVASSIGN 5 -/*#define OPERATOR_MODASSIGN 6*/ -/*#define OPERATOR_LSHASSIGN 7*/ -/*#define OPERATOR_RSHASSIGN 8*/ -/*#define OPERATOR_ANDASSIGN 9*/ -/*#define OPERATOR_XORASSIGN 10*/ -/*#define OPERATOR_ORASSIGN 11*/ -#define OPERATOR_LOGICALXOR 12 -/*#define OPERATOR_BITOR 13*/ -/*#define OPERATOR_BITXOR 14*/ -/*#define OPERATOR_BITAND 15*/ -#define OPERATOR_EQUAL 16 -#define OPERATOR_NOTEQUAL 17 -#define OPERATOR_LESS 18 -#define OPERATOR_GREATER 19 -#define OPERATOR_LESSEQUAL 20 -#define OPERATOR_GREATEREQUAL 21 -/*#define OPERATOR_LSHIFT 22*/ -/*#define OPERATOR_RSHIFT 23*/ -#define OPERATOR_MULTIPLY 24 -#define OPERATOR_DIVIDE 25 -/*#define OPERATOR_MODULUS 26*/ -#define OPERATOR_INCREMENT 27 -#define OPERATOR_DECREMENT 28 -#define OPERATOR_PLUS 29 -#define OPERATOR_MINUS 30 -/*#define OPERATOR_COMPLEMENT 31*/ -#define OPERATOR_NOT 32 - -static const struct { - unsigned int o_code; - const char *o_name; -} operator_names[] = { - { OPERATOR_INCREMENT, "++" }, - { OPERATOR_ADDASSIGN, "+=" }, - { OPERATOR_PLUS, "+" }, - { OPERATOR_DECREMENT, "--" }, - { OPERATOR_SUBASSIGN, "-=" }, - { OPERATOR_MINUS, "-" }, - { OPERATOR_NOTEQUAL, "!=" }, - { OPERATOR_NOT, "!" }, - { OPERATOR_MULASSIGN, "*=" }, - { OPERATOR_MULTIPLY, "*" }, - { OPERATOR_DIVASSIGN, "/=" }, - { OPERATOR_DIVIDE, "/" }, - { OPERATOR_LESSEQUAL, "<=" }, - /*{ OPERATOR_LSHASSIGN, "<<=" },*/ - /*{ OPERATOR_LSHIFT, "<<" },*/ - { OPERATOR_LESS, "<" }, - { OPERATOR_GREATEREQUAL, ">=" }, - /*{ OPERATOR_RSHASSIGN, ">>=" },*/ - /*{ OPERATOR_RSHIFT, ">>" },*/ - { OPERATOR_GREATER, ">" }, - { OPERATOR_EQUAL, "==" }, - { OPERATOR_ASSIGN, "=" }, - /*{ OPERATOR_MODASSIGN, "%=" },*/ - /*{ OPERATOR_MODULUS, "%" },*/ - /*{ OPERATOR_ANDASSIGN, "&=" },*/ - /*{ OPERATOR_BITAND, "&" },*/ - /*{ OPERATOR_ORASSIGN, "|=" },*/ - /*{ OPERATOR_BITOR, "|" },*/ - /*{ OPERATOR_COMPLEMENT, "~" },*/ - /*{ OPERATOR_XORASSIGN, "^=" },*/ - { OPERATOR_LOGICALXOR, "^^" }/*,*/ - /*{ OPERATOR_BITXOR, "^" }*/ -}; - -static int parse_operator_name (slang_parse_ctx *C, char **pname) -{ - unsigned int i; - for (i = 0; i < sizeof (operator_names) / sizeof (*operator_names); i++) - if (operator_names[i].o_code == (unsigned int) (*C->I)) - { - *pname = slang_string_duplicate (operator_names[i].o_name); - if (*pname == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - C->I++; - return 1; - } - return 0; -} - -static int parse_function_prototype (slang_parse_ctx *C, slang_function *func, - slang_struct_scope *structs, slang_variable_scope *scope, slang_function_scope *funcs) -{ - if (!parse_fully_specified_type (C, &func->header.type, structs, scope, funcs)) - return 0; - switch (*C->I++) - { - case FUNCTION_ORDINARY: - func->kind = slang_func_ordinary; - if (!parse_identifier (C, &func->header.name)) - return 0; - break; - case FUNCTION_CONSTRUCTOR: - func->kind = slang_func_constructor; - if (func->header.type.specifier.type == slang_spec_struct) - return 0; - func->header.name = slang_string_duplicate ( - type_specifier_type_names[func->header.type.specifier.type]); - if (func->header.name == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - break; - case FUNCTION_OPERATOR: - func->kind = slang_func_operator; - if (!parse_operator_name (C, &func->header.name)) - return 0; - break; - default: - return 0; - } - func->parameters->outer_scope = scope; - while (*C->I++ == PARAMETER_NEXT) - { - func->parameters->variables = (slang_variable *) slang_alloc_realloc ( - func->parameters->variables, - func->parameters->num_variables * sizeof (slang_variable), - (func->parameters->num_variables + 1) * sizeof (slang_variable)); - if (func->parameters->variables == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - slang_variable_construct (func->parameters->variables + func->parameters->num_variables); - func->parameters->num_variables++; - if (!parse_parameter_declaration (C, func->parameters->variables + - func->parameters->num_variables - 1, structs, scope, funcs)) - return 0; - } - func->param_count = func->parameters->num_variables; - return 1; -} - -static int parse_function_definition (slang_parse_ctx *C, slang_function *func, - slang_struct_scope *structs, slang_variable_scope *scope, slang_function_scope *funcs) -{ - if (!parse_function_prototype (C, func, structs, scope, funcs)) - return 0; - func->body = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation)); - if (func->body == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - if (!slang_operation_construct_a (func->body)) - { - slang_alloc_free (func->body); - func->body = NULL; - slang_info_log_memory (C->L); - return 0; - } - if (!parse_statement (C, func->body, func->parameters, structs, funcs)) - return 0; - return 1; -} - -/* init declarator list */ -#define DECLARATOR_NONE 0 -#define DECLARATOR_NEXT 1 - -/* variable declaration */ -#define VARIABLE_NONE 0 -#define VARIABLE_IDENTIFIER 1 -#define VARIABLE_INITIALIZER 2 -#define VARIABLE_ARRAY_EXPLICIT 3 -#define VARIABLE_ARRAY_UNKNOWN 4 - -static int parse_init_declarator (slang_parse_ctx *C, const slang_fully_specified_type *type, - slang_variable_scope *vars, slang_struct_scope *structs, slang_function_scope *funcs) -{ - slang_variable *var; - - if (*C->I++ == VARIABLE_NONE) - return 1; - vars->variables = (slang_variable *) slang_alloc_realloc (vars->variables, - vars->num_variables * sizeof (slang_variable), - (vars->num_variables + 1) * sizeof (slang_variable)); - if (vars->variables == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - var = vars->variables + vars->num_variables; - vars->num_variables++; - slang_variable_construct (var); - var->type.qualifier = type->qualifier; - if (!parse_identifier (C, &var->name)) - return 0; - switch (*C->I++) - { - case VARIABLE_NONE: - if (!slang_type_specifier_copy (&var->type.specifier, &type->specifier)) - return 0; - break; - case VARIABLE_INITIALIZER: - if (!slang_type_specifier_copy (&var->type.specifier, &type->specifier)) - return 0; - var->initializer = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation)); - if (var->initializer == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - if (!slang_operation_construct_a (var->initializer)) - { - slang_alloc_free (var->initializer); - var->initializer = NULL; - slang_info_log_memory (C->L); - return 0; - } - if (!parse_expression (C, var->initializer, vars, structs, funcs)) - return 0; - break; - case VARIABLE_ARRAY_UNKNOWN: - var->type.specifier.type = slang_spec_array; - var->type.specifier._array = (slang_type_specifier *) slang_alloc_malloc (sizeof ( - slang_type_specifier)); - if (var->type.specifier._array == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - slang_type_specifier_construct (var->type.specifier._array); - if (!slang_type_specifier_copy (var->type.specifier._array, &type->specifier)) - return 0; - break; - case VARIABLE_ARRAY_EXPLICIT: - var->type.specifier.type = slang_spec_array; - var->type.specifier._array = (slang_type_specifier *) slang_alloc_malloc (sizeof ( - slang_type_specifier)); - if (var->type.specifier._array == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - slang_type_specifier_construct (var->type.specifier._array); - if (!slang_type_specifier_copy (var->type.specifier._array, &type->specifier)) - return 0; - var->array_size = (slang_operation *) slang_alloc_malloc (sizeof (slang_operation)); - if (var->array_size == NULL) - { - slang_info_log_memory (C->L); - return 0; - } - if (!slang_operation_construct_a (var->array_size)) - { - slang_alloc_free (var->array_size); - var->array_size = NULL; - slang_info_log_memory (C->L); - return 0; - } - if (!parse_expression (C, var->array_size, vars, structs, funcs)) - return 0; - break; - default: - return 0; - } - if (!(var->type.specifier.type == slang_spec_array && var->array_size == NULL)) - { - slang_storage_aggregate agg; - - slang_storage_aggregate_construct (&agg); - if (!_slang_aggregate_variable (&agg, &var->type.specifier, var->array_size, funcs, - structs)) - { - slang_storage_aggregate_destruct (&agg); - return 0; - } - slang_storage_aggregate_destruct (&agg); - } - return 1; -} - -static int parse_init_declarator_list (slang_parse_ctx *C, slang_variable_scope *vars, - slang_struct_scope *structs, slang_function_scope *funcs) -{ - slang_fully_specified_type type; - - slang_fully_specified_type_construct (&type); - if (!parse_fully_specified_type (C, &type, structs, vars, funcs)) - { - slang_fully_specified_type_destruct (&type); - return 0; - } - do - { - if (!parse_init_declarator (C, &type, vars, structs, funcs)) - { - slang_fully_specified_type_destruct (&type); - return 0; - } - } - while (*C->I++ == DECLARATOR_NEXT); - slang_fully_specified_type_destruct (&type); - return 1; -} - -static int parse_function (slang_parse_ctx *C, int definition, slang_struct_scope *structs, - slang_function_scope *funcs, slang_variable_scope *scope, slang_function **parsed_func_ret) -{ - slang_function parsed_func, *found_func; - - /* parse function definition/declaration */ - slang_function_construct (&parsed_func); - if (definition) - { - if (!parse_function_definition (C, &parsed_func, structs, scope, funcs)) - { - slang_function_destruct (&parsed_func); - return 0; - } - } - else - { - if (!parse_function_prototype (C, &parsed_func, structs, scope, funcs)) - { - slang_function_destruct (&parsed_func); - return 0; - } - } - - /* find a function with a prototype matching the parsed one - only the current scope - is being searched to allow built-in function overriding */ - found_func = slang_function_scope_find (funcs, &parsed_func, 0); - if (found_func == NULL) - { - /* add the parsed function to the function list */ - funcs->functions = (slang_function *) slang_alloc_realloc (funcs->functions, - funcs->num_functions * sizeof (slang_function), (funcs->num_functions + 1) * sizeof ( - slang_function)); - if (funcs->functions == NULL) - { - slang_info_log_memory (C->L); - slang_function_destruct (&parsed_func); - return 0; - } - funcs->functions[funcs->num_functions] = parsed_func; - funcs->num_functions++; - - /* return the newly parsed function */ - *parsed_func_ret = funcs->functions + funcs->num_functions - 1; - } - else - { - /* TODO: check function return type qualifiers and specifiers */ - if (definition) - { - /* destroy the existing function declaration and replace it with the new one */ - if (found_func->body != NULL) - { - slang_info_log_error (C->L, "%s: function already has a body", - parsed_func.header.name); - slang_function_destruct (&parsed_func); - return 0; - } - slang_function_destruct (found_func); - *found_func = parsed_func; - } - else - { - /* another declaration of the same function prototype - ignore it */ - slang_function_destruct (&parsed_func); - } - - /* return the found function */ - *parsed_func_ret = found_func; - } - - /* assemble the parsed function */ - if (definition) - { -static int x = 0; -static - slang_assembly_file file; - slang_assembly_name_space space; -x++; -if (x == 1) - slang_assembly_file_construct (&file); - space.funcs = funcs; - space.structs = structs; - space.vars = scope; -if (x == 1) -xxx_first (&file); - (**parsed_func_ret).address = file.count; - if (!_slang_assemble_function (&file, *parsed_func_ret, &space)) - { - slang_assembly_file_destruct (&file); - return 0; - } -if (slang_string_compare ("main", (**parsed_func_ret).header.name) == 0) -{ -xxx_prolog (&file, (**parsed_func_ret).address); -_slang_execute (&file); -slang_assembly_file_destruct (&file); -exit (0); -} - } - return 1; -} - -/* declaration */ -#define DECLARATION_FUNCTION_PROTOTYPE 1 -#define DECLARATION_INIT_DECLARATOR_LIST 2 - -static int parse_declaration (slang_parse_ctx *C, slang_variable_scope *scope, - slang_struct_scope *structs, slang_function_scope *funcs) -{ - slang_function *dummy_func; - - switch (*C->I++) - { - case DECLARATION_INIT_DECLARATOR_LIST: - if (!parse_init_declarator_list (C, scope, structs, funcs)) - return 0; - break; - case DECLARATION_FUNCTION_PROTOTYPE: - if (!parse_function (C, 0, structs, funcs, scope, &dummy_func)) - return 0; - break; - default: - return 0; - } - return 1; -} - -/* external declaration */ -#define EXTERNAL_NULL 0 -#define EXTERNAL_FUNCTION_DEFINITION 1 -#define EXTERNAL_DECLARATION 2 - -static int parse_translation_unit (slang_parse_ctx *C, slang_translation_unit *unit) -{ - while (*C->I != EXTERNAL_NULL) - { - slang_function *func; - - switch (*C->I++) - { - case EXTERNAL_FUNCTION_DEFINITION: - if (!parse_function (C, 1, &unit->structs, &unit->functions, &unit->globals, &func)) - return 0; - break; - case EXTERNAL_DECLARATION: - if (!parse_declaration (C, &unit->globals, &unit->structs, &unit->functions)) - return 0; - break; - default: - return 0; - } - } - C->I++; - return 1; -} - -static int compile_binary (const byte *prod, slang_translation_unit *unit, slang_unit_type type, - slang_info_log *log, slang_translation_unit *builtins) -{ - slang_parse_ctx C; - - /* set-up parse context */ - C.I = prod; - C.L = log; - C.parsing_builtin = builtins == NULL; - - if (!check_revision (&C)) - return 0; - - /* create translation unit object */ - slang_translation_unit_construct (unit); - unit->type = type; - - if (builtins != NULL) - { - /* link to built-in functions */ - builtins[1].functions.outer_scope = &builtins[0].functions; - builtins[2].functions.outer_scope = &builtins[1].functions; - unit->functions.outer_scope = &builtins[2].functions; - - /* link to built-in variables - core unit does not define any */ - builtins[2].globals.outer_scope = &builtins[1].globals; - unit->globals.outer_scope = &builtins[2].globals; - - /* link to built-in structure typedefs - only in common unit */ - unit->structs.outer_scope = &builtins[1].structs; - } - - /* parse translation unit */ - if (!parse_translation_unit (&C, unit)) - { - slang_translation_unit_destruct (unit); - return 0; - } - - return 1; -} - -static int compile_with_grammar (grammar id, const char *source, slang_translation_unit *unit, - slang_unit_type type, slang_info_log *log, slang_translation_unit *builtins) -{ - byte *prod; - unsigned int size, start, version; - - /* retrieve version */ - if (!_slang_preprocess_version (source, &version, &start, log)) - return 0; - - /* check the syntax */ - if (!grammar_fast_check (id, (const byte *) source + start, &prod, &size, 65536)) - { - char buf[1024]; - unsigned int pos; - grammar_get_last_error ( (unsigned char*) buf, 1024, (int*) &pos); - slang_info_log_error (log, buf); - return 0; - } - - if (!compile_binary (prod, unit, type, log, builtins)) - { - grammar_alloc_free (prod); - return 0; - } - - grammar_alloc_free (prod); - return 1; -} - -static const char *slang_shader_syn = -#include "library/slang_shader_syn.h" -; -/* -static const byte slang_core_gc_bin[] = { -#include "library/slang_core_gc_bin.h" -};*/ -static const byte slang_core_gc[] = { -#include "library/slang_core_gc.h" -}; - -static const byte slang_common_builtin_gc_bin[] = { -#include "library/slang_common_builtin_gc_bin.h" -}; - -static const byte slang_fragment_builtin_gc_bin[] = { -#include "library/slang_fragment_builtin_gc_bin.h" -}; - -static const byte slang_vertex_builtin_gc_bin[] = { -#include "library/slang_vertex_builtin_gc_bin.h" -}; - -int _slang_compile (const char *source, slang_translation_unit *unit, slang_unit_type type, - slang_info_log *log) -{ - grammar id; - slang_translation_unit builtin_units[3]; - slang_translation_unit *builtins = NULL; - - /* load slang grammar */ - id = grammar_load_from_text ((const byte *) slang_shader_syn); - if (id == 0) - { - char buf[1024]; - unsigned int pos; - grammar_get_last_error ( (unsigned char*) buf, 1024, (int*) &pos); - slang_info_log_error (log, buf); - return 0; - } - - /* set shader type - the syntax is slightly different for different shaders */ - if (type == slang_unit_fragment_shader || type == slang_unit_fragment_builtin) - grammar_set_reg8 (id, (const byte *) "shader_type", 1); - else - grammar_set_reg8 (id, (const byte *) "shader_type", 2); - - /* enable language extensions */ - grammar_set_reg8 (id, (const byte *) "parsing_builtin", 1); - - /* if parsing user-specified shader, load built-in library */ - if (type == slang_unit_fragment_shader || type == slang_unit_vertex_shader) - { - /*if (!compile_binary (slang_core_gc_bin, builtin_units, - slang_unit_fragment_builtin, log, NULL))*/ - if (!compile_with_grammar (id, (const char*) slang_core_gc, builtin_units, slang_unit_fragment_builtin, - log, NULL)) - { - grammar_destroy (id); - return 0; - } - if (!compile_binary (slang_common_builtin_gc_bin, builtin_units + 1, - slang_unit_fragment_builtin, log, NULL)) - { - slang_translation_unit_destruct (builtin_units); - grammar_destroy (id); - return 0; - } - if (type == slang_unit_fragment_shader) - { - if (!compile_binary (slang_fragment_builtin_gc_bin, builtin_units + 2, - slang_unit_fragment_builtin, log, NULL)) - { - slang_translation_unit_destruct (builtin_units); - slang_translation_unit_destruct (builtin_units + 1); - grammar_destroy (id); - return 0; - } - } - else if (type == slang_unit_vertex_shader) - { - if (!compile_binary (slang_vertex_builtin_gc_bin, builtin_units + 2, - slang_unit_vertex_builtin, log, NULL)) - { - slang_translation_unit_destruct (builtin_units); - slang_translation_unit_destruct (builtin_units + 1); - grammar_destroy (id); - return 0; - } - } - - /* disable language extensions */ - grammar_set_reg8 (id, (const byte *) "parsing_builtin", 0); - builtins = builtin_units; - } - - /* compile the actual shader - pass-in built-in library for external shader */ - if (!compile_with_grammar (id, source, unit, type, log, builtins)) - { - if (type == slang_unit_fragment_shader || type == slang_unit_vertex_shader) - { - slang_translation_unit_destruct (builtin_units); - slang_translation_unit_destruct (builtin_units + 1); - slang_translation_unit_destruct (builtin_units + 2); - } - grammar_destroy (id); - return 0; - } - - /* destroy built-in library */ - if (type == slang_unit_fragment_shader || type == slang_unit_vertex_shader) - { - slang_translation_unit_destruct (builtin_units); - slang_translation_unit_destruct (builtin_units + 1); - slang_translation_unit_destruct (builtin_units + 2); - } - grammar_destroy (id); - return 1; -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_compile.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_compile.h deleted file mode 100644 index d78c66f00..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_compile.h +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_COMPILE_H -#define SLANG_COMPILE_H - -#if defined __cplusplus -extern "C" { -#endif - -typedef enum slang_type_qualifier_ -{ - slang_qual_none, - slang_qual_const, - slang_qual_attribute, - slang_qual_varying, - slang_qual_uniform, - slang_qual_out, - slang_qual_inout, - slang_qual_fixedoutput, /* internal */ - slang_qual_fixedinput /* internal */ -} slang_type_qualifier; - -typedef enum slang_type_specifier_type_ -{ - slang_spec_void, - slang_spec_bool, - slang_spec_bvec2, - slang_spec_bvec3, - slang_spec_bvec4, - slang_spec_int, - slang_spec_ivec2, - slang_spec_ivec3, - slang_spec_ivec4, - slang_spec_float, - slang_spec_vec2, - slang_spec_vec3, - slang_spec_vec4, - slang_spec_mat2, - slang_spec_mat3, - slang_spec_mat4, - slang_spec_sampler1D, - slang_spec_sampler2D, - slang_spec_sampler3D, - slang_spec_samplerCube, - slang_spec_sampler1DShadow, - slang_spec_sampler2DShadow, - slang_spec_struct, - slang_spec_array -} slang_type_specifier_type; - -slang_type_specifier_type slang_type_specifier_type_from_string (const char *); - -typedef struct slang_type_specifier_ -{ - slang_type_specifier_type type; - struct slang_struct_ *_struct; /* spec_struct */ - struct slang_type_specifier_ *_array; /* spec_array */ -} slang_type_specifier; - -void slang_type_specifier_construct (slang_type_specifier *); -void slang_type_specifier_destruct (slang_type_specifier *); -int slang_type_specifier_copy (slang_type_specifier *, const slang_type_specifier *); -int slang_type_specifier_equal (const slang_type_specifier *, const slang_type_specifier *); - -typedef struct slang_fully_specified_type_ -{ - slang_type_qualifier qualifier; - slang_type_specifier specifier; -} slang_fully_specified_type; - -typedef struct slang_variable_scope_ -{ - struct slang_variable_ *variables; - unsigned int num_variables; - struct slang_variable_scope_ *outer_scope; -} slang_variable_scope; - -typedef enum slang_operation_type_ -{ - slang_oper_none, - slang_oper_block_no_new_scope, - slang_oper_block_new_scope, - slang_oper_variable_decl, - slang_oper_asm, - slang_oper_break, - slang_oper_continue, - slang_oper_discard, - slang_oper_return, - slang_oper_expression, - slang_oper_if, - slang_oper_while, - slang_oper_do, - slang_oper_for, - slang_oper_void, - slang_oper_literal_bool, - slang_oper_literal_int, - slang_oper_literal_float, - slang_oper_identifier, - slang_oper_sequence, - slang_oper_assign, - slang_oper_addassign, - slang_oper_subassign, - slang_oper_mulassign, - slang_oper_divassign, - /*slang_oper_modassign,*/ - /*slang_oper_lshassign,*/ - /*slang_oper_rshassign,*/ - /*slang_oper_orassign,*/ - /*slang_oper_xorassign,*/ - /*slang_oper_andassign,*/ - slang_oper_select, - slang_oper_logicalor, - slang_oper_logicalxor, - slang_oper_logicaland, - /*slang_oper_bitor,*/ - /*slang_oper_bitxor,*/ - /*slang_oper_bitand,*/ - slang_oper_equal, - slang_oper_notequal, - slang_oper_less, - slang_oper_greater, - slang_oper_lessequal, - slang_oper_greaterequal, - /*slang_oper_lshift,*/ - /*slang_oper_rshift,*/ - slang_oper_add, - slang_oper_subtract, - slang_oper_multiply, - slang_oper_divide, - /*slang_oper_modulus,*/ - slang_oper_preincrement, - slang_oper_predecrement, - slang_oper_plus, - slang_oper_minus, - /*slang_oper_complement,*/ - slang_oper_not, - slang_oper_subscript, - slang_oper_call, - slang_oper_field, - slang_oper_postincrement, - slang_oper_postdecrement -} slang_operation_type; - -typedef struct slang_operation_ -{ - slang_operation_type type; - struct slang_operation_ *children; - unsigned int num_children; - float literal; /* bool, literal_int, literal_float */ - char *identifier; /* asm, identifier, call, field */ - slang_variable_scope *locals; -} slang_operation; - -int slang_operation_construct_a (slang_operation *); -void slang_operation_destruct (slang_operation *); - -typedef struct slang_variable_ -{ - slang_fully_specified_type type; - char *name; - slang_operation *array_size; /* spec_array */ - slang_operation *initializer; - unsigned int address; -} slang_variable; - -slang_variable *_slang_locate_variable (slang_variable_scope *scope, const char *name, int all); - -typedef struct slang_struct_scope_ -{ - struct slang_struct_ *structs; - unsigned int num_structs; - struct slang_struct_scope_ *outer_scope; -} slang_struct_scope; - -struct slang_struct_ *slang_struct_scope_find (slang_struct_scope *, const char *, int); - -typedef struct slang_struct_ -{ - char *name; - slang_variable_scope *fields; - slang_struct_scope *structs; -} slang_struct; - -int slang_struct_construct_a (slang_struct *); -int slang_struct_copy (slang_struct *, const slang_struct *); - -typedef enum slang_function_kind_ -{ - slang_func_ordinary, - slang_func_constructor, - slang_func_operator -} slang_function_kind; - -typedef struct slang_function_ -{ - slang_function_kind kind; - slang_variable header; - slang_variable_scope *parameters; - unsigned int param_count; - slang_operation *body; - unsigned int address; -} slang_function; - -typedef struct slang_function_scope_ -{ - slang_function *functions; - unsigned int num_functions; - struct slang_function_scope_ *outer_scope; -} slang_function_scope; - -typedef enum slang_unit_type_ -{ - slang_unit_fragment_shader, - slang_unit_vertex_shader, - slang_unit_fragment_builtin, - slang_unit_vertex_builtin -} slang_unit_type; - -typedef struct slang_translation_unit_ -{ - slang_variable_scope globals; - slang_function_scope functions; - slang_struct_scope structs; - slang_unit_type type; -} slang_translation_unit; - -void slang_translation_unit_construct (slang_translation_unit *); -void slang_translation_unit_destruct (slang_translation_unit *); - -typedef struct slang_info_log_ -{ - char *text; - int dont_free_text; -} slang_info_log; - -void slang_info_log_construct (slang_info_log *); -void slang_info_log_destruct (slang_info_log *); -int slang_info_log_error (slang_info_log *, const char *, ...); -int slang_info_log_warning (slang_info_log *, const char *, ...); -void slang_info_log_memory (slang_info_log *); - -int _slang_compile (const char *, slang_translation_unit *, slang_unit_type type, slang_info_log *); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_execute.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_execute.c deleted file mode 100644 index 57941469c..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_execute.c +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_execute.c - * intermediate code interpreter - * \author Michal Krol - */ - -#include "imports.h" -#include "slang_utility.h" -#include "slang_assemble.h" -#include "slang_storage.h" -#include "slang_execute.h" - -static void dump_instruction (FILE *f, slang_assembly *a, unsigned int i) -{ - fprintf (f, "%.5u:\t", i); - - switch (a->type) - { - case slang_asm_none: - fprintf (f, "none"); - break; - case slang_asm_float_copy: - fprintf (f, "float_copy\t%d, %d", a->param[0], a->param[1]); - break; - case slang_asm_float_move: - fprintf (f, "float_move\t%d, %d", a->param[0], a->param[1]); - break; - case slang_asm_float_push: - fprintf (f, "float_push\t%f", a->literal); - break; - case slang_asm_float_deref: - fprintf (f, "float_deref"); - break; - case slang_asm_float_add: - fprintf (f, "float_add"); - break; - case slang_asm_float_multiply: - fprintf (f, "float_multiply"); - break; - case slang_asm_float_divide: - fprintf (f, "float_divide"); - break; - case slang_asm_float_negate: - fprintf (f, "float_negate"); - break; - case slang_asm_float_less: - fprintf (f, "float_less"); - break; - case slang_asm_float_equal: - fprintf (f, "float_equal\t%d, %d", a->param[0], a->param[1]); - break; - case slang_asm_float_to_int: - fprintf (f, "float_to_int"); - break; - case slang_asm_int_copy: - fprintf (f, "int_copy\t%d, %d", a->param[0], a->param[1]); - break; - case slang_asm_int_move: - fprintf (f, "int_move\t%d, %d", a->param[0], a->param[1]); - break; - case slang_asm_int_push: - fprintf (f, "int_push\t%d", (GLint) a->literal); - break; - case slang_asm_int_deref: - fprintf (f, "int_deref"); - break; - case slang_asm_int_to_float: - fprintf (f, "int_to_float"); - break; - case slang_asm_int_to_addr: - fprintf (f, "int_to_addr"); - break; - case slang_asm_bool_copy: - fprintf (f, "bool_copy\t%d, %d", a->param[0], a->param[1]); - break; - case slang_asm_bool_move: - fprintf (f, "bool_move\t%d, %d", a->param[0], a->param[1]); - break; - case slang_asm_bool_push: - fprintf (f, "bool_push\t%d", a->literal != 0.0f); - break; - case slang_asm_bool_deref: - fprintf (f, "bool_deref"); - break; - case slang_asm_addr_copy: - fprintf (f, "addr_copy"); - break; - case slang_asm_addr_push: - fprintf (f, "addr_push\t%u", a->param[0]); - break; - case slang_asm_addr_deref: - fprintf (f, "addr_deref"); - break; - case slang_asm_addr_add: - fprintf (f, "addr_add"); - break; - case slang_asm_addr_multiply: - fprintf (f, "addr_multiply"); - break; - case slang_asm_jump: - fprintf (f, "jump\t%u", a->param[0]); - break; - case slang_asm_jump_if_zero: - fprintf (f, "jump_if_zero\t%u", a->param[0]); - break; - case slang_asm_enter: - fprintf (f, "enter\t%u", a->param[0]); - break; - case slang_asm_leave: - fprintf (f, "leave"); - break; - case slang_asm_local_alloc: - fprintf (f, "local_alloc\t%u", a->param[0]); - break; - case slang_asm_local_free: - fprintf (f, "local_free\t%u", a->param[0]); - break; - case slang_asm_local_addr: - fprintf (f, "local_addr\t%u, %u", a->param[0], a->param[1]); - break; - case slang_asm_call: - fprintf (f, "call\t%u", a->param[0]); - break; - case slang_asm_return: - fprintf (f, "return"); - break; - case slang_asm_discard: - fprintf (f, "discard"); - break; - case slang_asm_exit: - fprintf (f, "exit"); - break; - default: - break; - } - - fprintf (f, "\n"); -} - -static void dump (const slang_assembly_file *file) -{ - unsigned int i; - static unsigned int counter = 0; - FILE *f; - char filename[256]; - - counter++; - sprintf (filename, "~mesa-slang-assembly-dump-(%u).txt", counter); - f = fopen (filename, "w"); - if (f == NULL) - return; - - for (i = 0; i < file->count; i++) - dump_instruction (f, file->code + i, i); - - fclose (f); -} - -int _slang_execute (const slang_assembly_file *file) -{ - slang_machine mach; - FILE *f; - - mach.ip = 0; - mach.sp = SLANG_MACHINE_STACK_SIZE; - mach.bp = 0; - mach.kill = 0; - mach.exit = 0; - - /* assume 32-bit machine */ - /* XXX why???, disabling the pointer size assertions here. - * See bug 4021. - */ - _static_assert(sizeof (GLfloat) == 4); - /*_static_assert(sizeof (GLfloat *) == 4);*/ - _static_assert(sizeof (GLuint) == 4); - /*_static_assert(sizeof (GLuint *) == 4);*/ - - dump (file); - - f = fopen ("~mesa-slang-assembly-execution.txt", "w"); - - while (!mach.exit) - { - slang_assembly *a = file->code + mach.ip; - if (f != NULL) - { - unsigned int i; - dump_instruction (f, a, mach.ip); - fprintf (f, "\t\tsp=%u bp=%u\n", mach.sp, mach.bp); - for (i = mach.sp; i < SLANG_MACHINE_STACK_SIZE; i++) - fprintf (f, "\t%.5u\t%6f\t%u\n", i, mach.stack._float[i], mach.stack._addr[i]); - fflush (f); - } - mach.ip++; - - switch (a->type) - { - case slang_asm_none: - break; - case slang_asm_float_copy: - case slang_asm_int_copy: - case slang_asm_bool_copy: - *(mach.stack._floatp[mach.sp + a->param[0] / 4] + a->param[1] / 4) = - mach.stack._float[mach.sp]; - mach.sp++; - break; - case slang_asm_float_move: - case slang_asm_int_move: - case slang_asm_bool_move: - mach.stack._float[mach.sp + a->param[0] / 4] = - mach.stack._float[mach.sp + (mach.stack._addr[mach.sp] + a->param[1]) / 4]; - break; - case slang_asm_float_push: - case slang_asm_int_push: - case slang_asm_bool_push: - mach.sp--; - mach.stack._float[mach.sp] = a->literal; - break; - case slang_asm_float_deref: - case slang_asm_int_deref: - case slang_asm_bool_deref: - mach.stack._float[mach.sp] = *mach.stack._floatp[mach.sp]; - break; - case slang_asm_float_add: - mach.stack._float[mach.sp + 1] += mach.stack._float[mach.sp]; - mach.sp++; - break; - case slang_asm_float_multiply: - mach.stack._float[mach.sp + 1] *= mach.stack._float[mach.sp]; - mach.sp++; - break; - case slang_asm_float_divide: - mach.stack._float[mach.sp + 1] /= mach.stack._float[mach.sp]; - mach.sp++; - break; - case slang_asm_float_negate: - mach.stack._float[mach.sp] = -mach.stack._float[mach.sp]; - break; - case slang_asm_float_less: - mach.stack._float[mach.sp + 1] = - mach.stack._float[mach.sp + 1] < mach.stack._float[mach.sp] ? 1.0f : 0.0f; - mach.sp++; - break; - case slang_asm_float_equal: - mach.sp--; - mach.stack._float[mach.sp] = mach.stack._float[mach.sp + 1 + a->param[0] / 4] == - mach.stack._float[mach.sp + 1 + a->param[1] / 4] ? 1.0f : 0.0f; - break; - case slang_asm_float_to_int: - mach.stack._float[mach.sp] = (GLfloat) (GLint) mach.stack._float[mach.sp]; - break; - case slang_asm_int_to_float: - break; - case slang_asm_int_to_addr: - mach.stack._addr[mach.sp] = (GLuint) (GLint) mach.stack._float[mach.sp]; - break; - case slang_asm_addr_copy: - *mach.stack._addrp[mach.sp + 1] = mach.stack._addr[mach.sp]; - mach.sp++; - break; - case slang_asm_addr_push: - mach.sp--; - mach.stack._addr[mach.sp] = a->param[0]; - break; - case slang_asm_addr_deref: - mach.stack._addr[mach.sp] = *mach.stack._addrp[mach.sp]; - break; - case slang_asm_addr_add: - mach.stack._addr[mach.sp + 1] += mach.stack._addr[mach.sp]; - mach.sp++; - break; - case slang_asm_addr_multiply: - mach.stack._addr[mach.sp + 1] *= mach.stack._addr[mach.sp]; - mach.sp++; - break; - case slang_asm_jump: - mach.ip = a->param[0]; - break; - case slang_asm_jump_if_zero: - if (mach.stack._float[mach.sp] == 0.0f) - mach.ip = a->param[0]; - mach.sp++; - break; - case slang_asm_enter: - mach.sp--; - mach.stack._addr[mach.sp] = mach.bp; - mach.bp = mach.sp + a->param[0] / 4; - break; - case slang_asm_leave: - mach.bp = mach.stack._addr[mach.sp]; - mach.sp++; - break; - case slang_asm_local_alloc: - mach.sp -= a->param[0] / 4; - break; - case slang_asm_local_free: - mach.sp += a->param[0] / 4; - break; - case slang_asm_local_addr: - mach.sp--; - mach.stack._addr[mach.sp] = (GLuint) mach.stack._addr + mach.bp * 4 - - (a->param[0] + a->param[1]) + 4; - break; - case slang_asm_call: - mach.sp--; - mach.stack._addr[mach.sp] = mach.ip; - mach.ip = a->param[0]; - break; - case slang_asm_return: - mach.ip = mach.stack._addr[mach.sp]; - mach.sp++; - break; - case slang_asm_discard: - mach.kill = 1; - break; - case slang_asm_exit: - mach.exit = 1; - break; - } - } - - if (f != NULL) - fclose (f); - - return 0; -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_execute.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_execute.h deleted file mode 100644 index 7a7765441..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_execute.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_EXECUTE_H -#define SLANG_EXECUTE_H - -#if defined __cplusplus -extern "C" { -#endif - -#define SLANG_MACHINE_STACK_SIZE 1024 - -typedef struct slang_machine_ -{ - GLuint ip; /* instruction pointer, for flow control */ - GLuint sp; /* stack pointer, for stack access */ - GLuint bp; /* base pointer, for local variable access */ - GLuint kill; /* discard the fragment */ - GLuint exit; /* terminate the shader */ - union stack_ - { - GLfloat _float[SLANG_MACHINE_STACK_SIZE]; - GLfloat *_floatp[SLANG_MACHINE_STACK_SIZE]; - GLuint _addr[SLANG_MACHINE_STACK_SIZE]; - GLuint *_addrp[SLANG_MACHINE_STACK_SIZE]; - } stack; -} slang_machine; - -int _slang_execute (const slang_assembly_file *); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_preprocess.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_preprocess.c deleted file mode 100644 index 1dc156eed..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_preprocess.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_preprocess.c - * slang preprocessor - * \author Michal Krol - */ - -#include "imports.h" -#include "grammar_mesa.h" -#include "slang_compile.h" -#include "slang_preprocess.h" - -static const char *slang_version_syn = -#include "library/slang_version_syn.h" -; - -int _slang_preprocess_version (const char *text, unsigned int *version, unsigned int *eaten, - slang_info_log *log) -{ - grammar id; - byte *prod, *I; - unsigned int size; - - id = grammar_load_from_text ((const byte *) slang_version_syn); - if (id == 0) - { - char buf[1024]; - unsigned int pos; - grammar_get_last_error ( (unsigned char*) buf, 1024, (int*) &pos); - slang_info_log_error (log, buf); - return 0; - } - - if (!grammar_fast_check (id, (const byte *) text, &prod, &size, 8)) - { - char buf[1024]; - unsigned int pos; - grammar_get_last_error ( (unsigned char*) buf, 1024, (int*) &pos); - slang_info_log_error (log, buf); - grammar_destroy (id); - return 0; - } - - grammar_destroy (id); - - /* there can be multiple #version directives - grab the last one */ - I = prod; - while (I < prod + size) - { - *version = - (unsigned int) I[0] + - (unsigned int) I[1] * 100; - *eaten = - ((unsigned int) I[2]) + - ((unsigned int) I[3] << 8) + - ((unsigned int) I[4] << 16) + - ((unsigned int) I[5] << 24); - I += 6; - } - - grammar_alloc_free (prod); - return 1; -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_preprocess.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_preprocess.h deleted file mode 100644 index 637b822c9..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_preprocess.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_PREPROCESS_H -#define SLANG_PREPROCESS_H - -#if defined __cplusplus -extern "C" { -#endif - -int _slang_preprocess_version (const char *, unsigned int *, unsigned int *, slang_info_log *); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_storage.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_storage.c deleted file mode 100644 index 3b2fda415..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_storage.c +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_storage.c - * slang variable storage - * \author Michal Krol - */ - -#include "imports.h" -#include "slang_utility.h" -#include "slang_storage.h" -#include "slang_assemble.h" - -/* slang_storage_array */ - -void slang_storage_array_construct (slang_storage_array *arr) -{ - arr->type = slang_stor_aggregate; - arr->aggregate = NULL; - arr->length = 0; -} - -void slang_storage_array_destruct (slang_storage_array *arr) -{ - if (arr->aggregate != NULL) - { - slang_storage_aggregate_destruct (arr->aggregate); - slang_alloc_free (arr->aggregate); - } -} - -/* slang_storage_aggregate */ - -void slang_storage_aggregate_construct (slang_storage_aggregate *agg) -{ - agg->arrays = NULL; - agg->count = 0; -} - -void slang_storage_aggregate_destruct (slang_storage_aggregate *agg) -{ - unsigned int i; - for (i = 0; i < agg->count; i++) - slang_storage_array_destruct (agg->arrays + i); - slang_alloc_free (agg->arrays); -} - -static slang_storage_array *slang_storage_aggregate_push_new (slang_storage_aggregate *agg) -{ - slang_storage_array *arr = NULL; - agg->arrays = (slang_storage_array *) slang_alloc_realloc (agg->arrays, agg->count * sizeof ( - slang_storage_array), (agg->count + 1) * sizeof (slang_storage_array)); - if (agg->arrays != NULL) - { - arr = agg->arrays + agg->count; - slang_storage_array_construct (arr); - agg->count++; - } - return arr; -} - -/* _slang_aggregate_variable() */ - -static int aggregate_vector (slang_storage_aggregate *agg, slang_storage_type basic_type, - unsigned int row_count) -{ - slang_storage_array *arr = slang_storage_aggregate_push_new (agg); - if (arr == NULL) - return 0; - arr->type = basic_type; - arr->length = row_count; - return 1; -} - -static int aggregate_matrix (slang_storage_aggregate *agg, slang_storage_type basic_type, - unsigned int dimension) -{ - slang_storage_array *arr = slang_storage_aggregate_push_new (agg); - if (arr == NULL) - return 0; - arr->type = slang_stor_aggregate; - arr->length = dimension; - arr->aggregate = (slang_storage_aggregate *) slang_alloc_malloc (sizeof ( - slang_storage_aggregate)); - if (arr->aggregate == NULL) - return 0; - slang_storage_aggregate_construct (arr->aggregate); - if (!aggregate_vector (arr->aggregate, basic_type, dimension)) - return 0; - return 1; -} - -static int aggregate_variables (slang_storage_aggregate *agg, const slang_variable_scope *vars, - slang_function_scope *funcs, slang_struct_scope *structs) -{ - unsigned int i; - for (i = 0; i < vars->num_variables; i++) - if (!_slang_aggregate_variable (agg, &vars->variables[i].type.specifier, - vars->variables[i].array_size, funcs, structs)) - return 0; - return 1; -} - -int _slang_aggregate_variable (slang_storage_aggregate *agg, slang_type_specifier *spec, - slang_operation *array_size, slang_function_scope *funcs, slang_struct_scope *structs) -{ - switch (spec->type) - { - case slang_spec_bool: - return aggregate_vector (agg, slang_stor_bool, 1); - case slang_spec_bvec2: - return aggregate_vector (agg, slang_stor_bool, 2); - case slang_spec_bvec3: - return aggregate_vector (agg, slang_stor_bool, 3); - case slang_spec_bvec4: - return aggregate_vector (agg, slang_stor_bool, 4); - case slang_spec_int: - return aggregate_vector (agg, slang_stor_int, 1); - case slang_spec_ivec2: - return aggregate_vector (agg, slang_stor_int, 2); - case slang_spec_ivec3: - return aggregate_vector (agg, slang_stor_int, 3); - case slang_spec_ivec4: - return aggregate_vector (agg, slang_stor_int, 4); - case slang_spec_float: - return aggregate_vector (agg, slang_stor_float, 1); - case slang_spec_vec2: - return aggregate_vector (agg, slang_stor_float, 2); - case slang_spec_vec3: - return aggregate_vector (agg, slang_stor_float, 3); - case slang_spec_vec4: - return aggregate_vector (agg, slang_stor_float, 4); - case slang_spec_mat2: - return aggregate_matrix (agg, slang_stor_float, 2); - case slang_spec_mat3: - return aggregate_matrix (agg, slang_stor_float, 3); - case slang_spec_mat4: - return aggregate_matrix (agg, slang_stor_float, 4); - case slang_spec_sampler1D: - case slang_spec_sampler2D: - case slang_spec_sampler3D: - case slang_spec_samplerCube: - case slang_spec_sampler1DShadow: - case slang_spec_sampler2DShadow: - return aggregate_vector (agg, slang_stor_int, 1); - case slang_spec_struct: - return aggregate_variables (agg, spec->_struct->fields, funcs, structs); - case slang_spec_array: - { - slang_storage_array *arr; - slang_assembly_file file; - slang_assembly_flow_control flow; - slang_assembly_name_space space; - slang_assembly_local_info info; - slang_assembly_stack_info stk; - - arr = slang_storage_aggregate_push_new (agg); - if (arr == NULL) - return 0; - arr->type = slang_stor_aggregate; - arr->aggregate = (slang_storage_aggregate *) slang_alloc_malloc (sizeof ( - slang_storage_aggregate)); - if (arr->aggregate == NULL) - return 0; - slang_storage_aggregate_construct (arr->aggregate); - if (!_slang_aggregate_variable (arr->aggregate, spec->_array, NULL, funcs, structs)) - return 0; - slang_assembly_file_construct (&file); - space.funcs = funcs; - space.structs = structs; - /* XXX: vars! */ - space.vars = NULL; - if (!_slang_assemble_operation (&file, array_size, 0, &flow, &space, &info, &stk)) - { - slang_assembly_file_destruct (&file); - return 0; - } - /* TODO: evaluate array size */ - slang_assembly_file_destruct (&file); - arr->length = 256; - } - return 1; - default: - return 0; - } -} - -/* _slang_sizeof_aggregate() */ - -unsigned int _slang_sizeof_aggregate (const slang_storage_aggregate *agg) -{ - unsigned int i, size = 0; - for (i = 0; i < agg->count; i++) - { - unsigned int element_size; - if (agg->arrays[i].type == slang_stor_aggregate) - element_size = _slang_sizeof_aggregate (agg->arrays[i].aggregate); - else - element_size = sizeof (GLfloat); - size += element_size * agg->arrays[i].length; - } - return size; -} - -/* _slang_flatten_aggregate () */ - -int _slang_flatten_aggregate (slang_storage_aggregate *flat, const slang_storage_aggregate *agg) -{ - unsigned int i; - for (i = 0; i < agg->count; i++) - { - unsigned int j; - for (j = 0; j < agg->arrays[i].length; j++) - { - if (agg->arrays[i].type == slang_stor_aggregate) - { - if (!_slang_flatten_aggregate (flat, agg->arrays[i].aggregate)) - return 0; - } - else - { - slang_storage_array *arr; - arr = slang_storage_aggregate_push_new (flat); - if (arr == NULL) - return 0; - arr->type = agg->arrays[i].type; - arr->length = 1; - } - } - } - return 1; -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_storage.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_storage.h deleted file mode 100644 index 77962c198..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_storage.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_STORAGE_H -#define SLANG_STORAGE_H - -#include "slang_compile.h" - -#if defined __cplusplus -extern "C" { -#endif - -/* - Program variable data storage is kept completely transparent to the front-end compiler. It is - up to the back-end how the data is actually allocated. The slang_storage_type enum - provides the basic information about how the memory is interpreted. This abstract piece - of memory is called a data slot. A data slot of a particular type has a fixed size. - - For now, only the three basic types are supported, that is bool, int and float. Other built-in - types like vector or matrix can easily be decomposed into a series of basic types. -*/ -typedef enum slang_storage_type_ -{ - slang_stor_aggregate, - slang_stor_bool, - slang_stor_int, - slang_stor_float -} slang_storage_type; - -/* - The slang_storage_array structure groups data slots of the same type into an array. This - array has a fixed length. Arrays are required to have a size equal to the sum of sizes of its - elements. They are also required to support indirect addressing. That is, if B references - first data slot in the array, S is the size of the data slot and I is the integral index that - is not known at compile time, B+I*S references I-th data slot. - - This structure is also used to break down built-in data types that are not supported directly. - Vectors, like vec3, are constructed from arrays of their basic types. Matrices are formed of - an array of column vectors, which are in turn processed as other vectors. -*/ -typedef struct slang_storage_array_ -{ - slang_storage_type type; - struct slang_storage_aggregate_ *aggregate; /* slang_stor_aggregate */ - unsigned int length; -} slang_storage_array; - -void slang_storage_array_construct (slang_storage_array *); -void slang_storage_array_destruct (slang_storage_array *); - -/* - The slang_storage_aggregate structure relaxes the indirect addressing requirement for - slang_storage_array structure. Aggregates are always accessed statically - its member - addresses are well-known at compile time. For example, user-defined types are implemented as - aggregates. Aggregates can collect data of a different type. -*/ -typedef struct slang_storage_aggregate_ -{ - slang_storage_array *arrays; - unsigned int count; -} slang_storage_aggregate; - -void slang_storage_aggregate_construct (slang_storage_aggregate *); -void slang_storage_aggregate_destruct (slang_storage_aggregate *); - -int _slang_aggregate_variable (slang_storage_aggregate *, struct slang_type_specifier_ *, - struct slang_operation_ *, struct slang_function_scope_ *, slang_struct_scope *); - -/* - returns total size (in machine units) of the given aggregate - returns 0 on error -*/ -unsigned int _slang_sizeof_aggregate (const slang_storage_aggregate *); - -/* - converts structured aggregate to a flat one, with arrays of generic type being - one-element long - returns 1 on success - returns 0 otherwise -*/ -int _slang_flatten_aggregate (slang_storage_aggregate *, const slang_storage_aggregate *); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_utility.c b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_utility.c deleted file mode 100644 index b1b20d9e3..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_utility.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file slang_utility.c - * slang utilities - * \author Michal Krol - */ - -#include "imports.h" -#include "slang_utility.h" - -void slang_alloc_free (void *ptr) -{ - _mesa_free (ptr); -} - -void *slang_alloc_malloc (unsigned int size) -{ - return _mesa_malloc (size); -} - -void *slang_alloc_realloc (void *ptr, unsigned int old_size, unsigned int size) -{ - return _mesa_realloc (ptr, old_size, size); -} - -int slang_string_compare (const char *str1, const char *str2) -{ - return _mesa_strcmp (str1, str2); -} - -char *slang_string_copy (char *dst, const char *src) -{ - return _mesa_strcpy (dst, src); -} - -char *slang_string_concat (char *dst, const char *src) -{ - return _mesa_strcpy (dst + _mesa_strlen (dst), src); -} - -char *slang_string_duplicate (const char *src) -{ - return _mesa_strdup (src); -} - -unsigned int slang_string_length (const char *str) -{ - return _mesa_strlen (str); -} - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_utility.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_utility.h deleted file mode 100644 index 04afa18d1..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/slang_utility.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#if !defined SLANG_UTILITY_H -#define SLANG_UTILITY_H - -#if defined __cplusplus -extern "C" { -#endif - -/* Compile-time assertions. If the expression is zero, try to declare an - * array of size [-1] to cause compilation error. - */ -#define _static_assert(expr) do { int _array[(expr) ? 1 : -1]; _array[0]; } while (0) - -void slang_alloc_free (void *); -void *slang_alloc_malloc (unsigned int); -void *slang_alloc_realloc (void *, unsigned int, unsigned int); -int slang_string_compare (const char *, const char *); -char *slang_string_copy (char *, const char *); -char *slang_string_concat (char *, const char *); -char *slang_string_duplicate (const char *); -unsigned int slang_string_length (const char *); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/nx-X11/extras/Mesa/src/mesa/shader/slang/traverse_wrap.h b/nx-X11/extras/Mesa/src/mesa/shader/slang/traverse_wrap.h deleted file mode 100644 index b2f244ee0..000000000 --- a/nx-X11/extras/Mesa/src/mesa/shader/slang/traverse_wrap.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file traverse_wrap.h - * Handy TIntermTraverser class wrapper - * \author Michal Krol - */ - -#ifndef __TRAVERSE_WRAP_H__ -#define __TRAVERSE_WRAP_H__ - -#include "Include/intermediate.h" - -/* - The original TIntermTraverser class that is used to walk the intermediate tree, - is not very elegant in its design. One must define static functions with - appropriate prototypes, construct TIntermTraverser object, and set its member - function pointers to one's static functions. If traversal-specific data - is needed, a new class must be derived, and one must up-cast the object - passed as a parameter to the static function. - - The class below eliminates this burden by providing virtual methods that are - to be overridden in the derived class. -*/ - -class traverse_wrap: private TIntermTraverser -{ -private: - static void _visitSymbol (TIntermSymbol *S, TIntermTraverser *T) { - static_cast (T)->Symbol (*S); - } - static void _visitConstantUnion (TIntermConstantUnion *U, TIntermTraverser *T) { - static_cast (T)->ConstantUnion (*U); - } - static bool _visitBinary (bool preVisit, TIntermBinary *B, TIntermTraverser *T) { - return static_cast (T)->Binary (preVisit, *B); - } - static bool _visitUnary (bool preVisit, TIntermUnary *U, TIntermTraverser *T) { - return static_cast (T)->Unary (preVisit, *U); - } - static bool _visitSelection (bool preVisit, TIntermSelection *S, TIntermTraverser *T) { - return static_cast (T)->Selection (preVisit, *S); - } - static bool _visitAggregate (bool preVisit, TIntermAggregate *A, TIntermTraverser *T) { - return static_cast (T)->Aggregate (preVisit, *A); - } - static bool _visitLoop (bool preVisit, TIntermLoop *L, TIntermTraverser *T) { - return static_cast (T)->Loop (preVisit, *L); - } - static bool _visitBranch (bool preVisit, TIntermBranch *B, TIntermTraverser *T) { - return static_cast (T)->Branch (preVisit, *B); - } -public: - traverse_wrap () { - visitSymbol = _visitSymbol; - visitConstantUnion = _visitConstantUnion; - visitBinary = _visitBinary; - visitUnary = _visitUnary; - visitSelection = _visitSelection; - visitAggregate = _visitAggregate; - visitLoop = _visitLoop; - visitBranch = _visitBranch; - } -protected: - virtual void Symbol (const TIntermSymbol &) { - } - virtual void ConstantUnion (const TIntermConstantUnion &) { - } - virtual bool Binary (bool, const TIntermBinary &) { - return true; - } - virtual bool Unary (bool, const TIntermUnary &) { - return true; - } - virtual bool Selection (bool, const TIntermSelection &) { - return true; - } - virtual bool Aggregate (bool, const TIntermAggregate &) { - return true; - } - virtual bool Loop (bool, const TIntermLoop &) { - return true; - } - virtual bool Branch (bool, const TIntermBranch &) { - return true; - } -}; - -#endif - -- cgit v1.2.3