summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2023-02-07 17:52:17 -0600
committersanine <sanine.not@pm.me>2023-02-07 17:52:17 -0600
commit79f4b0d33cbb490f957d081bd7c8bc97bd4c689c (patch)
treebe04a0dd98ca341a46bd65cf400a20e1c66f3563
parentf547164540f4ac7f8436fef8e981b1fef503f08c (diff)
fix parser using REJECT so that example works
-rw-r--r--example/CMakeLists.txt2
-rw-r--r--example/example.c30
-rw-r--r--example/suzanne.dae69
-rw-r--r--example/white-cube.dae126
-rw-r--r--include/kalmia.h20
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/geometry/geometry.c51
-rw-r--r--src/geometry/geometry.h3
-rw-r--r--src/kalmia.c54
-rw-r--r--src/xml/kalmia.lex.c1530
-rw-r--r--src/xml/kalmia.lex.h7
-rwxr-xr-xyy/demobin0 -> 86304 bytes
-rw-r--r--yy/kalmia.l13
-rw-r--r--yy/kalmia.lex.c3377
-rw-r--r--yy/kalmia.lex.h736
-rw-r--r--yy/kalmia.tab.c2007
-rw-r--r--yy/kalmia.tab.h141
-rw-r--r--yy/makefile2
18 files changed, 7784 insertions, 385 deletions
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index 7951b9f..108d5cc 100644
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -1,4 +1,4 @@
project(kalmia)
target_sources(kalmia-example PUBLIC example.c)
-file(COPY white-cube.dae DESTINATION ${CMAKE_BINARY_DIR})
+file(COPY suzanne.dae DESTINATION ${CMAKE_BINARY_DIR})
diff --git a/example/example.c b/example/example.c
index 050afa3..bf315f0 100644
--- a/example/example.c
+++ b/example/example.c
@@ -3,5 +3,35 @@
int main()
{
+ struct kalmia_t *k = kalmia_parse_file("suzanne.dae");
+ if (k == NULL) {
+ fprintf(stderr, "Failed to read file!\n");
+ return 1;
+ }
+
+ printf(
+ "library_geometries[id=%s, name=%s]\n",
+ k->library_geometries->id,
+ k->library_geometries->name
+ );
+
+ int i;
+ for (i=0; i<k->library_geometries->geometry_count; i++) {
+ struct ka_geometry_t *g = k->library_geometries->geometry + i;
+ printf(" geometry[id=%s, name=%s]\n", g->id, g->name);
+ printf(" mesh\n");
+
+ int j;
+ for (j=0; j<g->mesh.source_count; j++) {
+ struct ka_source_t s = g->mesh.source[j];
+ printf(" source[id=%s, name=%s]\n", s.id, s.name);
+ }
+ for (j=0; j<g->mesh.triangles_count; j++) {
+ struct ka_triangles_t t = g->mesh.triangles[j];
+ printf(" triangles[name=%s, count=%d, material=%s]\n", t.name, t.count, t.material);
+ }
+ }
+
+ kalmia_destroy(k);
return 0;
}
diff --git a/example/suzanne.dae b/example/suzanne.dae
new file mode 100644
index 0000000..0c70072
--- /dev/null
+++ b/example/suzanne.dae
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <asset>
+ <contributor>
+ <author>Blender User</author>
+ <authoring_tool>Blender 2.82.7</authoring_tool>
+ </contributor>
+ <created>2022-09-27T16:47:46</created>
+ <modified>2022-09-27T16:47:46</modified>
+ <unit name="meter" meter="1"/>
+ <up_axis>Z_UP</up_axis>
+ </asset>
+ <library_images/>
+ <library_geometries>
+ <geometry id="Suzanne-mesh" name="Suzanne">
+ <mesh>
+ <source id="Suzanne-mesh-positions">
+ <float_array id="Suzanne-mesh-positions-array" count="1521">0.4375 -0.765625 0.1640625 -0.4375 -0.765625 0.1640625 0.5 -0.6875 0.09375 -0.5 -0.6875 0.09375 0.546875 -0.578125 0.0546875 -0.546875 -0.578125 0.0546875 0.3515625 -0.6171875 -0.0234375 -0.3515625 -0.6171875 -0.0234375 0.3515625 -0.71875 0.03125 -0.3515625 -0.71875 0.03125 0.3515625 -0.78125 0.1328125 -0.3515625 -0.78125 0.1328125 0.2734375 -0.796875 0.1640625 -0.2734375 -0.796875 0.1640625 0.203125 -0.7421875 0.09375 -0.203125 -0.7421875 0.09375 0.15625 -0.6484375 0.0546875 -0.15625 -0.6484375 0.0546875 0.078125 -0.65625 0.2421875 -0.078125 -0.65625 0.2421875 0.140625 -0.7421875 0.2421875 -0.140625 -0.7421875 0.2421875 0.2421875 -0.796875 0.2421875 -0.2421875 -0.796875 0.2421875 0.2734375 -0.796875 0.328125 -0.2734375 -0.796875 0.328125 0.203125 -0.7421875 0.390625 -0.203125 -0.7421875 0.390625 0.15625 -0.6484375 0.4375 -0.15625 -0.6484375 0.4375 0.3515625 -0.6171875 0.515625 -0.3515625 -0.6171875 0.515625 0.3515625 -0.71875 0.453125 -0.3515625 -0.71875 0.453125 0.3515625 -0.78125 0.359375 -0.3515625 -0.78125 0.359375 0.4375 -0.765625 0.328125 -0.4375 -0.765625 0.328125 0.5 -0.6875 0.390625 -0.5 -0.6875 0.390625 0.546875 -0.578125 0.4375 -0.546875 -0.578125 0.4375 0.625 -0.5625 0.2421875 -0.625 -0.5625 0.2421875 0.5625 -0.671875 0.2421875 -0.5625 -0.671875 0.2421875 0.46875 -0.7578125 0.2421875 -0.46875 -0.7578125 0.2421875 0.4765625 -0.7734375 0.2421875 -0.4765625 -0.7734375 0.2421875 0.4453125 -0.78125 0.3359375 -0.4453125 -0.78125 0.3359375 0.3515625 -0.8046875 0.375 -0.3515625 -0.8046875 0.375 0.265625 -0.8203125 0.3359375 -0.265625 -0.8203125 0.3359375 0.2265625 -0.8203125 0.2421875 -0.2265625 -0.8203125 0.2421875 0.265625 -0.8203125 0.15625 -0.265625 -0.8203125 0.15625 0.3515625 -0.828125 0.2421875 -0.3515625 -0.828125 0.2421875 0.3515625 -0.8046875 0.1171875 -0.3515625 -0.8046875 0.1171875 0.4453125 -0.78125 0.15625 -0.4453125 -0.78125 0.15625 0 -0.7421875 0.4296875 0 -0.8203125 0.3515625 0 -0.734375 -0.6796875 0 -0.78125 -0.3203125 0 -0.796875 -0.1875 0 -0.71875 -0.7734375 0 -0.6015625 0.40625 0 -0.5703125 0.5703125 0 0.546875 0.8984375 0 0.8515625 0.5625 0 0.828125 0.0703125 0 0.3515625 -0.3828125 0.203125 -0.5625 -0.1875 -0.203125 -0.5625 -0.1875 0.3125 -0.5703125 -0.4375 -0.3125 -0.5703125 -0.4375 0.3515625 -0.5703125 -0.6953125 -0.3515625 -0.5703125 -0.6953125 0.3671875 -0.53125 -0.890625 -0.3671875 -0.53125 -0.890625 0.328125 -0.5234375 -0.9453125 -0.328125 -0.5234375 -0.9453125 0.1796875 -0.5546875 -0.96875 -0.1796875 -0.5546875 -0.96875 0 -0.578125 -0.984375 0.4375 -0.53125 -0.140625 -0.4375 -0.53125 -0.140625 0.6328125 -0.5390625 -0.0390625 -0.6328125 -0.5390625 -0.0390625 0.828125 -0.4453125 0.1484375 -0.828125 -0.4453125 0.1484375 0.859375 -0.59375 0.4296875 -0.859375 -0.59375 0.4296875 0.7109375 -0.625 0.484375 -0.7109375 -0.625 0.484375 0.4921875 -0.6875 0.6015625 -0.4921875 -0.6875 0.6015625 0.3203125 -0.734375 0.7578125 -0.3203125 -0.734375 0.7578125 0.15625 -0.7578125 0.71875 -0.15625 -0.7578125 0.71875 0.0625 -0.75 0.4921875 -0.0625 -0.75 0.4921875 0.1640625 -0.7734375 0.4140625 -0.1640625 -0.7734375 0.4140625 0.125 -0.765625 0.3046875 -0.125 -0.765625 0.3046875 0.203125 -0.7421875 0.09375 -0.203125 -0.7421875 0.09375 0.375 -0.703125 0.015625 -0.375 -0.703125 0.015625 0.4921875 -0.671875 0.0625 -0.4921875 -0.671875 0.0625 0.625 -0.6484375 0.1875 -0.625 -0.6484375 0.1875 0.640625 -0.6484375 0.296875 -0.640625 -0.6484375 0.296875 0.6015625 -0.6640625 0.375 -0.6015625 -0.6640625 0.375 0.4296875 -0.71875 0.4375 -0.4296875 -0.71875 0.4375 0.25 -0.7578125 0.46875 -0.25 -0.7578125 0.46875 0 -0.734375 -0.765625 0.109375 -0.734375 -0.71875 -0.109375 -0.734375 -0.71875 0.1171875 -0.7109375 -0.8359375 -0.1171875 -0.7109375 -0.8359375 0.0625 -0.6953125 -0.8828125 -0.0625 -0.6953125 -0.8828125 0 -0.6875 -0.890625 0 -0.75 -0.1953125 0 -0.7421875 -0.140625 0.1015625 -0.7421875 -0.1484375 -0.1015625 -0.7421875 -0.1484375 0.125 -0.75 -0.2265625 -0.125 -0.75 -0.2265625 0.0859375 -0.7421875 -0.2890625 -0.0859375 -0.7421875 -0.2890625 0.3984375 -0.671875 -0.046875 -0.3984375 -0.671875 -0.046875 0.6171875 -0.625 0.0546875 -0.6171875 -0.625 0.0546875 0.7265625 -0.6015625 0.203125 -0.7265625 -0.6015625 0.203125 0.7421875 -0.65625 0.375 -0.7421875 -0.65625 0.375 0.6875 -0.7265625 0.4140625 -0.6875 -0.7265625 0.4140625 0.4375 -0.796875 0.546875 -0.4375 -0.796875 0.546875 0.3125 -0.8359375 0.640625 -0.3125 -0.8359375 0.640625 0.203125 -0.8515625 0.6171875 -0.203125 -0.8515625 0.6171875 0.1015625 -0.84375 0.4296875 -0.1015625 -0.84375 0.4296875 0.125 -0.8125 -0.1015625 -0.125 -0.8125 -0.1015625 0.2109375 -0.7109375 -0.4453125 -0.2109375 -0.7109375 -0.4453125 0.25 -0.6875 -0.703125 -0.25 -0.6875 -0.703125 0.265625 -0.6640625 -0.8203125 -0.265625 -0.6640625 -0.8203125 0.234375 -0.6328125 -0.9140625 -0.234375 -0.6328125 -0.9140625 0.1640625 -0.6328125 -0.9296875 -0.1640625 -0.6328125 -0.9296875 0 -0.640625 -0.9453125 0 -0.7265625 0.046875 0 -0.765625 0.2109375 0.328125 -0.7421875 0.4765625 -0.328125 -0.7421875 0.4765625 0.1640625 -0.75 0.140625 -0.1640625 -0.75 0.140625 0.1328125 -0.7578125 0.2109375 -0.1328125 -0.7578125 0.2109375 0.1171875 -0.734375 -0.6875 -0.1171875 -0.734375 -0.6875 0.078125 -0.75 -0.4453125 -0.078125 -0.75 -0.4453125 0 -0.75 -0.4453125 0 -0.7421875 -0.328125 0.09375 -0.78125 -0.2734375 -0.09375 -0.78125 -0.2734375 0.1328125 -0.796875 -0.2265625 -0.1328125 -0.796875 -0.2265625 0.109375 -0.78125 -0.1328125 -0.109375 -0.78125 -0.1328125 0.0390625 -0.78125 -0.125 -0.0390625 -0.78125 -0.125 0 -0.828125 -0.203125 0.046875 -0.8125 -0.1484375 -0.046875 -0.8125 -0.1484375 0.09375 -0.8125 -0.15625 -0.09375 -0.8125 -0.15625 0.109375 -0.828125 -0.2265625 -0.109375 -0.828125 -0.2265625 0.078125 -0.8046875 -0.25 -0.078125 -0.8046875 -0.25 0 -0.8046875 -0.2890625 0.2578125 -0.5546875 -0.3125 -0.2578125 -0.5546875 -0.3125 0.1640625 -0.7109375 -0.2421875 -0.1640625 -0.7109375 -0.2421875 0.1796875 -0.7109375 -0.3125 -0.1796875 -0.7109375 -0.3125 0.234375 -0.5546875 -0.25 -0.234375 -0.5546875 -0.25 0 -0.6875 -0.875 0.046875 -0.6875 -0.8671875 -0.046875 -0.6875 -0.8671875 0.09375 -0.7109375 -0.8203125 -0.09375 -0.7109375 -0.8203125 0.09375 -0.7265625 -0.7421875 -0.09375 -0.7265625 -0.7421875 0 -0.65625 -0.78125 0.09375 -0.6640625 -0.75 -0.09375 -0.6640625 -0.75 0.09375 -0.640625 -0.8125 -0.09375 -0.640625 -0.8125 0.046875 -0.6328125 -0.8515625 -0.046875 -0.6328125 -0.8515625 0 -0.6328125 -0.859375 0.171875 -0.78125 0.21875 -0.171875 -0.78125 0.21875 0.1875 -0.7734375 0.15625 -0.1875 -0.7734375 0.15625 0.3359375 -0.7578125 0.4296875 -0.3359375 -0.7578125 0.4296875 0.2734375 -0.7734375 0.421875 -0.2734375 -0.7734375 0.421875 0.421875 -0.7734375 0.3984375 -0.421875 -0.7734375 0.3984375 0.5625 -0.6953125 0.3515625 -0.5625 -0.6953125 0.3515625 0.5859375 -0.6875 0.2890625 -0.5859375 -0.6875 0.2890625 0.578125 -0.6796875 0.1953125 -0.578125 -0.6796875 0.1953125 0.4765625 -0.71875 0.1015625 -0.4765625 -0.71875 0.1015625 0.375 -0.7421875 0.0625 -0.375 -0.7421875 0.0625 0.2265625 -0.78125 0.109375 -0.2265625 -0.78125 0.109375 0.1796875 -0.78125 0.296875 -0.1796875 -0.78125 0.296875 0.2109375 -0.78125 0.375 -0.2109375 -0.78125 0.375 0.234375 -0.7578125 0.359375 -0.234375 -0.7578125 0.359375 0.1953125 -0.7578125 0.296875 -0.1953125 -0.7578125 0.296875 0.2421875 -0.7578125 0.125 -0.2421875 -0.7578125 0.125 0.375 -0.7265625 0.0859375 -0.375 -0.7265625 0.0859375 0.4609375 -0.703125 0.1171875 -0.4609375 -0.703125 0.1171875 0.546875 -0.671875 0.2109375 -0.546875 -0.671875 0.2109375 0.5546875 -0.671875 0.28125 -0.5546875 -0.671875 0.28125 0.53125 -0.6796875 0.3359375 -0.53125 -0.6796875 0.3359375 0.4140625 -0.75 0.390625 -0.4140625 -0.75 0.390625 0.28125 -0.765625 0.3984375 -0.28125 -0.765625 0.3984375 0.3359375 -0.75 0.40625 -0.3359375 -0.75 0.40625 0.203125 -0.75 0.171875 -0.203125 -0.75 0.171875 0.1953125 -0.75 0.2265625 -0.1953125 -0.75 0.2265625 0.109375 -0.609375 0.4609375 -0.109375 -0.609375 0.4609375 0.1953125 -0.6171875 0.6640625 -0.1953125 -0.6171875 0.6640625 0.3359375 -0.59375 0.6875 -0.3359375 -0.59375 0.6875 0.484375 -0.5546875 0.5546875 -0.484375 -0.5546875 0.5546875 0.6796875 -0.4921875 0.453125 -0.6796875 -0.4921875 0.453125 0.796875 -0.4609375 0.40625 -0.796875 -0.4609375 0.40625 0.7734375 -0.375 0.1640625 -0.7734375 -0.375 0.1640625 0.6015625 -0.4140625 0 -0.6015625 -0.4140625 0 0.4375 -0.46875 -0.09375 -0.4375 -0.46875 -0.09375 0 -0.2890625 0.8984375 0 0.078125 0.984375 0 0.671875 -0.1953125 0 -0.1875 -0.4609375 0 -0.4609375 -0.9765625 0 -0.34375 -0.8046875 0 -0.3203125 -0.5703125 0 -0.28125 -0.484375 0.8515625 -0.0546875 0.234375 -0.8515625 -0.0546875 0.234375 0.859375 0.046875 0.3203125 -0.859375 0.046875 0.3203125 0.7734375 0.4375 0.265625 -0.7734375 0.4375 0.265625 0.4609375 0.703125 0.4375 -0.4609375 0.703125 0.4375 0.734375 -0.0703125 -0.046875 -0.734375 -0.0703125 -0.046875 0.59375 0.1640625 -0.125 -0.59375 0.1640625 -0.125 0.640625 0.4296875 -0.0078125 -0.640625 0.4296875 -0.0078125 0.3359375 0.6640625 0.0546875 -0.3359375 0.6640625 0.0546875 0.234375 -0.40625 -0.3515625 -0.234375 -0.40625 -0.3515625 0.1796875 -0.2578125 -0.4140625 -0.1796875 -0.2578125 -0.4140625 0.2890625 -0.3828125 -0.7109375 -0.2890625 -0.3828125 -0.7109375 0.25 -0.390625 -0.5 -0.25 -0.390625 -0.5 0.328125 -0.3984375 -0.9140625 -0.328125 -0.3984375 -0.9140625 0.140625 -0.3671875 -0.7578125 -0.140625 -0.3671875 -0.7578125 0.125 -0.359375 -0.5390625 -0.125 -0.359375 -0.5390625 0.1640625 -0.4375 -0.9453125 -0.1640625 -0.4375 -0.9453125 0.21875 -0.4296875 -0.28125 -0.21875 -0.4296875 -0.28125 0.2109375 -0.46875 -0.2265625 -0.2109375 -0.46875 -0.2265625 0.203125 -0.5 -0.171875 -0.203125 -0.5 -0.171875 0.2109375 -0.1640625 -0.390625 -0.2109375 -0.1640625 -0.390625 0.296875 0.265625 -0.3125 -0.296875 0.265625 -0.3125 0.34375 0.5390625 -0.1484375 -0.34375 0.5390625 -0.1484375 0.453125 0.3828125 0.8671875 -0.453125 0.3828125 0.8671875 0.453125 0.0703125 0.9296875 -0.453125 0.0703125 0.9296875 0.453125 -0.234375 0.8515625 -0.453125 -0.234375 0.8515625 0.4609375 -0.4296875 0.5234375 -0.4609375 -0.4296875 0.5234375 0.7265625 -0.3359375 0.40625 -0.7265625 -0.3359375 0.40625 0.6328125 -0.28125 0.453125 -0.6328125 -0.28125 0.453125 0.640625 -0.0546875 0.703125 -0.640625 -0.0546875 0.703125 0.796875 -0.125 0.5625 -0.796875 -0.125 0.5625 0.796875 0.1171875 0.6171875 -0.796875 0.1171875 0.6171875 0.640625 0.1953125 0.75 -0.640625 0.1953125 0.75 0.640625 0.4453125 0.6796875 -0.640625 0.4453125 0.6796875 0.796875 0.359375 0.5390625 -0.796875 0.359375 0.5390625 0.6171875 0.5859375 0.328125 -0.6171875 0.5859375 0.328125 0.484375 0.546875 0.0234375 -0.484375 0.546875 0.0234375 0.8203125 0.203125 0.328125 -0.8203125 0.203125 0.328125 0.40625 -0.1484375 -0.171875 -0.40625 -0.1484375 -0.171875 0.4296875 0.2109375 -0.1953125 -0.4296875 0.2109375 -0.1953125 0.890625 0.234375 0.40625 -0.890625 0.234375 0.40625 0.7734375 0.125 -0.140625 -0.7734375 0.125 -0.140625 1.039062 0.328125 -0.1015625 -1.039062 0.328125 -0.1015625 1.28125 0.4296875 0.0546875 -1.28125 0.4296875 0.0546875 1.351562 0.421875 0.3203125 -1.351562 0.421875 0.3203125 1.234375 0.421875 0.5078125 -1.234375 0.421875 0.5078125 1.023437 0.3125 0.4765625 -1.023437 0.3125 0.4765625 1.015625 0.2890625 0.4140625 -1.015625 0.2890625 0.4140625 1.1875 0.390625 0.4375 -1.1875 0.390625 0.4375 1.265625 0.40625 0.2890625 -1.265625 0.40625 0.2890625 1.210937 0.40625 0.078125 -1.210937 0.40625 0.078125 1.03125 0.3046875 -0.0390625 -1.03125 0.3046875 -0.0390625 0.828125 0.1328125 -0.0703125 -0.828125 0.1328125 -0.0703125 0.921875 0.21875 0.359375 -0.921875 0.21875 0.359375 0.9453125 0.2890625 0.3046875 -0.9453125 0.2890625 0.3046875 0.8828125 0.2109375 -0.0234375 -0.8828125 0.2109375 -0.0234375 1.039062 0.3671875 0 -1.039062 0.3671875 0 1.1875 0.4453125 0.09375 -1.1875 0.4453125 0.09375 1.234375 0.4453125 0.25 -1.234375 0.4453125 0.25 1.171875 0.4375 0.359375 -1.171875 0.4375 0.359375 1.023437 0.359375 0.34375 -1.023437 0.359375 0.34375 0.84375 0.2109375 0.2890625 -0.84375 0.2109375 0.2890625 0.8359375 0.2734375 0.171875 -0.8359375 0.2734375 0.171875 0.7578125 0.2734375 0.09375 -0.7578125 0.2734375 0.09375 0.8203125 0.2734375 0.0859375 -0.8203125 0.2734375 0.0859375 0.84375 0.2734375 0.015625 -0.84375 0.2734375 0.015625 0.8125 0.2734375 -0.015625 -0.8125 0.2734375 -0.015625 0.7265625 0.0703125 0 -0.7265625 0.0703125 0 0.71875 0.171875 -0.0234375 -0.71875 0.171875 -0.0234375 0.71875 0.1875 0.0390625 -0.71875 0.1875 0.0390625 0.796875 0.2109375 0.203125 -0.796875 0.2109375 0.203125 0.890625 0.265625 0.2421875 -0.890625 0.265625 0.2421875 0.890625 0.3203125 0.234375 -0.890625 0.3203125 0.234375 0.8125 0.3203125 -0.015625 -0.8125 0.3203125 -0.015625 0.8515625 0.3203125 0.015625 -0.8515625 0.3203125 0.015625 0.828125 0.3203125 0.078125 -0.828125 0.3203125 0.078125 0.765625 0.3203125 0.09375 -0.765625 0.3203125 0.09375 0.84375 0.3203125 0.171875 -0.84375 0.3203125 0.171875 1.039062 0.4140625 0.328125 -1.039062 0.4140625 0.328125 1.1875 0.484375 0.34375 -1.1875 0.484375 0.34375 1.257812 0.4921875 0.2421875 -1.257812 0.4921875 0.2421875 1.210937 0.484375 0.0859375 -1.210937 0.484375 0.0859375 1.046875 0.421875 0 -1.046875 0.421875 0 0.8828125 0.265625 -0.015625 -0.8828125 0.265625 -0.015625 0.953125 0.34375 0.2890625 -0.953125 0.34375 0.2890625 0.890625 0.328125 0.109375 -0.890625 0.328125 0.109375 0.9375 0.3359375 0.0625 -0.9375 0.3359375 0.0625 1 0.3671875 0.125 -1 0.3671875 0.125 0.9609375 0.3515625 0.171875 -0.9609375 0.3515625 0.171875 1.015625 0.375 0.234375 -1.015625 0.375 0.234375 1.054687 0.3828125 0.1875 -1.054687 0.3828125 0.1875 1.109375 0.390625 0.2109375 -1.109375 0.390625 0.2109375 1.085937 0.390625 0.2734375 -1.085937 0.390625 0.2734375 1.023437 0.484375 0.4375 -1.023437 0.484375 0.4375 1.25 0.546875 0.46875 -1.25 0.546875 0.46875 1.367187 0.5 0.296875 -1.367187 0.5 0.296875 1.3125 0.53125 0.0546875 -1.3125 0.53125 0.0546875 1.039062 0.4921875 -0.0859375 -1.039062 0.4921875 -0.0859375 0.7890625 0.328125 -0.125 -0.7890625 0.328125 -0.125 0.859375 0.3828125 0.3828125 -0.859375 0.3828125 0.3828125</float_array>
+ <technique_common>
+ <accessor source="#Suzanne-mesh-positions-array" count="507" stride="3">
+ <param name="X" type="float"/>
+ <param name="Y" type="float"/>
+ <param name="Z" type="float"/>
+ </accessor>
+ </technique_common>
+ </source>
+ <source id="Suzanne-mesh-normals">
+ <float_array id="Suzanne-mesh-normals-array" count="2829">0.6617073 -0.7218625 -0.202628 -0.6617073 -0.7218625 -0.202628 0.8268342 -0.4724767 -0.3051412 -0.8268342 -0.4724767 -0.3051412 0.4076249 -0.457034 -0.7905453 -0.4076249 -0.457034 -0.7905453 0.3790667 -0.767937 -0.5163151 -0.3790667 -0.767937 -0.5163151 -0.08588171 -0.8485118 -0.5221611 0.08588171 -0.8485118 -0.5221611 -0.2663503 -0.4569736 -0.8486652 0.2663503 -0.4569736 -0.8486652 -0.7824203 -0.5284768 -0.3294401 0.7605702 -0.5531419 -0.3399518 -0.4767313 -0.8581163 -0.1906925 0.464927 -0.8634359 -0.1957587 -0.464927 -0.8634359 0.1957587 0.464927 -0.8634359 0.1957587 -0.7655678 -0.5567766 0.3223443 0.7683498 -0.5488213 0.3292928 -0.2559869 -0.531665 0.8073432 0.2487366 -0.5076257 0.8248918 -0.08213782 -0.7939993 0.6023442 0.1016523 -0.8277404 0.5518269 0.3328619 -0.7846031 0.5230687 -0.38606 -0.7445443 0.5446204 0.4245669 -0.474516 0.7710886 -0.4059141 -0.5014233 0.7640736 0.8250747 -0.480799 0.2967895 -0.8298687 -0.4742107 0.2940106 0.6887994 -0.700474 0.186793 -0.6617073 -0.7218625 0.202628 0.839964 0.419982 0.3436216 -0.7815718 0.5437021 0.3058325 0.2073903 0.5184759 0.8295614 -0.2036532 0.5430754 0.8146131 -0.4056161 0.5070202 0.7605302 0.4380629 0.4122945 0.7988205 -0.8642417 0.3928371 0.3142697 0.7861462 0.5240975 0.3275609 -0.77825 0.5188333 -0.35375 0.77825 0.5188333 -0.35375 -0.4380629 0.4122945 -0.7988205 0.4380629 0.4122945 -0.7988205 0.2036532 0.5430754 -0.8146131 -0.2036532 0.5430754 -0.8146131 0.7683498 0.5488213 -0.3292928 -0.7683498 0.5488213 -0.3292928 0.4000391 -0.9143752 -0.06234371 -0.4000391 -0.9143752 -0.06234371 0.3069375 -0.9354286 -0.1753928 -0.3069375 -0.9354286 -0.1753928 0.09451156 -0.9784727 -0.1834636 -0.09451156 -0.9784727 -0.1834636 -0.06235319 -0.9976517 -0.02834236 0.06235319 -0.9976517 -0.02834236 -0.06235718 -0.9977157 0.02598214 0.06235718 -0.9977157 0.02598214 0.09956103 -0.9798906 0.1729218 -0.09956103 -0.9798906 0.1729218 0.3035711 -0.9383106 0.1655842 -0.3035711 -0.9383106 0.1655842 0.4001634 -0.9146592 0.05716615 -0.4001634 -0.9146592 0.05716615 0.1366916 -0.4647516 -0.8748265 -0.1054092 -0.5270463 -0.8432741 0.2302893 -0.4446966 -0.8655703 -0.1915565 -0.4693133 -0.8620042 0.5787932 -0.6403669 -0.5049047 -0.5787932 -0.6403669 -0.5049047 0.7763028 -0.6271709 -0.06332993 -0.7763028 -0.6271709 -0.06332993 0.7470849 -0.6550199 0.1131947 -0.7470849 -0.6550199 0.1131947 0.3746549 -0.4039526 -0.8345395 -0.3746549 -0.4039526 -0.8345395 0.355697 -0.5848173 -0.7290188 -0.4177436 -0.7033636 -0.5751261 0.6947315 -0.5841416 -0.4196746 -0.6947315 -0.5841416 -0.4196746 0.7028484 -0.5938889 -0.3915356 -0.5537071 -0.7776508 -0.2977713 0.3126936 -0.8859652 0.3424739 -0.822669 -0.4395081 0.3606221 0.5090584 -0.5662559 0.6482391 -0.504141 -0.5744863 0.6448315 0.5977159 -0.577105 0.5564941 -0.5977159 -0.577105 0.5564941 -0.04859292 -0.7531908 0.6560049 0.03713905 -0.7427814 0.6685032 -0.7103534 -0.6493535 0.2715478 0.7386325 -0.5589652 0.3768024 -0.6013168 -0.6013168 0.5261523 0.5773503 -0.5773503 0.5773503 0.5070232 -0.5902658 -0.6281034 -0.5364082 -0.7796863 -0.3230413 0.2226453 -0.8544765 -0.4693604 -0.2226453 -0.8544765 -0.4693604 -0.03484123 -0.8144149 -0.5792362 0.1073484 -0.8587875 -0.5009594 -0.0899018 -0.6138126 -0.7843162 0.07701516 -0.8139104 -0.5758634 0.05466765 -0.9840181 -0.1694698 -0.02788555 -0.5019403 -0.8644527 0.4259846 -0.9026816 -0.06085491 -0.1686746 -0.9347384 -0.3127508 0.335168 -0.924251 -0.1828188 -0.4349679 -0.8820183 -0.1812366 0.3578878 -0.8819378 -0.306761 -0.322277 -0.9054449 -0.2762374 0 -0.8944272 -0.4472136 -0.1598238 -0.9066929 0.390339 0.1598238 -0.9066929 0.390339 0.6818851 -0.6708869 -0.2914509 -0.1853964 -0.8485455 -0.4955791 0.05854284 -0.9952285 -0.07805711 -0.05854284 -0.9952285 -0.07805711 -0.006617546 -0.9727849 -0.2316154 -0.05851191 -0.9947026 -0.08451718 0.1008231 -0.6965958 -0.7103444 -0.1008231 -0.6965958 -0.7103444 0.1321637 -0.7929823 -0.5947368 -0.1321637 -0.7929823 -0.5947368 0.3128082 -0.9351661 -0.1661793 -0.3142697 -0.8642417 -0.3928371 0.3288394 -0.9437008 -0.03596681 -0.3288394 -0.9437008 -0.03596681 0.3232635 -0.9428519 -0.08081585 -0.3232635 -0.9428519 -0.08081585 -0.02321916 -0.9984245 0.05108213 0 -0.9977853 0.06651902 -0.004338562 -0.9978708 -0.06507849 0 -0.9977853 -0.06651902 0 -1 0 0.8446531 -0.0444554 -0.5334651 -0.8446531 -0.0444554 -0.5334651 0.9256246 0.2848076 0.2492066 -0.963518 0.1605863 0.2141151 0.06926429 0.4294387 0.9004359 -0.1018289 0.3869501 0.9164609 -1 0 0 0.6904563 -0.4707656 0.5492266 0.40711 -0.1791284 -0.8956419 -0.4319342 -0.2591605 -0.8638684 0.2873479 -0.766261 -0.5746958 -0.2873479 -0.7662611 -0.5746958 -0.6326428 -0.5596455 0.5353131 0.6326428 -0.5596455 0.5353131 0.08620607 -0.6249942 0.775855 -0.08620607 -0.6249942 0.775855 0.7532497 -0.591839 0.2869523 -0.7638854 -0.5729141 0.2970665 0.3416045 -0.7686102 -0.5408739 -0.3416045 -0.7686102 -0.5408739 0.05021667 -0.9708558 0.2343445 -0.03745025 -0.9737077 0.2247017 -0.1304348 -0.7826087 -0.6086957 0.1304348 -0.7826087 -0.6086957 -0.5059133 -0.8596048 0.07163369 0.5059133 -0.8596048 0.07163369 -0.5773503 -0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 0.5459861 -0.7184027 -0.4310416 -0.3319135 -0.9404218 0.07375854 0.3230722 -0.9458619 0.03113949 -0.2815465 -0.9572582 0.06624621 0.7356952 -0.5530576 0.3909988 -0.8752544 -0.4376272 0.2059422 0.8479984 -0.4239992 0.3179994 -0.897301 -0.3938155 0.1994002 0.8505471 -0.363756 0.3798041 -0.8505471 -0.363756 0.3798041 0.1783314 -0.8916575 -0.4161068 -0.2524265 -0.432731 -0.8654621 -0.1296407 -0.9723056 -0.1944611 0.1296407 -0.9723056 -0.1944611 -0.4472137 -0.8944273 0 0.4472137 -0.8944273 0 -0.158235 -0.2712601 0.9494103 0.158235 -0.2712601 0.9494103 -0.6463437 -0.209625 0.7336875 0.6463437 -0.209625 0.7336875 1 0 0 0.3051412 -0.1181191 -0.9449533 -0.3051412 -0.1181191 -0.9449533 0.02165228 -0.9527024 -0.3031325 -0.02165228 -0.9527024 -0.3031325 0.1352925 -0.9277203 -0.3478951 -0.1352925 -0.9277203 -0.3478951 -0.4681222 -0.8548318 -0.2238845 0.4681222 -0.8548318 -0.2238845 -0.2710385 -0.9621868 0.02710384 0.2710385 -0.9621868 0.02710384 -0.1717156 -0.9851052 -0.009037613 0.2594996 -0.9601487 0.1037998 -0.4332243 -0.7581425 -0.4873773 0.6684096 -0.5848584 -0.4595316 -0.1599437 -0.4478424 -0.8796905 0.1599437 -0.4478424 -0.8796905 0.3899756 -0.7073975 -0.5894979 -0.3899756 -0.7073975 -0.5894979 0.6546587 -0.6006662 -0.458936 -0.6546587 -0.6006662 -0.458936 0.5377842 -0.8352819 -0.1144222 -0.5377842 -0.8352819 -0.1144222 0.5656854 -0.8158925 0.1196642 -0.5773503 -0.8082904 0.1154701 0.4082483 -0.8164966 0.4082483 -0.5213825 -0.5440513 0.6573953 0.1795874 -0.5886477 0.7881892 -0.1795874 -0.5886477 0.7881892 0.1881442 -0.9219065 0.3386595 -0.1881442 -0.9219065 0.3386595 -0.08702963 -0.9573264 0.2755939 0.08702963 -0.9573264 0.2755939 0.08290266 -0.9533807 -0.2901594 -0.08290266 -0.9533807 -0.2901594 0.3015114 -0.9045341 -0.3015114 -0.3015114 -0.9045341 -0.3015114 -0.3765946 -0.4034942 -0.8338879 0.06311941 -0.9467917 -0.3155972 0.08233869 -0.6175402 -0.7822176 0.2015739 -0.3695522 -0.9070828 -0.3706729 -0.8839123 -0.285133 0.3706729 -0.8839123 -0.285133 -0.269181 -0.9613608 -0.05768162 0.4567587 -0.8881419 0.05075091 -0.2797135 -0.8041762 0.5244627 0.2797135 -0.8041762 0.5244627 -0.02132976 -0.831861 0.554574 0.04867923 -0.7301886 0.6815094 0.3777924 -0.6746293 0.6341515 -0.3378225 -0.783134 0.5220893 0.4987838 -0.6858277 0.5299578 -0.4987838 -0.6858277 0.5299578 0.5425201 -0.7685701 -0.339075 -0.5425201 -0.7685701 -0.339075 0.8304745 -0.5536497 -0.06151658 -0.8304745 -0.5536497 -0.06151658 0.7814038 -0.6139602 0.1116291 -0.7814038 -0.6139602 0.1116291 -0.4337956 0.1481253 0.8887521 0.4337956 0.1481253 0.8887521 -0.8515383 0.3670423 0.3743832 0.8515383 0.3670423 0.3743832 -0.2663518 0.4127252 0.8710423 0.2197156 0.4557065 0.8625873 0.5932461 0.3063166 0.7444657 -0.591352 0.2991008 0.7488936 0.3714273 0.3283632 0.868458 -0.3653076 0.2937924 0.88331 0.2900823 0.2833362 0.9140967 -0.2900823 0.2833362 0.9140967 0.8872826 0.4412432 0.1342914 -0.7964468 0.5900586 0.1323001 0.5107806 0.5450229 -0.6648709 -0.5107806 0.5450229 -0.6648709 0.3694844 0.3600708 -0.856639 -0.3694844 0.3600708 -0.856639 0.361678 0.8487375 -0.3857898 -0.1649085 0.7289437 -0.6644142 0.19518 0.9759002 -0.09759002 -0.3011077 0.9535076 -0.01254612 -0.01072961 0.8261798 -0.5633044 -0.2562453 0.9151617 -0.311155 0.1532956 0.2134115 -0.9648607 -0.1532956 0.2134115 -0.9648607 0.1260295 0.2406017 -0.9624071 -0.1260295 0.2406017 -0.9624071 0.9395648 0.3041002 0.1572932 -0.9395648 0.3041002 0.1572932 0.9278163 0.3245921 0.1838397 -0.9278163 0.3245921 0.1838397 0.2192214 0.972662 0.07662105 -0.2192214 0.972662 0.07662105 0.1210663 0.9912303 -0.05296647 0.1496834 0.9194838 -0.3635168 0.9093759 0.392745 0.1370653 -0.3705765 0.6348635 -0.6779538 0.9202126 0.3672108 0.1355182 -0.9202126 0.3672108 0.1355182 0.9172859 0.2006562 0.3439822 -0.9456937 0.185027 0.2672613 0.900405 0.2380051 0.3641765 -0.9337134 0.2214577 0.2813111 0.8945093 -0.1084253 0.4337015 -0.9501479 0.1921647 0.2455438 0.1596174 0.239426 -0.9577043 -0.1834971 0.5898122 -0.7864162 0.3692765 0.8010123 -0.4711837 -0.3726855 0.7966327 -0.4759014 0.2985938 0.4821331 -0.8236441 -0.3262702 0.4445879 -0.8341999 0.2995353 0.1368435 -0.9442206 -0.2995353 0.1368435 -0.9442206 0.3286553 0.2290627 -0.9162511 -0.3286553 0.2290627 -0.9162511 0.830482 0.4463135 0.3333227 -0.8641914 -0.1696376 -0.4737049 0.9165619 -0.1414447 -0.3740427 -0.9165619 -0.1414447 -0.3740427 0.2950267 0.9544076 -0.04544794 -0.4189025 0.8793254 -0.2265115 0.1271882 -0.2260337 0.9657806 -0.1119178 -0.2468149 0.9625783 0.1319618 0.1787508 0.9750048 -0.1319618 0.1787508 0.9750048 0.3877995 0.6827532 0.6192412 -0.3877995 0.6827532 0.6192412 0.4951004 0.1100223 0.8618414 -0.4951004 0.1100223 0.8618414 0.2561333 -0.720238 0.6447116 -0.2561333 -0.720238 0.6447116 0.5965515 -0.1479053 0.7888284 -0.5965515 -0.1479053 0.7888284 0.7124531 0.1899875 0.6755111 -0.7124531 0.1899875 0.6755111 0.7104427 0.6904168 0.1363668 -0.6304094 0.734323 0.2517019 0.6822971 0.6933375 0.2318485 -0.6822971 0.6933375 0.2318485 0.6573953 0.2040192 0.7254017 -0.6573953 0.2040192 0.7254017 0.7289322 -0.1261613 0.6728605 -0.7289322 -0.1261613 0.6728605 0.7791181 -0.4764304 0.4074176 -0.7791181 -0.4764304 0.4074176 0.3669272 0.289789 0.8839609 -0.3237903 0.07195335 0.9433889 0.2854303 -0.7276712 0.6237182 -0.1548168 -0.8473082 0.5080362 -0.1702333 0.9792801 0.1096864 0.1781741 0.9799579 0.08908706 0.292531 -0.7697092 0.5674271 -0.292531 -0.7697092 0.5674271 -0.1615719 -0.9694316 0.1846536 0.1615719 -0.9694316 0.1846536 0.8680965 0.4883043 0.08925992 -0.9339511 -0.2772905 0.225489 0.9276127 -0.3656799 0.07624214 -0.9276127 -0.3656799 0.07624214 0.9749749 -0.0489673 0.2168554 -0.9749749 -0.0489673 0.2168554 0.9816547 0.1882348 -0.03036046 -0.9955896 0.02880197 0.0892862 0.746645 -0.02849036 -0.6646124 -0.6374072 -0.09146648 -0.7650792 0.3722676 -0.08472293 -0.9242504 -0.3720037 -0.08454626 -0.9243729 0.39859 -0.2733785 -0.8754373 -0.39859 -0.2733785 -0.8754373 0.6327885 -0.1246607 -0.7642242 -0.6327885 -0.1246607 -0.7642242 0.7324889 -0.2406749 -0.6368169 -0.7324889 -0.2406749 -0.6368169 0.2637323 -0.8532518 -0.4498963 -0.2637323 -0.8532518 -0.4498963 0.5880637 0.7482819 -0.3070104 -0.5236076 0.7858749 -0.3289924 0.4693537 0.8497774 -0.2399703 -0.5396378 0.7726849 -0.3342889 0.4462593 0.2941254 -0.8451881 -0.2143616 0.5082443 -0.8341085 0.6973409 0.2770684 -0.6610211 -0.7365212 0.2808087 -0.6153723 0.4972049 0.7473325 -0.4407737 -0.4972049 0.7473325 -0.4407737 0.3690983 -0.8844432 0.2855289 -0.3244428 -0.8111071 0.4866642 0.4467081 -0.8893553 0.09746354 -0.4467081 -0.8893553 0.09746354 0.3188384 -0.9266241 0.199274 -0.1816593 -0.9833299 -0.007898211 0.2076135 -0.9746302 -0.08362209 -0.2924779 -0.9532612 -0.07582759 0.3397551 -0.9369006 0.08236485 -0.5847051 -0.7809149 -0.2197549 0.595688 -0.7049408 -0.3849861 -0.595688 -0.7049408 -0.3849861 0.4843178 -0.6738336 0.5580184 -0.4843178 -0.6738336 0.5580184 -0.2675267 -0.4864122 0.8317648 0.2675267 -0.4864122 0.8317648 -0.857614 -0.4637469 0.2223443 0.7885024 -0.5677217 0.2365507 -0.5256732 -0.7717329 -0.3579051 0.5241765 -0.7741684 -0.3548272 0.4663101 -0.6508912 -0.599079 -0.4389761 -0.7290139 -0.5252036 0.7103582 -0.5355876 -0.4566588 -0.7103582 -0.5355876 -0.4566588 0.7507172 0.2460684 -0.6130857 -0.6302015 -0.1282387 -0.7657682 -0.1788077 -0.9394505 0.2923365 0.217521 -0.9370135 0.2732956 0.9041857 0.2332351 -0.3578402 -0.9041857 0.2332351 -0.3578402 0.03998398 -0.9396243 0.3398641 -0.03998398 -0.9396243 0.3398641 0.2734082 -0.3220974 0.9063671 -0.2734082 -0.3220974 0.9063671 0.4479547 -0.7737399 -0.4479547 -0.7177406 -0.6755205 0.1688801 0.5533716 -0.622543 -0.5533716 -0.9007817 -0.1501303 -0.4074965 0.5723839 -0.7582229 -0.3122094 -0.5815153 -0.6242738 -0.5216534 0.5596814 -0.6169216 -0.5533214 -0.613754 -0.7464576 -0.2571132 0.9551076 0.2469593 -0.1636477 -0.171249 -0.9807899 -0.09340852 0.9227122 0.08254653 -0.376548 -0.8716733 0.206296 -0.4445534 0.997202 0.07252377 -0.01813089 -0.997202 0.07252377 -0.01813089 0.689496 -0.2883347 -0.6644234 -0.689496 -0.2883347 -0.6644234 0.7814988 -0.0882337 -0.6176362 -0.7929823 -0.1321637 -0.5947368 0.7022469 -0.1170411 -0.7022469 -0.7022469 -0.1170411 -0.7022469 0.1240082 -0.02066802 0.992066 -0.2407717 0.1203858 0.9630869 0.9434564 -0.1048285 0.3144854 -0.9251321 -0.1541886 0.3469245 0.6213365 -0.103556 -0.7766706 -0.6213365 -0.103556 -0.7766706 0 0 1 0.6197241 -0.3741731 -0.6898816 -0.6197241 -0.3741731 -0.6898816 0.2752409 -0.3853373 -0.8807711 -0.2752409 -0.3853373 -0.8807711 -0.7929301 0.3089338 -0.5251874 0.7929301 0.3089338 -0.5251874 -0.8096172 0.5343473 0.2428851 0.8537656 0.4656903 0.2328451 -0.5621402 0.08030575 0.8231339 0.5433054 0.4656903 0.6985355 -0.007070839 -0.1414178 0.9899248 0.109559 0.01565128 0.9938571 0.1046042 -0.99374 0.03922653 -0.1737772 -0.9847377 0.009654283 0.2461057 -0.965492 0.08519041 -0.4134492 -0.9095882 0.04134488 0.3009453 -0.9491352 0.09259855 -0.3009453 -0.9491352 0.09259855 0.210358 -0.9775462 0.01237398 -0.1220272 -0.9914714 0.04576021 -0.00991553 -0.9221491 0.3867077 0.00991553 -0.9221491 0.3867077 0.3786653 -0.9248172 -0.03641009 -0.4244213 -0.9048982 -0.03203177 0.2529822 -0.9486834 -0.1897366 -0.2569888 -0.9637079 0.07227808 -0.4870486 -0.6262053 0.6088108 0.2981424 -0.5962848 0.745356 0.6693122 -0.7207977 0.1801994 -0.6693122 -0.7207977 0.1801994 0.4388195 -0.8758624 -0.2007554 -0.4723203 -0.8587642 -0.1985892 0.5786098 -0.8046292 -0.1333515 -0.2975268 -0.8639723 -0.4062386 0.5001965 -0.8182405 0.2833483 -0.5001965 -0.8182405 0.2833483 0.2979641 -0.757979 0.580246 -0.2979641 -0.757979 0.580246 0.09292387 0.09439885 -0.9911882 -0.09292387 0.09439885 -0.9911882 0.4687835 -0.144241 -0.8714566 -0.4687835 -0.144241 -0.8714566 0.9308896 -0.2624169 -0.2541301 -0.9264149 -0.2850507 -0.2459712 0.846495 0.05951917 0.5290594 -0.8266631 0.003473341 0.5626866 -0.2510706 0.2145223 0.9438983 0.214568 0.3156626 0.9242931 -0.4840985 0.03612673 0.8742675 0.4195818 0.2011693 0.8851453 -0.5256307 0.8507076 -0.002993285 0.5470265 0.8369916 -0.01439541 -0.1466462 0.9891346 0.01038569 0.1466462 0.9891346 0.01038569 0.4046244 0.9140966 0.0265811 -0.4046244 0.9140966 0.0265811 -0.8073093 -0.004097998 0.5901144 0.7330108 -0.04717391 0.6785793 0.419982 0.8781441 -0.229081 -0.419982 0.8781441 -0.229081 -0.06868392 0.0817666 -0.994282 0.06868392 0.0817666 -0.994282 0.6713447 -0.7144586 -0.197092 -0.6713447 -0.7144586 -0.197092 0.8325802 -0.4645556 -0.3016595 -0.8325802 -0.4645556 -0.3016595 0.4257578 -0.4289832 -0.7966831 -0.4257578 -0.4289832 -0.7966831 0.3264977 -0.8049858 -0.4953759 -0.3264977 -0.8049858 -0.4953759 -0.0649296 -0.8181129 -0.5713804 0.0649296 -0.8181129 -0.5713804 -0.2737893 -0.4833564 -0.8315083 0.2737893 -0.4833564 -0.8315083 -0.7605702 -0.5531419 -0.3399518 0.7824203 -0.5284768 -0.3294401 -0.464927 -0.8634359 -0.1957587 0.4767313 -0.8581163 -0.1906925 -0.4983428 -0.8478299 0.1812155 0.4983428 -0.8478299 0.1812155 -0.7683498 -0.5488213 0.3292928 0.7655678 -0.5567766 0.3223443 -0.2487366 -0.5076257 0.8248918 0.2559869 -0.531665 0.8073432 -0.1016523 -0.8277404 0.5518269 0.08213782 -0.7939993 0.6023442 0.38606 -0.7445443 0.5446204 -0.3328619 -0.7846031 0.5230687 0.4059141 -0.5014233 0.7640736 -0.4245669 -0.474516 0.7710886 0.8298687 -0.4742107 0.2940106 -0.8250747 -0.480799 0.2967895 0.6617073 -0.7218625 0.202628 -0.6887994 -0.700474 0.186793 0.7815718 0.5437021 0.3058325 -0.839964 0.419982 0.3436216 0.2036532 0.5430754 0.8146131 -0.2073903 0.5184759 0.8295614 -0.4380629 0.4122945 0.7988205 0.4056161 0.5070202 0.7605302 -0.7861462 0.5240975 0.3275609 0.8642417 0.3928371 0.3142697 -0.8519428 0.3975733 -0.3407771 0.8519428 0.3975733 -0.3407771 -0.4056161 0.5070202 -0.7605302 0.4056161 0.5070202 -0.7605302 0.2073903 0.5184759 -0.8295614 -0.2073903 0.5184759 -0.8295614 0.8297399 0.4148699 -0.3733829 -0.8297399 0.4148699 -0.3733829 0.1054092 -0.5270463 -0.8432741 -0.1366916 -0.4647516 -0.8748265 0.1915565 -0.4693133 -0.8620042 -0.2302893 -0.4446966 -0.8655703 0.5958796 -0.6810052 -0.4256283 -0.5958796 -0.6810052 -0.4256283 0.7563365 -0.6535012 -0.02985537 -0.7563365 -0.6535012 -0.02985537 0.8069292 -0.5866119 0.0689336 -0.8069292 -0.5866119 0.0689336 0.2333729 -0.5834324 -0.7779099 -0.2333729 -0.5834324 -0.7779099 0.4177436 -0.7033636 -0.5751261 -0.355697 -0.5848173 -0.7290188 0.6871914 -0.5933728 -0.419138 -0.6871914 -0.5933728 -0.419138 0.5537071 -0.7776508 -0.2977713 -0.7028484 -0.5938889 -0.3915356 0.822669 -0.4395081 0.3606221 -0.3126936 -0.8859652 0.3424739 0.504141 -0.5744863 0.6448315 -0.5090584 -0.5662559 0.6482391 0.6154575 -0.6154575 0.492366 -0.6154575 -0.6154575 0.492366 -0.03713905 -0.7427814 0.6685032 0.04859292 -0.7531908 0.6560049 -0.7386325 -0.5589652 0.3768024 0.7103534 -0.6493535 0.2715478 -0.5773503 -0.5773503 0.5773503 0.6013168 -0.6013168 0.5261523 0.5364082 -0.7796863 -0.3230413 -0.5070232 -0.5902658 -0.6281034 0.2180755 -0.8561482 -0.4684584 -0.2180755 -0.8561482 -0.4684584 -0.1073484 -0.8587875 -0.5009594 0.03484123 -0.8144149 -0.5792362 -0.07701516 -0.8139104 -0.5758634 0.0899018 -0.6138126 -0.7843162 0.02788555 -0.5019403 -0.8644527 -0.05466765 -0.9840181 -0.1694698 0.1686746 -0.9347384 -0.3127508 -0.4259846 -0.9026816 -0.06085491 0.4349679 -0.8820183 -0.1812366 -0.335168 -0.924251 -0.1828188 0.322277 -0.9054449 -0.2762374 -0.3578878 -0.8819378 -0.306761 0.4284112 -0.8911396 0.1494457 -0.4284112 -0.8911396 0.1494457 -0.03165441 -0.981288 -0.1899267 0.03165441 -0.981288 -0.1899267 0.1853964 -0.8485455 -0.4955791 -0.6818851 -0.6708869 -0.2914509 0.2623156 -0.8993679 -0.3497542 -0.2623156 -0.8993679 -0.3497542 0.05851191 -0.9947026 -0.08451718 0.006617546 -0.9727849 -0.2316154 -0.01355689 -0.7591869 -0.6507316 0.01355689 -0.7591869 -0.6507316 0.2404278 -0.8014261 -0.5476412 -0.2404278 -0.8014261 -0.5476412 0.3142697 -0.8642417 -0.3928371 -0.3128082 -0.9351661 -0.1661793 0.2821285 -0.9592369 -0.01638162 -0.2821285 -0.9592369 -0.01638162 0.3272507 -0.9340282 -0.1431722 -0.3272507 -0.9340282 -0.1431722 0.02321916 -0.9984245 0.05108213 0.004338562 -0.9978708 -0.06507849 0.7826087 0.1304348 -0.6086957 -0.7826087 0.1304348 -0.6086957 0.963518 0.1605863 0.2141151 -0.9256246 0.2848076 0.2492066 0.1018289 0.3869501 0.9164609 -0.06926429 0.4294387 0.9004359 -0.6904563 -0.4707656 0.5492266 0.4319342 -0.2591605 -0.8638684 -0.40711 -0.1791284 -0.8956419 0.2873479 -0.7662611 -0.5746958 -0.2873479 -0.766261 -0.5746958 -0.6666667 -0.3333333 0.6666667 0.6666667 -0.3333333 0.6666667 0.1347634 -0.5727446 0.8085806 -0.1347634 -0.5727446 0.8085806 0.7638854 -0.5729141 0.2970665 -0.7532497 -0.591839 0.2869523 0.4115966 -0.3086975 -0.8574929 -0.4115966 -0.3086975 -0.8574929 0.03745025 -0.9737077 0.2247017 -0.05021667 -0.9708558 0.2343445 0.1304348 -0.9565218 -0.2608696 -0.1304348 -0.9565218 -0.2608696 -0.06311941 -0.568075 -0.8205528 0.06311941 -0.568075 -0.8205528 0.7324671 -0.6197798 0.2817181 -0.7324671 -0.6197798 0.2817181 0.3319135 -0.9404218 0.07375854 -0.5459861 -0.7184027 -0.4310416 0.2815465 -0.9572582 0.06624621 -0.3230722 -0.9458619 0.03113949 0.8752544 -0.4376272 0.2059422 -0.7356952 -0.5530576 0.3909988 0.897301 -0.3938155 0.1994002 -0.8479984 -0.4239992 0.3179994 0.9586452 -0.2767452 0.06641882 -0.9586452 -0.2767452 0.06641882 0.2524265 -0.432731 -0.8654621 -0.1783314 -0.8916575 -0.4161068 -0.1751125 -0.9631189 -0.2042979 0.1751125 -0.9631189 -0.2042979 -0.1219421 -0.9755373 -0.1829132 0.1219421 -0.9755373 -0.1829132 -0.1561737 -0.9370427 0.3123475 0.1561737 -0.9370427 0.3123475 -0.7238424 -0.07619392 0.6857454 0.7238424 -0.07619392 0.6857454 0.04783648 -0.9567298 -0.2870189 -0.04783648 -0.9567298 -0.2870189 -0.5488213 -0.7683499 -0.3292928 0.5488213 -0.7683499 -0.3292928 -0.4944805 -0.8618089 -0.1130241 0.4944805 -0.8618089 -0.1130241 -0.2594996 -0.9601487 0.1037998 0.1717156 -0.9851052 -0.009037613 -0.6684096 -0.5848584 -0.4595316 0.4332243 -0.7581425 -0.4873773 -0.1156166 -0.7630695 -0.6358913 0.1156166 -0.7630695 -0.6358913 0.4241816 -0.6589964 -0.621123 -0.4241816 -0.6589964 -0.621123 0.4766541 -0.8039091 -0.355712 -0.4766541 -0.8039091 -0.355712 0.5870963 -0.8051607 -0.08387088 -0.5870963 -0.8051607 -0.08387088 0.5773503 -0.8082904 0.1154701 -0.5656854 -0.8158925 0.1196642 0.5213825 -0.5440513 0.6573953 -0.4082483 -0.8164966 0.4082483 0.3357691 -0.8753979 0.3477608 -0.3357691 -0.8753979 0.3477608 0.1451717 -0.9145816 0.3774464 -0.1451717 -0.9145816 0.3774464 0.03007978 -0.9725808 0.2306119 -0.03007978 -0.9725808 0.2306119 0.4475494 -0.760834 -0.4699269 -0.4475494 -0.760834 -0.4699269 0.2627053 -0.9382334 -0.225176 -0.2627053 -0.9382334 -0.225176 -0.06311941 -0.9467917 -0.3155972 0.3765946 -0.4034942 -0.8338879 -0.2015739 -0.3695522 -0.9070828 -0.08233869 -0.6175402 -0.7822176 -0.3356243 -0.9109803 -0.2397316 0.3356243 -0.9109803 -0.2397316 -0.4567587 -0.8881419 0.05075091 0.269181 -0.9613608 -0.05768162 -0.02467632 -0.9130239 0.4071593 0.02467632 -0.9130239 0.4071593 -0.04867923 -0.7301886 0.6815094 0.02132976 -0.831861 0.554574 0.3378225 -0.783134 0.5220893 -0.3777924 -0.6746293 0.6341515 0.7894737 -0.5263158 -0.3157895 -0.7894737 -0.5263158 -0.3157895 0.8069701 -0.5850533 -0.080697 -0.8069701 -0.5850533 -0.080697 0.7867959 -0.6052276 0.1210455 -0.7867959 -0.6052276 0.1210455 -0.6357073 0.3632613 0.6811149 0.6357073 0.3632613 0.6811149 -0.8506798 0.3782634 0.365049 0.8506798 0.3782634 0.365049 -0.2197156 0.4557065 0.8625873 0.2663518 0.4127252 0.8710423 0.591352 0.2991008 0.7488936 -0.5932461 0.3063166 0.7444657 0.3653076 0.2937924 0.88331 -0.3714273 0.3283632 0.868458 0.2760493 0.2915287 0.9158645 -0.2760493 0.2915287 0.9158645 0.7964468 0.5900586 0.1323001 -0.8872826 0.4412432 0.1342914 0.5441568 0.3711687 -0.7524144 -0.5441568 0.3711687 -0.7524144 0.4027386 0.549189 -0.7322521 -0.4027386 0.549189 -0.7322521 0.1649085 0.7289437 -0.6644142 -0.361678 0.8487375 -0.3857898 0.3011077 0.9535076 -0.01254612 -0.19518 0.9759002 -0.09759002 0.2562453 0.9151617 -0.311155 0.01072961 0.8261798 -0.5633044 0.07785052 0.06631714 -0.9947569 -0.07785052 0.06631714 -0.9947569 0.1094499 0.2089498 -0.9717823 -0.1094499 0.2089498 -0.9717823 0.8150442 0.1405248 -0.5620994 -0.8150442 0.1405248 -0.5620994 0.9358481 0.3235813 0.1395841 -0.9358481 0.3235813 0.1395841 0.113195 0.9931954 -0.02738589 -0.113195 0.9931954 -0.02738589 -0.1496834 0.9194838 -0.3635168 -0.1210663 0.9912303 -0.05296647 0.3705765 0.6348635 -0.6779538 -0.9093759 0.392745 0.1370653 0.9192596 0.3681883 0.1392817 -0.9192596 0.3681883 0.1392817 0.9456937 0.185027 0.2672613 -0.9172859 0.2006562 0.3439822 0.9337134 0.2214577 0.2813111 -0.900405 0.2380051 0.3641765 0.9501479 0.1921647 0.2455438 -0.8945093 -0.1084253 0.4337015 0.1834971 0.5898122 -0.7864162 -0.1596174 0.239426 -0.9577043 0.3726855 0.7966327 -0.4759014 -0.3692765 0.8010123 -0.4711837 0.3262702 0.4445879 -0.8341999 -0.2985938 0.4821331 -0.8236441 0.2619684 0.1216745 -0.9573755 -0.2619684 0.1216745 -0.9573755 0.2996288 0.1361949 -0.9442847 -0.2996288 0.1361949 -0.9442847 0.8641914 -0.1696376 -0.4737049 -0.830482 0.4463135 0.3333227 0.6868954 -0.3520879 -0.6357743 -0.6868954 -0.3520879 -0.6357743 0.4189025 0.8793254 -0.2265115 -0.2950267 0.9544076 -0.04544794 0.1119178 -0.2468149 0.9625783 -0.1271882 -0.2260337 0.9657806 0.1208353 0.1946791 0.9733956 -0.1208353 0.1946791 0.9733956 0.3139982 0.7584519 0.5711005 -0.3139982 0.7584519 0.5711005 0.3230511 0.1817162 0.928772 -0.3230511 0.1817162 0.928772 0.04522031 -0.604308 0.7954666 -0.04522031 -0.604308 0.7954666 0.614433 -0.173779 0.7695928 -0.614433 -0.173779 0.7695928 0.6934513 0.2211965 0.6857094 -0.6934513 0.2211965 0.6857094 0.6304094 0.734323 0.2517019 -0.7104427 0.6904168 0.1363668 0.3179097 0.7573732 0.5703675 -0.3179097 0.7573732 0.5703675 0.6289424 0.1524708 0.7623544 -0.6289424 0.1524708 0.7623544 0.7088277 -0.1751994 0.6832777 -0.7088277 -0.1751994 0.6832777 0.6885315 -0.615842 0.3829662 -0.6885315 -0.615842 0.3829662 0.3237903 0.07195335 0.9433889 -0.3669272 0.289789 0.8839609 0.1548168 -0.8473082 0.5080362 -0.2854303 -0.7276712 0.6237182 -0.1781741 0.9799579 0.08908706 0.1702333 0.9792801 0.1096864 -0.2638457 0.1870905 0.9462466 0.2638457 0.1870905 0.9462466 0.9339511 -0.2772905 0.225489 -0.8680965 0.4883043 0.08925992 0.9758065 -0.1800325 0.124056 -0.9758065 -0.1800325 0.124056 0.9612813 0.2329603 0.1472002 -0.9612813 0.2329603 0.1472002 0.9955896 0.02880197 0.0892862 -0.9816547 0.1882348 -0.03036046 0.6374072 -0.09146648 -0.7650792 -0.746645 -0.02849036 -0.6646124 0.3720037 -0.08454626 -0.9243729 -0.3722676 -0.08472293 -0.9242504 0.5281225 -0.1522346 -0.8354108 -0.5281225 -0.1522346 -0.8354108 0.3070173 -0.794633 -0.5237354 -0.3070173 -0.794633 -0.5237354 0.5236076 0.7858749 -0.3289924 -0.5880637 0.7482819 -0.3070104 0.5396378 0.7726849 -0.3342889 -0.4693537 0.8497774 -0.2399703 0.2143616 0.5082443 -0.8341085 -0.4462593 0.2941254 -0.8451881 0.7365212 0.2808087 -0.6153723 -0.6973409 0.2770684 -0.6610211 0.3244428 -0.8111071 0.4866642 -0.3690983 -0.8844432 0.2855289 0.464866 -0.8465455 0.2593463 -0.464866 -0.8465455 0.2593463 0.1816593 -0.9833299 -0.007898211 -0.3188384 -0.9266241 0.199274 0.2924779 -0.9532612 -0.07582759 -0.2076135 -0.9746302 -0.08362209 0.5847051 -0.7809149 -0.2197549 -0.3397551 -0.9369006 0.08236485 0.6508971 -0.7339904 -0.1938842 -0.6508971 -0.7339904 -0.1938842 0.4074906 -0.5200867 0.7506406 -0.4074906 -0.5200867 0.7506406 -0.2654835 -0.4911444 0.8296359 0.2654835 -0.4911444 0.8296359 -0.7885024 -0.5677217 0.2365507 0.857614 -0.4637469 0.2223443 -0.5241765 -0.7741684 -0.3548272 0.5256732 -0.7717329 -0.3579051 0.4389761 -0.7290139 -0.5252036 -0.4663101 -0.6508912 -0.599079 0.6888023 -0.574002 -0.4428015 -0.6888023 -0.574002 -0.4428015 0.6302015 -0.1282387 -0.7657682 -0.7507172 0.2460684 -0.6130857 -0.217521 -0.9370135 0.2732956 0.1788077 -0.9394505 0.2923365 0.9045597 0.1792052 -0.3868557 -0.9045597 0.1792052 -0.3868557 0.1781741 -0.9799579 -0.08908706 -0.1781741 -0.9799579 -0.08908706 -0.2335159 -0.3748545 0.8971926 0.2335159 -0.3748545 0.8971926 0.7177406 -0.6755205 0.1688801 -0.4479547 -0.7737399 -0.4479547 0.5312708 -0.6133763 0.5843979 -0.5312708 -0.6133763 0.5843979 0.9007817 -0.1501303 -0.4074965 -0.5533716 -0.622543 -0.5533716 0.5815153 -0.6242738 -0.5216534 -0.5723839 -0.7582229 -0.3122094 0.613754 -0.7464576 -0.2571132 -0.5596814 -0.6169216 -0.5533214 0.171249 -0.9807899 -0.09340852 -0.9551076 0.2469593 -0.1636477 0.8716733 0.206296 -0.4445534 -0.9227122 0.08254653 -0.376548 0.7661046 -0.09089374 -0.6362563 -0.7661046 -0.09089374 -0.6362563 0.7929823 -0.1321637 -0.5947368 -0.7814988 -0.0882337 -0.6176362 0.2407717 0.1203858 0.9630869 -0.1240082 -0.02066802 0.992066 0.9251321 -0.1541886 0.3469245 -0.9434564 -0.1048285 0.3144854 0.7071068 0 -0.7071068 -0.7071068 0 -0.7071068 -0.01571154 -0.1414039 0.9898274 0.01571154 -0.1414039 0.9898274 0.6265721 -0.2955529 -0.721149 -0.6265721 -0.2955529 -0.721149 0.2714446 -0.335314 -0.9021543 -0.2714446 -0.335314 -0.9021543 -0.8651252 0.1266037 -0.4853141 0.8651252 0.1266037 -0.4853141 -0.8537656 0.4656903 0.2328451 0.8096172 0.5343473 0.2428851 -0.5433054 0.4656903 0.6985355 0.5621402 0.08030575 0.8231339 -0.109559 0.01565128 0.9938571 0.007070839 -0.1414178 0.9899248 0.1737772 -0.9847377 0.009654283 -0.1046042 -0.99374 0.03922653 0.4134492 -0.9095882 0.04134488 -0.2461057 -0.965492 0.08519041 0.3228001 -0.9453432 -0.04611426 -0.3228001 -0.9453432 -0.04611426 0.1220272 -0.9914714 0.04576021 -0.210358 -0.9775462 0.01237398 0.5678808 -0.8005067 0.1915742 -0.5678808 -0.8005067 0.1915742 0.4244213 -0.9048982 -0.03203177 -0.3786653 -0.9248172 -0.03641009 0.2569888 -0.9637079 0.07227808 -0.2529822 -0.9486834 -0.1897366 0.1350789 -0.9905791 -0.02251315 -0.1350789 -0.9905791 -0.02251315 -0.2981424 -0.5962848 0.745356 0.4870486 -0.6262053 0.6088108 0.5570861 -0.8170595 -0.1485562 -0.5570861 -0.8170595 -0.1485562 0.4723203 -0.8587642 -0.1985892 -0.4388195 -0.8758624 -0.2007554 0.2975268 -0.8639723 -0.4062386 -0.5786098 -0.8046292 -0.1333515 0.5770894 -0.7874866 0.2164085 -0.5770894 -0.7874866 0.2164085 0.0931167 0.06924057 -0.9932447 -0.0931167 0.06924057 -0.9932447 0.5160672 0.08120852 -0.8526897 -0.5160672 0.08120852 -0.8526897 0.9264149 -0.2850507 -0.2459712 -0.9308896 -0.2624169 -0.2541301 0.8266631 0.003473341 0.5626866 -0.846495 0.05951917 0.5290594 -0.214568 0.3156626 0.9242931 0.2510706 0.2145223 0.9438983 -0.4195818 0.2011693 0.8851453 0.4840985 0.03612673 0.8742675 -0.5470265 0.8369916 -0.01439541 0.5256307 0.8507076 -0.002993285 -0.2555612 0.9638834 -0.07494819 0.2555612 0.9638834 -0.07494819 -0.7330108 -0.04717391 0.6785793 0.8073093 -0.004097998 0.5901144 0.6843532 0.7087944 -0.1710883 -0.6843532 0.7087944 -0.1710883 -0.3603765 0.4290197 -0.828294 0.3603765 0.4290197 -0.828294</float_array>
+ <technique_common>
+ <accessor source="#Suzanne-mesh-normals-array" count="943" stride="3">
+ <param name="X" type="float"/>
+ <param name="Y" type="float"/>
+ <param name="Z" type="float"/>
+ </accessor>
+ </technique_common>
+ </source>
+ <source id="Suzanne-mesh-map-0">
+ <float_array id="Suzanne-mesh-map-0-array" count="5802">0.890955 0.590063 0.860081 0.560115 0.904571 0.559404 0.856226 0.850547 0.888398 0.821999 0.90064 0.853232 0.904571 0.559404 0.853018 0.521562 0.920166 0.524546 0.847458 0.888748 0.90064 0.853232 0.914672 0.888748 0.860081 0.560115 0.798481 0.569535 0.853018 0.521562 0.795104 0.838402 0.856226 0.850547 0.847458 0.888748 0.870622 0.589649 0.8289 0.590771 0.860081 0.560115 0.826436 0.818537 0.868067 0.82151 0.856226 0.850547 0.854402 0.604754 0.828171 0.633354 0.8289 0.590771 0.827598 0.775964 0.852534 0.8057 0.826436 0.818537 0.8289 0.590771 0.791018 0.645443 0.798481 0.569535 0.791018 0.762238 0.826436 0.818537 0.795104 0.838402 0.855181 0.668527 0.791018 0.645443 0.828171 0.633354 0.856142 0.742025 0.791018 0.762238 0.844839 0.707525 0.867508 0.642291 0.828171 0.633354 0.854107 0.625459 0.867293 0.768782 0.827598 0.775964 0.856142 0.742025 0.867508 0.642291 0.900375 0.666964 0.855181 0.668527 0.901223 0.745592 0.867293 0.768782 0.856142 0.742025 0.900375 0.666964 0.842358 0.702491 0.855181 0.668527 0.901223 0.745592 0.844839 0.707525 0.92118 0.713713 0.931889 0.636832 0.918898 0.699697 0.900375 0.666964 0.931368 0.777093 0.92118 0.713713 0.968213 0.77022 0.905882 0.627902 0.900375 0.666964 0.890474 0.641909 0.90499 0.78486 0.901223 0.745592 0.931368 0.777093 0.906232 0.605742 0.931889 0.636832 0.905882 0.627902 0.904357 0.807013 0.931368 0.777093 0.93125 0.820926 0.933717 0.593037 0.968392 0.645333 0.931889 0.636832 0.93125 0.820926 0.968213 0.77022 0.965038 0.841671 0.904571 0.559404 0.968392 0.573812 0.933717 0.593037 0.90064 0.853232 0.965038 0.841671 0.914672 0.888748 0.890955 0.590063 0.933717 0.593037 0.906232 0.605742 0.888398 0.821999 0.93125 0.820926 0.90064 0.853232 0.906232 0.605742 0.889591 0.593275 0.890955 0.590063 0.904357 0.807013 0.887178 0.818729 0.900583 0.804677 0.905882 0.627902 0.902359 0.607909 0.906232 0.605742 0.90499 0.78486 0.900583 0.804677 0.898822 0.786233 0.890474 0.641909 0.899781 0.626257 0.905882 0.627902 0.890219 0.770183 0.898822 0.786233 0.887351 0.775442 0.867508 0.642291 0.887842 0.636527 0.890474 0.641909 0.867293 0.768782 0.887351 0.775442 0.870376 0.775972 0.867508 0.642291 0.859881 0.623942 0.870908 0.635245 0.858859 0.786774 0.867293 0.768782 0.870376 0.775972 0.854107 0.625459 0.859664 0.608186 0.859881 0.623942 0.857942 0.802505 0.853157 0.785002 0.858859 0.786774 0.854402 0.604754 0.871664 0.593961 0.859664 0.608186 0.869299 0.817249 0.852534 0.8057 0.857942 0.802505 0.870622 0.589649 0.889591 0.593275 0.871664 0.593961 0.887178 0.818729 0.868067 0.82151 0.869299 0.817249 0.8794 0.616512 0.871664 0.593961 0.889591 0.593275 0.887178 0.818729 0.869299 0.817249 0.878029 0.795063 0.859664 0.608186 0.871664 0.593961 0.8794 0.616512 0.878029 0.795063 0.869299 0.817249 0.857942 0.802505 0.8794 0.616512 0.859881 0.623942 0.859664 0.608186 0.857942 0.802505 0.858859 0.786774 0.878029 0.795063 0.8794 0.616512 0.870908 0.635245 0.859881 0.623942 0.858859 0.786774 0.870376 0.775972 0.878029 0.795063 0.8794 0.616512 0.887842 0.636527 0.870908 0.635245 0.870376 0.775972 0.887351 0.775442 0.878029 0.795063 0.8794 0.616512 0.899781 0.626257 0.887842 0.636527 0.887351 0.775442 0.898822 0.786233 0.878029 0.795063 0.8794 0.616512 0.902359 0.607909 0.899781 0.626257 0.898822 0.786233 0.900583 0.804677 0.878029 0.795063 0.8794 0.616512 0.889591 0.593275 0.902359 0.607909 0.900583 0.804677 0.887178 0.818729 0.878029 0.795063 0.536419 0.06207197 0.518916 0.05029398 0.54026 0.05380499 0.501452 0.06204295 0.518916 0.05029398 0.518925 0.05968099 0.542788 0.064089 0.54026 0.05380499 0.55193 0.05833798 0.495083 0.06404697 0.497626 0.05376994 0.501452 0.06204295 0.555073 0.06189996 0.542788 0.064089 0.55193 0.05833798 0.495083 0.06404697 0.482805 0.06182897 0.485955 0.05827295 0.563812 0.076586 0.54629 0.07266896 0.555073 0.06189996 0.491565 0.07262498 0.474014 0.07651096 0.482805 0.06182897 0.583135 0.1084949 0.548333 0.08489298 0.563812 0.076586 0.489507 0.084858 0.454527 0.108481 0.474014 0.07651096 0.605512 0.165134 0.621513 0.227818 0.553118 0.209599 0.416514 0.22949 0.432024 0.165644 0.485339 0.210053 0.676379 0.233241 0.621513 0.227818 0.647395 0.200502 0.360308 0.235899 0.416514 0.22949 0.372747 0.256357 0.676379 0.233241 0.683908 0.279995 0.664761 0.253225 0.353696 0.284606 0.360308 0.235899 0.372747 0.256357 0.707254 0.310054 0.683908 0.279995 0.715342 0.265392 0.330721 0.316853 0.353696 0.284606 0.351187 0.31744 0.697446 0.332673 0.687515 0.311539 0.707254 0.310054 0.341964 0.339667 0.351187 0.31744 0.362723 0.329722 0.662817 0.372521 0.676824 0.323937 0.697446 0.332673 0.379297 0.378686 0.362723 0.329722 0.402772 0.362131 0.662817 0.372521 0.618316 0.375151 0.63905 0.35733 0.424583 0.379267 0.379297 0.378686 0.402772 0.362131 0.604826 0.397804 0.618316 0.375151 0.626842 0.395792 0.439252 0.40154 0.424583 0.379267 0.442396 0.381222 0.553095 0.390512 0.600808 0.377857 0.604826 0.397804 0.490934 0.391862 0.442396 0.381222 0.482938 0.358497 0.521923 0.386009 0.559674 0.357011 0.553095 0.390512 0.521923 0.386009 0.482938 0.358497 0.521086 0.343868 0.599845 0.344815 0.559674 0.357011 0.577279 0.340156 0.441977 0.347815 0.482938 0.358497 0.442396 0.381222 0.599845 0.344815 0.618316 0.375151 0.600808 0.377857 0.424583 0.379267 0.441977 0.347815 0.442396 0.381222 0.63905 0.35733 0.615546 0.342005 0.634472 0.332311 0.402772 0.362131 0.425972 0.345582 0.424583 0.379267 0.676824 0.323937 0.634472 0.332311 0.662406 0.312804 0.362723 0.329722 0.406362 0.33648 0.402772 0.362131 0.687515 0.311539 0.662406 0.312804 0.66844 0.297958 0.351187 0.31744 0.377061 0.317685 0.362723 0.329722 0.683908 0.279995 0.66844 0.297958 0.664101 0.277872 0.353696 0.284606 0.370304 0.302644 0.351187 0.31744 0.664761 0.253225 0.664101 0.277872 0.639236 0.253047 0.372747 0.256357 0.3741 0.281778 0.353696 0.284606 0.621513 0.227818 0.639236 0.253047 0.613992 0.242662 0.416514 0.22949 0.398938 0.255633 0.372747 0.256357 0.572941 0.258564 0.621513 0.227818 0.613992 0.242662 0.416514 0.22949 0.466409 0.259709 0.424464 0.244473 0.572941 0.258564 0.51976 0.2488639 0.553118 0.209599 0.51976 0.2488639 0.466409 0.259709 0.485339 0.210053 0.559674 0.357011 0.558527 0.316594 0.577279 0.340156 0.482938 0.358497 0.482619 0.317843 0.521086 0.343868 0.558527 0.316594 0.520277 0.294764 0.556923 0.291214 0.520277 0.294764 0.482619 0.317843 0.483433 0.292249 0.563905 0.272007 0.520277 0.294764 0.51976 0.2488639 0.475886 0.273078 0.520277 0.294764 0.483433 0.292249 0.525483 0.06896698 0.518925 0.05968099 0.536419 0.06207197 0.518925 0.05968099 0.512375 0.06895595 0.501452 0.06204295 0.531231 0.07382899 0.536419 0.06207197 0.542788 0.064089 0.501452 0.06204295 0.506626 0.07381099 0.495083 0.06404697 0.531231 0.07382899 0.54629 0.07266896 0.531019 0.08743095 0.506626 0.07381099 0.491565 0.07262498 0.495083 0.06404697 0.555621 0.121749 0.532669 0.09091997 0.548333 0.08489298 0.505177 0.09090799 0.482177 0.121781 0.489507 0.084858 0.531019 0.08743095 0.548333 0.08489298 0.532669 0.09091997 0.489507 0.084858 0.506827 0.08741599 0.505177 0.09090799 0.518981 0.151749 0.532042 0.127713 0.538112 0.1583819 0.518981 0.151749 0.505828 0.127728 0.518941 0.128358 0.532042 0.127713 0.518925 0.093952 0.532669 0.09091997 0.505828 0.127728 0.518925 0.093952 0.518941 0.128358 0.531019 0.08743095 0.518925 0.093952 0.518927 0.08517998 0.506827 0.08741599 0.518925 0.093952 0.505177 0.09090799 0.548362 0.17356 0.535214 0.166808 0.538112 0.1583819 0.502799 0.166857 0.489683 0.173693 0.499851 0.158434 0.537248 0.187577 0.548362 0.17356 0.544281 0.193366 0.50089 0.187571 0.489683 0.173693 0.5001 0.176033 0.528757 0.191785 0.544281 0.193366 0.519841 0.200843 0.509219 0.191626 0.493996 0.193428 0.50089 0.187571 0.519132 0.185382 0.519841 0.200843 0.517577 0.190607 0.519132 0.185382 0.519841 0.200843 0.509219 0.191626 0.538112 0.1583819 0.518998 0.1590279 0.518981 0.151749 0.499851 0.158434 0.518998 0.1590279 0.502799 0.166857 0.535214 0.166808 0.519016 0.165599 0.518998 0.1590279 0.502799 0.166857 0.519016 0.165599 0.50691 0.171667 0.519132 0.185382 0.528222 0.186316 0.528757 0.191785 0.509787 0.18626 0.519132 0.185382 0.509219 0.191626 0.528757 0.191785 0.533528 0.184215 0.537248 0.187577 0.504547 0.184206 0.509219 0.191626 0.50089 0.187571 0.533528 0.184215 0.537959 0.175966 0.537248 0.187577 0.504547 0.184206 0.5001 0.176033 0.504604 0.176791 0.537959 0.175966 0.531131 0.171631 0.535214 0.166808 0.50691 0.171667 0.5001 0.176033 0.502799 0.166857 0.533449 0.176739 0.528222 0.186316 0.519099 0.179457 0.504604 0.176791 0.509787 0.18626 0.504547 0.184206 0.519099 0.179457 0.531131 0.171631 0.533449 0.176739 0.50691 0.171667 0.519099 0.179457 0.504604 0.176791 0.519841 0.200843 0.553118 0.209599 0.51976 0.2488639 0.485339 0.210053 0.519841 0.200843 0.51976 0.2488639 0.544281 0.193366 0.561572 0.167779 0.553118 0.209599 0.476363 0.167996 0.493996 0.193428 0.485339 0.210053 0.538112 0.1583819 0.561572 0.167779 0.548362 0.17356 0.499851 0.158434 0.476363 0.167996 0.478371 0.149447 0.532042 0.127713 0.559475 0.1493189 0.538112 0.1583819 0.505828 0.127728 0.478371 0.149447 0.482177 0.121781 0.596138 0.133426 0.555621 0.121749 0.583135 0.1084949 0.441395 0.133592 0.482177 0.121781 0.478371 0.149447 0.601169 0.147885 0.559475 0.1493189 0.596138 0.133426 0.436337 0.148194 0.478371 0.149447 0.476363 0.167996 0.605512 0.165134 0.561572 0.167779 0.601169 0.147885 0.476363 0.167996 0.432024 0.165644 0.436337 0.148194 0.518927 0.08517998 0.528933 0.084957 0.531019 0.08743095 0.518927 0.08517998 0.508915 0.08494496 0.518925 0.08386498 0.531231 0.07382899 0.528933 0.084957 0.529036 0.07542896 0.508915 0.08494496 0.506626 0.07381099 0.50882 0.07541495 0.525483 0.06896698 0.529036 0.07542896 0.523751 0.070508 0.50882 0.07541495 0.512375 0.06895595 0.514106 0.07050096 0.518928 0.06789898 0.523751 0.070508 0.518929 0.06946796 0.514106 0.07050096 0.518928 0.06789898 0.518929 0.06946796 0.523751 0.070508 0.518928 0.07425898 0.518929 0.06946796 0.514106 0.07050096 0.518928 0.07425898 0.516297 0.07496595 0.523751 0.070508 0.524236 0.07669097 0.52156 0.07497 0.513619 0.07668399 0.514106 0.07050096 0.516297 0.07496595 0.529036 0.07542896 0.524601 0.07988595 0.524236 0.07669097 0.513252 0.07987898 0.50882 0.07541495 0.513619 0.07668399 0.518925 0.08386498 0.524601 0.07988595 0.528933 0.084957 0.518925 0.08386498 0.513252 0.07987898 0.518926 0.07933098 0.518926 0.07933098 0.52156 0.07497 0.524601 0.07988595 0.516297 0.07496595 0.518926 0.07933098 0.513252 0.07987898 0.524601 0.07988595 0.52156 0.07497 0.524236 0.07669097 0.513619 0.07668399 0.516297 0.07496595 0.513252 0.07987898 0.556923 0.291214 0.571787 0.277295 0.568351 0.292904 0.46807 0.278617 0.483433 0.292249 0.471978 0.294282 0.558527 0.316594 0.568351 0.292904 0.573085 0.311386 0.471978 0.294282 0.482619 0.317843 0.46779 0.313081 0.558527 0.316594 0.584855 0.327708 0.577279 0.340156 0.482619 0.317843 0.456477 0.329961 0.46779 0.313081 0.572941 0.258564 0.571787 0.277295 0.563905 0.272007 0.466409 0.259709 0.46807 0.278617 0.458737 0.268049 0.572941 0.258564 0.61172 0.255725 0.580734 0.26662 0.427062 0.257728 0.466409 0.259709 0.458737 0.268049 0.613992 0.242662 0.632494 0.262853 0.61172 0.255725 0.406068 0.265508 0.424464 0.244473 0.427062 0.257728 0.639236 0.253047 0.653658 0.279971 0.632494 0.262853 0.384904 0.283634 0.398938 0.255633 0.406068 0.265508 0.664101 0.277872 0.656064 0.297636 0.653658 0.279971 0.383015 0.301864 0.3741 0.281778 0.384904 0.283634 0.662406 0.312804 0.656064 0.297636 0.66844 0.297958 0.377061 0.317685 0.383015 0.301864 0.386858 0.314615 0.634472 0.332311 0.652752 0.310186 0.662406 0.312804 0.406362 0.33648 0.386858 0.314615 0.411556 0.327673 0.634472 0.332311 0.614408 0.331972 0.62904 0.323864 0.426727 0.335361 0.406362 0.33648 0.411556 0.327673 0.615546 0.342005 0.601033 0.333624 0.614408 0.331972 0.440344 0.336537 0.425972 0.345582 0.426727 0.335361 0.599845 0.344815 0.584855 0.327708 0.601033 0.333624 0.456477 0.329961 0.441977 0.347815 0.440344 0.336537 0.601033 0.333624 0.590644 0.321516 0.601799 0.328453 0.450408 0.323919 0.440344 0.336537 0.439372 0.331331 0.614408 0.331972 0.601799 0.328453 0.613335 0.327083 0.439372 0.331331 0.426727 0.335361 0.427623 0.330358 0.614408 0.331972 0.626851 0.320513 0.62904 0.323864 0.426727 0.335361 0.413648 0.324175 0.427623 0.330358 0.62904 0.323864 0.646248 0.306421 0.652752 0.310186 0.411556 0.327673 0.393381 0.31051 0.413648 0.324175 0.656064 0.297636 0.646248 0.306421 0.649541 0.296225 0.393381 0.31051 0.383015 0.301864 0.389662 0.300183 0.656064 0.297636 0.647785 0.283486 0.653658 0.279971 0.383015 0.301864 0.39104 0.287071 0.389662 0.300183 0.632494 0.262853 0.647785 0.283486 0.629829 0.267263 0.39104 0.287071 0.406068 0.265508 0.408893 0.269959 0.632494 0.262853 0.612641 0.26156 0.61172 0.255725 0.406068 0.265508 0.426254 0.263693 0.408893 0.269959 0.61172 0.255725 0.585166 0.270991 0.580734 0.26662 0.427062 0.257728 0.454369 0.272583 0.426254 0.263693 0.571787 0.277295 0.585166 0.270991 0.578124 0.2819 0.454369 0.272583 0.46807 0.278617 0.461798 0.283441 0.584855 0.327708 0.579548 0.30934 0.590644 0.321516 0.461204 0.311233 0.456477 0.329961 0.450408 0.323919 0.573085 0.311386 0.577524 0.293776 0.579548 0.30934 0.462754 0.295432 0.46779 0.313081 0.461204 0.311233 0.568351 0.292904 0.578124 0.2819 0.577524 0.293776 0.461798 0.283441 0.471978 0.294282 0.462754 0.295432 0.521923 0.386009 0.553209 0.433063 0.523031 0.433628 0.492809 0.434538 0.521923 0.386009 0.523031 0.433628 0.553095 0.390512 0.609819 0.431516 0.553209 0.433063 0.43586 0.43574 0.490934 0.391862 0.492809 0.434538 0.626842 0.395792 0.609819 0.431516 0.604826 0.397804 0.416915 0.400552 0.43586 0.43574 0.396518 0.425416 0.662817 0.372521 0.648174 0.419316 0.626842 0.395792 0.379297 0.378686 0.396518 0.425416 0.350292 0.396229 0.697446 0.332673 0.692106 0.388274 0.662817 0.372521 0.341964 0.339667 0.350292 0.396229 0.312756 0.350588 0.697446 0.332673 0.735879 0.312112 0.726332 0.341754 0.301067 0.320593 0.341964 0.339667 0.312756 0.350588 0.715342 0.265392 0.735879 0.312112 0.707254 0.310054 0.320452 0.270303 0.301067 0.320593 0.304876 0.261087 0.715342 0.265392 0.698172 0.216906 0.7299 0.256393 0.337414 0.219179 0.320452 0.270303 0.304876 0.261087 0.676379 0.233241 0.663103 0.190671 0.698172 0.216906 0.373474 0.191872 0.360308 0.235899 0.337414 0.219179 0.649444 0.02237796 0.62144 0.04808896 0.626908 0.01560795 0.388827 0.021586 0.416419 0.04763096 0.376796 0.07529598 0.626908 0.01560795 0.577206 0.03280097 0.56746 1.44e-4 0.411318 0.01513099 0.460782 0.03265595 0.416419 0.04763096 0.56746 1.44e-4 0.547413 0.04172396 0.518922 0.02488595 0.470636 1.44e-4 0.490511 0.04166895 0.460782 0.03265595 0.54026 0.05380499 0.518922 0.02488595 0.547413 0.04172396 0.518922 0.02488595 0.497626 0.05376994 0.490511 0.04166895 0.55193 0.05833798 0.547413 0.04172396 0.558059 0.05387097 0.490511 0.04166895 0.485955 0.05827295 0.479842 0.05378496 0.555073 0.06189996 0.558059 0.05387097 0.576951 0.057998 0.479842 0.05378496 0.482805 0.06182897 0.46092 0.05784499 0.563812 0.076586 0.576951 0.057998 0.611687 0.07826799 0.46092 0.05784499 0.474014 0.07651096 0.425932 0.07798498 0.576951 0.057998 0.62144 0.04808896 0.611687 0.07826799 0.416419 0.04763096 0.46092 0.05784499 0.425932 0.07798498 0.558059 0.05387097 0.577206 0.03280097 0.576951 0.057998 0.479842 0.05378496 0.460782 0.03265595 0.490511 0.04166895 0.611687 0.07826799 0.660451 0.07608395 0.626663 0.111357 0.425932 0.07798498 0.376796 0.07529598 0.416419 0.04763096 0.583135 0.1084949 0.611687 0.07826799 0.626663 0.111357 0.425932 0.07798498 0.454527 0.108481 0.410618 0.111244 0.629482 0.130456 0.601169 0.147885 0.596138 0.133426 0.407648 0.130594 0.436337 0.148194 0.413741 0.147158 0.626663 0.111357 0.596138 0.133426 0.583135 0.1084949 0.410618 0.111244 0.441395 0.133592 0.407648 0.130594 0.601169 0.147885 0.619303 0.159841 0.605512 0.165134 0.436337 0.148194 0.418035 0.160361 0.413741 0.147158 0.619303 0.159841 0.647395 0.200502 0.605512 0.165134 0.418035 0.160361 0.389677 0.20189 0.373474 0.191872 0.886245 0.1217769 0.89178 0.03691595 0.9459 0.07956898 0.141314 0.112482 0.142277 0.02146697 0.183115 0.09212696 0.849114 0.09973198 0.805584 0.01078599 0.89178 0.03691595 0.183115 0.09212696 0.232648 0.003483951 0.246353 0.07650995 0.805584 0.01078599 0.687018 0.07720398 0.672384 0.022201 0.349875 0.07595497 0.232648 0.003483951 0.365979 0.02099096 0.672384 0.022201 0.660451 0.07608395 0.649444 0.02237796 0.376796 0.07529598 0.365979 0.02099096 0.388827 0.021586 0.660451 0.07608395 0.629482 0.130456 0.626663 0.111357 0.376796 0.07529598 0.407648 0.130594 0.349875 0.07595497 0.7299 0.256393 0.760215 0.193244 0.789046 0.233323 0.271553 0.193871 0.304876 0.261087 0.241255 0.236977 0.909112 0.183261 0.9459 0.07956898 0.994525 0.1677049 0.107928 0.179083 0.07896095 0.06071895 0.141314 0.112482 0.862868 0.338556 0.962901 0.344752 0.911671 0.402429 0.160557 0.356821 0.04396796 0.367038 0.123776 0.315519 0.962901 0.344752 0.91536 0.259804 0.999856 0.25464 0.09896498 0.266968 0.04396796 0.367038 1.44e-4 0.259113 0.999856 0.25464 0.909112 0.183261 0.994525 0.1677049 0.107928 0.179083 1.44e-4 0.259113 0.01182895 0.155367 0.749542 0.334683 0.766337 0.300809 0.789162 0.313727 0.267408 0.310142 0.288183 0.346496 0.242992 0.325552 0.789162 0.313727 0.815314 0.276388 0.846174 0.293397 0.213065 0.285164 0.242992 0.325552 0.178537 0.304983 0.846174 0.293397 0.845007 0.256352 0.873517 0.265922 0.179662 0.263312 0.178537 0.304983 0.147089 0.274284 0.873517 0.265922 0.859075 0.228168 0.886999 0.2337689 0.1628029 0.23172 0.147089 0.274284 0.131514 0.237587 0.87503 0.184705 0.859075 0.228168 0.842355 0.19516 0.145224 0.182749 0.1628029 0.23172 0.131514 0.237587 0.909112 0.183261 0.886999 0.2337689 0.87503 0.184705 0.131514 0.237587 0.107928 0.179083 0.145224 0.182749 0.91536 0.259804 0.873517 0.265922 0.886999 0.2337689 0.147089 0.274284 0.09896498 0.266968 0.131514 0.237587 0.894128 0.301884 0.846174 0.293397 0.873517 0.265922 0.178537 0.304983 0.123776 0.315519 0.147089 0.274284 0.862868 0.338556 0.789162 0.313727 0.846174 0.293397 0.242992 0.325552 0.160557 0.356821 0.178537 0.304983 0.749542 0.334683 0.794286 0.364062 0.770185 0.379538 0.288183 0.346496 0.239776 0.382592 0.242992 0.325552 0.794286 0.364062 0.911671 0.402429 0.845499 0.449967 0.239776 0.382592 0.1064 0.432652 0.160557 0.356821 0.770572 0.444261 0.770185 0.379538 0.815858 0.445381 0.271364 0.473316 0.268122 0.398737 0.287033 0.442912 0.815858 0.445381 0.794286 0.364062 0.845499 0.449967 0.239776 0.382592 0.21926 0.477186 0.185281 0.484099 0.819845 0.468071 0.815858 0.445381 0.845499 0.449967 0.185281 0.484099 0.21926 0.477186 0.215894 0.503605 0.7299 0.256393 0.766337 0.300809 0.735879 0.312112 0.304876 0.261087 0.267408 0.310142 0.241255 0.236977 0.789046 0.233323 0.815314 0.276388 0.766337 0.300809 0.213065 0.285164 0.241255 0.236977 0.267408 0.310142 0.809631 0.233887 0.845007 0.256352 0.815314 0.276388 0.179662 0.263312 0.219168 0.237388 0.213065 0.285164 0.859075 0.228168 0.829287 0.2195619 0.842355 0.19516 0.1628029 0.23172 0.1990669 0.222464 0.179662 0.263312 0.788458 0.08082598 0.715482 0.1397269 0.687018 0.07720398 0.246353 0.07650995 0.319538 0.139409 0.246666 0.11485 0.715482 0.1397269 0.785486 0.15233 0.760215 0.193244 0.319538 0.139409 0.2459689 0.151002 0.246666 0.11485 0.698172 0.216906 0.715482 0.1397269 0.760215 0.193244 0.319538 0.139409 0.337414 0.219179 0.271553 0.193871 0.663103 0.190671 0.629482 0.130456 0.715482 0.1397269 0.407648 0.130594 0.373474 0.191872 0.319538 0.139409 0.629482 0.130456 0.687018 0.07720398 0.715482 0.1397269 0.319538 0.139409 0.349875 0.07595497 0.407648 0.130594 0.663103 0.190671 0.619303 0.159841 0.623495 0.146796 0.413741 0.147158 0.418035 0.160361 0.373474 0.191872 0.837382 0.156361 0.87503 0.184705 0.842355 0.19516 0.196622 0.155241 0.145224 0.182749 0.171653 0.1322939 0.87503 0.184705 0.886245 0.1217769 0.909112 0.183261 0.145224 0.182749 0.141314 0.112482 0.171653 0.1322939 0.78648 0.117591 0.837382 0.156361 0.785486 0.15233 0.246666 0.11485 0.196622 0.155241 0.171653 0.1322939 0.849114 0.09973198 0.78648 0.117591 0.788458 0.08082598 0.183115 0.09212696 0.246666 0.11485 0.171653 0.1322939 0.886245 0.1217769 0.858171 0.137775 0.849114 0.09973198 0.183115 0.09212696 0.171653 0.1322939 0.141314 0.112482 0.432388 0.894943 0.491058 0.881714 0.506166 0.904851 0.321637 0.893225 0.263032 0.878321 0.315867 0.868209 0.506166 0.904851 0.572792 0.860484 0.604825 0.879946 0.181486 0.854693 0.247207 0.901159 0.148729 0.873349 0.572792 0.860484 0.619962 0.791615 0.604825 0.879946 0.181486 0.854693 0.136063 0.784093 0.169745 0.787474 0.586396 0.793977 0.563786 0.739211 0.619962 0.791615 0.169745 0.787474 0.194086 0.733241 0.208656 0.740879 0.549027 0.746412 0.50827 0.697693 0.563786 0.739211 0.208656 0.740879 0.250811 0.693249 0.258399 0.707497 0.50827 0.697693 0.438641 0.680683 0.434803 0.658882 0.320962 0.677959 0.250811 0.693249 0.325318 0.656224 0.500314 0.711729 0.452955 0.700023 0.438641 0.680683 0.306136 0.696976 0.258399 0.707497 0.320962 0.677959 0.549027 0.746412 0.505666 0.730944 0.500314 0.711729 0.252524 0.726592 0.208656 0.740879 0.258399 0.707497 0.568148 0.787367 0.549027 0.746412 0.586396 0.793977 0.188269 0.781375 0.208656 0.740879 0.2145749 0.750414 0.555495 0.826352 0.586396 0.793977 0.572792 0.860484 0.19985 0.820889 0.169745 0.787474 0.188269 0.781375 0.501231 0.844356 0.572792 0.860484 0.491058 0.881714 0.253846 0.840502 0.181486 0.854693 0.19985 0.820889 0.491058 0.881714 0.457832 0.84004 0.501231 0.844356 0.297562 0.837358 0.263032 0.878321 0.253846 0.840502 0.785486 0.15233 0.783193 0.187449 0.760215 0.193244 0.2459689 0.151002 0.246955 0.187075 0.2336249 0.17562 0.434803 0.658882 0.394766 0.686125 0.391039 0.611891 0.325318 0.656224 0.364838 0.684445 0.320962 0.677959 0.789046 0.233323 0.783193 0.187449 0.809631 0.233887 0.246955 0.187075 0.241255 0.236977 0.219168 0.237388 0.391747 0.862097 0.438797 0.870229 0.432388 0.894943 0.315867 0.868209 0.363377 0.861308 0.321637 0.893225 0.438641 0.680683 0.435018 0.71828 0.394766 0.686125 0.323658 0.715731 0.320962 0.677959 0.364838 0.684445 0.384658 0.710299 0.435018 0.71828 0.433669 0.729661 0.3744 0.708969 0.323658 0.715731 0.364838 0.684445 0.410995 0.747662 0.433669 0.729661 0.427812 0.742828 0.324726 0.727177 0.347028 0.745816 0.33027 0.740536 0.384657 0.795423 0.410995 0.747662 0.418086 0.784946 0.37227 0.794472 0.347028 0.745816 0.3744 0.708969 0.384657 0.795423 0.431333 0.817535 0.401605 0.84146 0.37227 0.794472 0.32479 0.81546 0.338952 0.783073 0.401605 0.84146 0.457832 0.84004 0.438797 0.870229 0.354026 0.840297 0.297562 0.837358 0.32479 0.81546 0.816266 0.203086 0.829287 0.2195619 0.809631 0.233887 0.209828 0.206161 0.1990669 0.222464 0.1997669 0.214827 0.783193 0.187449 0.816266 0.203086 0.809631 0.233887 0.246955 0.187075 0.209828 0.206161 0.226485 0.183086 0.783193 0.187449 0.796021 0.176969 0.802192 0.1846089 0.226485 0.183086 0.2336249 0.17562 0.246955 0.187075 0.457832 0.84004 0.448505 0.804621 0.473386 0.8247 0.307886 0.802031 0.297562 0.837358 0.282357 0.821525 0.418086 0.784946 0.448505 0.804621 0.431333 0.817535 0.338952 0.783073 0.307886 0.802031 0.321237 0.777208 0.418086 0.784946 0.423718 0.754191 0.435868 0.779569 0.334089 0.752045 0.338952 0.783073 0.321237 0.777208 0.427812 0.742828 0.423718 0.754191 0.410995 0.747662 0.33027 0.740536 0.334089 0.752045 0.319919 0.74725 0.433669 0.729661 0.43795 0.749777 0.427812 0.742828 0.324726 0.727177 0.319919 0.74725 0.312907 0.729222 0.433669 0.729661 0.440995 0.724383 0.445392 0.731997 0.31751 0.721697 0.324726 0.727177 0.312907 0.729222 0.435018 0.71828 0.455277 0.713731 0.440995 0.724383 0.30346 0.710657 0.323658 0.715731 0.31751 0.721697 0.501231 0.844356 0.473386 0.8247 0.512485 0.828811 0.282357 0.821525 0.253846 0.840502 0.2429749 0.824574 0.555495 0.826352 0.512485 0.828811 0.550942 0.811814 0.2429749 0.824574 0.19985 0.820889 0.204839 0.806417 0.568148 0.787367 0.550942 0.811814 0.552139 0.787682 0.204839 0.806417 0.188269 0.781375 0.204331 0.782156 0.568148 0.787367 0.539407 0.764539 0.54285 0.755753 0.188269 0.781375 0.217774 0.759319 0.204331 0.782156 0.54285 0.755753 0.508439 0.743135 0.505666 0.730944 0.2145749 0.750414 0.249419 0.738732 0.217774 0.759319 0.505666 0.730944 0.455277 0.713731 0.452955 0.700023 0.252524 0.726592 0.30346 0.710657 0.249419 0.738732 0.445392 0.731997 0.454776 0.761665 0.43795 0.749777 0.312907 0.729222 0.302729 0.758742 0.28696 0.74502 0.470841 0.748408 0.475403 0.783904 0.454776 0.761665 0.28696 0.74502 0.281439 0.780511 0.268291 0.766661 0.475403 0.783904 0.503673 0.787562 0.494476 0.80247 0.252972 0.78341 0.281439 0.780511 0.26179 0.798626 0.503673 0.787562 0.516802 0.807339 0.494476 0.80247 0.252972 0.78341 0.239243 0.802891 0.23792 0.787045 0.512485 0.828811 0.494476 0.80247 0.516802 0.807339 0.26179 0.798626 0.2429749 0.824574 0.239243 0.802891 0.475403 0.783904 0.473386 0.8247 0.448505 0.804621 0.281439 0.780511 0.282357 0.821525 0.26179 0.798626 0.435868 0.779569 0.475403 0.783904 0.448505 0.804621 0.321237 0.777208 0.281439 0.780511 0.302729 0.758742 0.43795 0.749777 0.435868 0.779569 0.423718 0.754191 0.321237 0.777208 0.319919 0.74725 0.334089 0.752045 0.455277 0.713731 0.445392 0.731997 0.440995 0.724383 0.30346 0.710657 0.312907 0.729222 0.28696 0.74502 0.508439 0.743135 0.470841 0.748408 0.455277 0.713731 0.28696 0.74502 0.249419 0.738732 0.30346 0.710657 0.503673 0.787562 0.508439 0.743135 0.539407 0.764539 0.252972 0.78341 0.249419 0.738732 0.268291 0.766661 0.518562 0.791602 0.539407 0.764539 0.552139 0.787682 0.23792 0.787045 0.217774 0.759319 0.252972 0.78341 0.550942 0.811814 0.518562 0.791602 0.552139 0.787682 0.23792 0.787045 0.204839 0.806417 0.204331 0.782156 0.512485 0.828811 0.516802 0.807339 0.550942 0.811814 0.204839 0.806417 0.239243 0.802891 0.2429749 0.824574 0.50827 0.697693 0.484068 0.628776 0.543385 0.683538 0.276936 0.625067 0.250811 0.693249 0.216123 0.67812 0.563786 0.739211 0.543385 0.683538 0.581052 0.726933 0.216123 0.67812 0.194086 0.733241 0.1771759 0.720426 0.563786 0.739211 0.616701 0.759965 0.619962 0.791615 0.194086 0.733241 0.140379 0.752377 0.1771759 0.720426 0.619962 0.791615 0.660647 0.741167 0.707492 0.759884 0.136063 0.784093 0.09703797 0.732052 0.140379 0.752377 0.707492 0.759884 0.677256 0.670436 0.745511 0.6521 0.04952597 0.748824 0.08356398 0.662038 0.09703797 0.732052 0.745511 0.6521 0.671403 0.592656 0.740843 0.572428 0.019409 0.639749 0.09281998 0.589862 0.08356398 0.662038 0.543385 0.683538 0.671403 0.592656 0.677256 0.670436 0.216123 0.67812 0.09281998 0.589862 0.276936 0.625067 0.677256 0.670436 0.581052 0.726933 0.543385 0.683538 0.1771759 0.720426 0.08356398 0.662038 0.216123 0.67812 0.660647 0.741167 0.616701 0.759965 0.581052 0.726933 0.1771759 0.720426 0.140379 0.752377 0.09703797 0.732052 0.829287 0.2195619 0.834705 0.206959 0.842355 0.19516 0.05121594 0.522659 0.09281998 0.589862 0.03366398 0.564403 0.62042 0.565675 0.484068 0.628776 0.498072 0.552315 0.276936 0.625067 0.145041 0.562595 0.264218 0.55014 0.391039 0.611891 0.484068 0.628776 0.434803 0.658882 0.276936 0.625067 0.369913 0.610196 0.325318 0.656224 0.890955 0.590063 0.870622 0.589649 0.860081 0.560115 0.856226 0.850547 0.868067 0.82151 0.888398 0.821999 0.904571 0.559404 0.860081 0.560115 0.853018 0.521562 0.847458 0.888748 0.856226 0.850547 0.90064 0.853232 0.860081 0.560115 0.8289 0.590771 0.798481 0.569535 0.795104 0.838402 0.826436 0.818537 0.856226 0.850547 0.870622 0.589649 0.854402 0.604754 0.8289 0.590771 0.826436 0.818537 0.852534 0.8057 0.868067 0.82151 0.854402 0.604754 0.854107 0.625459 0.828171 0.633354 0.827598 0.775964 0.853157 0.785002 0.852534 0.8057 0.8289 0.590771 0.828171 0.633354 0.791018 0.645443 0.791018 0.762238 0.827598 0.775964 0.826436 0.818537 0.855181 0.668527 0.842358 0.702491 0.791018 0.645443 0.856142 0.742025 0.827598 0.775964 0.791018 0.762238 0.867508 0.642291 0.855181 0.668527 0.828171 0.633354 0.867293 0.768782 0.853157 0.785002 0.827598 0.775964 0.867508 0.642291 0.890474 0.641909 0.900375 0.666964 0.901223 0.745592 0.890219 0.770183 0.867293 0.768782 0.900375 0.666964 0.918898 0.699697 0.842358 0.702491 0.901223 0.745592 0.856142 0.742025 0.844839 0.707525 0.931889 0.636832 0.968392 0.645333 0.918898 0.699697 0.931368 0.777093 0.901223 0.745592 0.92118 0.713713 0.905882 0.627902 0.931889 0.636832 0.900375 0.666964 0.90499 0.78486 0.890219 0.770183 0.901223 0.745592 0.906232 0.605742 0.933717 0.593037 0.931889 0.636832 0.904357 0.807013 0.90499 0.78486 0.931368 0.777093 0.933717 0.593037 0.968392 0.573812 0.968392 0.645333 0.93125 0.820926 0.931368 0.777093 0.968213 0.77022 0.904571 0.559404 0.920166 0.524546 0.968392 0.573812 0.90064 0.853232 0.93125 0.820926 0.965038 0.841671 0.890955 0.590063 0.904571 0.559404 0.933717 0.593037 0.888398 0.821999 0.904357 0.807013 0.93125 0.820926 0.906232 0.605742 0.902359 0.607909 0.889591 0.593275 0.904357 0.807013 0.888398 0.821999 0.887178 0.818729 0.905882 0.627902 0.899781 0.626257 0.902359 0.607909 0.90499 0.78486 0.904357 0.807013 0.900583 0.804677 0.890474 0.641909 0.887842 0.636527 0.899781 0.626257 0.890219 0.770183 0.90499 0.78486 0.898822 0.786233 0.867508 0.642291 0.870908 0.635245 0.887842 0.636527 0.867293 0.768782 0.890219 0.770183 0.887351 0.775442 0.867508 0.642291 0.854107 0.625459 0.859881 0.623942 0.858859 0.786774 0.853157 0.785002 0.867293 0.768782 0.854107 0.625459 0.854402 0.604754 0.859664 0.608186 0.857942 0.802505 0.852534 0.8057 0.853157 0.785002 0.854402 0.604754 0.870622 0.589649 0.871664 0.593961 0.869299 0.817249 0.868067 0.82151 0.852534 0.8057 0.870622 0.589649 0.890955 0.590063 0.889591 0.593275 0.887178 0.818729 0.888398 0.821999 0.868067 0.82151 0.536419 0.06207197 0.518925 0.05968099 0.518916 0.05029398 0.501452 0.06204295 0.497626 0.05376994 0.518916 0.05029398 0.542788 0.064089 0.536419 0.06207197 0.54026 0.05380499 0.495083 0.06404697 0.485955 0.05827295 0.497626 0.05376994 0.555073 0.06189996 0.54629 0.07266896 0.542788 0.064089 0.495083 0.06404697 0.491565 0.07262498 0.482805 0.06182897 0.563812 0.076586 0.548333 0.08489298 0.54629 0.07266896 0.491565 0.07262498 0.489507 0.084858 0.474014 0.07651096 0.583135 0.1084949 0.555621 0.121749 0.548333 0.08489298 0.489507 0.084858 0.482177 0.121781 0.454527 0.108481 0.605512 0.165134 0.647395 0.200502 0.621513 0.227818 0.416514 0.22949 0.389677 0.20189 0.432024 0.165644 0.676379 0.233241 0.664761 0.253225 0.621513 0.227818 0.360308 0.235899 0.389677 0.20189 0.416514 0.22949 0.676379 0.233241 0.715342 0.265392 0.683908 0.279995 0.353696 0.284606 0.320452 0.270303 0.360308 0.235899 0.707254 0.310054 0.687515 0.311539 0.683908 0.279995 0.330721 0.316853 0.320452 0.270303 0.353696 0.284606 0.697446 0.332673 0.676824 0.323937 0.687515 0.311539 0.341964 0.339667 0.330721 0.316853 0.351187 0.31744 0.662817 0.372521 0.63905 0.35733 0.676824 0.323937 0.379297 0.378686 0.341964 0.339667 0.362723 0.329722 0.662817 0.372521 0.626842 0.395792 0.618316 0.375151 0.424583 0.379267 0.416915 0.400552 0.379297 0.378686 0.604826 0.397804 0.600808 0.377857 0.618316 0.375151 0.439252 0.40154 0.416915 0.400552 0.424583 0.379267 0.553095 0.390512 0.559674 0.357011 0.600808 0.377857 0.490934 0.391862 0.439252 0.40154 0.442396 0.381222 0.521923 0.386009 0.521086 0.343868 0.559674 0.357011 0.521923 0.386009 0.490934 0.391862 0.482938 0.358497 0.599845 0.344815 0.600808 0.377857 0.559674 0.357011 0.441977 0.347815 0.464579 0.34223 0.482938 0.358497 0.599845 0.344815 0.615546 0.342005 0.618316 0.375151 0.424583 0.379267 0.425972 0.345582 0.441977 0.347815 0.63905 0.35733 0.618316 0.375151 0.615546 0.342005 0.402772 0.362131 0.406362 0.33648 0.425972 0.345582 0.676824 0.323937 0.63905 0.35733 0.634472 0.332311 0.362723 0.329722 0.377061 0.317685 0.406362 0.33648 0.687515 0.311539 0.676824 0.323937 0.662406 0.312804 0.351187 0.31744 0.370304 0.302644 0.377061 0.317685 0.683908 0.279995 0.687515 0.311539 0.66844 0.297958 0.353696 0.284606 0.3741 0.281778 0.370304 0.302644 0.664761 0.253225 0.683908 0.279995 0.664101 0.277872 0.372747 0.256357 0.398938 0.255633 0.3741 0.281778 0.621513 0.227818 0.664761 0.253225 0.639236 0.253047 0.416514 0.22949 0.424464 0.244473 0.398938 0.255633 0.572941 0.258564 0.553118 0.209599 0.621513 0.227818 0.416514 0.22949 0.485339 0.210053 0.466409 0.259709 0.572941 0.258564 0.563905 0.272007 0.51976 0.2488639 0.51976 0.2488639 0.475886 0.273078 0.466409 0.259709 0.559674 0.357011 0.521086 0.343868 0.558527 0.316594 0.482938 0.358497 0.464579 0.34223 0.482619 0.317843 0.558527 0.316594 0.521086 0.343868 0.520277 0.294764 0.520277 0.294764 0.521086 0.343868 0.482619 0.317843 0.563905 0.272007 0.556923 0.291214 0.520277 0.294764 0.475886 0.273078 0.51976 0.2488639 0.520277 0.294764 0.525483 0.06896698 0.518928 0.06789898 0.518925 0.05968099 0.518925 0.05968099 0.518928 0.06789898 0.512375 0.06895595 0.531231 0.07382899 0.525483 0.06896698 0.536419 0.06207197 0.501452 0.06204295 0.512375 0.06895595 0.506626 0.07381099 0.531231 0.07382899 0.542788 0.064089 0.54629 0.07266896 0.506626 0.07381099 0.506827 0.08741599 0.491565 0.07262498 0.555621 0.121749 0.532042 0.127713 0.532669 0.09091997 0.505177 0.09090799 0.505828 0.127728 0.482177 0.121781 0.531019 0.08743095 0.54629 0.07266896 0.548333 0.08489298 0.489507 0.084858 0.491565 0.07262498 0.506827 0.08741599 0.518981 0.151749 0.518941 0.128358 0.532042 0.127713 0.518981 0.151749 0.499851 0.158434 0.505828 0.127728 0.532042 0.127713 0.518941 0.128358 0.518925 0.093952 0.505828 0.127728 0.505177 0.09090799 0.518925 0.093952 0.531019 0.08743095 0.532669 0.09091997 0.518925 0.093952 0.506827 0.08741599 0.518927 0.08517998 0.518925 0.093952 0.548362 0.17356 0.537959 0.175966 0.535214 0.166808 0.502799 0.166857 0.5001 0.176033 0.489683 0.173693 0.537248 0.187577 0.537959 0.175966 0.548362 0.17356 0.50089 0.187571 0.493996 0.193428 0.489683 0.173693 0.528757 0.191785 0.537248 0.187577 0.544281 0.193366 0.509219 0.191626 0.519841 0.200843 0.493996 0.193428 0.519132 0.185382 0.528757 0.191785 0.519841 0.200843 0.538112 0.1583819 0.535214 0.166808 0.518998 0.1590279 0.499851 0.158434 0.518981 0.151749 0.518998 0.1590279 0.535214 0.166808 0.531131 0.171631 0.519016 0.165599 0.502799 0.166857 0.518998 0.1590279 0.519016 0.165599 0.519132 0.185382 0.519099 0.179457 0.528222 0.186316 0.509787 0.18626 0.519099 0.179457 0.519132 0.185382 0.528757 0.191785 0.528222 0.186316 0.533528 0.184215 0.504547 0.184206 0.509787 0.18626 0.509219 0.191626 0.533528 0.184215 0.533449 0.176739 0.537959 0.175966 0.504547 0.184206 0.50089 0.187571 0.5001 0.176033 0.537959 0.175966 0.533449 0.176739 0.531131 0.171631 0.50691 0.171667 0.504604 0.176791 0.5001 0.176033 0.533449 0.176739 0.533528 0.184215 0.528222 0.186316 0.504604 0.176791 0.519099 0.179457 0.509787 0.18626 0.519099 0.179457 0.519016 0.165599 0.531131 0.171631 0.50691 0.171667 0.519016 0.165599 0.519099 0.179457 0.519841 0.200843 0.544281 0.193366 0.553118 0.209599 0.485339 0.210053 0.493996 0.193428 0.519841 0.200843 0.544281 0.193366 0.548362 0.17356 0.561572 0.167779 0.476363 0.167996 0.489683 0.173693 0.493996 0.193428 0.538112 0.1583819 0.559475 0.1493189 0.561572 0.167779 0.499851 0.158434 0.489683 0.173693 0.476363 0.167996 0.532042 0.127713 0.555621 0.121749 0.559475 0.1493189 0.505828 0.127728 0.499851 0.158434 0.478371 0.149447 0.596138 0.133426 0.559475 0.1493189 0.555621 0.121749 0.441395 0.133592 0.454527 0.108481 0.482177 0.121781 0.601169 0.147885 0.561572 0.167779 0.559475 0.1493189 0.436337 0.148194 0.441395 0.133592 0.478371 0.149447 0.605512 0.165134 0.553118 0.209599 0.561572 0.167779 0.476363 0.167996 0.485339 0.210053 0.432024 0.165644 0.518927 0.08517998 0.518925 0.08386498 0.528933 0.084957 0.518927 0.08517998 0.506827 0.08741599 0.508915 0.08494496 0.531231 0.07382899 0.531019 0.08743095 0.528933 0.084957 0.508915 0.08494496 0.506827 0.08741599 0.506626 0.07381099 0.525483 0.06896698 0.531231 0.07382899 0.529036 0.07542896 0.50882 0.07541495 0.506626 0.07381099 0.512375 0.06895595 0.518928 0.06789898 0.525483 0.06896698 0.523751 0.070508 0.514106 0.07050096 0.512375 0.06895595 0.518928 0.06789898 0.523751 0.070508 0.52156 0.07497 0.518928 0.07425898 0.514106 0.07050096 0.518929 0.06946796 0.518928 0.07425898 0.523751 0.070508 0.529036 0.07542896 0.524236 0.07669097 0.513619 0.07668399 0.50882 0.07541495 0.514106 0.07050096 0.529036 0.07542896 0.528933 0.084957 0.524601 0.07988595 0.513252 0.07987898 0.508915 0.08494496 0.50882 0.07541495 0.518925 0.08386498 0.518926 0.07933098 0.524601 0.07988595 0.518925 0.08386498 0.508915 0.08494496 0.513252 0.07987898 0.518926 0.07933098 0.518928 0.07425898 0.52156 0.07497 0.516297 0.07496595 0.518928 0.07425898 0.518926 0.07933098 0.556923 0.291214 0.563905 0.272007 0.571787 0.277295 0.46807 0.278617 0.475886 0.273078 0.483433 0.292249 0.558527 0.316594 0.556923 0.291214 0.568351 0.292904 0.471978 0.294282 0.483433 0.292249 0.482619 0.317843 0.558527 0.316594 0.573085 0.311386 0.584855 0.327708 0.482619 0.317843 0.464579 0.34223 0.456477 0.329961 0.572941 0.258564 0.580734 0.26662 0.571787 0.277295 0.466409 0.259709 0.475886 0.273078 0.46807 0.278617 0.572941 0.258564 0.613992 0.242662 0.61172 0.255725 0.427062 0.257728 0.424464 0.244473 0.466409 0.259709 0.613992 0.242662 0.639236 0.253047 0.632494 0.262853 0.406068 0.265508 0.398938 0.255633 0.424464 0.244473 0.639236 0.253047 0.664101 0.277872 0.653658 0.279971 0.384904 0.283634 0.3741 0.281778 0.398938 0.255633 0.664101 0.277872 0.66844 0.297958 0.656064 0.297636 0.383015 0.301864 0.370304 0.302644 0.3741 0.281778 0.662406 0.312804 0.652752 0.310186 0.656064 0.297636 0.377061 0.317685 0.370304 0.302644 0.383015 0.301864 0.634472 0.332311 0.62904 0.323864 0.652752 0.310186 0.406362 0.33648 0.377061 0.317685 0.386858 0.314615 0.634472 0.332311 0.615546 0.342005 0.614408 0.331972 0.426727 0.335361 0.425972 0.345582 0.406362 0.33648 0.615546 0.342005 0.599845 0.344815 0.601033 0.333624 0.440344 0.336537 0.441977 0.347815 0.425972 0.345582 0.599845 0.344815 0.577279 0.340156 0.584855 0.327708 0.456477 0.329961 0.464579 0.34223 0.441977 0.347815 0.601033 0.333624 0.584855 0.327708 0.590644 0.321516 0.450408 0.323919 0.456477 0.329961 0.440344 0.336537 0.614408 0.331972 0.601033 0.333624 0.601799 0.328453 0.439372 0.331331 0.440344 0.336537 0.426727 0.335361 0.614408 0.331972 0.613335 0.327083 0.626851 0.320513 0.426727 0.335361 0.411556 0.327673 0.413648 0.324175 0.62904 0.323864 0.626851 0.320513 0.646248 0.306421 0.411556 0.327673 0.386858 0.314615 0.393381 0.31051 0.656064 0.297636 0.652752 0.310186 0.646248 0.306421 0.393381 0.31051 0.386858 0.314615 0.383015 0.301864 0.656064 0.297636 0.649541 0.296225 0.647785 0.283486 0.383015 0.301864 0.384904 0.283634 0.39104 0.287071 0.632494 0.262853 0.653658 0.279971 0.647785 0.283486 0.39104 0.287071 0.384904 0.283634 0.406068 0.265508 0.632494 0.262853 0.629829 0.267263 0.612641 0.26156 0.406068 0.265508 0.427062 0.257728 0.426254 0.263693 0.61172 0.255725 0.612641 0.26156 0.585166 0.270991 0.427062 0.257728 0.458737 0.268049 0.454369 0.272583 0.571787 0.277295 0.580734 0.26662 0.585166 0.270991 0.454369 0.272583 0.458737 0.268049 0.46807 0.278617 0.584855 0.327708 0.573085 0.311386 0.579548 0.30934 0.461204 0.311233 0.46779 0.313081 0.456477 0.329961 0.573085 0.311386 0.568351 0.292904 0.577524 0.293776 0.462754 0.295432 0.471978 0.294282 0.46779 0.313081 0.568351 0.292904 0.571787 0.277295 0.578124 0.2819 0.461798 0.283441 0.46807 0.278617 0.471978 0.294282 0.521923 0.386009 0.553095 0.390512 0.553209 0.433063 0.492809 0.434538 0.490934 0.391862 0.521923 0.386009 0.553095 0.390512 0.604826 0.397804 0.609819 0.431516 0.43586 0.43574 0.439252 0.40154 0.490934 0.391862 0.626842 0.395792 0.648174 0.419316 0.609819 0.431516 0.416915 0.400552 0.439252 0.40154 0.43586 0.43574 0.662817 0.372521 0.692106 0.388274 0.648174 0.419316 0.379297 0.378686 0.416915 0.400552 0.396518 0.425416 0.697446 0.332673 0.726332 0.341754 0.692106 0.388274 0.341964 0.339667 0.379297 0.378686 0.350292 0.396229 0.697446 0.332673 0.707254 0.310054 0.735879 0.312112 0.301067 0.320593 0.330721 0.316853 0.341964 0.339667 0.715342 0.265392 0.7299 0.256393 0.735879 0.312112 0.320452 0.270303 0.330721 0.316853 0.301067 0.320593 0.715342 0.265392 0.676379 0.233241 0.698172 0.216906 0.337414 0.219179 0.360308 0.235899 0.320452 0.270303 0.676379 0.233241 0.647395 0.200502 0.663103 0.190671 0.373474 0.191872 0.389677 0.20189 0.360308 0.235899 0.649444 0.02237796 0.660451 0.07608395 0.62144 0.04808896 0.388827 0.021586 0.411318 0.01513099 0.416419 0.04763096 0.626908 0.01560795 0.62144 0.04808896 0.577206 0.03280097 0.411318 0.01513099 0.470636 1.44e-4 0.460782 0.03265595 0.56746 1.44e-4 0.577206 0.03280097 0.547413 0.04172396 0.470636 1.44e-4 0.518922 0.02488595 0.490511 0.04166895 0.54026 0.05380499 0.518916 0.05029398 0.518922 0.02488595 0.518922 0.02488595 0.518916 0.05029398 0.497626 0.05376994 0.55193 0.05833798 0.54026 0.05380499 0.547413 0.04172396 0.490511 0.04166895 0.497626 0.05376994 0.485955 0.05827295 0.555073 0.06189996 0.55193 0.05833798 0.558059 0.05387097 0.479842 0.05378496 0.485955 0.05827295 0.482805 0.06182897 0.563812 0.076586 0.555073 0.06189996 0.576951 0.057998 0.46092 0.05784499 0.482805 0.06182897 0.474014 0.07651096 0.576951 0.057998 0.577206 0.03280097 0.62144 0.04808896 0.416419 0.04763096 0.460782 0.03265595 0.46092 0.05784499 0.558059 0.05387097 0.547413 0.04172396 0.577206 0.03280097 0.479842 0.05378496 0.46092 0.05784499 0.460782 0.03265595 0.611687 0.07826799 0.62144 0.04808896 0.660451 0.07608395 0.425932 0.07798498 0.410618 0.111244 0.376796 0.07529598 0.583135 0.1084949 0.563812 0.076586 0.611687 0.07826799 0.425932 0.07798498 0.474014 0.07651096 0.454527 0.108481 0.629482 0.130456 0.623495 0.146796 0.601169 0.147885 0.407648 0.130594 0.441395 0.133592 0.436337 0.148194 0.626663 0.111357 0.629482 0.130456 0.596138 0.133426 0.410618 0.111244 0.454527 0.108481 0.441395 0.133592 0.601169 0.147885 0.623495 0.146796 0.619303 0.159841 0.436337 0.148194 0.432024 0.165644 0.418035 0.160361 0.619303 0.159841 0.663103 0.190671 0.647395 0.200502 0.418035 0.160361 0.432024 0.165644 0.389677 0.20189 0.886245 0.1217769 0.849114 0.09973198 0.89178 0.03691595 0.141314 0.112482 0.07896095 0.06071895 0.142277 0.02146697 0.849114 0.09973198 0.788458 0.08082598 0.805584 0.01078599 0.183115 0.09212696 0.142277 0.02146697 0.232648 0.003483951 0.805584 0.01078599 0.788458 0.08082598 0.687018 0.07720398 0.349875 0.07595497 0.246353 0.07650995 0.232648 0.003483951 0.672384 0.022201 0.687018 0.07720398 0.660451 0.07608395 0.376796 0.07529598 0.349875 0.07595497 0.365979 0.02099096 0.660451 0.07608395 0.687018 0.07720398 0.629482 0.130456 0.376796 0.07529598 0.410618 0.111244 0.407648 0.130594 0.7299 0.256393 0.698172 0.216906 0.760215 0.193244 0.271553 0.193871 0.337414 0.219179 0.304876 0.261087 0.909112 0.183261 0.886245 0.1217769 0.9459 0.07956898 0.107928 0.179083 0.01182895 0.155367 0.07896095 0.06071895 0.862868 0.338556 0.894128 0.301884 0.962901 0.344752 0.160557 0.356821 0.1064 0.432652 0.04396796 0.367038 0.962901 0.344752 0.894128 0.301884 0.91536 0.259804 0.09896498 0.266968 0.123776 0.315519 0.04396796 0.367038 0.999856 0.25464 0.91536 0.259804 0.909112 0.183261 0.107928 0.179083 0.09896498 0.266968 1.44e-4 0.259113 0.749542 0.334683 0.735879 0.312112 0.766337 0.300809 0.267408 0.310142 0.301067 0.320593 0.288183 0.346496 0.789162 0.313727 0.766337 0.300809 0.815314 0.276388 0.213065 0.285164 0.267408 0.310142 0.242992 0.325552 0.846174 0.293397 0.815314 0.276388 0.845007 0.256352 0.179662 0.263312 0.213065 0.285164 0.178537 0.304983 0.873517 0.265922 0.845007 0.256352 0.859075 0.228168 0.1628029 0.23172 0.179662 0.263312 0.147089 0.274284 0.87503 0.184705 0.886999 0.2337689 0.859075 0.228168 0.145224 0.182749 0.176788 0.196179 0.1628029 0.23172 0.909112 0.183261 0.91536 0.259804 0.886999 0.2337689 0.131514 0.237587 0.09896498 0.266968 0.107928 0.179083 0.91536 0.259804 0.894128 0.301884 0.873517 0.265922 0.147089 0.274284 0.123776 0.315519 0.09896498 0.266968 0.894128 0.301884 0.862868 0.338556 0.846174 0.293397 0.178537 0.304983 0.160557 0.356821 0.123776 0.315519 0.862868 0.338556 0.794286 0.364062 0.789162 0.313727 0.242992 0.325552 0.239776 0.382592 0.160557 0.356821 0.749542 0.334683 0.789162 0.313727 0.794286 0.364062 0.288183 0.346496 0.268122 0.398737 0.239776 0.382592 0.794286 0.364062 0.862868 0.338556 0.911671 0.402429 0.239776 0.382592 0.185281 0.484099 0.1064 0.432652 0.770572 0.444261 0.7557 0.418603 0.770185 0.379538 0.271364 0.473316 0.21926 0.477186 0.268122 0.398737 0.815858 0.445381 0.770185 0.379538 0.794286 0.364062 0.239776 0.382592 0.268122 0.398737 0.21926 0.477186 0.7299 0.256393 0.789046 0.233323 0.766337 0.300809 0.304876 0.261087 0.301067 0.320593 0.267408 0.310142 0.789046 0.233323 0.809631 0.233887 0.815314 0.276388 0.213065 0.285164 0.219168 0.237388 0.241255 0.236977 0.809631 0.233887 0.829287 0.2195619 0.845007 0.256352 0.179662 0.263312 0.1990669 0.222464 0.219168 0.237388 0.859075 0.228168 0.845007 0.256352 0.829287 0.2195619 0.1628029 0.23172 0.176788 0.196179 0.1990669 0.222464 0.788458 0.08082598 0.78648 0.117591 0.715482 0.1397269 0.246353 0.07650995 0.349875 0.07595497 0.319538 0.139409 0.715482 0.1397269 0.78648 0.117591 0.785486 0.15233 0.319538 0.139409 0.271553 0.193871 0.2459689 0.151002 0.698172 0.216906 0.663103 0.190671 0.715482 0.1397269 0.319538 0.139409 0.373474 0.191872 0.337414 0.219179 0.663103 0.190671 0.623495 0.146796 0.629482 0.130456 0.407648 0.130594 0.413741 0.147158 0.373474 0.191872 0.837382 0.156361 0.858171 0.137775 0.87503 0.184705 0.196622 0.155241 0.176788 0.196179 0.145224 0.182749 0.87503 0.184705 0.858171 0.137775 0.886245 0.1217769 0.145224 0.182749 0.107928 0.179083 0.141314 0.112482 0.78648 0.117591 0.858171 0.137775 0.837382 0.156361 0.246666 0.11485 0.2459689 0.151002 0.196622 0.155241 0.849114 0.09973198 0.858171 0.137775 0.78648 0.117591 0.183115 0.09212696 0.246353 0.07650995 0.246666 0.11485 0.432388 0.894943 0.438797 0.870229 0.491058 0.881714 0.321637 0.893225 0.247207 0.901159 0.263032 0.878321 0.506166 0.904851 0.491058 0.881714 0.572792 0.860484 0.181486 0.854693 0.263032 0.878321 0.247207 0.901159 0.572792 0.860484 0.586396 0.793977 0.619962 0.791615 0.181486 0.854693 0.148729 0.873349 0.136063 0.784093 0.586396 0.793977 0.549027 0.746412 0.563786 0.739211 0.169745 0.787474 0.136063 0.784093 0.194086 0.733241 0.549027 0.746412 0.500314 0.711729 0.50827 0.697693 0.208656 0.740879 0.194086 0.733241 0.250811 0.693249 0.50827 0.697693 0.500314 0.711729 0.438641 0.680683 0.320962 0.677959 0.258399 0.707497 0.250811 0.693249 0.500314 0.711729 0.505666 0.730944 0.452955 0.700023 0.306136 0.696976 0.252524 0.726592 0.258399 0.707497 0.549027 0.746412 0.54285 0.755753 0.505666 0.730944 0.252524 0.726592 0.2145749 0.750414 0.208656 0.740879 0.568148 0.787367 0.54285 0.755753 0.549027 0.746412 0.188269 0.781375 0.169745 0.787474 0.208656 0.740879 0.555495 0.826352 0.568148 0.787367 0.586396 0.793977 0.19985 0.820889 0.181486 0.854693 0.169745 0.787474 0.501231 0.844356 0.555495 0.826352 0.572792 0.860484 0.253846 0.840502 0.263032 0.878321 0.181486 0.854693 0.491058 0.881714 0.438797 0.870229 0.457832 0.84004 0.297562 0.837358 0.315867 0.868209 0.263032 0.878321 0.785486 0.15233 0.796021 0.176969 0.783193 0.187449 0.2459689 0.151002 0.271553 0.193871 0.246955 0.187075 0.434803 0.658882 0.438641 0.680683 0.394766 0.686125 0.325318 0.656224 0.369913 0.610196 0.364838 0.684445 0.789046 0.233323 0.760215 0.193244 0.783193 0.187449 0.246955 0.187075 0.271553 0.193871 0.241255 0.236977 0.391747 0.862097 0.401605 0.84146 0.438797 0.870229 0.315867 0.868209 0.354026 0.840297 0.363377 0.861308 0.438641 0.680683 0.452955 0.700023 0.435018 0.71828 0.323658 0.715731 0.306136 0.696976 0.320962 0.677959 0.384658 0.710299 0.394766 0.686125 0.435018 0.71828 0.3744 0.708969 0.324726 0.727177 0.323658 0.715731 0.410995 0.747662 0.384658 0.710299 0.433669 0.729661 0.324726 0.727177 0.3744 0.708969 0.347028 0.745816 0.384657 0.795423 0.384658 0.710299 0.410995 0.747662 0.37227 0.794472 0.338952 0.783073 0.347028 0.745816 0.384657 0.795423 0.418086 0.784946 0.431333 0.817535 0.37227 0.794472 0.354026 0.840297 0.32479 0.81546 0.401605 0.84146 0.431333 0.817535 0.457832 0.84004 0.354026 0.840297 0.315867 0.868209 0.297562 0.837358 0.816266 0.203086 0.825107 0.209762 0.829287 0.2195619 0.209828 0.206161 0.219168 0.237388 0.1990669 0.222464 0.783193 0.187449 0.802192 0.1846089 0.816266 0.203086 0.246955 0.187075 0.219168 0.237388 0.209828 0.206161 0.457832 0.84004 0.431333 0.817535 0.448505 0.804621 0.307886 0.802031 0.32479 0.81546 0.297562 0.837358 0.418086 0.784946 0.435868 0.779569 0.448505 0.804621 0.338952 0.783073 0.32479 0.81546 0.307886 0.802031 0.418086 0.784946 0.410995 0.747662 0.423718 0.754191 0.334089 0.752045 0.347028 0.745816 0.338952 0.783073 0.427812 0.742828 0.43795 0.749777 0.423718 0.754191 0.33027 0.740536 0.347028 0.745816 0.334089 0.752045 0.433669 0.729661 0.445392 0.731997 0.43795 0.749777 0.324726 0.727177 0.33027 0.740536 0.319919 0.74725 0.433669 0.729661 0.435018 0.71828 0.440995 0.724383 0.31751 0.721697 0.323658 0.715731 0.324726 0.727177 0.435018 0.71828 0.452955 0.700023 0.455277 0.713731 0.30346 0.710657 0.306136 0.696976 0.323658 0.715731 0.501231 0.844356 0.457832 0.84004 0.473386 0.8247 0.282357 0.821525 0.297562 0.837358 0.253846 0.840502 0.555495 0.826352 0.501231 0.844356 0.512485 0.828811 0.2429749 0.824574 0.253846 0.840502 0.19985 0.820889 0.568148 0.787367 0.555495 0.826352 0.550942 0.811814 0.204839 0.806417 0.19985 0.820889 0.188269 0.781375 0.568148 0.787367 0.552139 0.787682 0.539407 0.764539 0.188269 0.781375 0.2145749 0.750414 0.217774 0.759319 0.54285 0.755753 0.539407 0.764539 0.508439 0.743135 0.2145749 0.750414 0.252524 0.726592 0.249419 0.738732 0.505666 0.730944 0.508439 0.743135 0.455277 0.713731 0.252524 0.726592 0.306136 0.696976 0.30346 0.710657 0.445392 0.731997 0.470841 0.748408 0.454776 0.761665 0.312907 0.729222 0.319919 0.74725 0.302729 0.758742 0.470841 0.748408 0.48887 0.770464 0.475403 0.783904 0.28696 0.74502 0.302729 0.758742 0.281439 0.780511 0.475403 0.783904 0.48887 0.770464 0.503673 0.787562 0.252972 0.78341 0.268291 0.766661 0.281439 0.780511 0.503673 0.787562 0.518562 0.791602 0.516802 0.807339 0.252972 0.78341 0.26179 0.798626 0.239243 0.802891 0.512485 0.828811 0.473386 0.8247 0.494476 0.80247 0.26179 0.798626 0.282357 0.821525 0.2429749 0.824574 0.475403 0.783904 0.494476 0.80247 0.473386 0.8247 0.281439 0.780511 0.307886 0.802031 0.282357 0.821525 0.435868 0.779569 0.454776 0.761665 0.475403 0.783904 0.321237 0.777208 0.307886 0.802031 0.281439 0.780511 0.43795 0.749777 0.454776 0.761665 0.435868 0.779569 0.321237 0.777208 0.302729 0.758742 0.319919 0.74725 0.455277 0.713731 0.470841 0.748408 0.445392 0.731997 0.30346 0.710657 0.31751 0.721697 0.312907 0.729222 0.508439 0.743135 0.48887 0.770464 0.470841 0.748408 0.28696 0.74502 0.268291 0.766661 0.249419 0.738732 0.503673 0.787562 0.48887 0.770464 0.508439 0.743135 0.252972 0.78341 0.217774 0.759319 0.249419 0.738732 0.518562 0.791602 0.503673 0.787562 0.539407 0.764539 0.23792 0.787045 0.204331 0.782156 0.217774 0.759319 0.550942 0.811814 0.516802 0.807339 0.518562 0.791602 0.23792 0.787045 0.239243 0.802891 0.204839 0.806417 0.50827 0.697693 0.434803 0.658882 0.484068 0.628776 0.276936 0.625067 0.325318 0.656224 0.250811 0.693249 0.563786 0.739211 0.50827 0.697693 0.543385 0.683538 0.216123 0.67812 0.250811 0.693249 0.194086 0.733241 0.563786 0.739211 0.581052 0.726933 0.616701 0.759965 0.194086 0.733241 0.136063 0.784093 0.140379 0.752377 0.619962 0.791615 0.616701 0.759965 0.660647 0.741167 0.136063 0.784093 0.04952597 0.748824 0.09703797 0.732052 0.707492 0.759884 0.660647 0.741167 0.677256 0.670436 0.04952597 0.748824 0.019409 0.639749 0.08356398 0.662038 0.745511 0.6521 0.677256 0.670436 0.671403 0.592656 0.019409 0.639749 0.03366398 0.564403 0.09281998 0.589862 0.543385 0.683538 0.484068 0.628776 0.671403 0.592656 0.216123 0.67812 0.08356398 0.662038 0.09281998 0.589862 0.677256 0.670436 0.660647 0.741167 0.581052 0.726933 0.1771759 0.720426 0.09703797 0.732052 0.08356398 0.662038 0.829287 0.2195619 0.834578 0.206879 0.834705 0.206959 0.05121594 0.522659 0.145041 0.562595 0.09281998 0.589862 0.62042 0.565675 0.671403 0.592656 0.484068 0.628776 0.276936 0.625067 0.09281998 0.589862 0.145041 0.562595 0.391039 0.611891 0.498072 0.552315 0.484068 0.628776 0.276936 0.625067 0.264218 0.55014 0.369913 0.610196</float_array>
+ <technique_common>
+ <accessor source="#Suzanne-mesh-map-0-array" count="2901" stride="2">
+ <param name="S" type="float"/>
+ <param name="T" type="float"/>
+ </accessor>
+ </technique_common>
+ </source>
+ <vertices id="Suzanne-mesh-vertices">
+ <input semantic="POSITION" source="#Suzanne-mesh-positions"/>
+ </vertices>
+ <triangles count="967">
+ <input semantic="VERTEX" source="#Suzanne-mesh-vertices" offset="0"/>
+ <input semantic="NORMAL" source="#Suzanne-mesh-normals" offset="1"/>
+ <input semantic="TEXCOORD" source="#Suzanne-mesh-map-0" offset="2" set="0"/>
+ <p>46 0 0 2 0 1 44 0 2 3 1 3 47 1 4 45 1 5 44 2 6 4 2 7 42 2 8 5 3 9 45 3 10 43 3 11 2 4 12 6 4 13 4 4 14 7 5 15 3 5 16 5 5 17 0 6 18 8 6 19 2 6 20 9 7 21 1 7 22 3 7 23 10 8 24 14 8 25 8 8 26 15 9 27 11 9 28 9 9 29 8 10 30 16 10 31 6 10 32 17 11 33 9 11 34 7 11 35 20 12 36 16 12 37 14 12 38 21 13 39 17 13 40 19 13 41 22 14 42 14 14 43 12 14 44 23 15 45 15 15 46 21 15 47 22 16 48 26 16 49 20 16 50 27 17 51 23 17 52 21 17 53 26 18 54 18 18 55 20 18 56 27 19 57 19 19 58 29 19 59 32 20 60 28 20 61 26 20 62 33 21 63 29 21 64 31 21 65 34 22 66 26 22 67 24 22 68 35 23 69 27 23 70 33 23 71 36 24 72 32 24 73 34 24 74 37 25 75 33 25 76 39 25 77 38 26 78 30 26 79 32 26 80 39 27 81 31 27 82 41 27 83 44 28 84 40 28 85 38 28 86 45 29 87 41 29 88 43 29 89 46 30 90 38 30 91 36 30 92 47 31 93 39 31 94 45 31 95 36 32 96 48 32 97 46 32 98 37 33 99 49 33 100 51 33 101 34 34 102 50 34 103 36 34 104 35 35 105 51 35 106 53 35 107 24 36 108 52 36 109 34 36 110 25 37 111 53 37 112 55 37 113 22 38 114 54 38 115 24 38 116 23 39 117 55 39 118 57 39 119 22 40 120 58 40 121 56 40 122 59 41 123 23 41 124 57 41 125 12 42 126 62 42 127 58 42 128 63 43 129 13 43 130 59 43 131 10 44 132 64 44 133 62 44 134 65 45 135 11 45 136 63 45 137 0 46 138 48 46 139 64 46 140 49 47 141 1 47 142 65 47 143 60 48 144 64 48 145 48 48 146 49 49 147 65 49 148 61 49 149 62 50 150 64 50 151 60 50 152 61 51 153 65 51 154 63 51 155 60 52 156 58 52 157 62 52 158 63 53 159 59 53 160 61 53 161 60 54 162 56 54 163 58 54 164 59 55 165 57 55 166 61 55 167 60 56 168 54 56 169 56 56 170 57 57 171 55 57 172 61 57 173 60 58 174 52 58 175 54 58 176 55 59 177 53 59 178 61 59 179 60 60 180 50 60 181 52 60 182 53 61 183 51 61 184 61 61 185 60 62 186 48 62 187 50 62 188 51 63 189 49 63 190 61 63 191 173 64 192 90 64 193 88 64 194 174 65 195 90 65 196 175 65 197 171 66 198 88 66 199 86 66 200 172 67 201 89 67 202 174 67 203 84 68 204 171 68 205 86 68 206 172 69 207 85 69 208 87 69 209 82 70 210 169 70 211 84 70 212 170 71 213 83 71 214 85 71 215 80 72 216 167 72 217 82 72 218 168 73 219 81 73 220 83 73 221 78 74 222 145 74 223 163 74 224 146 75 225 79 75 226 164 75 227 93 76 228 145 76 229 91 76 230 94 77 231 146 77 232 148 77 233 93 78 234 149 78 235 147 78 236 150 79 237 94 79 238 148 79 239 97 80 240 149 80 241 95 80 242 98 81 243 150 81 244 152 81 245 99 82 246 151 82 247 97 82 248 100 83 249 152 83 250 154 83 251 101 84 252 153 84 253 99 84 254 102 85 255 154 85 256 156 85 257 101 86 258 157 86 259 155 86 260 158 87 261 102 87 262 156 87 263 105 88 264 157 88 265 103 88 266 106 89 267 158 89 268 160 89 269 107 90 270 159 90 271 105 90 272 108 91 273 160 91 274 162 91 275 66 92 276 161 92 277 107 92 278 66 93 279 162 93 280 67 93 281 127 94 282 161 94 283 109 94 284 128 95 285 162 95 286 160 95 287 127 96 288 157 96 289 159 96 290 158 97 291 128 97 292 160 97 293 155 98 294 178 98 295 125 98 296 156 99 297 179 99 298 158 99 299 153 100 300 125 100 301 123 100 302 154 101 303 126 101 304 156 101 305 151 102 306 123 102 307 121 102 308 152 103 309 124 103 310 154 103 311 149 104 312 121 104 313 119 104 314 150 105 315 122 105 316 152 105 317 147 106 318 119 106 319 117 106 320 148 107 321 120 107 322 150 107 323 145 108 324 117 108 325 115 108 326 146 109 327 118 109 328 148 109 329 113 110 330 145 110 331 115 110 332 146 110 333 114 110 334 116 110 335 113 111 336 176 111 337 163 111 338 176 112 339 114 112 340 164 112 341 161 113 342 111 113 343 109 113 344 162 114 345 112 114 346 67 114 347 111 115 348 177 115 349 182 115 350 177 116 351 112 116 352 183 116 353 180 117 354 177 117 355 176 117 356 181 118 357 177 118 358 183 118 359 134 119 360 175 119 361 173 119 362 175 120 363 135 120 364 174 120 365 132 121 366 173 121 367 171 121 368 174 122 369 133 122 370 172 122 371 132 123 372 169 123 373 130 123 374 133 124 375 170 124 376 172 124 377 165 125 378 184 125 379 167 125 380 185 126 381 166 126 382 168 126 383 130 127 384 167 127 385 184 127 386 168 128 387 131 128 388 185 128 389 189 129 390 186 129 391 143 129 392 189 130 393 187 130 394 188 130 395 186 131 396 68 131 397 184 131 398 187 132 399 68 132 400 188 132 401 130 133 402 68 133 403 129 133 404 131 133 405 68 133 406 185 133 407 141 134 408 190 134 409 143 134 410 191 135 411 142 135 412 144 135 413 194 136 414 141 136 415 139 136 416 195 137 417 142 137 418 193 137 419 196 138 420 139 138 421 138 138 422 197 139 423 140 139 424 195 139 425 70 140 426 138 140 427 137 140 428 70 141 429 138 141 430 197 141 431 143 142 432 69 142 433 189 142 434 144 143 435 69 143 436 191 143 437 190 144 438 207 144 439 69 144 440 191 145 441 207 145 442 206 145 443 70 146 444 199 146 445 196 146 446 200 147 447 70 147 448 197 147 449 196 148 450 201 148 451 194 148 452 202 149 453 197 149 454 195 149 455 201 150 456 192 150 457 194 150 458 202 151 459 193 151 460 204 151 461 192 152 462 205 152 463 190 152 464 206 153 465 193 153 466 191 153 467 203 154 468 199 154 469 198 154 470 204 155 471 200 155 472 202 155 473 198 156 474 205 156 475 203 156 476 206 157 477 198 157 478 204 157 479 138 158 480 163 158 481 176 158 482 164 159 483 138 159 484 176 159 485 139 160 486 210 160 487 163 160 488 211 161 489 140 161 490 164 161 491 143 162 492 210 162 493 141 162 494 144 163 495 211 163 496 213 163 497 186 164 498 212 164 499 143 164 500 187 165 501 213 165 502 166 165 503 208 166 504 165 166 505 80 166 506 209 167 507 166 167 508 213 167 509 214 168 510 212 168 511 208 168 512 215 169 513 213 169 514 211 169 515 78 170 516 210 170 517 214 170 518 211 171 519 79 171 520 215 171 521 129 172 522 221 172 523 130 172 524 129 173 525 222 173 526 71 173 527 132 174 528 221 174 529 219 174 530 222 175 531 133 175 532 220 175 533 134 176 534 219 176 535 217 176 536 220 177 537 135 177 538 218 177 539 136 133 540 217 133 541 216 133 542 218 133 543 136 133 544 216 133 545 217 178 546 230 178 547 216 178 548 218 179 549 230 179 550 229 179 551 217 180 552 226 180 553 228 180 554 227 181 555 218 181 556 229 181 557 219 140 558 224 140 559 226 140 560 225 182 561 220 182 562 227 182 563 71 183 564 224 183 565 221 183 566 71 184 567 225 184 568 223 184 569 223 185 570 228 185 571 224 185 572 229 186 573 223 186 574 225 186 575 224 187 576 228 187 577 226 187 578 227 188 579 229 188 580 225 188 581 182 189 582 233 189 583 231 189 584 234 190 585 183 190 586 232 190 587 111 191 588 231 191 589 253 191 590 232 192 591 112 192 592 254 192 593 111 193 594 255 193 595 109 193 596 112 194 597 256 194 598 254 194 599 113 195 600 233 195 601 180 195 602 114 196 603 234 196 604 252 196 605 113 197 606 249 197 607 251 197 608 250 198 609 114 198 610 252 198 611 115 199 612 247 199 613 249 199 614 248 200 615 116 200 616 250 200 617 117 201 618 245 201 619 247 201 620 246 202 621 118 202 622 248 202 623 119 203 624 243 203 625 245 203 626 244 204 627 120 204 628 246 204 629 123 205 630 243 205 631 121 205 632 124 206 633 244 206 634 242 206 635 125 207 636 241 207 637 123 207 638 126 208 639 242 208 640 240 208 641 125 209 642 235 209 643 239 209 644 236 210 645 126 210 646 240 210 647 178 211 648 237 211 649 235 211 650 238 212 651 179 212 652 236 212 653 127 213 654 255 213 655 237 213 656 256 214 657 128 214 658 238 214 659 237 215 660 257 215 661 275 215 662 258 216 663 238 216 664 276 216 665 235 217 666 275 217 667 277 217 668 276 218 669 236 218 670 278 218 671 235 219 672 273 219 673 239 219 674 236 220 675 274 220 676 278 220 677 239 221 678 271 221 679 241 221 680 240 222 681 272 222 682 274 222 683 243 223 684 271 223 685 269 223 686 272 224 687 244 224 688 270 224 689 243 225 690 267 225 691 245 225 692 244 226 693 268 226 694 270 226 695 247 227 696 267 227 697 265 227 698 268 228 699 248 228 700 266 228 701 247 229 702 263 229 703 249 229 704 248 230 705 264 230 706 266 230 707 249 231 708 261 231 709 251 231 710 250 232 711 262 232 712 264 232 713 233 233 714 261 233 715 279 233 716 262 234 717 234 234 718 280 234 719 255 235 720 259 235 721 257 235 722 260 236 723 256 236 724 258 236 725 253 237 726 281 237 727 259 237 728 282 238 729 254 238 730 260 238 731 231 239 732 279 239 733 281 239 734 280 240 735 232 240 736 282 240 737 66 241 738 283 241 739 72 241 740 284 242 741 66 242 742 72 242 743 107 243 744 285 243 745 283 243 746 286 244 747 108 244 748 284 244 749 103 245 750 285 245 751 105 245 752 104 246 753 286 246 754 288 246 755 101 247 756 287 247 757 103 247 758 102 248 759 288 248 760 290 248 761 99 249 762 289 249 763 101 249 764 100 250 765 290 250 766 292 250 767 99 251 768 293 251 769 291 251 770 294 252 771 100 252 772 292 252 773 95 253 774 293 253 775 97 253 776 96 254 777 294 254 778 296 254 779 95 255 780 297 255 781 295 255 782 298 256 783 96 256 784 296 256 785 93 257 786 299 257 787 297 257 788 300 258 789 94 258 790 298 258 791 308 259 792 337 259 793 307 259 794 308 260 795 338 260 796 328 260 797 307 261 798 335 261 799 306 261 800 307 262 801 336 262 802 338 262 803 306 263 804 339 263 805 305 263 806 306 264 807 340 264 808 336 264 809 88 265 810 305 265 811 339 265 812 305 266 813 89 266 814 340 266 815 86 267 816 339 267 817 333 267 818 340 268 819 87 268 820 334 268 821 84 269 822 333 269 823 329 269 824 334 270 825 85 270 826 330 270 827 82 271 828 329 271 829 331 271 830 330 272 831 83 272 832 332 272 833 329 273 834 337 273 835 331 273 836 338 274 837 330 274 838 332 274 839 333 275 840 335 275 841 329 275 842 334 276 843 336 276 844 340 276 845 331 277 846 327 277 847 325 277 848 332 278 849 328 278 850 338 278 851 80 279 852 331 279 853 325 279 854 332 280 855 81 280 856 326 280 857 341 281 858 214 281 859 208 281 860 342 282 861 215 282 862 344 282 863 325 283 864 208 283 865 80 283 866 326 284 867 209 284 868 342 284 869 214 285 870 345 285 871 78 285 872 215 286 873 346 286 874 344 286 875 345 287 876 91 287 877 78 287 878 346 288 879 92 288 880 300 288 881 323 289 882 303 289 883 76 289 884 324 290 885 303 290 886 352 290 887 351 291 888 77 291 889 303 291 890 352 292 891 77 292 892 350 292 893 77 293 894 347 293 895 304 293 896 348 294 897 77 294 898 304 294 899 304 295 900 327 295 901 308 295 902 328 296 903 304 296 904 308 296 905 327 297 906 341 297 907 325 297 908 328 298 909 342 298 910 348 298 911 295 299 912 317 299 913 309 299 914 318 300 915 296 300 916 310 300 917 315 301 918 76 301 919 75 301 920 316 302 921 76 302 922 324 302 923 357 303 924 302 303 925 301 303 926 358 304 927 302 304 928 356 304 929 302 305 930 353 305 931 74 305 932 354 306 933 302 306 934 74 306 935 74 307 936 315 307 937 75 307 938 316 308 939 74 308 940 75 308 941 291 309 942 361 309 943 363 309 944 362 310 945 292 310 946 364 310 947 363 311 948 367 311 949 365 311 950 368 312 951 364 312 952 366 312 953 365 313 954 369 313 955 371 313 956 370 314 957 366 314 958 372 314 959 371 315 960 375 315 961 373 315 962 376 316 963 372 316 964 374 316 965 377 317 966 375 317 967 313 317 968 378 318 969 376 318 970 374 318 971 315 319 972 373 319 973 377 319 974 374 320 975 316 320 976 378 320 977 353 321 978 371 321 979 373 321 980 372 322 981 354 322 982 374 322 983 355 323 984 365 323 985 371 323 986 366 324 987 356 324 988 372 324 989 357 325 990 363 325 991 365 325 992 364 326 993 358 326 994 366 326 995 291 327 996 359 327 997 289 327 998 292 328 999 360 328 1000 364 328 1001 359 329 1002 301 329 1003 73 329 1004 360 330 1005 301 330 1006 358 330 1007 285 331 1008 289 331 1009 283 331 1010 286 332 1011 290 332 1012 288 332 1013 283 333 1014 359 333 1015 73 333 1016 360 334 1017 284 334 1018 73 334 1019 72 335 1020 283 335 1021 73 335 1022 73 336 1023 284 336 1024 72 336 1025 295 337 1026 361 337 1027 293 337 1028 296 338 1029 362 338 1030 310 338 1031 309 339 1032 367 339 1033 361 339 1034 368 340 1035 310 340 1036 362 340 1037 311 341 1038 369 341 1039 367 341 1040 370 342 1041 312 342 1042 368 342 1043 375 343 1044 381 343 1045 313 343 1046 376 344 1047 382 344 1048 370 344 1049 349 345 1050 383 345 1051 347 345 1052 350 346 1053 384 346 1054 386 346 1055 383 347 1056 319 347 1057 317 347 1058 384 348 1059 320 348 1060 386 348 1061 297 349 1062 383 349 1063 317 349 1064 384 350 1065 298 350 1066 318 350 1067 299 351 1068 341 351 1069 383 351 1070 342 352 1071 300 352 1072 384 352 1073 341 353 1074 347 353 1075 383 353 1076 384 354 1077 348 354 1078 342 354 1079 299 355 1080 345 355 1081 343 355 1082 344 356 1083 346 356 1084 300 356 1085 321 357 1086 377 357 1087 313 357 1088 322 358 1089 378 358 1090 380 358 1091 377 359 1092 323 359 1093 315 359 1094 378 360 1095 324 360 1096 380 360 1097 385 361 1098 321 361 1099 319 361 1100 386 362 1101 322 362 1102 380 362 1103 351 363 1104 385 363 1105 349 363 1106 352 364 1107 386 364 1108 380 364 1109 323 365 1110 379 365 1111 351 365 1112 352 366 1113 380 366 1114 324 366 1115 387 367 1116 401 367 1117 399 367 1118 388 368 1119 402 368 1120 414 368 1121 399 369 1122 403 369 1123 397 369 1124 404 370 1125 400 370 1126 398 370 1127 403 371 1128 395 371 1129 397 371 1130 404 372 1131 396 372 1132 406 372 1133 405 373 1134 393 373 1135 395 373 1136 406 374 1137 394 374 1138 408 374 1139 407 375 1140 391 375 1141 393 375 1142 408 376 1143 392 376 1144 410 376 1145 391 377 1146 411 377 1147 389 377 1148 412 378 1149 392 378 1150 390 378 1151 409 379 1152 417 379 1153 411 379 1154 418 380 1155 410 380 1156 412 380 1157 407 381 1158 419 381 1159 409 381 1160 420 382 1161 408 382 1162 410 382 1163 423 383 1164 407 383 1165 405 383 1166 424 384 1167 408 384 1168 422 384 1169 425 385 1170 405 385 1171 403 385 1172 426 386 1173 406 386 1174 424 386 1175 427 387 1176 403 387 1177 401 387 1178 428 388 1179 404 388 1180 426 388 1181 401 389 1182 415 389 1183 427 389 1184 416 390 1185 402 390 1186 428 390 1187 319 391 1188 441 391 1189 317 391 1190 320 392 1191 442 392 1192 444 392 1193 389 393 1194 443 393 1195 319 393 1196 390 394 1197 444 394 1198 412 394 1199 309 395 1200 441 395 1201 311 395 1202 442 396 1203 310 396 1204 312 396 1205 381 397 1206 413 397 1207 387 397 1208 414 398 1209 382 398 1210 388 398 1211 411 399 1212 439 399 1213 443 399 1214 440 400 1215 412 400 1216 444 400 1217 445 401 1218 439 401 1219 437 401 1220 446 402 1221 440 402 1222 444 402 1223 433 133 1224 437 133 1225 435 133 1226 438 133 1227 434 133 1228 436 133 1229 447 403 1230 433 403 1231 431 403 1232 448 404 1233 434 404 1234 446 404 1235 447 405 1236 449 405 1237 429 405 1238 448 406 1239 450 406 1240 432 406 1241 429 407 1242 415 407 1243 413 407 1244 430 408 1245 416 408 1246 450 408 1247 447 409 1248 381 409 1249 311 409 1250 448 410 1251 382 410 1252 430 410 1253 441 411 1254 447 411 1255 311 411 1256 442 412 1257 448 412 1258 446 412 1259 441 413 1260 443 413 1261 445 413 1262 446 414 1263 444 414 1264 442 414 1265 415 415 1266 451 415 1267 475 415 1268 452 416 1269 416 416 1270 476 416 1271 431 417 1272 451 417 1273 449 417 1274 432 418 1275 452 418 1276 462 418 1277 431 419 1278 459 419 1279 461 419 1280 460 420 1281 432 420 1282 462 420 1283 435 421 1284 459 421 1285 433 421 1286 436 422 1287 460 422 1288 458 422 1289 437 423 1290 457 423 1291 435 423 1292 438 424 1293 458 424 1294 456 424 1295 437 425 1296 453 425 1297 455 425 1298 454 426 1299 438 426 1300 456 426 1301 439 427 1302 473 427 1303 453 427 1304 474 427 1305 440 427 1306 454 427 1307 427 428 1308 475 428 1309 463 428 1310 476 429 1311 428 429 1312 464 429 1313 425 430 1314 463 430 1315 465 430 1316 464 431 1317 426 431 1318 466 431 1319 423 432 1320 465 432 1321 467 432 1322 466 433 1323 424 433 1324 468 433 1325 423 434 1326 469 434 1327 421 434 1328 424 435 1329 470 435 1330 468 435 1331 421 436 1332 471 436 1333 419 436 1334 422 437 1335 472 437 1336 470 437 1337 419 438 1338 473 438 1339 417 438 1340 420 439 1341 474 439 1342 472 439 1343 455 440 1344 477 440 1345 457 440 1346 456 441 1347 478 441 1348 480 441 1349 479 442 1350 483 442 1351 477 442 1352 480 443 1353 484 443 1354 482 443 1355 483 444 1356 487 444 1357 485 444 1358 488 445 1359 484 445 1360 486 445 1361 487 446 1362 491 446 1363 485 446 1364 488 447 1365 492 447 1366 490 447 1367 463 448 1368 485 448 1369 491 448 1370 486 449 1371 464 449 1372 492 449 1373 483 450 1374 475 450 1375 451 450 1376 484 451 1377 476 451 1378 486 451 1379 461 452 1380 483 452 1381 451 452 1382 462 453 1383 484 453 1384 478 453 1385 457 133 1386 461 133 1387 459 133 1388 462 133 1389 458 133 1390 460 133 1391 473 454 1392 455 454 1393 453 454 1394 474 455 1395 456 455 1396 480 455 1397 471 456 1398 479 456 1399 473 456 1400 480 457 1401 472 457 1402 474 457 1403 487 458 1404 471 458 1405 469 458 1406 488 459 1407 472 459 1408 482 459 1409 489 460 1410 469 460 1411 467 460 1412 490 461 1413 470 461 1414 488 461 1415 465 462 1416 489 462 1417 467 462 1418 490 463 1419 466 463 1420 468 463 1421 463 464 1422 491 464 1423 465 464 1424 466 465 1425 492 465 1426 464 465 1427 391 466 1428 503 466 1429 501 466 1430 504 467 1431 392 467 1432 502 467 1433 393 468 1434 501 468 1435 499 468 1436 502 469 1437 394 469 1438 500 469 1439 393 470 1440 497 470 1441 395 470 1442 394 471 1443 498 471 1444 500 471 1445 395 472 1446 495 472 1447 397 472 1448 396 473 1449 496 473 1450 498 473 1451 397 474 1452 493 474 1453 399 474 1454 398 475 1455 494 475 1456 496 475 1457 399 476 1458 505 476 1459 387 476 1460 400 477 1461 506 477 1462 494 477 1463 501 478 1464 505 478 1465 493 478 1466 502 479 1467 506 479 1468 504 479 1469 493 480 1470 499 480 1471 501 480 1472 500 481 1473 494 481 1474 502 481 1475 495 482 1476 497 482 1477 499 482 1478 500 483 1479 498 483 1480 496 483 1481 381 484 1482 505 484 1483 313 484 1484 382 485 1485 506 485 1486 388 485 1487 313 486 1488 503 486 1489 321 486 1490 504 487 1491 314 487 1492 322 487 1493 319 488 1494 503 488 1495 389 488 1496 504 489 1497 320 489 1498 390 489 1499 46 490 1500 0 490 1501 2 490 1502 3 491 1503 1 491 1504 47 491 1505 44 492 1506 2 492 1507 4 492 1508 5 493 1509 3 493 1510 45 493 1511 2 494 1512 8 494 1513 6 494 1514 7 495 1515 9 495 1516 3 495 1517 0 496 1518 10 496 1519 8 496 1520 9 497 1521 11 497 1522 1 497 1523 10 498 1524 12 498 1525 14 498 1526 15 499 1527 13 499 1528 11 499 1529 8 500 1530 14 500 1531 16 500 1532 17 501 1533 15 501 1534 9 501 1535 20 502 1536 18 502 1537 16 502 1538 21 503 1539 15 503 1540 17 503 1541 22 504 1542 20 504 1543 14 504 1544 23 505 1545 13 505 1546 15 505 1547 22 506 1548 24 506 1549 26 506 1550 27 507 1551 25 507 1552 23 507 1553 26 508 1554 28 508 1555 18 508 1556 27 509 1557 21 509 1558 19 509 1559 32 510 1560 30 510 1561 28 510 1562 33 511 1563 27 511 1564 29 511 1565 34 512 1566 32 512 1567 26 512 1568 35 513 1569 25 513 1570 27 513 1571 36 514 1572 38 514 1573 32 514 1574 37 515 1575 35 515 1576 33 515 1577 38 516 1578 40 516 1579 30 516 1580 39 517 1581 33 517 1582 31 517 1583 44 518 1584 42 518 1585 40 518 1586 45 519 1587 39 519 1588 41 519 1589 46 520 1590 44 520 1591 38 520 1592 47 521 1593 37 521 1594 39 521 1595 36 522 1596 50 522 1597 48 522 1598 37 523 1599 47 523 1600 49 523 1601 34 524 1602 52 524 1603 50 524 1604 35 525 1605 37 525 1606 51 525 1607 24 526 1608 54 526 1609 52 526 1610 25 527 1611 35 527 1612 53 527 1613 22 528 1614 56 528 1615 54 528 1616 23 529 1617 25 529 1618 55 529 1619 22 530 1620 12 530 1621 58 530 1622 59 531 1623 13 531 1624 23 531 1625 12 532 1626 10 532 1627 62 532 1628 63 533 1629 11 533 1630 13 533 1631 10 534 1632 0 534 1633 64 534 1634 65 535 1635 1 535 1636 11 535 1637 0 536 1638 46 536 1639 48 536 1640 49 537 1641 47 537 1642 1 537 1643 173 538 1644 175 538 1645 90 538 1646 174 539 1647 89 539 1648 90 539 1649 171 540 1650 173 540 1651 88 540 1652 172 541 1653 87 541 1654 89 541 1655 84 542 1656 169 542 1657 171 542 1658 172 543 1659 170 543 1660 85 543 1661 82 544 1662 167 544 1663 169 544 1664 170 545 1665 168 545 1666 83 545 1667 80 546 1668 165 546 1669 167 546 1670 168 547 1671 166 547 1672 81 547 1673 78 548 1674 91 548 1675 145 548 1676 146 549 1677 92 549 1678 79 549 1679 93 550 1680 147 550 1681 145 550 1682 94 551 1683 92 551 1684 146 551 1685 93 552 1686 95 552 1687 149 552 1688 150 553 1689 96 553 1690 94 553 1691 97 554 1692 151 554 1693 149 554 1694 98 555 1695 96 555 1696 150 555 1697 99 556 1698 153 556 1699 151 556 1700 100 557 1701 98 557 1702 152 557 1703 101 558 1704 155 558 1705 153 558 1706 102 559 1707 100 559 1708 154 559 1709 101 560 1710 103 560 1711 157 560 1712 158 561 1713 104 561 1714 102 561 1715 105 562 1716 159 562 1717 157 562 1718 106 563 1719 104 563 1720 158 563 1721 107 564 1722 161 564 1723 159 564 1724 108 565 1725 106 565 1726 160 565 1727 66 566 1728 67 566 1729 161 566 1730 66 567 1731 108 567 1732 162 567 1733 127 568 1734 159 568 1735 161 568 1736 128 569 1737 110 569 1738 162 569 1739 127 570 1740 178 570 1741 157 570 1742 158 571 1743 179 571 1744 128 571 1745 155 572 1746 157 572 1747 178 572 1748 156 573 1749 126 573 1750 179 573 1751 153 574 1752 155 574 1753 125 574 1754 154 575 1755 124 575 1756 126 575 1757 151 576 1758 153 576 1759 123 576 1760 152 577 1761 122 577 1762 124 577 1763 149 578 1764 151 578 1765 121 578 1766 150 579 1767 120 579 1768 122 579 1769 147 580 1770 149 580 1771 119 580 1772 148 581 1773 118 581 1774 120 581 1775 145 582 1776 147 582 1777 117 582 1778 146 583 1779 116 583 1780 118 583 1781 113 584 1782 163 584 1783 145 584 1784 146 585 1785 164 585 1786 114 585 1787 113 586 1788 180 586 1789 176 586 1790 176 587 1791 181 587 1792 114 587 1793 161 588 1794 67 588 1795 111 588 1796 162 589 1797 110 589 1798 112 589 1799 111 590 1800 67 590 1801 177 590 1802 177 591 1803 67 591 1804 112 591 1805 180 592 1806 182 592 1807 177 592 1808 181 593 1809 176 593 1810 177 593 1811 134 594 1812 136 594 1813 175 594 1814 175 595 1815 136 595 1816 135 595 1817 132 596 1818 134 596 1819 173 596 1820 174 597 1821 135 597 1822 133 597 1823 132 598 1824 171 598 1825 169 598 1826 133 599 1827 131 599 1828 170 599 1829 165 600 1830 186 600 1831 184 600 1832 185 601 1833 187 601 1834 166 601 1835 130 602 1836 169 602 1837 167 602 1838 168 603 1839 170 603 1840 131 603 1841 189 130 1842 188 130 1843 186 130 1844 189 604 1845 144 604 1846 187 604 1847 186 132 1848 188 132 1849 68 132 1850 187 605 1851 185 605 1852 68 605 1853 130 133 1854 184 133 1855 68 133 1856 131 133 1857 129 133 1858 68 133 1859 141 606 1860 192 606 1861 190 606 1862 191 607 1863 193 607 1864 142 607 1865 194 608 1866 192 608 1867 141 608 1868 195 609 1869 140 609 1870 142 609 1871 196 610 1872 194 610 1873 139 610 1874 197 611 1875 138 611 1876 140 611 1877 70 612 1878 196 612 1879 138 612 1880 143 613 1881 190 613 1882 69 613 1883 144 614 1884 189 614 1885 69 614 1886 190 615 1887 205 615 1888 207 615 1889 191 616 1890 69 616 1891 207 616 1892 70 617 1893 198 617 1894 199 617 1895 200 618 1896 198 618 1897 70 618 1898 196 619 1899 199 619 1900 201 619 1901 202 620 1902 200 620 1903 197 620 1904 201 621 1905 203 621 1906 192 621 1907 202 622 1908 195 622 1909 193 622 1910 192 623 1911 203 623 1912 205 623 1913 206 624 1914 204 624 1915 193 624 1916 203 625 1917 201 625 1918 199 625 1919 204 626 1920 198 626 1921 200 626 1922 198 627 1923 207 627 1924 205 627 1925 206 628 1926 207 628 1927 198 628 1928 138 629 1929 139 629 1930 163 629 1931 164 630 1932 140 630 1933 138 630 1934 139 631 1935 141 631 1936 210 631 1937 211 632 1938 142 632 1939 140 632 1940 143 633 1941 212 633 1942 210 633 1943 144 634 1944 142 634 1945 211 634 1946 186 635 1947 165 635 1948 212 635 1949 187 636 1950 144 636 1951 213 636 1952 208 637 1953 212 637 1954 165 637 1955 209 638 1956 81 638 1957 166 638 1958 214 639 1959 210 639 1960 212 639 1961 215 640 1962 209 640 1963 213 640 1964 78 641 1965 163 641 1966 210 641 1967 211 642 1968 164 642 1969 79 642 1970 129 643 1971 71 643 1972 221 643 1973 129 644 1974 131 644 1975 222 644 1976 132 645 1977 130 645 1978 221 645 1979 222 646 1980 131 646 1981 133 646 1982 134 647 1983 132 647 1984 219 647 1985 220 648 1986 133 648 1987 135 648 1988 136 649 1989 134 649 1990 217 649 1991 218 650 1992 135 650 1993 136 650 1994 217 178 1995 228 178 1996 230 178 1997 218 179 1998 216 179 1999 230 179 2000 217 651 2001 219 651 2002 226 651 2003 227 652 2004 220 652 2005 218 652 2006 219 140 2007 221 140 2008 224 140 2009 225 182 2010 222 182 2011 220 182 2012 71 183 2013 223 183 2014 224 183 2015 71 184 2016 222 184 2017 225 184 2018 223 653 2019 230 653 2020 228 653 2021 229 654 2022 230 654 2023 223 654 2024 182 655 2025 180 655 2026 233 655 2027 234 656 2028 181 656 2029 183 656 2030 111 657 2031 182 657 2032 231 657 2033 232 658 2034 183 658 2035 112 658 2036 111 659 2037 253 659 2038 255 659 2039 112 660 2040 110 660 2041 256 660 2042 113 661 2043 251 661 2044 233 661 2045 114 662 2046 181 662 2047 234 662 2048 113 663 2049 115 663 2050 249 663 2051 250 664 2052 116 664 2053 114 664 2054 115 665 2055 117 665 2056 247 665 2057 248 666 2058 118 666 2059 116 666 2060 117 667 2061 119 667 2062 245 667 2063 246 668 2064 120 668 2065 118 668 2066 119 669 2067 121 669 2068 243 669 2069 244 670 2070 122 670 2071 120 670 2072 123 671 2073 241 671 2074 243 671 2075 124 672 2076 122 672 2077 244 672 2078 125 673 2079 239 673 2080 241 673 2081 126 674 2082 124 674 2083 242 674 2084 125 675 2085 178 675 2086 235 675 2087 236 676 2088 179 676 2089 126 676 2090 178 677 2091 127 677 2092 237 677 2093 238 678 2094 128 678 2095 179 678 2096 127 679 2097 109 679 2098 255 679 2099 256 680 2100 110 680 2101 128 680 2102 237 681 2103 255 681 2104 257 681 2105 258 682 2106 256 682 2107 238 682 2108 235 683 2109 237 683 2110 275 683 2111 276 684 2112 238 684 2113 236 684 2114 235 685 2115 277 685 2116 273 685 2117 236 686 2118 240 686 2119 274 686 2120 239 687 2121 273 687 2122 271 687 2123 240 688 2124 242 688 2125 272 688 2126 243 689 2127 241 689 2128 271 689 2129 272 690 2130 242 690 2131 244 690 2132 243 691 2133 269 691 2134 267 691 2135 244 692 2136 246 692 2137 268 692 2138 247 693 2139 245 693 2140 267 693 2141 268 694 2142 246 694 2143 248 694 2144 247 695 2145 265 695 2146 263 695 2147 248 696 2148 250 696 2149 264 696 2150 249 697 2151 263 697 2152 261 697 2153 250 698 2154 252 698 2155 262 698 2156 233 233 2157 251 233 2158 261 233 2159 262 234 2160 252 234 2161 234 234 2162 255 699 2163 253 699 2164 259 699 2165 260 700 2166 254 700 2167 256 700 2168 253 701 2169 231 701 2170 281 701 2171 282 702 2172 232 702 2173 254 702 2174 231 703 2175 233 703 2176 279 703 2177 280 704 2178 234 704 2179 232 704 2180 66 705 2181 107 705 2182 283 705 2183 284 706 2184 108 706 2185 66 706 2186 107 707 2187 105 707 2188 285 707 2189 286 708 2190 106 708 2191 108 708 2192 103 709 2193 287 709 2194 285 709 2195 104 710 2196 106 710 2197 286 710 2198 101 711 2199 289 711 2200 287 711 2201 102 712 2202 104 712 2203 288 712 2204 99 713 2205 291 713 2206 289 713 2207 100 714 2208 102 714 2209 290 714 2210 99 715 2211 97 715 2212 293 715 2213 294 716 2214 98 716 2215 100 716 2216 95 717 2217 295 717 2218 293 717 2219 96 718 2220 98 718 2221 294 718 2222 95 719 2223 93 719 2224 297 719 2225 298 720 2226 94 720 2227 96 720 2228 93 721 2229 91 721 2230 299 721 2231 300 722 2232 92 722 2233 94 722 2234 308 723 2235 327 723 2236 337 723 2237 308 724 2238 307 724 2239 338 724 2240 307 725 2241 337 725 2242 335 725 2243 307 726 2244 306 726 2245 336 726 2246 306 727 2247 335 727 2248 339 727 2249 306 728 2250 305 728 2251 340 728 2252 88 729 2253 90 729 2254 305 729 2255 305 730 2256 90 730 2257 89 730 2258 86 731 2259 88 731 2260 339 731 2261 340 732 2262 89 732 2263 87 732 2264 84 733 2265 86 733 2266 333 733 2267 334 734 2268 87 734 2269 85 734 2270 82 735 2271 84 735 2272 329 735 2273 330 736 2274 85 736 2275 83 736 2276 329 737 2277 335 737 2278 337 737 2279 338 738 2280 336 738 2281 330 738 2282 333 739 2283 339 739 2284 335 739 2285 334 740 2286 330 740 2287 336 740 2288 331 741 2289 337 741 2290 327 741 2291 332 742 2292 326 742 2293 328 742 2294 80 743 2295 82 743 2296 331 743 2297 332 744 2298 83 744 2299 81 744 2300 341 745 2301 343 745 2302 214 745 2303 342 746 2304 209 746 2305 215 746 2306 325 747 2307 341 747 2308 208 747 2309 326 748 2310 81 748 2311 209 748 2312 214 749 2313 343 749 2314 345 749 2315 215 750 2316 79 750 2317 346 750 2318 345 751 2319 299 751 2320 91 751 2321 346 752 2322 79 752 2323 92 752 2324 323 753 2325 351 753 2326 303 753 2327 324 754 2328 76 754 2329 303 754 2330 351 755 2331 349 755 2332 77 755 2333 352 756 2334 303 756 2335 77 756 2336 77 757 2337 349 757 2338 347 757 2339 348 758 2340 350 758 2341 77 758 2342 304 759 2343 347 759 2344 327 759 2345 328 760 2346 348 760 2347 304 760 2348 327 761 2349 347 761 2350 341 761 2351 328 762 2352 326 762 2353 342 762 2354 295 763 2355 297 763 2356 317 763 2357 318 764 2358 298 764 2359 296 764 2360 315 765 2361 323 765 2362 76 765 2363 316 766 2364 75 766 2365 76 766 2366 357 767 2367 355 767 2368 302 767 2369 358 768 2370 301 768 2371 302 768 2372 302 769 2373 355 769 2374 353 769 2375 354 770 2376 356 770 2377 302 770 2378 74 771 2379 353 771 2380 315 771 2381 316 772 2382 354 772 2383 74 772 2384 291 773 2385 293 773 2386 361 773 2387 362 774 2388 294 774 2389 292 774 2390 363 775 2391 361 775 2392 367 775 2393 368 776 2394 362 776 2395 364 776 2396 365 777 2397 367 777 2398 369 777 2399 370 778 2400 368 778 2401 366 778 2402 371 779 2403 369 779 2404 375 779 2405 376 780 2406 370 780 2407 372 780 2408 377 781 2409 373 781 2410 375 781 2411 378 782 2412 314 782 2413 376 782 2414 315 783 2415 353 783 2416 373 783 2417 374 784 2418 354 784 2419 316 784 2420 353 785 2421 355 785 2422 371 785 2423 372 786 2424 356 786 2425 354 786 2426 355 787 2427 357 787 2428 365 787 2429 366 788 2430 358 788 2431 356 788 2432 357 789 2433 359 789 2434 363 789 2435 364 790 2436 360 790 2437 358 790 2438 291 791 2439 363 791 2440 359 791 2441 292 792 2442 290 792 2443 360 792 2444 359 793 2445 357 793 2446 301 793 2447 360 794 2448 73 794 2449 301 794 2450 285 795 2451 287 795 2452 289 795 2453 286 796 2454 284 796 2455 290 796 2456 283 797 2457 289 797 2458 359 797 2459 360 798 2460 290 798 2461 284 798 2462 295 799 2463 309 799 2464 361 799 2465 296 800 2466 294 800 2467 362 800 2468 309 801 2469 311 801 2470 367 801 2471 368 802 2472 312 802 2473 310 802 2474 311 803 2475 381 803 2476 369 803 2477 370 804 2478 382 804 2479 312 804 2480 375 805 2481 369 805 2482 381 805 2483 376 806 2484 314 806 2485 382 806 2486 349 807 2487 385 807 2488 383 807 2489 350 808 2490 348 808 2491 384 808 2492 383 809 2493 385 809 2494 319 809 2495 384 810 2496 318 810 2497 320 810 2498 297 811 2499 299 811 2500 383 811 2501 384 812 2502 300 812 2503 298 812 2504 299 813 2505 343 813 2506 341 813 2507 342 814 2508 344 814 2509 300 814 2510 321 815 2511 379 815 2512 377 815 2513 322 816 2514 314 816 2515 378 816 2516 377 817 2517 379 817 2518 323 817 2519 378 818 2520 316 818 2521 324 818 2522 385 819 2523 379 819 2524 321 819 2525 386 820 2526 320 820 2527 322 820 2528 351 821 2529 379 821 2530 385 821 2531 352 822 2532 350 822 2533 386 822 2534 387 823 2535 413 823 2536 401 823 2537 388 824 2538 400 824 2539 402 824 2540 399 825 2541 401 825 2542 403 825 2543 404 826 2544 402 826 2545 400 826 2546 403 827 2547 405 827 2548 395 827 2549 404 828 2550 398 828 2551 396 828 2552 405 829 2553 407 829 2554 393 829 2555 406 830 2556 396 830 2557 394 830 2558 407 831 2559 409 831 2560 391 831 2561 408 832 2562 394 832 2563 392 832 2564 391 833 2565 409 833 2566 411 833 2567 412 834 2568 410 834 2569 392 834 2570 409 835 2571 419 835 2572 417 835 2573 418 836 2574 420 836 2575 410 836 2576 407 837 2577 421 837 2578 419 837 2579 420 838 2580 422 838 2581 408 838 2582 423 839 2583 421 839 2584 407 839 2585 424 840 2586 406 840 2587 408 840 2588 425 841 2589 423 841 2590 405 841 2591 426 842 2592 404 842 2593 406 842 2594 427 843 2595 425 843 2596 403 843 2597 428 844 2598 402 844 2599 404 844 2600 401 845 2601 413 845 2602 415 845 2603 416 846 2604 414 846 2605 402 846 2606 319 847 2607 443 847 2608 441 847 2609 320 848 2610 318 848 2611 442 848 2612 389 849 2613 411 849 2614 443 849 2615 390 850 2616 320 850 2617 444 850 2618 309 851 2619 317 851 2620 441 851 2621 442 852 2622 318 852 2623 310 852 2624 381 853 2625 429 853 2626 413 853 2627 414 854 2628 430 854 2629 382 854 2630 411 855 2631 417 855 2632 439 855 2633 440 856 2634 418 856 2635 412 856 2636 445 857 2637 443 857 2638 439 857 2639 446 858 2640 438 858 2641 440 858 2642 433 859 2643 445 859 2644 437 859 2645 438 860 2646 446 860 2647 434 860 2648 447 861 2649 445 861 2650 433 861 2651 448 862 2652 432 862 2653 434 862 2654 447 863 2655 431 863 2656 449 863 2657 448 864 2658 430 864 2659 450 864 2660 429 865 2661 449 865 2662 415 865 2663 430 866 2664 414 866 2665 416 866 2666 447 867 2667 429 867 2668 381 867 2669 448 868 2670 312 868 2671 382 868 2672 441 869 2673 445 869 2674 447 869 2675 442 870 2676 312 870 2677 448 870 2678 415 871 2679 449 871 2680 451 871 2681 452 872 2682 450 872 2683 416 872 2684 431 873 2685 461 873 2686 451 873 2687 432 874 2688 450 874 2689 452 874 2690 431 419 2691 433 419 2692 459 419 2693 460 420 2694 434 420 2695 432 420 2696 435 875 2697 457 875 2698 459 875 2699 436 876 2700 434 876 2701 460 876 2702 437 877 2703 455 877 2704 457 877 2705 438 878 2706 436 878 2707 458 878 2708 437 879 2709 439 879 2710 453 879 2711 454 880 2712 440 880 2713 438 880 2714 439 881 2715 417 881 2716 473 881 2717 474 882 2718 418 882 2719 440 882 2720 427 883 2721 415 883 2722 475 883 2723 476 884 2724 416 884 2725 428 884 2726 425 885 2727 427 885 2728 463 885 2729 464 886 2730 428 886 2731 426 886 2732 423 887 2733 425 887 2734 465 887 2735 466 888 2736 426 888 2737 424 888 2738 423 889 2739 467 889 2740 469 889 2741 424 890 2742 422 890 2743 470 890 2744 421 891 2745 469 891 2746 471 891 2747 422 892 2748 420 892 2749 472 892 2750 419 893 2751 471 893 2752 473 893 2753 420 894 2754 418 894 2755 474 894 2756 455 895 2757 479 895 2758 477 895 2759 456 896 2760 458 896 2761 478 896 2762 479 897 2763 481 897 2764 483 897 2765 480 898 2766 478 898 2767 484 898 2768 483 899 2769 481 899 2770 487 899 2771 488 900 2772 482 900 2773 484 900 2774 487 901 2775 489 901 2776 491 901 2777 488 902 2778 486 902 2779 492 902 2780 463 903 2781 475 903 2782 485 903 2783 486 904 2784 476 904 2785 464 904 2786 483 905 2787 485 905 2788 475 905 2789 484 906 2790 452 906 2791 476 906 2792 461 907 2793 477 907 2794 483 907 2795 462 908 2796 452 908 2797 484 908 2798 457 909 2799 477 909 2800 461 909 2801 462 910 2802 478 910 2803 458 910 2804 473 911 2805 479 911 2806 455 911 2807 474 912 2808 454 912 2809 456 912 2810 471 913 2811 481 913 2812 479 913 2813 480 914 2814 482 914 2815 472 914 2816 487 915 2817 481 915 2818 471 915 2819 488 916 2820 470 916 2821 472 916 2822 489 917 2823 487 917 2824 469 917 2825 490 918 2826 468 918 2827 470 918 2828 465 919 2829 491 919 2830 489 919 2831 490 920 2832 492 920 2833 466 920 2834 391 921 2835 389 921 2836 503 921 2837 504 922 2838 390 922 2839 392 922 2840 393 923 2841 391 923 2842 501 923 2843 502 924 2844 392 924 2845 394 924 2846 393 925 2847 499 925 2848 497 925 2849 394 926 2850 396 926 2851 498 926 2852 395 927 2853 497 927 2854 495 927 2855 396 928 2856 398 928 2857 496 928 2858 397 929 2859 495 929 2860 493 929 2861 398 930 2862 400 930 2863 494 930 2864 399 931 2865 493 931 2866 505 931 2867 400 932 2868 388 932 2869 506 932 2870 501 933 2871 503 933 2872 505 933 2873 502 934 2874 494 934 2875 506 934 2876 493 935 2877 495 935 2878 499 935 2879 500 936 2880 496 936 2881 494 936 2882 381 937 2883 387 937 2884 505 937 2885 382 938 2886 314 938 2887 506 938 2888 313 939 2889 505 939 2890 503 939 2891 504 940 2892 506 940 2893 314 940 2894 319 941 2895 321 941 2896 503 941 2897 504 942 2898 322 942 2899 320 942 2900</p>
+ </triangles>
+ </mesh>
+ </geometry>
+ </library_geometries>
+ <library_visual_scenes>
+ <visual_scene id="Scene" name="Scene">
+ <node id="Suzanne" name="Suzanne" type="NODE">
+ <matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
+ <instance_geometry url="#Suzanne-mesh" name="Suzanne"/>
+ </node>
+ </visual_scene>
+ </library_visual_scenes>
+ <scene>
+ <instance_visual_scene url="#Scene"/>
+ </scene>
+</COLLADA> \ No newline at end of file
diff --git a/example/white-cube.dae b/example/white-cube.dae
deleted file mode 100644
index ddd1543..0000000
--- a/example/white-cube.dae
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<COLLADA xmlns="http://www.collada.org/2008/03/COLLADASchema" version="1.5.0">
- <asset>
- <created>2005-11-14T02:16:38Z</created>
- <modified>2005-11-15T11:36:38Z</modified>
- <revision>1.0</revision>
- </asset>
- <library_effects>
- <effect id="whitePhong">
- <profile_COMMON>
- <technique sid="phong1">
- <phong>
- <emission>
- <color>1.0 1.0 1.0 1.0</color>
- </emission>
- <ambient>
- <color>1.0 1.0 1.0 1.0</color>
- </ambient>
- <diffuse>
- <color>1.0 1.0 1.0 1.0</color>
- </diffuse>
- <specular>
- <color>1.0 1.0 1.0 1.0</color>
- </specular>
- <shininess>
- <float>20.0</float>
- </shininess>
- <reflective>
- <color>1.0 1.0 1.0 1.0</color>
- </reflective>
- <reflectivity>
- <float>0.5</float>
- </reflectivity>
- <transparent>
- <color>1.0 1.0 1.0 1.0</color>
- </transparent>
- <transparency>
- <float>1.0</float>
- </transparency>
- </phong>
- </technique>
- </profile_COMMON>
- </effect>
- </library_effects>
- <library_materials>
- <material id="whiteMaterial">
- <instance_effect url="#whitePhong"/>
- </material>
- </library_materials>
- <library_geometries>
- <geometry id="box" name="box">
- <mesh>
- <source id="box-Pos">
- <float_array id="box-Pos-array" count="24">
- -0.5 0.5 0.5
- 0.5 0.5 0.5
- -0.5 -0.5 0.5
- 0.5 -0.5 0.5
- -0.5 0.5 -0.5
- 0.5 0.5 -0.5
- -0.5 -0.5 -0.5
- 0.5 -0.5 -0.5
- </float_array>
- <technique_common>
- <accessor source="#box-Pos-array" count="8" stride="3">
- <param name="X" type="float" />
- <param name="Y" type="float" />
- <param name="Z" type="float" />
- </accessor>
- </technique_common>
- </source>
- <source id="box-0-Normal">
- <float_array id="box-0-Normal-array" count="18">
- 1.0 0.0 0.0
- -1.0 0.0 0.0
- 0.0 1.0 0.0
- 0.0 -1.0 0.0
- 0.0 0.0 1.0
- 0.0 0.0 -1.0
- </float_array>
- <technique_common>
- <accessor source="#box-0-Normal-array" count="6" stride="3">
- <param name="X" type="float"/>
- <param name="Y" type="float"/>
- <param name="Z" type="float"/>
- </accessor>
- </technique_common>
- </source>
- <vertices id="box-Vtx">
- <input semantic="POSITION" source="#box-Pos"/>
- </vertices>
- <polygons count="6" material="WHITE">
- <input semantic="VERTEX" source="#box-Vtx" offset="0"/>
- <input semantic="NORMAL" source="#box-0-Normal" offset="1"/>
- <p>0 4 2 4 3 4 1 4</p>
- <p>0 2 1 2 5 2 4 2</p>
- <p>6 3 7 3 3 3 2 3</p>
- <p>0 1 4 1 6 1 2 1</p>
- <p>3 0 7 0 5 0 1 0</p>
- <p>5 5 7 5 6 5 4 5</p>
- </polygons>
- </mesh>
- </geometry>
- </library_geometries>
- <library_visual_scenes>
- <visual_scene id="DefaultScene">
- <node id="Box" name="Box">
- <translate> 0 0 0</translate>
- <rotate> 0 0 1 0</rotate>
- <rotate> 0 1 0 0</rotate>
- <rotate> 1 0 0 0</rotate>
- <scale> 1 1 1</scale>
- <instance_geometry url="#box">
- <bind_material>
- <technique_common>
- <instance_material symbol="WHITE" target="#whiteMaterial"/>
- </technique_common>
- </bind_material>
- </instance_geometry>
- </node>
- </visual_scene>
- </library_visual_scenes>
- <scene>
- <instance_visual_scene url="#DefaultScene"/>
- </scene>
-</COLLADA>
diff --git a/include/kalmia.h b/include/kalmia.h
index a09ab9d..79fb004 100644
--- a/include/kalmia.h
+++ b/include/kalmia.h
@@ -151,4 +151,24 @@ struct ka_geometry_t {
};
+struct ka_library_geometries_t {
+ char *id;
+ char *name;
+
+ unsigned int geometry_count;
+ struct ka_geometry_t *geometry;
+};
+
+
+/******** kalmia_t ********/
+
+struct kalmia_t {
+ struct ka_library_geometries_t *library_geometries;
+};
+
+
+struct kalmia_t * kalmia_parse_file(const char *filename);
+void kalmia_destroy(struct kalmia_t *k);
+
+
#endif
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6ad8ede..746f370 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,7 @@
project(kalmia)
target_include_directories(kalmia PUBLIC ${CMAKE_CURRENT_LIST_DIR})
+target_sources(kalmia PUBLIC kalmia.c)
if (KALMIA_BUILD_TESTS)
target_sources(
diff --git a/src/geometry/geometry.c b/src/geometry/geometry.c
index 25b899b..7d2e6c2 100644
--- a/src/geometry/geometry.c
+++ b/src/geometry/geometry.c
@@ -470,3 +470,54 @@ void kai_release_geometry(struct ka_geometry_t g)
free(g.name);
kai_release_mesh(g.mesh);
}
+
+
+int kai_read_library_geometries(struct ka_library_geometries_t *dest, struct kai_tag_t *src)
+{
+ CHECK_TAG_TYPE("library_geometries");
+
+ dest->id = kai_tag_attr_to_dup(src, "id");
+ dest->name = kai_tag_attr_to_dup(src, "name");
+
+ struct kai_tag_t *child;
+ unsigned int geometry_count = 0;
+ FOR_CHILD_OF_TYPE(src, child, "geometry") { geometry_count += 1; }
+
+ dest->geometry = kai_alloc(
+ geometry_count * sizeof(struct ka_geometry_t),
+ "library_geometries geometry array"
+ );
+ if (dest->geometry == NULL) {
+ free(dest->id);
+ free(dest->name);
+ return -1;
+ }
+
+ int i=0;
+ FOR_CHILD_OF_TYPE(src, child, "geometry") {
+ int result = kai_read_geometry(dest->geometry + i, child);
+ if (result != 0) {
+ dest->geometry_count = i;
+ kai_release_library_geometries(*dest);
+ return -1;
+ }
+ i += 1;
+ }
+ dest->geometry_count = geometry_count;
+
+ return 0;
+}
+
+void kai_release_library_geometries(struct ka_library_geometries_t l)
+{
+ free(l.id);
+ free(l.name);
+
+ int i;
+ for (i=0; i<l.geometry_count; i++) {
+ kai_release_geometry(l.geometry[i]);
+ }
+ free(l.geometry);
+}
+
+
diff --git a/src/geometry/geometry.h b/src/geometry/geometry.h
index c00704f..eb0395f 100644
--- a/src/geometry/geometry.h
+++ b/src/geometry/geometry.h
@@ -32,4 +32,7 @@ void kai_release_mesh(struct ka_mesh_t m);
int kai_read_geometry(struct ka_geometry_t *dest, struct kai_tag_t *src);
void kai_release_geometry(struct ka_geometry_t m);
+int kai_read_library_geometries(struct ka_library_geometries_t *dest, struct kai_tag_t *src);
+void kai_release_library_geometries(struct ka_library_geometries_t l);
+
#endif
diff --git a/src/kalmia.c b/src/kalmia.c
new file mode 100644
index 0000000..1ae0588
--- /dev/null
+++ b/src/kalmia.c
@@ -0,0 +1,54 @@
+#include <kalmia.h>
+#include "geometry/geometry.h"
+#include "util/util.h"
+#include "xml/xml.h"
+
+
+struct kalmia_t * kalmia_parse_file(const char *filename)
+{
+ struct kai_tag_t *document = kai_parse_file(filename);
+ if (document == NULL) {
+ return NULL;
+ }
+
+ struct kai_tag_t *lib;
+
+ /* create kalmia_t */
+ struct kalmia_t *k = kai_alloc(sizeof(struct kalmia_t), "kalmia_t");
+ if (k == NULL) {
+ kai_tag_destroy(document);
+ return NULL;
+ }
+
+ /* parse geometry */
+ lib = kai_tag_get_first_child_with_type(document, "library_geometries");
+ if (lib == NULL) {
+ /* no geometry to read */
+ k->library_geometries = NULL;
+ }
+ else {
+ k->library_geometries = kai_alloc(sizeof(struct ka_library_geometries_t), "library_geometries");
+ if (k->library_geometries == NULL) {
+ kai_tag_destroy(document);
+ free(k);
+ return NULL;
+ }
+ kai_read_library_geometries(k->library_geometries, lib);
+ }
+
+ /* clean up */
+ kai_tag_destroy(document);
+
+ return k;
+}
+
+
+void kalmia_destroy(struct kalmia_t *k)
+{
+ if (k->library_geometries != NULL) {
+ kai_release_library_geometries(*(k->library_geometries));
+ free(k->library_geometries);
+ }
+
+ free(k);
+}
diff --git a/src/xml/kalmia.lex.c b/src/xml/kalmia.lex.c
index 1862064..5530f85 100644
--- a/src/xml/kalmia.lex.c
+++ b/src/xml/kalmia.lex.c
@@ -557,6 +557,1179 @@ typedef int yy_state_type;
#define yytext_ptr yytext_r
+static const flex_int16_t yy_nxt[][256] =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0
+ },
+
+ {
+ 9, 10, 10, 10, 10, 10, 10, 10, 10, 11,
+ 11, 10, 10, 11, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 11, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 12, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10
+ },
+
+ {
+ 9, 10, 10, 10, 10, 10, 10, 10, 10, 11,
+ 11, 10, 10, 11, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 11, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 12, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10
+ },
+
+ {
+ 9, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 14, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13
+ },
+
+ {
+ 9, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 14, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13
+
+ },
+
+ {
+ 9, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 16, 15,
+ 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 15, 15, 15, 15, 16, 15, 16, 16, 16,
+
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15
+ },
+
+ {
+ 9, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 16, 15,
+ 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 15, 15, 15, 15, 16, 15, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15
+ },
+
+ {
+ 9, 15, 15, 15, 15, 15, 15, 15, 15, 17,
+ 17, 15, 15, 17, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 17, 15, 18, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 19, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 20, 15,
+ 15, 21, 22, 15, 15, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 15, 15, 15, 15, 20, 15, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15
+ },
+
+ {
+ 9, 15, 15, 15, 15, 15, 15, 15, 15, 17,
+ 17, 15, 15, 17, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 17, 15, 18, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 19, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 20, 15,
+ 15, 21, 22, 15, 15, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 15, 15, 15, 15, 20, 15, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+
+ 20, 20, 20, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15
+ },
+
+ {
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9
+
+ },
+
+ {
+ 9, 23, 23, 23, 23, 23, 23, 23, 23, 24,
+ 24, 23, 23, 24, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 24, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ -10, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23
+ },
+
+ {
+ 9, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11
+ },
+
+ {
+ 9, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, 25, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, 26, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12
+ },
+
+ {
+ 9, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, -13, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27
+ },
+
+ {
+ 9, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14
+
+ },
+
+ {
+ 9, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15
+ },
+
+ {
+ 9, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+
+ -16, -16, -16, -16, -16, 28, 28, -16, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, -16,
+ -16, -16, -16, -16, -16, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, -16, -16, -16, -16, 28, -16, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16
+ },
+
+ {
+ 9, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17
+ },
+
+ {
+ 9, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18
+ },
+
+ {
+ 9, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+
+ -19, -19, 29, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19
+
+ },
+
+ {
+ 9, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, 30, 30, -20, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, -20,
+ -20, -20, -20, -20, -20, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, -20, -20, -20, -20, 30, -20, 30, 30, 30,
+
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20
+ },
+
+ {
+ 9, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21
+ },
+
+ {
+ 9, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22
+ },
+
+ {
+ 9, 23, 23, 23, 23, 23, 23, 23, 23, 24,
+ 24, 23, 23, 24, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 24, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ -23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23
+ },
+
+ {
+ 9, 23, 23, 23, 23, 23, 23, 23, 23, 24,
+ 24, 23, 23, 24, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 24, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ -24, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23
+
+ },
+
+ {
+ 9, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25
+ },
+
+ {
+ 9, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ 31, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26
+ },
+
+ {
+ 9, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, -27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27
+ },
+
+ {
+ 9, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, 28, 28, -28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, -28,
+ -28, -28, -28, -28, -28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, -28, -28, -28, -28, 28, -28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+
+ 28, 28, 28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28
+ },
+
+ {
+ 9, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29
+
+ },
+
+ {
+ 9, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, 30, 30, -30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, -30,
+ -30, -30, -30, -30, -30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, -30, -30, -30, -30, 30, -30, 30, 30, 30,
+
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30
+ },
+
+ {
+ 9, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, 32,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31
+ },
+
+ {
+ 9, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, 33, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32
+ },
+
+ {
+ 9, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ -33, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 35, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34
+ },
+
+ {
+ 9, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ -34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 35, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34
+
+ },
+
+ {
+ 9, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ -35, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 36, 35, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34
+ },
+
+ {
+ 9, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ -36, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 35, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34
+ },
+
+ } ;
+
static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner);
static int yy_get_next_buffer ( yyscan_t yyscanner );
@@ -580,121 +1753,26 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_acclist[32] =
- { 0,
- 16, 15, 2, 15, 4, 15, 13, 15, 12, 15,
- 15, 3, 15, 11, 15, 15, 8, 15,16393, 10,
- 15, 6, 15, 14, 5, 13, 7, 8,16393, 8201,
- 1
- } ;
-
static const flex_int16_t yy_accept[37] =
{ 0,
- 1, 1, 1, 1, 1, 1, 1, 2, 3, 5,
- 7, 9, 11, 12, 14, 16, 17, 20, 22, 24,
- 25, 25, 26, 26, 27, 28, 28, 30, 31, 31,
- 31, 31, 31, 31, 32, 32
- } ;
-
-static const YY_CHAR yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 4, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 5, 5, 6, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 7, 1, 8,
- 9, 10, 11, 1, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 1, 1, 1, 1, 7, 1, 7, 7, 7, 7,
-
- 7, 7, 7, 7, 7, 7, 7, 12, 13, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 14,
- 7, 7, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1
- } ;
-
-static const YY_CHAR yy_meta[15] =
- { 0,
- 1, 2, 3, 4, 5, 1, 5, 6, 2, 1,
- 1, 5, 5, 5
- } ;
-
-static const flex_int16_t yy_base[43] =
- { 0,
- 0, 7, 77, 73, 15, 0, 71, 2, 82, 0,
- 0, 82, 82, 82, 82, 56, 28, 82, 82, 10,
- 30, 82, 30, 0, 82, 34, 36, 82, 29, 29,
- 29, 25, 24, 3, 82, 45, 51, 57, 62, 67,
- 71, 74
- } ;
-
-static const flex_int16_t yy_def[43] =
- { 0,
- 36, 36, 37, 37, 35, 5, 35, 38, 35, 35,
- 39, 35, 35, 35, 35, 35, 40, 35, 35, 38,
- 38, 35, 35, 39, 35, 41, 40, 35, 35, 35,
- 42, 42, 42, 42, 0, 35, 35, 35, 35, 35,
- 35, 35
+ 0, 0, 0, 0, 0, 0, 0, 0, 16, 15,
+ 2, 4, 13, 12, 15, 8, 3, 11, 15, 9,
+ 10, 6, 14, 0, 5, 0, 13, 8, 7, 9,
+ 0, 0, 0, 0, 0, 1
} ;
-static const flex_int16_t yy_nxt[97] =
+static const yy_state_type yy_NUL_trans[37] =
{ 0,
- 35, 9, 9, 21, 21, 22, 35, 10, 9, 9,
- 23, 21, 21, 33, 10, 13, 14, 14, 15, 13,
- 16, 17, 13, 18, 19, 13, 17, 17, 17, 26,
- 26, 21, 21, 34, 33, 33, 28, 26, 26, 33,
- 31, 30, 28, 29, 28, 8, 8, 8, 8, 8,
- 8, 11, 11, 11, 11, 11, 11, 20, 20, 20,
- 20, 20, 24, 24, 24, 25, 24, 24, 27, 27,
- 35, 27, 26, 26, 32, 32, 12, 32, 32, 32,
- 12, 7, 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35
-
+ 10, 10, 13, 13, 15, 15, 15, 15, 0, 23,
+ 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 23, 23, 0, 0, 27, 0, 0, 0,
+ 0, 0, 34, 34, 34, 34
} ;
-static const flex_int16_t yy_chk[97] =
- { 0,
- 0, 1, 1, 8, 8, 10, 0, 1, 2, 2,
- 10, 20, 20, 34, 2, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 17,
- 17, 21, 21, 33, 33, 32, 17, 27, 27, 31,
- 30, 29, 26, 23, 27, 36, 36, 36, 36, 36,
- 36, 37, 37, 37, 37, 37, 37, 38, 38, 38,
- 38, 38, 39, 39, 39, 16, 39, 39, 40, 40,
- 7, 40, 41, 41, 42, 42, 4, 42, 42, 42,
- 3, 35, 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35
-
- } ;
-
-#define YY_TRAILING_MASK 0x2000
-#define YY_TRAILING_HEAD_MASK 0x4000
-#define REJECT \
-{ \
-*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ \
-yy_cp = yyg->yy_full_match; /* restore poss. backed-over text */ \
-yyg->yy_lp = yyg->yy_full_lp; /* restore orig. accepting pos. */ \
-yyg->yy_state_ptr = yyg->yy_full_state; /* restore orig. state */ \
-yy_current_state = *yyg->yy_state_ptr; /* restore curr. state */ \
-++yyg->yy_lp; \
-goto find_rule; \
-}
-
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
@@ -716,12 +1794,13 @@ goto find_rule; \
else { \
yylloc->last_column += yyleng; \
}
-#line 719 "kalmia.lex.c"
-#line 720 "kalmia.lex.c"
+#line 1797 "kalmia.lex.c"
+#line 1798 "kalmia.lex.c"
#define INITIAL 0
#define STRING 1
-#define TAG 2
+#define TAG_START 2
+#define TAG 3
#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
@@ -763,17 +1842,6 @@ struct yyguts_t
int yylineno_r;
int yy_flex_debug_r;
- yy_state_type *yy_state_buf;
- yy_state_type *yy_state_ptr;
- char *yy_full_match;
- int yy_lp;
-
- /* These are only needed for trailing context rules,
- * but there's no conditional variable for that yet. */
- int yy_looking_for_trail_begin;
- int yy_full_lp;
- int *yy_full_state;
-
char *yytext_r;
int yy_more_flag;
int yy_more_len;
@@ -893,33 +1961,17 @@ static int input ( yyscan_t yyscanner );
*/
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
- if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ errno=0; \
+ while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \
+ { \
+ if( errno != EINTR) \
{ \
- int c = '*'; \
- int n; \
- for ( n = 0; n < max_size && \
- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
- buf[n] = (char) c; \
- if ( c == '\n' ) \
- buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
YY_FATAL_ERROR( "input in flex scanner failed" ); \
- result = n; \
+ break; \
} \
- else \
- { \
errno=0; \
- while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
- { \
- if( errno != EINTR) \
- { \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- break; \
- } \
- errno=0; \
- clearerr(yyin); \
- } \
- }\
+ clearerr(yyin); \
+ }\
\
#endif
@@ -993,12 +2045,6 @@ YY_DECL
YY_USER_INIT;
#endif
- /* Create the reject buffer large enough to save one state per allowed character. */
- if ( ! yyg->yy_state_buf )
- yyg->yy_state_buf = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE , yyscanner);
- if ( ! yyg->yy_state_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
-
if ( ! yyg->yy_start )
yyg->yy_start = 1; /* first start state */
@@ -1022,7 +2068,7 @@ YY_DECL
-#line 1025 "kalmia.lex.c"
+#line 2071 "kalmia.lex.c"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1037,64 +2083,22 @@ YY_DECL
yy_bp = yy_cp;
yy_current_state = yyg->yy_start;
-
- yyg->yy_state_ptr = yyg->yy_state_buf;
- *yyg->yy_state_ptr++ = yy_current_state;
-
yy_match:
- do
+ while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
{
- YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ if ( yy_accept[yy_current_state] )
{
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 36 )
- yy_c = yy_meta[yy_c];
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- *yyg->yy_state_ptr++ = yy_current_state;
+
++yy_cp;
}
- while ( yy_base[yy_current_state] != 82 );
+
+ yy_current_state = -yy_current_state;
yy_find_action:
- yy_current_state = *--yyg->yy_state_ptr;
- yyg->yy_lp = yy_accept[yy_current_state];
-find_rule: /* we branch to this label when backing up */
- for ( ; ; ) /* until we find what rule we matched */
- {
- if ( yyg->yy_lp && yyg->yy_lp < yy_accept[yy_current_state + 1] )
- {
- yy_act = yy_acclist[yyg->yy_lp];
- if ( yy_act & YY_TRAILING_HEAD_MASK ||
- yyg->yy_looking_for_trail_begin )
- {
- if ( yy_act == yyg->yy_looking_for_trail_begin )
- {
- yyg->yy_looking_for_trail_begin = 0;
- yy_act &= ~YY_TRAILING_HEAD_MASK;
- break;
- }
- }
- else if ( yy_act & YY_TRAILING_MASK )
- {
- yyg->yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
- yyg->yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
- }
- else
- {
- yyg->yy_full_match = yy_cp;
- yyg->yy_full_state = yyg->yy_state_ptr;
- yyg->yy_full_lp = yyg->yy_lp;
- break;
- }
- ++yyg->yy_lp;
- goto find_rule;
- }
- --yy_cp;
- yy_current_state = *--yyg->yy_state_ptr;
- yyg->yy_lp = yy_accept[yy_current_state];
- }
+ yy_act = yy_accept[yy_current_state];
YY_DO_BEFORE_ACTION;
@@ -1102,6 +2106,13 @@ do_action: /* This label is used only to access EOF actions. */
switch ( yy_act )
{ /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = yyg->yy_hold_char;
+ yy_cp = yyg->yy_last_accepting_cpos + 1;
+ yy_current_state = yyg->yy_last_accepting_state;
+ goto yy_find_action;
+
case 1:
YY_RULE_SETUP
#line 32 "kalmia.l"
@@ -1124,12 +2135,12 @@ YY_RULE_SETUP
case 4:
YY_RULE_SETUP
#line 42 "kalmia.l"
-{ BEGIN(TAG); return S_TAG_OPEN; }
+{ BEGIN(TAG_START); return S_TAG_OPEN; }
YY_BREAK
case 5:
YY_RULE_SETUP
#line 43 "kalmia.l"
-{ BEGIN(TAG); return E_TAG_OPEN; }
+{ BEGIN(TAG_START); return E_TAG_OPEN; }
YY_BREAK
case 6:
YY_RULE_SETUP
@@ -1146,14 +2157,14 @@ YY_RULE_SETUP
#line 48 "kalmia.l"
{
/* generic tag name */
+ BEGIN(TAG);
yylval->string = strdup(yytext);
return NAME;
}
YY_BREAK
case 9:
-/* rule 9 can match eol */
YY_RULE_SETUP
-#line 53 "kalmia.l"
+#line 54 "kalmia.l"
{
/* generic attribute key */
yylval->string = strdup(yytext);
@@ -1162,7 +2173,7 @@ YY_RULE_SETUP
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 58 "kalmia.l"
+#line 59 "kalmia.l"
{
/* attribute "=" */
return *yytext;
@@ -1170,7 +2181,7 @@ YY_RULE_SETUP
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 64 "kalmia.l"
+#line 65 "kalmia.l"
{
/* begin a string */
BEGIN(STRING);
@@ -1179,7 +2190,7 @@ YY_RULE_SETUP
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 69 "kalmia.l"
+#line 70 "kalmia.l"
{
/* end a string */
BEGIN(TAG);
@@ -1189,7 +2200,7 @@ YY_RULE_SETUP
case 13:
/* rule 13 can match eol */
YY_RULE_SETUP
-#line 74 "kalmia.l"
+#line 75 "kalmia.l"
{
/* within a string */
yylval->string = strdup(yytext);
@@ -1199,7 +2210,7 @@ YY_RULE_SETUP
case 14:
/* rule 14 can match eol */
YY_RULE_SETUP
-#line 81 "kalmia.l"
+#line 82 "kalmia.l"
{
yylval->string = strdup(yytext);
return CONTENT;
@@ -1207,14 +2218,15 @@ YY_RULE_SETUP
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 85 "kalmia.l"
-YY_FATAL_ERROR( "flex scanner jammed" );
+#line 86 "kalmia.l"
+ECHO;
YY_BREAK
-#line 1213 "kalmia.lex.c"
- case YY_STATE_EOF(INITIAL):
- case YY_STATE_EOF(STRING):
- case YY_STATE_EOF(TAG):
- yyterminate();
+#line 2224 "kalmia.lex.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(STRING):
+case YY_STATE_EOF(TAG_START):
+case YY_STATE_EOF(TAG):
+ yyterminate();
case YY_END_OF_BUFFER:
{
@@ -1406,8 +2418,38 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( num_to_read <= 0 )
{ /* Not enough room in the buffer - grow it. */
- YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+
+ int yy_c_buf_p_offset =
+ (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ yyrealloc( (void *) b->yy_ch_buf,
+ (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = NULL;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
}
@@ -1470,20 +2512,19 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
yy_current_state = yyg->yy_start;
- yyg->yy_state_ptr = yyg->yy_state_buf;
- *yyg->yy_state_ptr++ = yy_current_state;
-
for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
{
- YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ if ( *yy_cp )
+ {
+ yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
+ }
+ else
+ yy_current_state = yy_NUL_trans[yy_current_state];
+ if ( yy_accept[yy_current_state] )
{
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 36 )
- yy_c = yy_meta[yy_c];
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- *yyg->yy_state_ptr++ = yy_current_state;
}
return yy_current_state;
@@ -1498,18 +2539,19 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
{
int yy_is_jam;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
+ char *yy_cp = yyg->yy_c_buf_p;
+
+ yy_current_state = yy_NUL_trans[yy_current_state];
+ yy_is_jam = (yy_current_state == 0);
- YY_CHAR yy_c = 1;
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ if ( ! yy_is_jam )
{
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 36 )
- yy_c = yy_meta[yy_c];
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 35);
- if ( ! yy_is_jam )
- *yyg->yy_state_ptr++ = yy_current_state;
(void)yyg;
return yy_is_jam ? 0 : yy_current_state;
@@ -2229,11 +3271,6 @@ static int yy_init_globals (yyscan_t yyscanner)
yyg->yy_start_stack_depth = 0;
yyg->yy_start_stack = NULL;
- yyg->yy_state_buf = 0;
- yyg->yy_state_ptr = 0;
- yyg->yy_full_match = 0;
- yyg->yy_lp = 0;
-
/* Defined in main.c */
#ifdef YY_STDINIT
yyin = stdin;
@@ -2269,9 +3306,6 @@ int yylex_destroy (yyscan_t yyscanner)
yyfree( yyg->yy_start_stack , yyscanner );
yyg->yy_start_stack = NULL;
- yyfree ( yyg->yy_state_buf , yyscanner);
- yyg->yy_state_buf = NULL;
-
/* Reset the globals. This is important in a non-reentrant scanner so the next time
* yylex() is called, initialization will occur. */
yy_init_globals( yyscanner);
@@ -2340,4 +3374,4 @@ void yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
-#line 85 "kalmia.l"
+#line 86 "kalmia.l"
diff --git a/src/xml/kalmia.lex.h b/src/xml/kalmia.lex.h
index ad35689..6e69df6 100644
--- a/src/xml/kalmia.lex.h
+++ b/src/xml/kalmia.lex.h
@@ -456,7 +456,8 @@ void yyfree ( void * , yyscan_t yyscanner );
#ifdef YY_HEADER_EXPORT_START_CONDITIONS
#define INITIAL 0
#define STRING 1
-#define TAG 2
+#define TAG_START 2
+#define TAG 3
#endif
@@ -728,8 +729,8 @@ extern int yylex \
#undef yyTABLES_NAME
#endif
-#line 85 "kalmia.l"
+#line 86 "kalmia.l"
-#line 733 "kalmia.lex.h"
+#line 734 "kalmia.lex.h"
#undef kalmiaIN_HEADER
#endif /* kalmiaHEADER_H */
diff --git a/yy/demo b/yy/demo
new file mode 100755
index 0000000..0fcd6c3
--- /dev/null
+++ b/yy/demo
Binary files differ
diff --git a/yy/kalmia.l b/yy/kalmia.l
index 85f68e3..42ab9e1 100644
--- a/yy/kalmia.l
+++ b/yy/kalmia.l
@@ -1,7 +1,7 @@
-%option noinput nounput noyywrap 8bit nodefault
+%option noinput nounput noyywrap noreject 8bit
%option reentrant bison-bridge bison-locations
%option prefix="kalmia"
-%start STRING TAG
+%start STRING TAG_START TAG
%{
#include <string.h>
@@ -39,18 +39,19 @@ ATTR ([\x20\x0a\x0d\x09]*)?"="
}
-<INITIAL>"<" { BEGIN(TAG); return S_TAG_OPEN; }
-<INITIAL>"</" { BEGIN(TAG); return E_TAG_OPEN; }
+<INITIAL>"<" { BEGIN(TAG_START); return S_TAG_OPEN; }
+<INITIAL>"</" { BEGIN(TAG_START); return E_TAG_OPEN; }
<TAG>">" { BEGIN(INITIAL); return TAG_CLOSE; }
<TAG>"/>" { BEGIN(INITIAL); return EMPTY_TAG_CLOSE; }
-<TAG>[a-zA-Z_:][a-zA-Z0-9\.\-_:]* {
+<TAG_START>[a-zA-Z_:][a-zA-Z0-9\.\-_:]* {
/* generic tag name */
+ BEGIN(TAG);
yylval->string = strdup(yytext);
return NAME;
}
-<TAG>[a-zA-Z_:][a-zA-Z0-9\.\-_:]*/{ATTR} {
+<TAG>[a-zA-Z_:][a-zA-Z0-9\.\-_:]* {
/* generic attribute key */
yylval->string = strdup(yytext);
return ATTR;
diff --git a/yy/kalmia.lex.c b/yy/kalmia.lex.c
new file mode 100644
index 0000000..5530f85
--- /dev/null
+++ b/yy/kalmia.lex.c
@@ -0,0 +1,3377 @@
+#line 1 "kalmia.lex.c"
+
+#line 3 "kalmia.lex.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+#ifdef yy_create_buffer
+#define kalmia_create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer kalmia_create_buffer
+#endif
+
+#ifdef yy_delete_buffer
+#define kalmia_delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer kalmia_delete_buffer
+#endif
+
+#ifdef yy_scan_buffer
+#define kalmia_scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer kalmia_scan_buffer
+#endif
+
+#ifdef yy_scan_string
+#define kalmia_scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string kalmia_scan_string
+#endif
+
+#ifdef yy_scan_bytes
+#define kalmia_scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes kalmia_scan_bytes
+#endif
+
+#ifdef yy_init_buffer
+#define kalmia_init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer kalmia_init_buffer
+#endif
+
+#ifdef yy_flush_buffer
+#define kalmia_flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer kalmia_flush_buffer
+#endif
+
+#ifdef yy_load_buffer_state
+#define kalmia_load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state kalmia_load_buffer_state
+#endif
+
+#ifdef yy_switch_to_buffer
+#define kalmia_switch_to_buffer_ALREADY_DEFINED
+#else
+#define yy_switch_to_buffer kalmia_switch_to_buffer
+#endif
+
+#ifdef yypush_buffer_state
+#define kalmiapush_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state kalmiapush_buffer_state
+#endif
+
+#ifdef yypop_buffer_state
+#define kalmiapop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state kalmiapop_buffer_state
+#endif
+
+#ifdef yyensure_buffer_stack
+#define kalmiaensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack kalmiaensure_buffer_stack
+#endif
+
+#ifdef yylex
+#define kalmialex_ALREADY_DEFINED
+#else
+#define yylex kalmialex
+#endif
+
+#ifdef yyrestart
+#define kalmiarestart_ALREADY_DEFINED
+#else
+#define yyrestart kalmiarestart
+#endif
+
+#ifdef yylex_init
+#define kalmialex_init_ALREADY_DEFINED
+#else
+#define yylex_init kalmialex_init
+#endif
+
+#ifdef yylex_init_extra
+#define kalmialex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra kalmialex_init_extra
+#endif
+
+#ifdef yylex_destroy
+#define kalmialex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy kalmialex_destroy
+#endif
+
+#ifdef yyget_debug
+#define kalmiaget_debug_ALREADY_DEFINED
+#else
+#define yyget_debug kalmiaget_debug
+#endif
+
+#ifdef yyset_debug
+#define kalmiaset_debug_ALREADY_DEFINED
+#else
+#define yyset_debug kalmiaset_debug
+#endif
+
+#ifdef yyget_extra
+#define kalmiaget_extra_ALREADY_DEFINED
+#else
+#define yyget_extra kalmiaget_extra
+#endif
+
+#ifdef yyset_extra
+#define kalmiaset_extra_ALREADY_DEFINED
+#else
+#define yyset_extra kalmiaset_extra
+#endif
+
+#ifdef yyget_in
+#define kalmiaget_in_ALREADY_DEFINED
+#else
+#define yyget_in kalmiaget_in
+#endif
+
+#ifdef yyset_in
+#define kalmiaset_in_ALREADY_DEFINED
+#else
+#define yyset_in kalmiaset_in
+#endif
+
+#ifdef yyget_out
+#define kalmiaget_out_ALREADY_DEFINED
+#else
+#define yyget_out kalmiaget_out
+#endif
+
+#ifdef yyset_out
+#define kalmiaset_out_ALREADY_DEFINED
+#else
+#define yyset_out kalmiaset_out
+#endif
+
+#ifdef yyget_leng
+#define kalmiaget_leng_ALREADY_DEFINED
+#else
+#define yyget_leng kalmiaget_leng
+#endif
+
+#ifdef yyget_text
+#define kalmiaget_text_ALREADY_DEFINED
+#else
+#define yyget_text kalmiaget_text
+#endif
+
+#ifdef yyget_lineno
+#define kalmiaget_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno kalmiaget_lineno
+#endif
+
+#ifdef yyset_lineno
+#define kalmiaset_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno kalmiaset_lineno
+#endif
+
+#ifdef yyget_column
+#define kalmiaget_column_ALREADY_DEFINED
+#else
+#define yyget_column kalmiaget_column
+#endif
+
+#ifdef yyset_column
+#define kalmiaset_column_ALREADY_DEFINED
+#else
+#define yyset_column kalmiaset_column
+#endif
+
+#ifdef yywrap
+#define kalmiawrap_ALREADY_DEFINED
+#else
+#define yywrap kalmiawrap
+#endif
+
+#ifdef yyget_lval
+#define kalmiaget_lval_ALREADY_DEFINED
+#else
+#define yyget_lval kalmiaget_lval
+#endif
+
+#ifdef yyset_lval
+#define kalmiaset_lval_ALREADY_DEFINED
+#else
+#define yyset_lval kalmiaset_lval
+#endif
+
+#ifdef yyget_lloc
+#define kalmiaget_lloc_ALREADY_DEFINED
+#else
+#define yyget_lloc kalmiaget_lloc
+#endif
+
+#ifdef yyset_lloc
+#define kalmiaset_lloc_ALREADY_DEFINED
+#else
+#define yyset_lloc kalmiaset_lloc
+#endif
+
+#ifdef yyalloc
+#define kalmiaalloc_ALREADY_DEFINED
+#else
+#define yyalloc kalmiaalloc
+#endif
+
+#ifdef yyrealloc
+#define kalmiarealloc_ALREADY_DEFINED
+#else
+#define yyrealloc kalmiarealloc
+#endif
+
+#ifdef yyfree
+#define kalmiafree_ALREADY_DEFINED
+#else
+#define yyfree kalmiafree
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#ifndef SIZE_MAX
+#define SIZE_MAX (~(size_t)0)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+/* begin standard C++ headers. */
+
+/* TODO: this is always defined, so inline it */
+#define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
+#else
+#define yynoreturn
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an
+ * integer in range [0..255] for use as an array index.
+ */
+#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yyg->yy_start = 1 + 2 *
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yyg->yy_start - 1) / 2)
+#define YYSTATE YY_START
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin , yyscanner )
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+ #define YY_LINENO_REWIND_TO(ptr)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = yyg->yy_hold_char; \
+ YY_RESTORE_YY_MORE_OFFSET \
+ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ int yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via yyrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
+ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
+ : NULL)
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
+
+void yyrestart ( FILE *input_file , yyscan_t yyscanner );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
+void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+void yypop_buffer_state ( yyscan_t yyscanner );
+
+static void yyensure_buffer_stack ( yyscan_t yyscanner );
+static void yy_load_buffer_state ( yyscan_t yyscanner );
+static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
+#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
+
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
+
+void *yyalloc ( yy_size_t , yyscan_t yyscanner );
+void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
+void yyfree ( void * , yyscan_t yyscanner );
+
+#define yy_new_buffer yy_create_buffer
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ yyensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ yyensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+#define kalmiawrap(yyscanner) (/*CONSTCOND*/1)
+#define YY_SKIP_YYWRAP
+typedef flex_uint8_t YY_CHAR;
+
+typedef int yy_state_type;
+
+#define yytext_ptr yytext_r
+
+static const flex_int16_t yy_nxt[][256] =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0
+ },
+
+ {
+ 9, 10, 10, 10, 10, 10, 10, 10, 10, 11,
+ 11, 10, 10, 11, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 11, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 12, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10
+ },
+
+ {
+ 9, 10, 10, 10, 10, 10, 10, 10, 10, 11,
+ 11, 10, 10, 11, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 11, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 12, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10
+ },
+
+ {
+ 9, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 14, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13
+ },
+
+ {
+ 9, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 14, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13
+
+ },
+
+ {
+ 9, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 16, 15,
+ 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 15, 15, 15, 15, 16, 15, 16, 16, 16,
+
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15
+ },
+
+ {
+ 9, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 16, 15,
+ 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 15, 15, 15, 15, 16, 15, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15
+ },
+
+ {
+ 9, 15, 15, 15, 15, 15, 15, 15, 15, 17,
+ 17, 15, 15, 17, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 17, 15, 18, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 19, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 20, 15,
+ 15, 21, 22, 15, 15, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 15, 15, 15, 15, 20, 15, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15
+ },
+
+ {
+ 9, 15, 15, 15, 15, 15, 15, 15, 15, 17,
+ 17, 15, 15, 17, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 17, 15, 18, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 19, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 20, 15,
+ 15, 21, 22, 15, 15, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 15, 15, 15, 15, 20, 15, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+
+ 20, 20, 20, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15
+ },
+
+ {
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
+ -9, -9, -9, -9, -9, -9
+
+ },
+
+ {
+ 9, 23, 23, 23, 23, 23, 23, 23, 23, 24,
+ 24, 23, 23, 24, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 24, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ -10, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23
+ },
+
+ {
+ 9, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11
+ },
+
+ {
+ 9, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, 25, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, 26, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12
+ },
+
+ {
+ 9, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, -13, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27
+ },
+
+ {
+ 9, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14
+
+ },
+
+ {
+ 9, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15,
+ -15, -15, -15, -15, -15, -15
+ },
+
+ {
+ 9, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+
+ -16, -16, -16, -16, -16, 28, 28, -16, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, -16,
+ -16, -16, -16, -16, -16, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, -16, -16, -16, -16, 28, -16, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16
+ },
+
+ {
+ 9, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17
+ },
+
+ {
+ 9, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, -18, -18, -18
+ },
+
+ {
+ 9, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+
+ -19, -19, 29, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19
+
+ },
+
+ {
+ 9, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, 30, 30, -20, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, -20,
+ -20, -20, -20, -20, -20, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, -20, -20, -20, -20, 30, -20, 30, 30, 30,
+
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20
+ },
+
+ {
+ 9, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21
+ },
+
+ {
+ 9, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22
+ },
+
+ {
+ 9, 23, 23, 23, 23, 23, 23, 23, 23, 24,
+ 24, 23, 23, 24, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 24, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ -23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23
+ },
+
+ {
+ 9, 23, 23, 23, 23, 23, 23, 23, 23, 24,
+ 24, 23, 23, 24, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 24, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ -24, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23
+
+ },
+
+ {
+ 9, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25
+ },
+
+ {
+ 9, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ 31, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26
+ },
+
+ {
+ 9, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, -27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27
+ },
+
+ {
+ 9, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, 28, 28, -28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, -28,
+ -28, -28, -28, -28, -28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, -28, -28, -28, -28, 28, -28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+
+ 28, 28, 28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28
+ },
+
+ {
+ 9, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29
+
+ },
+
+ {
+ 9, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, 30, 30, -30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, -30,
+ -30, -30, -30, -30, -30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, -30, -30, -30, -30, 30, -30, 30, 30, 30,
+
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30
+ },
+
+ {
+ 9, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, 32,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31
+ },
+
+ {
+ 9, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, 33, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32
+ },
+
+ {
+ 9, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ -33, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 35, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34
+ },
+
+ {
+ 9, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ -34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 35, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34
+
+ },
+
+ {
+ 9, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ -35, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 36, 35, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34
+ },
+
+ {
+ 9, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ -36, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 35, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34
+ },
+
+ } ;
+
+static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
+static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner);
+static int yy_get_next_buffer ( yyscan_t yyscanner );
+static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ yyg->yytext_ptr = yy_bp; \
+ yyleng = (int) (yy_cp - yy_bp); \
+ yyg->yy_hold_char = *yy_cp; \
+ *yy_cp = '\0'; \
+ yyg->yy_c_buf_p = yy_cp;
+#define YY_NUM_RULES 15
+#define YY_END_OF_BUFFER 16
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static const flex_int16_t yy_accept[37] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 16, 15,
+ 2, 4, 13, 12, 15, 8, 3, 11, 15, 9,
+ 10, 6, 14, 0, 5, 0, 13, 8, 7, 9,
+ 0, 0, 0, 0, 0, 1
+ } ;
+
+static const yy_state_type yy_NUL_trans[37] =
+ { 0,
+ 10, 10, 13, 13, 15, 15, 15, 15, 0, 23,
+ 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 23, 23, 0, 0, 27, 0, 0, 0,
+ 0, 0, 34, 34, 34, 34
+ } ;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+#line 1 "kalmia.l"
+#define YY_NO_INPUT 1
+
+#line 7 "kalmia.l"
+#include <string.h>
+#define YYLTYPE KALMIALTYPE
+#define YYSTYPE KALMIASTYPE
+#include "kalmia.tab.h"
+#define YY_USER_ACTION \
+ yylloc->first_line = yylloc->last_line; \
+ yylloc->first_column = yylloc->last_column; \
+ if (*yytext == '\n') { \
+ yylloc->last_line += 1; \
+ yylloc->last_column = 0; \
+ } \
+ else { \
+ yylloc->last_column += yyleng; \
+ }
+#line 1797 "kalmia.lex.c"
+#line 1798 "kalmia.lex.c"
+
+#define INITIAL 0
+#define STRING 1
+#define TAG_START 2
+#define TAG 3
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Holds the entire state of the reentrant scanner. */
+struct yyguts_t
+ {
+
+ /* User-defined. Not touched by flex. */
+ YY_EXTRA_TYPE yyextra_r;
+
+ /* The rest are the same as the globals declared in the non-reentrant scanner. */
+ FILE *yyin_r, *yyout_r;
+ size_t yy_buffer_stack_top; /**< index of top of stack. */
+ size_t yy_buffer_stack_max; /**< capacity of stack. */
+ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
+ char yy_hold_char;
+ int yy_n_chars;
+ int yyleng_r;
+ char *yy_c_buf_p;
+ int yy_init;
+ int yy_start;
+ int yy_did_buffer_switch_on_eof;
+ int yy_start_stack_ptr;
+ int yy_start_stack_depth;
+ int *yy_start_stack;
+ yy_state_type yy_last_accepting_state;
+ char* yy_last_accepting_cpos;
+
+ int yylineno_r;
+ int yy_flex_debug_r;
+
+ char *yytext_r;
+ int yy_more_flag;
+ int yy_more_len;
+
+ YYSTYPE * yylval_r;
+
+ YYLTYPE * yylloc_r;
+
+ }; /* end struct yyguts_t */
+
+static int yy_init_globals ( yyscan_t yyscanner );
+
+ /* This must go here because YYSTYPE and YYLTYPE are included
+ * from bison output in section 1.*/
+ # define yylval yyg->yylval_r
+
+ # define yylloc yyg->yylloc_r
+
+int yylex_init (yyscan_t* scanner);
+
+int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy ( yyscan_t yyscanner );
+
+int yyget_debug ( yyscan_t yyscanner );
+
+void yyset_debug ( int debug_flag , yyscan_t yyscanner );
+
+YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
+
+void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
+
+FILE *yyget_in ( yyscan_t yyscanner );
+
+void yyset_in ( FILE * _in_str , yyscan_t yyscanner );
+
+FILE *yyget_out ( yyscan_t yyscanner );
+
+void yyset_out ( FILE * _out_str , yyscan_t yyscanner );
+
+ int yyget_leng ( yyscan_t yyscanner );
+
+char *yyget_text ( yyscan_t yyscanner );
+
+int yyget_lineno ( yyscan_t yyscanner );
+
+void yyset_lineno ( int _line_number , yyscan_t yyscanner );
+
+int yyget_column ( yyscan_t yyscanner );
+
+void yyset_column ( int _column_no , yyscan_t yyscanner );
+
+YYSTYPE * yyget_lval ( yyscan_t yyscanner );
+
+void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
+
+ YYLTYPE *yyget_lloc ( yyscan_t yyscanner );
+
+ void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap ( yyscan_t yyscanner );
+#else
+extern int yywrap ( yyscan_t yyscanner );
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput ( yyscan_t yyscanner );
+#else
+static int input ( yyscan_t yyscanner );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ errno=0; \
+ while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(yyin); \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex \
+ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
+
+#define YY_DECL int yylex \
+ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK /*LINTED*/break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ yy_state_type yy_current_state;
+ char *yy_cp, *yy_bp;
+ int yy_act;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yylval = yylval_param;
+
+ yylloc = yylloc_param;
+
+ if ( !yyg->yy_init )
+ {
+ yyg->yy_init = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! yyg->yy_start )
+ yyg->yy_start = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ yyensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
+ }
+
+ yy_load_buffer_state( yyscanner );
+ }
+
+ {
+#line 29 "kalmia.l"
+
+
+
+#line 2071 "kalmia.lex.c"
+
+ while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = yyg->yy_c_buf_p;
+
+ /* Support of yytext. */
+ *yy_cp = yyg->yy_hold_char;
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = yyg->yy_start;
+yy_match:
+ while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
+ {
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+
+ ++yy_cp;
+ }
+
+ yy_current_state = -yy_current_state;
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = yyg->yy_hold_char;
+ yy_cp = yyg->yy_last_accepting_cpos + 1;
+ yy_current_state = yyg->yy_last_accepting_state;
+ goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 32 "kalmia.l"
+{
+ /* xml prologue */
+ return PROLOG;
+}
+ YY_BREAK
+case 2:
+/* rule 2 can match eol */
+#line 37 "kalmia.l"
+case 3:
+/* rule 3 can match eol */
+YY_RULE_SETUP
+#line 37 "kalmia.l"
+{
+ /* ignore whitespace */
+}
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 42 "kalmia.l"
+{ BEGIN(TAG_START); return S_TAG_OPEN; }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 43 "kalmia.l"
+{ BEGIN(TAG_START); return E_TAG_OPEN; }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 44 "kalmia.l"
+{ BEGIN(INITIAL); return TAG_CLOSE; }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 45 "kalmia.l"
+{ BEGIN(INITIAL); return EMPTY_TAG_CLOSE; }
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 48 "kalmia.l"
+{
+ /* generic tag name */
+ BEGIN(TAG);
+ yylval->string = strdup(yytext);
+ return NAME;
+}
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 54 "kalmia.l"
+{
+ /* generic attribute key */
+ yylval->string = strdup(yytext);
+ return ATTR;
+}
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 59 "kalmia.l"
+{
+ /* attribute "=" */
+ return *yytext;
+}
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 65 "kalmia.l"
+{
+ /* begin a string */
+ BEGIN(STRING);
+ return *yytext;
+}
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 70 "kalmia.l"
+{
+ /* end a string */
+ BEGIN(TAG);
+ return *yytext;
+}
+ YY_BREAK
+case 13:
+/* rule 13 can match eol */
+YY_RULE_SETUP
+#line 75 "kalmia.l"
+{
+ /* within a string */
+ yylval->string = strdup(yytext);
+ return TEXT;
+}
+ YY_BREAK
+case 14:
+/* rule 14 can match eol */
+YY_RULE_SETUP
+#line 82 "kalmia.l"
+{
+ yylval->string = strdup(yytext);
+ return CONTENT;
+}
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 86 "kalmia.l"
+ECHO;
+ YY_BREAK
+#line 2224 "kalmia.lex.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(STRING):
+case YY_STATE_EOF(TAG_START):
+case YY_STATE_EOF(TAG):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = yyg->yy_hold_char;
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * yylex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
+
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++yyg->yy_c_buf_p;
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = yyg->yy_c_buf_p;
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ yyg->yy_did_buffer_switch_on_eof = 0;
+
+ if ( yywrap( yyscanner ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p =
+ yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ yyg->yy_c_buf_p =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+ } /* end of user's declarations */
+} /* end of yylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ char *source = yyg->yytext_ptr;
+ int number_to_move, i;
+ int ret_val;
+
+ if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+
+ int yy_c_buf_p_offset =
+ (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ yyrealloc( (void *) b->yy_ch_buf,
+ (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = NULL;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ yyg->yy_n_chars, num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ if ( yyg->yy_n_chars == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ yyrestart( yyin , yyscanner);
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
+ (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ /* "- 2" to take care of EOB's */
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
+ }
+
+ yyg->yy_n_chars += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+ yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
+{
+ yy_state_type yy_current_state;
+ char *yy_cp;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_current_state = yyg->yy_start;
+
+ for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
+ {
+ if ( *yy_cp )
+ {
+ yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
+ }
+ else
+ yy_current_state = yy_NUL_trans[yy_current_state];
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
+{
+ int yy_is_jam;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
+ char *yy_cp = yyg->yy_c_buf_p;
+
+ yy_current_state = yy_NUL_trans[yy_current_state];
+ yy_is_jam = (yy_current_state == 0);
+
+ if ( ! yy_is_jam )
+ {
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ }
+
+ (void)yyg;
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+#ifndef YY_NO_UNPUT
+
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (yyscan_t yyscanner)
+#else
+ static int input (yyscan_t yyscanner)
+#endif
+
+{
+ int c;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+
+ if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ /* This was really a NUL. */
+ *yyg->yy_c_buf_p = '\0';
+
+ else
+ { /* need more input */
+ int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
+ ++yyg->yy_c_buf_p;
+
+ switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ yyrestart( yyin , yyscanner);
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap( yyscanner ) )
+ return 0;
+
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput(yyscanner);
+#else
+ return input(yyscanner);
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
+ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
+ yyg->yy_hold_char = *++yyg->yy_c_buf_p;
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * @param yyscanner The scanner object.
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void yyrestart (FILE * input_file , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! YY_CURRENT_BUFFER ){
+ yyensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
+ }
+
+ yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
+ yy_load_buffer_state( yyscanner );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * @param yyscanner The scanner object.
+ */
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * yypop_buffer_state();
+ * yypush_buffer_state(new_buffer);
+ */
+ yyensure_buffer_stack (yyscanner);
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ yy_load_buffer_state( yyscanner );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (yywrap()) processing, but the only time this flag
+ * is looked at is after yywrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+static void yy_load_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ yyg->yy_hold_char = *yyg->yy_c_buf_p;
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * @param yyscanner The scanner object.
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ yy_init_buffer( b, file , yyscanner);
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ * @param yyscanner The scanner object.
+ */
+ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yyfree( (void *) b->yy_ch_buf , yyscanner );
+
+ yyfree( (void *) b , yyscanner );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
+
+{
+ int oerrno = errno;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_flush_buffer( b , yyscanner);
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then yy_init_buffer was _probably_
+ * called from yyrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * @param yyscanner The scanner object.
+ */
+ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ yy_load_buffer_state( yyscanner );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ * @param yyscanner The scanner object.
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (new_buffer == NULL)
+ return;
+
+ yyensure_buffer_stack(yyscanner);
+
+ /* This block is copied from yy_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ yyg->yy_buffer_stack_top++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from yy_switch_to_buffer. */
+ yy_load_buffer_state( yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ * @param yyscanner The scanner object.
+ */
+void yypop_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if (yyg->yy_buffer_stack_top > 0)
+ --yyg->yy_buffer_stack_top;
+
+ if (YY_CURRENT_BUFFER) {
+ yy_load_buffer_state( yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (yyscan_t yyscanner)
+{
+ yy_size_t num_to_alloc;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (!yyg->yy_buffer_stack) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ yyg->yy_buffer_stack_top = 0;
+ return;
+ }
+
+ if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ yy_size_t grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
+ (yyg->yy_buffer_stack,
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return NULL;
+
+ b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+ b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = NULL;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ yy_switch_to_buffer( b , yyscanner );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
+{
+
+ return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = (yy_size_t) (_yybytes_len + 2);
+ buf = (char *) yyalloc( n , yyscanner );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = yy_scan_buffer( buf, n , yyscanner);
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+ fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = yyg->yy_hold_char; \
+ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
+ yyg->yy_hold_char = *yyg->yy_c_buf_p; \
+ *yyg->yy_c_buf_p = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the user-defined data for this scanner.
+ * @param yyscanner The scanner object.
+ */
+YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyextra;
+}
+
+/** Get the current line number.
+ * @param yyscanner The scanner object.
+ */
+int yyget_lineno (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yylineno;
+}
+
+/** Get the current column number.
+ * @param yyscanner The scanner object.
+ */
+int yyget_column (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yycolumn;
+}
+
+/** Get the input stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *yyget_in (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyin;
+}
+
+/** Get the output stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *yyget_out (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyout;
+}
+
+/** Get the length of the current token.
+ * @param yyscanner The scanner object.
+ */
+int yyget_leng (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyleng;
+}
+
+/** Get the current token.
+ * @param yyscanner The scanner object.
+ */
+
+char *yyget_text (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yytext;
+}
+
+/** Set the user-defined data. This data is never touched by the scanner.
+ * @param user_defined The data to be associated with this scanner.
+ * @param yyscanner The scanner object.
+ */
+void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyextra = user_defined ;
+}
+
+/** Set the current line number.
+ * @param _line_number line number
+ * @param yyscanner The scanner object.
+ */
+void yyset_lineno (int _line_number , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* lineno is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
+
+ yylineno = _line_number;
+}
+
+/** Set the current column.
+ * @param _column_no column number
+ * @param yyscanner The scanner object.
+ */
+void yyset_column (int _column_no , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* column is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ YY_FATAL_ERROR( "yyset_column called with no buffer" );
+
+ yycolumn = _column_no;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param _in_str A readable stream.
+ * @param yyscanner The scanner object.
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE * _in_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyin = _in_str ;
+}
+
+void yyset_out (FILE * _out_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyout = _out_str ;
+}
+
+int yyget_debug (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yy_flex_debug;
+}
+
+void yyset_debug (int _bdebug , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yy_flex_debug = _bdebug ;
+}
+
+/* Accessor methods for yylval and yylloc */
+
+YYSTYPE * yyget_lval (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yylval;
+}
+
+void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yylval = yylval_param;
+}
+
+YYLTYPE *yyget_lloc (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yylloc;
+}
+
+void yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yylloc = yylloc_param;
+}
+
+/* User-visible API */
+
+/* yylex_init is special because it creates the scanner itself, so it is
+ * the ONLY reentrant function that doesn't take the scanner as the last argument.
+ * That's why we explicitly handle the declaration, instead of using our macros.
+ */
+int yylex_init(yyscan_t* ptr_yy_globals)
+{
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+/* yylex_init_extra has the same functionality as yylex_init, but follows the
+ * convention of taking the scanner as the last argument. Note however, that
+ * this is a *pointer* to a scanner, as it will be allocated by this call (and
+ * is the reason, too, why this function also must handle its own declaration).
+ * The user defined value in the first argument will be available to yyalloc in
+ * the yyextra field.
+ */
+int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
+{
+ struct yyguts_t dummy_yyguts;
+
+ yyset_extra (yy_user_defined, &dummy_yyguts);
+
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in
+ yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ yyset_extra (yy_user_defined, *ptr_yy_globals);
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+static int yy_init_globals (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from yylex_destroy(), so don't allocate here.
+ */
+
+ yyg->yy_buffer_stack = NULL;
+ yyg->yy_buffer_stack_top = 0;
+ yyg->yy_buffer_stack_max = 0;
+ yyg->yy_c_buf_p = NULL;
+ yyg->yy_init = 0;
+ yyg->yy_start = 0;
+
+ yyg->yy_start_stack_ptr = 0;
+ yyg->yy_start_stack_depth = 0;
+ yyg->yy_start_stack = NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = NULL;
+ yyout = NULL;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * yylex_init()
+ */
+ return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ yypop_buffer_state(yyscanner);
+ }
+
+ /* Destroy the stack itself. */
+ yyfree(yyg->yy_buffer_stack , yyscanner);
+ yyg->yy_buffer_stack = NULL;
+
+ /* Destroy the start condition stack. */
+ yyfree( yyg->yy_start_stack , yyscanner );
+ yyg->yy_start_stack = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * yylex() is called, initialization will occur. */
+ yy_init_globals( yyscanner);
+
+ /* Destroy the main struct (reentrant only). */
+ yyfree ( yyscanner , yyscanner );
+ yyscanner = NULL;
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+
+ int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
+{
+ int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *yyalloc (yy_size_t size , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+ return malloc(size);
+}
+
+void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return realloc(ptr, size);
+}
+
+void yyfree (void * ptr , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 86 "kalmia.l"
diff --git a/yy/kalmia.lex.h b/yy/kalmia.lex.h
new file mode 100644
index 0000000..6e69df6
--- /dev/null
+++ b/yy/kalmia.lex.h
@@ -0,0 +1,736 @@
+#ifndef kalmiaHEADER_H
+#define kalmiaHEADER_H 1
+#define kalmiaIN_HEADER 1
+
+#line 5 "kalmia.lex.h"
+
+#line 7 "kalmia.lex.h"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+#ifdef yy_create_buffer
+#define kalmia_create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer kalmia_create_buffer
+#endif
+
+#ifdef yy_delete_buffer
+#define kalmia_delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer kalmia_delete_buffer
+#endif
+
+#ifdef yy_scan_buffer
+#define kalmia_scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer kalmia_scan_buffer
+#endif
+
+#ifdef yy_scan_string
+#define kalmia_scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string kalmia_scan_string
+#endif
+
+#ifdef yy_scan_bytes
+#define kalmia_scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes kalmia_scan_bytes
+#endif
+
+#ifdef yy_init_buffer
+#define kalmia_init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer kalmia_init_buffer
+#endif
+
+#ifdef yy_flush_buffer
+#define kalmia_flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer kalmia_flush_buffer
+#endif
+
+#ifdef yy_load_buffer_state
+#define kalmia_load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state kalmia_load_buffer_state
+#endif
+
+#ifdef yy_switch_to_buffer
+#define kalmia_switch_to_buffer_ALREADY_DEFINED
+#else
+#define yy_switch_to_buffer kalmia_switch_to_buffer
+#endif
+
+#ifdef yypush_buffer_state
+#define kalmiapush_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state kalmiapush_buffer_state
+#endif
+
+#ifdef yypop_buffer_state
+#define kalmiapop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state kalmiapop_buffer_state
+#endif
+
+#ifdef yyensure_buffer_stack
+#define kalmiaensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack kalmiaensure_buffer_stack
+#endif
+
+#ifdef yylex
+#define kalmialex_ALREADY_DEFINED
+#else
+#define yylex kalmialex
+#endif
+
+#ifdef yyrestart
+#define kalmiarestart_ALREADY_DEFINED
+#else
+#define yyrestart kalmiarestart
+#endif
+
+#ifdef yylex_init
+#define kalmialex_init_ALREADY_DEFINED
+#else
+#define yylex_init kalmialex_init
+#endif
+
+#ifdef yylex_init_extra
+#define kalmialex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra kalmialex_init_extra
+#endif
+
+#ifdef yylex_destroy
+#define kalmialex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy kalmialex_destroy
+#endif
+
+#ifdef yyget_debug
+#define kalmiaget_debug_ALREADY_DEFINED
+#else
+#define yyget_debug kalmiaget_debug
+#endif
+
+#ifdef yyset_debug
+#define kalmiaset_debug_ALREADY_DEFINED
+#else
+#define yyset_debug kalmiaset_debug
+#endif
+
+#ifdef yyget_extra
+#define kalmiaget_extra_ALREADY_DEFINED
+#else
+#define yyget_extra kalmiaget_extra
+#endif
+
+#ifdef yyset_extra
+#define kalmiaset_extra_ALREADY_DEFINED
+#else
+#define yyset_extra kalmiaset_extra
+#endif
+
+#ifdef yyget_in
+#define kalmiaget_in_ALREADY_DEFINED
+#else
+#define yyget_in kalmiaget_in
+#endif
+
+#ifdef yyset_in
+#define kalmiaset_in_ALREADY_DEFINED
+#else
+#define yyset_in kalmiaset_in
+#endif
+
+#ifdef yyget_out
+#define kalmiaget_out_ALREADY_DEFINED
+#else
+#define yyget_out kalmiaget_out
+#endif
+
+#ifdef yyset_out
+#define kalmiaset_out_ALREADY_DEFINED
+#else
+#define yyset_out kalmiaset_out
+#endif
+
+#ifdef yyget_leng
+#define kalmiaget_leng_ALREADY_DEFINED
+#else
+#define yyget_leng kalmiaget_leng
+#endif
+
+#ifdef yyget_text
+#define kalmiaget_text_ALREADY_DEFINED
+#else
+#define yyget_text kalmiaget_text
+#endif
+
+#ifdef yyget_lineno
+#define kalmiaget_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno kalmiaget_lineno
+#endif
+
+#ifdef yyset_lineno
+#define kalmiaset_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno kalmiaset_lineno
+#endif
+
+#ifdef yyget_column
+#define kalmiaget_column_ALREADY_DEFINED
+#else
+#define yyget_column kalmiaget_column
+#endif
+
+#ifdef yyset_column
+#define kalmiaset_column_ALREADY_DEFINED
+#else
+#define yyset_column kalmiaset_column
+#endif
+
+#ifdef yywrap
+#define kalmiawrap_ALREADY_DEFINED
+#else
+#define yywrap kalmiawrap
+#endif
+
+#ifdef yyget_lval
+#define kalmiaget_lval_ALREADY_DEFINED
+#else
+#define yyget_lval kalmiaget_lval
+#endif
+
+#ifdef yyset_lval
+#define kalmiaset_lval_ALREADY_DEFINED
+#else
+#define yyset_lval kalmiaset_lval
+#endif
+
+#ifdef yyget_lloc
+#define kalmiaget_lloc_ALREADY_DEFINED
+#else
+#define yyget_lloc kalmiaget_lloc
+#endif
+
+#ifdef yyset_lloc
+#define kalmiaset_lloc_ALREADY_DEFINED
+#else
+#define yyset_lloc kalmiaset_lloc
+#endif
+
+#ifdef yyalloc
+#define kalmiaalloc_ALREADY_DEFINED
+#else
+#define yyalloc kalmiaalloc
+#endif
+
+#ifdef yyrealloc
+#define kalmiarealloc_ALREADY_DEFINED
+#else
+#define yyrealloc kalmiarealloc
+#endif
+
+#ifdef yyfree
+#define kalmiafree_ALREADY_DEFINED
+#else
+#define yyfree kalmiafree
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#ifndef SIZE_MAX
+#define SIZE_MAX (~(size_t)0)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+/* begin standard C++ headers. */
+
+/* TODO: this is always defined, so inline it */
+#define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
+#else
+#define yynoreturn
+#endif
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ int yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+void yyrestart ( FILE *input_file , yyscan_t yyscanner );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
+void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+void yypop_buffer_state ( yyscan_t yyscanner );
+
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
+
+void *yyalloc ( yy_size_t , yyscan_t yyscanner );
+void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
+void yyfree ( void * , yyscan_t yyscanner );
+
+#define kalmiawrap(yyscanner) (/*CONSTCOND*/1)
+#define YY_SKIP_YYWRAP
+
+#define yytext_ptr yytext_r
+
+#ifdef YY_HEADER_EXPORT_START_CONDITIONS
+#define INITIAL 0
+#define STRING 1
+#define TAG_START 2
+#define TAG 3
+
+#endif
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+int yylex_init (yyscan_t* scanner);
+
+int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy ( yyscan_t yyscanner );
+
+int yyget_debug ( yyscan_t yyscanner );
+
+void yyset_debug ( int debug_flag , yyscan_t yyscanner );
+
+YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
+
+void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
+
+FILE *yyget_in ( yyscan_t yyscanner );
+
+void yyset_in ( FILE * _in_str , yyscan_t yyscanner );
+
+FILE *yyget_out ( yyscan_t yyscanner );
+
+void yyset_out ( FILE * _out_str , yyscan_t yyscanner );
+
+ int yyget_leng ( yyscan_t yyscanner );
+
+char *yyget_text ( yyscan_t yyscanner );
+
+int yyget_lineno ( yyscan_t yyscanner );
+
+void yyset_lineno ( int _line_number , yyscan_t yyscanner );
+
+int yyget_column ( yyscan_t yyscanner );
+
+void yyset_column ( int _column_no , yyscan_t yyscanner );
+
+YYSTYPE * yyget_lval ( yyscan_t yyscanner );
+
+void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
+
+ YYLTYPE *yyget_lloc ( yyscan_t yyscanner );
+
+ void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap ( yyscan_t yyscanner );
+#else
+extern int yywrap ( yyscan_t yyscanner );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex \
+ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
+
+#define YY_DECL int yylex \
+ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+#ifndef kalmia_create_buffer_ALREADY_DEFINED
+#undef yy_create_buffer
+#endif
+#ifndef kalmia_delete_buffer_ALREADY_DEFINED
+#undef yy_delete_buffer
+#endif
+#ifndef kalmia_scan_buffer_ALREADY_DEFINED
+#undef yy_scan_buffer
+#endif
+#ifndef kalmia_scan_string_ALREADY_DEFINED
+#undef yy_scan_string
+#endif
+#ifndef kalmia_scan_bytes_ALREADY_DEFINED
+#undef yy_scan_bytes
+#endif
+#ifndef kalmia_init_buffer_ALREADY_DEFINED
+#undef yy_init_buffer
+#endif
+#ifndef kalmia_flush_buffer_ALREADY_DEFINED
+#undef yy_flush_buffer
+#endif
+#ifndef kalmia_load_buffer_state_ALREADY_DEFINED
+#undef yy_load_buffer_state
+#endif
+#ifndef kalmia_switch_to_buffer_ALREADY_DEFINED
+#undef yy_switch_to_buffer
+#endif
+#ifndef kalmiapush_buffer_state_ALREADY_DEFINED
+#undef yypush_buffer_state
+#endif
+#ifndef kalmiapop_buffer_state_ALREADY_DEFINED
+#undef yypop_buffer_state
+#endif
+#ifndef kalmiaensure_buffer_stack_ALREADY_DEFINED
+#undef yyensure_buffer_stack
+#endif
+#ifndef kalmialex_ALREADY_DEFINED
+#undef yylex
+#endif
+#ifndef kalmiarestart_ALREADY_DEFINED
+#undef yyrestart
+#endif
+#ifndef kalmialex_init_ALREADY_DEFINED
+#undef yylex_init
+#endif
+#ifndef kalmialex_init_extra_ALREADY_DEFINED
+#undef yylex_init_extra
+#endif
+#ifndef kalmialex_destroy_ALREADY_DEFINED
+#undef yylex_destroy
+#endif
+#ifndef kalmiaget_debug_ALREADY_DEFINED
+#undef yyget_debug
+#endif
+#ifndef kalmiaset_debug_ALREADY_DEFINED
+#undef yyset_debug
+#endif
+#ifndef kalmiaget_extra_ALREADY_DEFINED
+#undef yyget_extra
+#endif
+#ifndef kalmiaset_extra_ALREADY_DEFINED
+#undef yyset_extra
+#endif
+#ifndef kalmiaget_in_ALREADY_DEFINED
+#undef yyget_in
+#endif
+#ifndef kalmiaset_in_ALREADY_DEFINED
+#undef yyset_in
+#endif
+#ifndef kalmiaget_out_ALREADY_DEFINED
+#undef yyget_out
+#endif
+#ifndef kalmiaset_out_ALREADY_DEFINED
+#undef yyset_out
+#endif
+#ifndef kalmiaget_leng_ALREADY_DEFINED
+#undef yyget_leng
+#endif
+#ifndef kalmiaget_text_ALREADY_DEFINED
+#undef yyget_text
+#endif
+#ifndef kalmiaget_lineno_ALREADY_DEFINED
+#undef yyget_lineno
+#endif
+#ifndef kalmiaset_lineno_ALREADY_DEFINED
+#undef yyset_lineno
+#endif
+#ifndef kalmiaget_column_ALREADY_DEFINED
+#undef yyget_column
+#endif
+#ifndef kalmiaset_column_ALREADY_DEFINED
+#undef yyset_column
+#endif
+#ifndef kalmiawrap_ALREADY_DEFINED
+#undef yywrap
+#endif
+#ifndef kalmiaget_lval_ALREADY_DEFINED
+#undef yyget_lval
+#endif
+#ifndef kalmiaset_lval_ALREADY_DEFINED
+#undef yyset_lval
+#endif
+#ifndef kalmiaget_lloc_ALREADY_DEFINED
+#undef yyget_lloc
+#endif
+#ifndef kalmiaset_lloc_ALREADY_DEFINED
+#undef yyset_lloc
+#endif
+#ifndef kalmiaalloc_ALREADY_DEFINED
+#undef yyalloc
+#endif
+#ifndef kalmiarealloc_ALREADY_DEFINED
+#undef yyrealloc
+#endif
+#ifndef kalmiafree_ALREADY_DEFINED
+#undef yyfree
+#endif
+#ifndef kalmiatext_ALREADY_DEFINED
+#undef yytext
+#endif
+#ifndef kalmialeng_ALREADY_DEFINED
+#undef yyleng
+#endif
+#ifndef kalmiain_ALREADY_DEFINED
+#undef yyin
+#endif
+#ifndef kalmiaout_ALREADY_DEFINED
+#undef yyout
+#endif
+#ifndef kalmia_flex_debug_ALREADY_DEFINED
+#undef yy_flex_debug
+#endif
+#ifndef kalmialineno_ALREADY_DEFINED
+#undef yylineno
+#endif
+#ifndef kalmiatables_fload_ALREADY_DEFINED
+#undef yytables_fload
+#endif
+#ifndef kalmiatables_destroy_ALREADY_DEFINED
+#undef yytables_destroy
+#endif
+#ifndef kalmiaTABLES_NAME_ALREADY_DEFINED
+#undef yyTABLES_NAME
+#endif
+
+#line 86 "kalmia.l"
+
+#line 734 "kalmia.lex.h"
+#undef kalmiaIN_HEADER
+#endif /* kalmiaHEADER_H */
diff --git a/yy/kalmia.tab.c b/yy/kalmia.tab.c
new file mode 100644
index 0000000..95492f0
--- /dev/null
+++ b/yy/kalmia.tab.c
@@ -0,0 +1,2007 @@
+/* A Bison parser, made by GNU Bison 3.8.2. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+ Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output, and Bison version. */
+#define YYBISON 30802
+
+/* Bison version string. */
+#define YYBISON_VERSION "3.8.2"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 2
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+/* "%code top" blocks. */
+#line 7 "kalmia.y"
+
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <string.h>
+
+#line 75 "kalmia.tab.c"
+/* Substitute the type names. */
+#define YYSTYPE KALMIASTYPE
+#define YYLTYPE KALMIALTYPE
+/* Substitute the variable and function names. */
+#define yyparse kalmiaparse
+#define yylex kalmialex
+#define yyerror kalmiaerror
+#define yydebug kalmiadebug
+#define yynerrs kalmianerrs
+
+
+# ifndef YY_CAST
+# ifdef __cplusplus
+# define YY_CAST(Type, Val) static_cast<Type> (Val)
+# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+# else
+# define YY_CAST(Type, Val) ((Type) (Val))
+# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+# endif
+# endif
+# ifndef YY_NULLPTR
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# else
+# define YY_NULLPTR ((void*)0)
+# endif
+# endif
+
+#include "kalmia.tab.h"
+/* Symbol kind. */
+enum yysymbol_kind_t
+{
+ YYSYMBOL_YYEMPTY = -2,
+ YYSYMBOL_YYEOF = 0, /* "end of file" */
+ YYSYMBOL_YYerror = 1, /* error */
+ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
+ YYSYMBOL_PROLOG = 3, /* PROLOG */
+ YYSYMBOL_S_TAG_OPEN = 4, /* S_TAG_OPEN */
+ YYSYMBOL_E_TAG_OPEN = 5, /* E_TAG_OPEN */
+ YYSYMBOL_TAG_CLOSE = 6, /* TAG_CLOSE */
+ YYSYMBOL_EMPTY_TAG_CLOSE = 7, /* EMPTY_TAG_CLOSE */
+ YYSYMBOL_NAME = 8, /* NAME */
+ YYSYMBOL_ATTR = 9, /* ATTR */
+ YYSYMBOL_TEXT = 10, /* TEXT */
+ YYSYMBOL_CONTENT = 11, /* CONTENT */
+ YYSYMBOL_12_ = 12, /* '=' */
+ YYSYMBOL_13_ = 13, /* '"' */
+ YYSYMBOL_YYACCEPT = 14, /* $accept */
+ YYSYMBOL_document = 15, /* document */
+ YYSYMBOL_tags = 16, /* tags */
+ YYSYMBOL_tag = 17, /* tag */
+ YYSYMBOL_start_tag = 18, /* start_tag */
+ YYSYMBOL_empty_tag = 19, /* empty_tag */
+ YYSYMBOL_end_tag = 20, /* end_tag */
+ YYSYMBOL_attributes = 21, /* attributes */
+ YYSYMBOL_attribute = 22 /* attribute */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
+
+
+/* Unqualified %code blocks. */
+#line 36 "kalmia.y"
+
+ /* flex definitions */
+ int yylex(YYSTYPE *yylvalp, YYLTYPE *yyllocp, yyscan_t scanner);
+ int kalmialex_init(yyscan_t *);
+ void kalmiaset_in(FILE *, yyscan_t);
+ int kalmialex_destroy(yyscan_t);
+
+ int yyerror(YYLTYPE *yyllocp, yyscan_t unused,
+ struct kai_tag_t **unused2, const char *msg);
+
+ #define TAG_MISMATCH(a, b) \
+ do { \
+ char buf[1024]; \
+ snprintf(buf, 1024, "Tag name mismatch: \"%s\" != \"%s\"", a, b); \
+ yyerror(&yylloc, NULL, NULL, (const char*) buf); \
+ YYABORT; \
+ } while (0)
+
+ /* create/destroy kai_attr_t */
+ struct kai_attr_t * kai_attr_new(char *key, char *value);
+ struct kai_attr_t * kai_attr_last(struct kai_attr_t *head);
+ void kai_attr_destroy(struct kai_attr_t *attr);
+
+ /* create/destroy kai_tag_t */
+ struct kai_tag_t * kai_tag_new(char *type, struct kai_attr_t *attrs);
+ struct kai_tag_t * kai_tag_last(struct kai_tag_t *head);
+ void kai_tag_destroy(struct kai_tag_t *tag);
+
+#line 171 "kalmia.tab.c"
+
+#ifdef short
+# undef short
+#endif
+
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+ <limits.h> and (if available) <stdint.h> are included
+ so that the code can choose integer types of a good width. */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_STDINT_H
+# endif
+#endif
+
+/* Narrow types that promote to a signed type and that can represent a
+ signed or unsigned integer of at least N bits. In tables they can
+ save space and decrease cache pressure. Promoting to a signed type
+ helps avoid bugs in integer arithmetic. */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
+#else
+typedef signed char yytype_int8;
+#endif
+
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
+#endif
+
+/* Work around bug in HP-UX 11.23, which defines these macros
+ incorrectly for preprocessor constants. This workaround can likely
+ be removed in 2023, as HPE has promised support for HP-UX 11.23
+ (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+ <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
+#endif
+
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
+#else
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+# define YYPTRDIFF_T __PTRDIFF_TYPE__
+# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+# ifndef ptrdiff_t
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# endif
+# define YYPTRDIFF_T ptrdiff_t
+# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+# define YYPTRDIFF_T long
+# define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM \
+ YY_CAST (YYPTRDIFF_T, \
+ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
+ ? YYPTRDIFF_MAXIMUM \
+ : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int8 yy_state_t;
+
+/* State numbers in computations. */
+typedef int yy_state_fast_t;
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+# define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+# define YY_ATTRIBUTE_UNUSED
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YY_USE(E) ((void) (E))
+#else
+# define YY_USE(E) /* empty */
+#endif
+
+/* Suppress an incorrect diagnostic about yylval being uninitialized. */
+#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
+# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
+# else
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# endif
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define YY_INITIAL_VALUE(Value) Value
+#endif
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END \
+ _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if 1
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's 'empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined EXIT_SUCCESS
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined EXIT_SUCCESS
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* 1 */
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined KALMIALTYPE_IS_TRIVIAL && KALMIALTYPE_IS_TRIVIAL \
+ && defined KALMIASTYPE_IS_TRIVIAL && KALMIASTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yy_state_t yyss_alloc;
+ YYSTYPE yyvs_alloc;
+ YYLTYPE yyls_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
+ + YYSIZEOF (YYLTYPE)) \
+ + 2 * YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYPTRDIFF_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / YYSIZEOF (*yyptr); \
+ } \
+ while (0)
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+# else
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYPTRDIFF_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 9
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 32
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 14
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 9
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 17
+/* YYNSTATES -- Number of states. */
+#define YYNSTATES 32
+
+/* YYMAXUTOK -- Last valid token kind. */
+#define YYMAXUTOK 266
+
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, with out-of-bounds checking. */
+#define YYTRANSLATE(YYX) \
+ (0 <= (YYX) && (YYX) <= YYMAXUTOK \
+ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
+ : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex. */
+static const yytype_int8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 13, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 12, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11
+};
+
+#if KALMIADEBUG
+/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
+static const yytype_uint8 yyrline[] =
+{
+ 0, 95, 95, 96, 100, 101, 106, 112, 119, 126,
+ 130, 135, 144, 149, 158, 163, 164, 168
+};
+#endif
+
+/** Accessing symbol of state STATE. */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if 1
+/* The user-facing name of the symbol whose (internal) number is
+ YYSYMBOL. No bounds checking. */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "\"end of file\"", "error", "\"invalid token\"", "PROLOG", "S_TAG_OPEN",
+ "E_TAG_OPEN", "TAG_CLOSE", "EMPTY_TAG_CLOSE", "NAME", "ATTR", "TEXT",
+ "CONTENT", "'='", "'\"'", "$accept", "document", "tags", "tag",
+ "start_tag", "empty_tag", "end_tag", "attributes", "attribute", YY_NULLPTR
+};
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+ return yytname[yysymbol];
+}
+#endif
+
+#define YYPACT_NINF (-6)
+
+#define yypact_value_is_default(Yyn) \
+ ((Yyn) == YYPACT_NINF)
+
+#define YYTABLE_NINF (-1)
+
+#define yytable_value_is_error(Yyn) \
+ 0
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+static const yytype_int8 yypact[] =
+{
+ 13, 1, -5, 10, -6, -3, -6, -6, 0, -6,
+ 15, 17, 14, -6, -6, -6, -6, 2, 6, -6,
+ 18, -6, -6, -6, 12, -6, -6, -6, -6, 16,
+ 19, -6
+};
+
+/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
+static const yytype_int8 yydefact[] =
+{
+ 0, 0, 0, 0, 2, 0, 9, 3, 0, 1,
+ 0, 0, 0, 4, 6, 10, 12, 0, 0, 15,
+ 0, 7, 5, 8, 0, 11, 13, 16, 14, 0,
+ 0, 17
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int8 yypgoto[] =
+{
+ -6, -6, -6, -1, -6, -6, 9, -6, 11
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int8 yydefgoto[] =
+{
+ 0, 3, 12, 4, 5, 6, 14, 18, 19
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
+static const yytype_int8 yytable[] =
+{
+ 7, 2, 10, 8, 13, 2, 15, 16, 11, 17,
+ 9, 22, 25, 26, 24, 17, 1, 2, 2, 10,
+ 21, 23, 10, 20, 28, 29, 30, 0, 0, 27,
+ 0, 0, 31
+};
+
+static const yytype_int8 yycheck[] =
+{
+ 1, 4, 5, 8, 5, 4, 6, 7, 11, 9,
+ 0, 12, 6, 7, 12, 9, 3, 4, 4, 5,
+ 11, 12, 5, 8, 6, 13, 10, -1, -1, 18,
+ -1, -1, 13
+};
+
+/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
+ state STATE-NUM. */
+static const yytype_int8 yystos[] =
+{
+ 0, 3, 4, 15, 17, 18, 19, 17, 8, 0,
+ 5, 11, 16, 17, 20, 6, 7, 9, 21, 22,
+ 8, 20, 17, 20, 12, 6, 7, 22, 6, 13,
+ 10, 13
+};
+
+/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
+static const yytype_int8 yyr1[] =
+{
+ 0, 14, 15, 15, 16, 16, 17, 17, 17, 17,
+ 18, 18, 19, 19, 20, 21, 21, 22
+};
+
+/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
+static const yytype_int8 yyr2[] =
+{
+ 0, 2, 1, 2, 1, 2, 2, 3, 3, 1,
+ 3, 4, 3, 4, 3, 1, 2, 5
+};
+
+
+enum { YYENOMEM = -2 };
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = KALMIAEMPTY)
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+#define YYNOMEM goto yyexhaustedlab
+
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+ do \
+ if (yychar == KALMIAEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (&yylloc, scanner, document, YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+ while (0)
+
+/* Backward compatibility with an undocumented macro.
+ Use KALMIAerror or KALMIAUNDEF. */
+#define YYERRCODE KALMIAUNDEF
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (N) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (0)
+#endif
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
+/* Enable debugging if requested. */
+#if KALMIADEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+
+/* YYLOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+# ifndef YYLOCATION_PRINT
+
+# if defined YY_LOCATION_PRINT
+
+ /* Temporary convenience wrapper in case some people defined the
+ undocumented and private YY_LOCATION_PRINT macros. */
+# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
+
+# elif defined KALMIALTYPE_IS_TRIVIAL && KALMIALTYPE_IS_TRIVIAL
+
+/* Print *YYLOCP on YYO. Private, do not rely on its existence. */
+
+YY_ATTRIBUTE_UNUSED
+static int
+yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
+{
+ int res = 0;
+ int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
+ if (0 <= yylocp->first_line)
+ {
+ res += YYFPRINTF (yyo, "%d", yylocp->first_line);
+ if (0 <= yylocp->first_column)
+ res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
+ }
+ if (0 <= yylocp->last_line)
+ {
+ if (yylocp->first_line < yylocp->last_line)
+ {
+ res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
+ if (0 <= end_col)
+ res += YYFPRINTF (yyo, ".%d", end_col);
+ }
+ else if (0 <= end_col && yylocp->first_column < end_col)
+ res += YYFPRINTF (yyo, "-%d", end_col);
+ }
+ return res;
+}
+
+# define YYLOCATION_PRINT yy_location_print_
+
+ /* Temporary convenience wrapper in case some people defined the
+ undocumented and private YY_LOCATION_PRINT macros. */
+# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
+
+# else
+
+# define YYLOCATION_PRINT(File, Loc) ((void) 0)
+ /* Temporary convenience wrapper in case some people defined the
+ undocumented and private YY_LOCATION_PRINT macros. */
+# define YY_LOCATION_PRINT YYLOCATION_PRINT
+
+# endif
+# endif /* !defined YYLOCATION_PRINT */
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Kind, Value, Location, scanner, document); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO. |
+`-----------------------------------*/
+
+static void
+yy_symbol_value_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t scanner, struct kai_tag_t **document)
+{
+ FILE *yyoutput = yyo;
+ YY_USE (yyoutput);
+ YY_USE (yylocationp);
+ YY_USE (scanner);
+ YY_USE (document);
+ if (!yyvaluep)
+ return;
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YY_USE (yykind);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+}
+
+
+/*---------------------------.
+| Print this symbol on YYO. |
+`---------------------------*/
+
+static void
+yy_symbol_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t scanner, struct kai_tag_t **document)
+{
+ YYFPRINTF (yyo, "%s %s (",
+ yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
+
+ YYLOCATION_PRINT (yyo, yylocationp);
+ YYFPRINTF (yyo, ": ");
+ yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, scanner, document);
+ YYFPRINTF (yyo, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+static void
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+static void
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
+ int yyrule, yyscan_t scanner, struct kai_tag_t **document)
+{
+ int yylno = yyrline[yyrule];
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr,
+ YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+ &yyvsp[(yyi + 1) - (yynrhs)],
+ &(yylsp[(yyi + 1) - (yynrhs)]), scanner, document);
+ YYFPRINTF (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyssp, yyvsp, yylsp, Rule, scanner, document); \
+} while (0)
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !KALMIADEBUG */
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !KALMIADEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+/* Context of a parse error. */
+typedef struct
+{
+ yy_state_t *yyssp;
+ yysymbol_kind_t yytoken;
+ YYLTYPE *yylloc;
+} yypcontext_t;
+
+/* Put in YYARG at most YYARGN of the expected tokens given the
+ current YYCTX, and return the number of tokens stored in YYARG. If
+ YYARG is null, return the number of expected tokens (guaranteed to
+ be less than YYNTOKENS). Return YYENOMEM on memory exhaustion.
+ Return 0 if there are more than YYARGN expected tokens, yet fill
+ YYARG up to YYARGN. */
+static int
+yypcontext_expected_tokens (const yypcontext_t *yyctx,
+ yysymbol_kind_t yyarg[], int yyargn)
+{
+ /* Actual size of YYARG. */
+ int yycount = 0;
+ int yyn = yypact[+*yyctx->yyssp];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (!yyarg)
+ ++yycount;
+ else if (yycount == yyargn)
+ return 0;
+ else
+ yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
+ }
+ }
+ if (yyarg && yycount == 0 && 0 < yyargn)
+ yyarg[0] = YYSYMBOL_YYEMPTY;
+ return yycount;
+}
+
+
+
+
+#ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
+# else
+/* Return the length of YYSTR. */
+static YYPTRDIFF_T
+yystrlen (const char *yystr)
+{
+ YYPTRDIFF_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+#endif
+
+#ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+#endif
+
+#ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYPTRDIFF_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYPTRDIFF_T yyn = 0;
+ char const *yyp = yystr;
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ else
+ goto append;
+
+ append:
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (yyres)
+ return yystpcpy (yyres, yystr) - yyres;
+ else
+ return yystrlen (yystr);
+}
+#endif
+
+
+static int
+yy_syntax_error_arguments (const yypcontext_t *yyctx,
+ yysymbol_kind_t yyarg[], int yyargn)
+{
+ /* Actual size of YYARG. */
+ int yycount = 0;
+ /* There are many possibilities here to consider:
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
+ {
+ int yyn;
+ if (yyarg)
+ yyarg[yycount] = yyctx->yytoken;
+ ++yycount;
+ yyn = yypcontext_expected_tokens (yyctx,
+ yyarg ? yyarg + 1 : yyarg, yyargn - 1);
+ if (yyn == YYENOMEM)
+ return YYENOMEM;
+ else
+ yycount += yyn;
+ }
+ return yycount;
+}
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
+ const yypcontext_t *yyctx)
+{
+ enum { YYARGS_MAX = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULLPTR;
+ /* Arguments of yyformat: reported tokens (one for the "unexpected",
+ one per "expected"). */
+ yysymbol_kind_t yyarg[YYARGS_MAX];
+ /* Cumulated lengths of YYARG. */
+ YYPTRDIFF_T yysize = 0;
+
+ /* Actual size of YYARG. */
+ int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
+ if (yycount == YYENOMEM)
+ return YYENOMEM;
+
+ switch (yycount)
+ {
+#define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ default: /* Avoid compiler warnings. */
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+#undef YYCASE_
+ }
+
+ /* Compute error message size. Don't count the "%s"s, but reserve
+ room for the terminator. */
+ yysize = yystrlen (yyformat) - 2 * yycount + 1;
+ {
+ int yyi;
+ for (yyi = 0; yyi < yycount; ++yyi)
+ {
+ YYPTRDIFF_T yysize1
+ = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
+ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+ yysize = yysize1;
+ else
+ return YYENOMEM;
+ }
+ }
+
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return -1;
+ }
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
+ yyformat += 2;
+ }
+ else
+ {
+ ++yyp;
+ ++yyformat;
+ }
+ }
+ return 0;
+}
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+static void
+yydestruct (const char *yymsg,
+ yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, yyscan_t scanner, struct kai_tag_t **document)
+{
+ YY_USE (yyvaluep);
+ YY_USE (yylocationp);
+ YY_USE (scanner);
+ YY_USE (document);
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
+
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YY_USE (yykind);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+}
+
+
+
+
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+int
+yyparse (yyscan_t scanner, struct kai_tag_t **document)
+{
+/* Lookahead token kind. */
+int yychar;
+
+
+/* The semantic value of the lookahead symbol. */
+/* Default value used for initialization, for pacifying older GCCs
+ or non-GCC compilers. */
+YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
+YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
+
+/* Location data for the lookahead symbol. */
+static YYLTYPE yyloc_default
+# if defined KALMIALTYPE_IS_TRIVIAL && KALMIALTYPE_IS_TRIVIAL
+ = { 1, 1, 1, 1 }
+# endif
+;
+YYLTYPE yylloc = yyloc_default;
+
+ /* Number of syntax errors so far. */
+ int yynerrs = 0;
+
+ yy_state_fast_t yystate = 0;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus = 0;
+
+ /* Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* Their size. */
+ YYPTRDIFF_T yystacksize = YYINITDEPTH;
+
+ /* The state stack: array, bottom, top. */
+ yy_state_t yyssa[YYINITDEPTH];
+ yy_state_t *yyss = yyssa;
+ yy_state_t *yyssp = yyss;
+
+ /* The semantic value stack: array, bottom, top. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp = yyvs;
+
+ /* The location stack: array, bottom, top. */
+ YYLTYPE yylsa[YYINITDEPTH];
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp = yyls;
+
+ int yyn;
+ /* The return value of yyparse. */
+ int yyresult;
+ /* Lookahead symbol kind. */
+ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+ YYLTYPE yyloc;
+
+ /* The locations where the error started and ended. */
+ YYLTYPE yyerror_range[3];
+
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yychar = KALMIAEMPTY; /* Cause a token to be read. */
+
+ yylsp[0] = yylloc;
+ goto yysetstate;
+
+
+/*------------------------------------------------------------.
+| yynewstate -- push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate. |
+`--------------------------------------------------------------------*/
+yysetstate:
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+ YY_IGNORE_USELESS_CAST_BEGIN
+ *yyssp = YY_CAST (yy_state_t, yystate);
+ YY_IGNORE_USELESS_CAST_END
+ YY_STACK_PRINT (yyss, yyssp);
+
+ if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+ YYNOMEM;
+#else
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYPTRDIFF_T yysize = yyssp - yyss + 1;
+
+# if defined yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ yy_state_t *yyss1 = yyss;
+ YYSTYPE *yyvs1 = yyvs;
+ YYLTYPE *yyls1 = yyls;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * YYSIZEOF (*yyssp),
+ &yyvs1, yysize * YYSIZEOF (*yyvsp),
+ &yyls1, yysize * YYSIZEOF (*yylsp),
+ &yystacksize);
+ yyss = yyss1;
+ yyvs = yyvs1;
+ yyls = yyls1;
+ }
+# else /* defined YYSTACK_RELOCATE */
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ YYNOMEM;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yy_state_t *yyss1 = yyss;
+ union yyalloc *yyptr =
+ YY_CAST (union yyalloc *,
+ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+ if (! yyptr)
+ YYNOMEM;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ YYSTACK_RELOCATE (yyls_alloc, yyls);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+ yylsp = yyls + yysize - 1;
+
+ YY_IGNORE_USELESS_CAST_BEGIN
+ YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+ YY_CAST (long, yystacksize)));
+ YY_IGNORE_USELESS_CAST_END
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
+
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
+ if (yychar == KALMIAEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token\n"));
+ yychar = yylex (&yylval, &yylloc, scanner);
+ }
+
+ if (yychar <= KALMIAEOF)
+ {
+ yychar = KALMIAEOF;
+ yytoken = YYSYMBOL_YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else if (yychar == KALMIAerror)
+ {
+ /* The scanner already issued an error message, process directly
+ to error recovery. But do not keep the error token as
+ lookahead, it is too special and may lead us to an endless
+ loop in error recovery. */
+ yychar = KALMIAUNDEF;
+ yytoken = YYSYMBOL_YYerror;
+ yyerror_range[1] = yylloc;
+ goto yyerrlab1;
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+ yystate = yyn;
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+ *++yylsp = yylloc;
+
+ /* Discard the shifted token. */
+ yychar = KALMIAEMPTY;
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ '$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+ /* Default location. */
+ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+ yyerror_range[1] = yyloc;
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 2: /* document: tag */
+#line 95 "kalmia.y"
+ { *document = (yyvsp[0].tag); }
+#line 1531 "kalmia.tab.c"
+ break;
+
+ case 3: /* document: PROLOG tag */
+#line 96 "kalmia.y"
+ { *document = (yyvsp[0].tag); }
+#line 1537 "kalmia.tab.c"
+ break;
+
+ case 4: /* tags: tag */
+#line 100 "kalmia.y"
+ { (yyval.tag) = (yyvsp[0].tag); }
+#line 1543 "kalmia.tab.c"
+ break;
+
+ case 5: /* tags: tags tag */
+#line 101 "kalmia.y"
+ { (yyval.tag) = (yyvsp[-1].tag); kai_tag_last((yyval.tag))->next = (yyvsp[0].tag); }
+#line 1549 "kalmia.tab.c"
+ break;
+
+ case 6: /* tag: start_tag end_tag */
+#line 107 "kalmia.y"
+ {
+ (yyval.tag) = (yyvsp[-1].tag);
+ if (strcmp((yyval.tag)->type, (yyvsp[0].string)) != 0) TAG_MISMATCH((yyval.tag)->type, (yyvsp[0].string));
+ free((yyvsp[0].string));
+ }
+#line 1559 "kalmia.tab.c"
+ break;
+
+ case 7: /* tag: start_tag CONTENT end_tag */
+#line 113 "kalmia.y"
+ {
+ (yyval.tag) = (yyvsp[-2].tag);
+ (yyval.tag)->content = (yyvsp[-1].string);
+ if (strcmp((yyval.tag)->type, (yyvsp[0].string)) != 0) TAG_MISMATCH((yyval.tag)->type, (yyvsp[0].string));
+ free((yyvsp[0].string));
+ }
+#line 1570 "kalmia.tab.c"
+ break;
+
+ case 8: /* tag: start_tag tags end_tag */
+#line 120 "kalmia.y"
+ {
+ (yyval.tag) = (yyvsp[-2].tag);
+ (yyval.tag)->children = (yyvsp[-1].tag);
+ if (strcmp((yyval.tag)->type, (yyvsp[0].string)) != 0) TAG_MISMATCH((yyval.tag)->type, (yyvsp[0].string));
+ free((yyvsp[0].string));
+ }
+#line 1581 "kalmia.tab.c"
+ break;
+
+ case 9: /* tag: empty_tag */
+#line 126 "kalmia.y"
+ { (yyval.tag) = (yyvsp[0].tag); }
+#line 1587 "kalmia.tab.c"
+ break;
+
+ case 10: /* start_tag: S_TAG_OPEN NAME TAG_CLOSE */
+#line 131 "kalmia.y"
+ {
+ (yyval.tag) = kai_tag_new((yyvsp[-1].string), NULL);
+ if ((yyval.tag) == NULL) YYNOMEM;
+ }
+#line 1596 "kalmia.tab.c"
+ break;
+
+ case 11: /* start_tag: S_TAG_OPEN NAME attributes TAG_CLOSE */
+#line 136 "kalmia.y"
+ {
+ (yyval.tag) = kai_tag_new((yyvsp[-2].string), (yyvsp[-1].attr));
+ if ((yyval.tag) == NULL) YYNOMEM;
+ }
+#line 1605 "kalmia.tab.c"
+ break;
+
+ case 12: /* empty_tag: S_TAG_OPEN NAME EMPTY_TAG_CLOSE */
+#line 145 "kalmia.y"
+ {
+ (yyval.tag) = kai_tag_new((yyvsp[-1].string), NULL);
+ if ((yyval.tag) == NULL) YYNOMEM;
+ }
+#line 1614 "kalmia.tab.c"
+ break;
+
+ case 13: /* empty_tag: S_TAG_OPEN NAME attributes EMPTY_TAG_CLOSE */
+#line 150 "kalmia.y"
+ {
+ (yyval.tag) = kai_tag_new((yyvsp[-2].string), (yyvsp[-1].attr));
+ if ((yyval.tag) == NULL) YYNOMEM;
+ }
+#line 1623 "kalmia.tab.c"
+ break;
+
+ case 14: /* end_tag: E_TAG_OPEN NAME TAG_CLOSE */
+#line 158 "kalmia.y"
+ { (yyval.string) = (yyvsp[-1].string); }
+#line 1629 "kalmia.tab.c"
+ break;
+
+ case 15: /* attributes: attribute */
+#line 163 "kalmia.y"
+ { (yyval.attr) = (yyvsp[0].attr); }
+#line 1635 "kalmia.tab.c"
+ break;
+
+ case 16: /* attributes: attributes attribute */
+#line 164 "kalmia.y"
+ { (yyval.attr) = (yyvsp[-1].attr); kai_attr_last((yyval.attr))->next = (yyvsp[0].attr); }
+#line 1641 "kalmia.tab.c"
+ break;
+
+ case 17: /* attribute: ATTR '=' '"' TEXT '"' */
+#line 169 "kalmia.y"
+ {
+ (yyval.attr) = kai_attr_new((yyvsp[-4].string), (yyvsp[-1].string));
+ if ((yyval.attr) == NULL) YYNOMEM;
+ }
+#line 1650 "kalmia.tab.c"
+ break;
+
+
+#line 1654 "kalmia.tab.c"
+
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+
+ *++yyvsp = yyval;
+ *++yylsp = yyloc;
+
+ /* Now 'shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+ {
+ const int yylhs = yyr1[yyn] - YYNTOKENS;
+ const int yyi = yypgoto[yylhs] + *yyssp;
+ yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+ ? yytable[yyi]
+ : yydefgoto[yylhs]);
+ }
+
+ goto yynewstate;
+
+
+/*--------------------------------------.
+| yyerrlab -- here on detecting error. |
+`--------------------------------------*/
+yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == KALMIAEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+ {
+ yypcontext_t yyctx
+ = {yyssp, yytoken, &yylloc};
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == -1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = YY_CAST (char *,
+ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
+ if (yymsg)
+ {
+ yysyntax_error_status
+ = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
+ yymsgp = yymsg;
+ }
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = YYENOMEM;
+ }
+ }
+ yyerror (&yylloc, scanner, document, yymsgp);
+ if (yysyntax_error_status == YYENOMEM)
+ YYNOMEM;
+ }
+ }
+
+ yyerror_range[1] = yylloc;
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= KALMIAEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == KALMIAEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, &yylloc, scanner, document);
+ yychar = KALMIAEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+ /* Pacify compilers when the user code never invokes YYERROR and the
+ label yyerrorlab therefore never appears in user code. */
+ if (0)
+ YYERROR;
+ ++yynerrs;
+
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ /* Pop stack until we find a state that shifts the error token. */
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYSYMBOL_YYerror;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+ yyerror_range[1] = *yylsp;
+ yydestruct ("Error: popping",
+ YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, scanner, document);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+
+ yyerror_range[2] = yylloc;
+ ++yylsp;
+ YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturnlab;
+
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturnlab;
+
+
+/*-----------------------------------------------------------.
+| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
+`-----------------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (&yylloc, scanner, document, YY_("memory exhausted"));
+ yyresult = 2;
+ goto yyreturnlab;
+
+
+/*----------------------------------------------------------.
+| yyreturnlab -- parsing is finished, clean up and return. |
+`----------------------------------------------------------*/
+yyreturnlab:
+ if (yychar != KALMIAEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, &yylloc, scanner, document);
+ }
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, scanner, document);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ return yyresult;
+}
+
+#line 176 "kalmia.y"
+
+
+
+/* print an error message */
+int yyerror(
+ YYLTYPE *yyllocp,
+ yyscan_t unused,
+ struct kai_tag_t **unused2,
+ const char *msg)
+{
+ fprintf(
+ stderr, "[%d:%d]: %s\n",
+ yyllocp->first_line, yyllocp->first_column, msg
+ );
+ return 1;
+}
+
+
+
+/* create a new kai_attr_t object */
+struct kai_attr_t * kai_attr_new(char *key, char *value)
+{
+ struct kai_attr_t *attr = malloc(sizeof(struct kai_attr_t));
+ if (attr == NULL) {
+ return NULL;
+ }
+ attr->key = key;
+ attr->value = value;
+ attr->next = NULL;
+ return attr;
+}
+
+/* get the end of a kai_attr_t list */
+struct kai_attr_t * kai_attr_last(struct kai_attr_t *head)
+{
+ struct kai_attr_t *ptr = head;
+ while (ptr->next != NULL) {
+ ptr = ptr->next;
+ }
+ return ptr;
+}
+
+/* destroy a kai_attr_t list */
+void kai_attr_destroy(struct kai_attr_t *attr)
+{
+ if (attr == NULL) {
+ return;
+ }
+
+ kai_attr_destroy(attr->next);
+ free(attr->key);
+ free(attr->value);
+ free(attr);
+}
+
+
+
+/* create a kai_tag_t object */
+struct kai_tag_t * kai_tag_new(char *type, struct kai_attr_t *attrs)
+{
+ struct kai_tag_t *tag = malloc(sizeof(struct kai_tag_t));
+ if (tag == NULL) {
+ return NULL;
+ }
+
+ tag->type = type;
+ tag->attrs = attrs;
+ tag->children = NULL;
+ tag->content = NULL;
+ tag->next = NULL;
+ return tag;
+}
+
+/* get the end of a kai_tag_t list */
+struct kai_tag_t * kai_tag_last(struct kai_tag_t *head)
+{
+ struct kai_tag_t *ptr = head;
+ while (ptr->next != NULL) {
+ ptr = ptr->next;
+ }
+ return ptr;
+}
+
+/* destroy a kai_tag_t list */
+void kai_tag_destroy(struct kai_tag_t *tag)
+{
+ if (tag == NULL) {
+ return;
+ }
+
+ free(tag->type);
+ kai_attr_destroy(tag->attrs);
+ kai_tag_destroy(tag->children);
+ free(tag->content);
+ kai_tag_destroy(tag->next);
+ free(tag);
+}
+
+
+
+/* parse a file into a document */
+struct kai_tag_t * kai_parse_file(const char *filename)
+{
+ FILE *file = fopen(filename, "r");
+ if (file == NULL) {
+ fprintf(stderr, "Could not open file \"%s\"\n", filename);
+ return NULL;
+ }
+
+ yyscan_t scanner;
+ struct kai_tag_t *document;
+
+ kalmialex_init(&scanner);
+ kalmiaset_in(file, scanner);
+ int result = kalmiaparse(scanner, &document);
+ kalmialex_destroy(scanner);
+ fclose(file);
+
+ if (result != 0) {
+ /* parse function will print error message */
+ return NULL;
+ }
+
+ return document;
+}
diff --git a/yy/kalmia.tab.h b/yy/kalmia.tab.h
new file mode 100644
index 0000000..987ac6c
--- /dev/null
+++ b/yy/kalmia.tab.h
@@ -0,0 +1,141 @@
+/* A Bison parser, made by GNU Bison 3.8.2. */
+
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+ Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
+#ifndef YY_KALMIA_KALMIA_TAB_H_INCLUDED
+# define YY_KALMIA_KALMIA_TAB_H_INCLUDED
+/* Debug traces. */
+#ifndef KALMIADEBUG
+# if defined YYDEBUG
+#if YYDEBUG
+# define KALMIADEBUG 1
+# else
+# define KALMIADEBUG 0
+# endif
+# else /* ! defined YYDEBUG */
+# define KALMIADEBUG 0
+# endif /* ! defined YYDEBUG */
+#endif /* ! defined KALMIADEBUG */
+#if KALMIADEBUG
+extern int kalmiadebug;
+#endif
+/* "%code requires" blocks. */
+#line 13 "kalmia.y"
+
+ typedef void* yyscan_t;
+
+ struct kai_attr_t {
+ char *key;
+ char *value;
+ struct kai_attr_t *next;
+ };
+
+ struct kai_tag_t {
+ char *type;
+ struct kai_attr_t *attrs;
+
+ struct kai_tag_t *children;
+ char *content;
+
+ struct kai_tag_t *next;
+ };
+
+ struct kai_tag_t * kai_parse_file(const char *filename);
+ void kai_tag_destroy(struct kai_tag_t *tag);
+
+#line 80 "kalmia.tab.h"
+
+/* Token kinds. */
+#ifndef KALMIATOKENTYPE
+# define KALMIATOKENTYPE
+ enum kalmiatokentype
+ {
+ KALMIAEMPTY = -2,
+ KALMIAEOF = 0, /* "end of file" */
+ KALMIAerror = 256, /* error */
+ KALMIAUNDEF = 257, /* "invalid token" */
+ PROLOG = 258, /* PROLOG */
+ S_TAG_OPEN = 259, /* S_TAG_OPEN */
+ E_TAG_OPEN = 260, /* E_TAG_OPEN */
+ TAG_CLOSE = 261, /* TAG_CLOSE */
+ EMPTY_TAG_CLOSE = 262, /* EMPTY_TAG_CLOSE */
+ NAME = 263, /* NAME */
+ ATTR = 264, /* ATTR */
+ TEXT = 265, /* TEXT */
+ CONTENT = 266 /* CONTENT */
+ };
+ typedef enum kalmiatokentype kalmiatoken_kind_t;
+#endif
+
+/* Value type. */
+#if ! defined KALMIASTYPE && ! defined KALMIASTYPE_IS_DECLARED
+union KALMIASTYPE
+{
+#line 65 "kalmia.y"
+
+ char *string;
+ struct kai_attr_t *attr;
+ struct kai_tag_t *tag;
+
+#line 114 "kalmia.tab.h"
+
+};
+typedef union KALMIASTYPE KALMIASTYPE;
+# define KALMIASTYPE_IS_TRIVIAL 1
+# define KALMIASTYPE_IS_DECLARED 1
+#endif
+
+/* Location type. */
+#if ! defined KALMIALTYPE && ! defined KALMIALTYPE_IS_DECLARED
+typedef struct KALMIALTYPE KALMIALTYPE;
+struct KALMIALTYPE
+{
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+};
+# define KALMIALTYPE_IS_DECLARED 1
+# define KALMIALTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+
+int kalmiaparse (yyscan_t scanner, struct kai_tag_t **document);
+
+
+#endif /* !YY_KALMIA_KALMIA_TAB_H_INCLUDED */
diff --git a/yy/makefile b/yy/makefile
index 6567b56..dffbbd6 100644
--- a/yy/makefile
+++ b/yy/makefile
@@ -6,7 +6,7 @@ kalmia.tab.c: kalmia.y
bison -o "$@" --header=kalmia.tab.h kalmia.y
kalmia.lex.c: kalmia.l
- flex -o "$@" --header-file="kalmia.lex.h" kalmia.l
+ flex -f --warn -o "$@" --header-file="kalmia.lex.h" kalmia.l
demo: kalmia.tab.c kalmia.lex.c demo.c
gcc -g -o demo ${WARNINGS} demo.c kalmia.tab.c kalmia.lex.c