From a9c3f6a13b815161e537d51ec3054927a889eeaf Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sat, 14 Jan 2006 22:32:58 +0000 Subject: [PATCH] fixed ugly extrusion syntax (finally!) extrusions are now specified in the same way as all other transformations (the old syntax is still available, but is deprecated) --- Fltk/Callbacks.cpp | 34 +- Geo/CAD.cpp | 119 +- Geo/CAD.h | 53 +- Geo/Geo.cpp | 16 +- Geo/Geo.h | 4 +- Parser/Gmsh.tab.cpp | 4490 +++++++++++++++--------------- Parser/Gmsh.y | 477 +--- Parser/Gmsh.yy.cpp | 4 +- TODO | 9 +- benchmarks/extrude/point_new.geo | 26 + demos/cone.geo | 8 +- demos/cube.geo | 4 +- demos/hex.geo | 26 +- demos/piece-extr-rec.geo | 22 +- demos/piece-extr.geo | 21 +- demos/piece.geo | 13 +- doc/VERSIONS | 5 +- doc/texinfo/gmsh.texi | 63 +- tutorial/t2.geo | 2 +- tutorial/t3.geo | 18 +- 20 files changed, 2623 insertions(+), 2791 deletions(-) create mode 100644 benchmarks/extrude/point_new.geo diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index dc71d93688..a4808555df 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.396 2006-01-14 17:13:14 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.397 2006-01-14 22:32:58 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -2456,28 +2456,20 @@ static void _action_point_line_surface_volume(int action, int mode, char *what) (char*)WID->context_geometry_input[23]->value()); break; case 4: - for(int i = 0; i < List_Nbr(List1); i++){ - int num; - List_Read(List1, i, &num); - extrude(num, CTX.filename, what, - (char*)WID->context_geometry_input[6]->value(), - (char*)WID->context_geometry_input[7]->value(), - (char*)WID->context_geometry_input[8]->value()); - } + extrude(List1, CTX.filename, what, + (char*)WID->context_geometry_input[6]->value(), + (char*)WID->context_geometry_input[7]->value(), + (char*)WID->context_geometry_input[8]->value()); break; case 5: - for(int i = 0; i < List_Nbr(List1); i++){ - int num; - List_Read(List1, i, &num); - protude(num, CTX.filename, what, - (char*)WID->context_geometry_input[12]->value(), - (char*)WID->context_geometry_input[13]->value(), - (char*)WID->context_geometry_input[14]->value(), - (char*)WID->context_geometry_input[9]->value(), - (char*)WID->context_geometry_input[10]->value(), - (char*)WID->context_geometry_input[11]->value(), - (char*)WID->context_geometry_input[15]->value()); - } + protude(List1, CTX.filename, what, + (char*)WID->context_geometry_input[12]->value(), + (char*)WID->context_geometry_input[13]->value(), + (char*)WID->context_geometry_input[14]->value(), + (char*)WID->context_geometry_input[9]->value(), + (char*)WID->context_geometry_input[10]->value(), + (char*)WID->context_geometry_input[11]->value(), + (char*)WID->context_geometry_input[15]->value()); break; case 6: delet(List1, CTX.filename, what); diff --git a/Geo/CAD.cpp b/Geo/CAD.cpp index 1ff2da4bcd..eba11165f8 100644 --- a/Geo/CAD.cpp +++ b/Geo/CAD.cpp @@ -1,4 +1,4 @@ -// $Id: CAD.cpp,v 1.92 2006-01-08 14:32:46 geuzaine Exp $ +// $Id: CAD.cpp,v 1.93 2006-01-14 22:32:58 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -1659,13 +1659,118 @@ int Extrude_ProtudeSurface(int type, int is, return chapeau->Num; } +void ExtrudeShape(int extrude_type, int shape_type, int shape_num, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, + ExtrudeParams *e, + List_T *out) +{ + Shape shape; + shape.Type = shape_type; + shape.Num = shape_num; + List_T *tmp = List_Create(1, 1, sizeof(Shape)); + List_Add(tmp, &shape); + ExtrudeShapes(extrude_type, tmp, + T0, T1, T2, + A0, A1, A2, + X0, X1, X2, alpha, + e, + out); + List_Delete(tmp); +} + +void ExtrudeShapes(int type, List_T *in, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, + ExtrudeParams *e, + List_T *out) +{ + Shape O, TheShape; + Curve *pc, *prc; + Surface *ps; + Volume *pv; + + for(int i = 0; i < List_Nbr(in); i++){ + List_Read(in, i, &O); + switch(O.Type){ + case MSH_POINT: + TheShape.Num = Extrude_ProtudePoint(type, O.Num, T0, T1, T2, + A0, A1, A2, X0, X1, X2, alpha, + &pc, &prc, 1, e); + TheShape.Type = MSH_POINT; + List_Add(out, &TheShape); + if(pc){ + TheShape.Num = pc->Num; + TheShape.Type = pc->Typ; + List_Add(out, &TheShape); + } + break; + case MSH_SEGM_LINE: + case MSH_SEGM_SPLN: + case MSH_SEGM_BSPLN: + case MSH_SEGM_BEZIER: + case MSH_SEGM_CIRC: + case MSH_SEGM_CIRC_INV: + case MSH_SEGM_ELLI: + case MSH_SEGM_ELLI_INV: + case MSH_SEGM_NURBS: + case MSH_SEGM_PARAMETRIC: + TheShape.Num = Extrude_ProtudeCurve(type, O.Num, T0, T1, T2, + A0, A1, A2, X0, X1, X2, alpha, + &ps, 1, e); + pc = FindCurve(TheShape.Num, THEM); + if(!pc){ + //Msg(WARNING, "Unknown curve %d", TheShape.Num); + TheShape.Type = 0; + } + else{ + TheShape.Type = pc->Typ; + } + List_Add(out, &TheShape); + if(ps){ + TheShape.Num = ps->Num; + TheShape.Type = ps->Typ; + List_Add(out, &TheShape); + } + break; + case MSH_SURF_NURBS: + case MSH_SURF_REGL: + case MSH_SURF_TRIC: + case MSH_SURF_PLAN: + TheShape.Num = Extrude_ProtudeSurface(type, O.Num, T0, T1, T2, + A0, A1, A2, X0, X1, X2, alpha, + &pv, e); + ps = FindSurface(TheShape.Num, THEM); + if(!ps){ + //Msg(WARNING, "Unknown surface %d", TheShape.Num); + TheShape.Type = 0; + } + else{ + TheShape.Type = ps->Typ; + } + List_Add(out, &TheShape); + if(pv){ + TheShape.Num = pv->Num; + TheShape.Type = pv->Typ; + List_Add(out, &TheShape); + } + break; + default: + Msg(GERROR, "Impossible to extrude entity %d (of type %d)", O.Num, + O.Type); + break; + } + } +} + // Duplicate removal int compareTwoCurves(const void *a, const void *b) { - Curve *c1, *c2; - c1 = *(Curve **) a; - c2 = *(Curve **) b; + Curve *c1 = *(Curve **) a; + Curve *c2 = *(Curve **) b; int comp; if(c1->Typ != c2->Typ){ @@ -1710,9 +1815,8 @@ int compareTwoCurves(const void *a, const void *b) int compareTwoSurfaces(const void *a, const void *b) { - Surface *s1, *s2; - s1 = *(Surface **) a; - s2 = *(Surface **) b; + Surface *s1 = *(Surface **) a; + Surface *s2 = *(Surface **) b; return compare2Lists(s1->Generatrices, s2->Generatrices, compareAbsCurve); } @@ -2317,7 +2421,6 @@ bool IntersectCurveSurface(Curve * c, Surface * s) return true; } - void DivideCurve(Curve * c, double u, Vertex * v, Curve ** c1, Curve ** c2) { (*c1) = Create_Curve(NEWLINE(), c->Typ, 1, NULL, NULL, -1, -1, 0., 1.); diff --git a/Geo/CAD.h b/Geo/CAD.h index 87f8c13074..c610853f93 100644 --- a/Geo/CAD.h +++ b/Geo/CAD.h @@ -34,7 +34,6 @@ int NEWVOLUME(void); int NEWPHYSICAL(void); int NEWREG(void); - Vertex *FindPoint(int inum, Mesh *M); Vertex *FindVertex(int inum, Mesh *M); Curve *FindCurve(int inum, Mesh *M); @@ -42,13 +41,11 @@ Surface *FindSurface(int inum, Mesh *M); Volume *FindVolume(int inum, Mesh *M); EdgeLoop *FindEdgeLoop(int inum, Mesh *M); SurfaceLoop *FindSurfaceLoop(int inum, Mesh *M); -PhysicalGroup *FindPhysicalGroup(int inum, int type, Mesh * M); - +PhysicalGroup *FindPhysicalGroup(int inum, int type, Mesh *M); -Curve * CreateReversedCurve (Mesh *M,Curve *c); +Curve *CreateReversedCurve(Mesh *M, Curve *c); void ModifyLcPoint(int ip, double lc); - void TranslateShapes(double X,double Y,double Z, List_T *ListShapes, int final); void DilatShapes(double X,double Y,double Z, double A, @@ -62,40 +59,30 @@ void CopyShape(int Type, int Num, int *New); void DeleteShape(int Type, int Num); void ColorShape(int Type, int Num, unsigned int Color); void VisibilityShape(int Type, int Num, int Mode); - +void ExtrudeShape(int extrude_type, int shape_type, int shape_num, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, + ExtrudeParams *e, + List_T *out); +void ExtrudeShapes(int extrude_type, List_T *in, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, + ExtrudeParams *e, + List_T *out); void ProtudeXYZ(double &x, double &y, double &z, ExtrudeParams *e); -int Extrude_ProtudePoint(int type, int ip, - double T0, double T1, double T2, - double A0, double A1, double A2, - double X0, double X1, double X2, double alpha, - Curve **pc, Curve **prc, int final, - ExtrudeParams *e); -int Extrude_ProtudeCurve(int type, int ic, - double T0, double T1, double T2, - double A0, double A1, double A2, - double X0, double X1, double X2, double alpha, - Surface **ps, int final, - ExtrudeParams *e); -int Extrude_ProtudeSurface(int type, int is, - double T0, double T1, double T2, - double A0, double A1, double A2, - double X0, double X1, double X2, double alpha, - Volume **pv, ExtrudeParams *e); - void ReplaceAllDuplicates(Mesh *m); - -bool ProjectPointOnCurve (Curve *c, Vertex *v, Vertex *RES, Vertex *DER); -bool ProjectPointOnSurface (Surface *s, Vertex &p); -bool ProjectPointOnSurface (Surface *s, Vertex *p,double *u, double *v); +bool ProjectPointOnCurve(Curve *c, Vertex *v, Vertex *RES, Vertex *DER); +bool ProjectPointOnSurface(Surface *s, Vertex &p); +bool ProjectPointOnSurface(Surface *s, Vertex *p,double *u, double *v); bool IntersectAllSegmentsTogether(void); - -int recognize_seg(int typ, List_T * liste, int *seg); -int recognize_loop(List_T * liste, int *loop); -int recognize_surfloop(List_T * liste, int *loop); - +int recognize_seg(int typ, List_T *liste, int *seg); +int recognize_loop(List_T *liste, int *loop); +int recognize_surfloop(List_T *liste, int *loop); #endif diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index d0c242748e..f82020d6ed 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1,4 +1,4 @@ -// $Id: Geo.cpp,v 1.49 2006-01-08 14:10:38 geuzaine Exp $ +// $Id: Geo.cpp,v 1.50 2006-01-14 22:32:58 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -513,20 +513,24 @@ void symmetry(int add, List_T *list, char *fich, char *what, char *sa, char *sb, add_infile(text, fich); } -void extrude(int s, char *fich, char *what, char *tx, char *ty, char *tz) +void extrude(List_T *list, char *fich, char *what, char *tx, char *ty, char *tz) { char text[BUFFSIZE]; - snprintf(text, BUFFSIZE, "Extrude %s {%d, {%s,%s,%s}};", what, s, tx, ty, tz); + snprintf(text, BUFFSIZE, "Extrude {%s,%s,%s} {\n %s{", tx, ty, tz, what); + strncat_list(text, list); + strncat(text, "};\n}", BUFFSIZE-strlen(text)); add_infile(text, fich); } -void protude(int s, char *fich, char *what, char *ax, char *ay, char *az, +void protude(List_T *list, char *fich, char *what, char *ax, char *ay, char *az, char *px, char *py, char *pz, char *angle) { char text[BUFFSIZE]; - snprintf(text, BUFFSIZE, "Extrude %s {%d, {%s,%s,%s}, {%s,%s,%s}, %s};", - what, s, ax, ay, az, px, py, pz, angle); + snprintf(text, BUFFSIZE, "Extrude {{%s,%s,%s}, {%s,%s,%s}, %s} {\n %s{", + ax, ay, az, px, py, pz, angle, what); + strncat_list(text, list); + strncat(text, "};\n}", BUFFSIZE-strlen(text)); add_infile(text, fich); } diff --git a/Geo/Geo.h b/Geo/Geo.h index aae259b756..2471da338e 100644 --- a/Geo/Geo.h +++ b/Geo/Geo.h @@ -127,8 +127,8 @@ void dilate(int add, List_T *list, char *fich, char *what, char *dx, char *dy, char *dz, char *df); void symmetry(int add, List_T *list, char *fich, char *what, char *sa, char *sb, char *sc, char *sd); -void extrude(int s, char *fich, char *what, char *tx, char *ty, char *tz); -void protude(int s, char *fich, char *what, char *ax, char *ay, char *az, +void extrude(List_T *list, char *fich, char *what, char *tx, char *ty, char *tz); +void protude(List_T *list, char *fich, char *what, char *ax, char *ay, char *az, char *px, char *py, char *pz, char *angle); #endif diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 8149cd3ced..8c624c3eac 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -168,7 +168,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.248 2006-01-06 00:35:43 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.249 2006-01-14 22:32:58 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -264,11 +264,11 @@ typedef union { -#define YYFINAL 1506 +#define YYFINAL 1536 #define YYFLAG -32768 #define YYNTBASE 183 -#define YYTRANSLATE(x) ((unsigned)(x) <= 417 ? yytranslate[x] : 251) +#define YYTRANSLATE(x) ((unsigned)(x) <= 417 ? yytranslate[x] : 254) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -335,261 +335,269 @@ static const short yyprhs[] = { 0, 1116, 1119, 1126, 1133, 1140, 1147, 1152, 1159, 1166, 1173, 1178, 1185, 1189, 1194, 1200, 1204, 1208, 1213, 1218, 1222, 1230, 1234, 1242, 1246, 1249, 1252, 1268, 1271, 1278, 1287, - 1296, 1307, 1309, 1312, 1314, 1318, 1323, 1325, 1334, 1347, - 1362, 1363, 1376, 1377, 1394, 1395, 1414, 1423, 1436, 1451, - 1452, 1465, 1466, 1483, 1484, 1503, 1512, 1525, 1540, 1541, - 1554, 1555, 1572, 1573, 1592, 1594, 1597, 1607, 1615, 1618, - 1625, 1635, 1645, 1654, 1664, 1673, 1682, 1689, 1694, 1697, - 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1716, 1719, 1722, - 1725, 1729, 1733, 1737, 1741, 1745, 1749, 1753, 1757, 1761, - 1765, 1769, 1773, 1777, 1781, 1787, 1792, 1797, 1802, 1807, - 1812, 1817, 1822, 1827, 1832, 1837, 1844, 1849, 1854, 1859, - 1864, 1869, 1874, 1881, 1888, 1895, 1900, 1905, 1910, 1915, - 1920, 1925, 1930, 1935, 1940, 1945, 1950, 1957, 1962, 1967, - 1972, 1977, 1982, 1987, 1994, 2001, 2008, 2013, 2015, 2017, - 2019, 2021, 2023, 2025, 2027, 2029, 2034, 2039, 2042, 2048, - 2052, 2059, 2064, 2072, 2079, 2081, 2084, 2087, 2091, 2095, - 2107, 2117, 2125, 2133, 2134, 2138, 2140, 2144, 2145, 2149, - 2153, 2155, 2159, 2161, 2163, 2167, 2172, 2176, 2182, 2187, - 2189, 2191, 2193, 2197, 2202, 2209, 2217, 2219, 2221, 2225, - 2229, 2239, 2247, 2249, 2255, 2259, 2266, 2268, 2272, 2274, - 2276, 2283, 2288, 2293, 2298, 2305, 2312 + 1296, 1307, 1309, 1312, 1314, 1318, 1323, 1325, 1331, 1343, + 1357, 1358, 1366, 1367, 1381, 1382, 1398, 1407, 1416, 1425, + 1438, 1451, 1464, 1479, 1494, 1509, 1510, 1523, 1524, 1537, + 1538, 1551, 1552, 1569, 1570, 1587, 1588, 1605, 1606, 1625, + 1626, 1645, 1646, 1665, 1667, 1670, 1680, 1688, 1691, 1698, + 1708, 1718, 1727, 1737, 1746, 1755, 1762, 1767, 1770, 1773, + 1775, 1777, 1779, 1781, 1783, 1785, 1789, 1792, 1795, 1798, + 1802, 1806, 1810, 1814, 1818, 1822, 1826, 1830, 1834, 1838, + 1842, 1846, 1850, 1854, 1860, 1865, 1870, 1875, 1880, 1885, + 1890, 1895, 1900, 1905, 1910, 1917, 1922, 1927, 1932, 1937, + 1942, 1947, 1954, 1961, 1968, 1973, 1978, 1983, 1988, 1993, + 1998, 2003, 2008, 2013, 2018, 2023, 2030, 2035, 2040, 2045, + 2050, 2055, 2060, 2067, 2074, 2081, 2086, 2088, 2090, 2092, + 2094, 2096, 2098, 2100, 2102, 2107, 2112, 2115, 2121, 2125, + 2132, 2137, 2145, 2152, 2154, 2157, 2160, 2164, 2168, 2180, + 2190, 2198, 2206, 2207, 2211, 2213, 2217, 2218, 2222, 2226, + 2228, 2232, 2234, 2236, 2240, 2245, 2249, 2255, 2260, 2262, + 2264, 2266, 2270, 2275, 2282, 2290, 2292, 2294, 2298, 2302, + 2312, 2320, 2322, 2328, 2332, 2339, 2341, 2345, 2347, 2349, + 2356, 2361, 2366, 2371, 2378, 2385 }; static const short yyrhs[] = { 184, 0, 189, 0, 1, 6, 0, 0, 184, 185, 0, 186, 0, 188, 0, 187, 0, 124, 6, 0, 125, 6, 0, 127, 6, 0, 126, 6, 0, 128, 6, - 0, 129, 174, 240, 180, 5, 175, 6, 0, 130, - 174, 240, 175, 6, 0, 131, 174, 5, 180, 5, - 180, 240, 180, 240, 180, 5, 180, 5, 180, 5, - 175, 6, 0, 3, 7, 108, 174, 5, 180, 238, - 175, 6, 0, 3, 7, 107, 174, 5, 180, 236, - 180, 244, 180, 235, 180, 235, 180, 235, 180, 244, - 180, 244, 180, 235, 175, 6, 0, 3, 7, 106, - 174, 5, 180, 236, 180, 236, 180, 242, 180, 235, - 180, 235, 180, 235, 180, 235, 180, 244, 180, 244, - 180, 244, 180, 244, 180, 235, 175, 6, 0, 3, + 0, 129, 174, 243, 180, 5, 175, 6, 0, 130, + 174, 243, 175, 6, 0, 131, 174, 5, 180, 5, + 180, 243, 180, 243, 180, 5, 180, 5, 180, 5, + 175, 6, 0, 3, 7, 108, 174, 5, 180, 241, + 175, 6, 0, 3, 7, 107, 174, 5, 180, 239, + 180, 247, 180, 238, 180, 238, 180, 238, 180, 247, + 180, 247, 180, 238, 175, 6, 0, 3, 7, 106, + 174, 5, 180, 239, 180, 239, 180, 245, 180, 238, + 180, 238, 180, 238, 180, 238, 180, 247, 180, 247, + 180, 247, 180, 247, 180, 238, 175, 6, 0, 3, 7, 114, 174, 5, 180, 3, 180, 3, 180, 3, - 180, 235, 175, 6, 0, 3, 7, 118, 174, 5, - 180, 3, 180, 235, 175, 6, 0, 3, 7, 135, - 174, 5, 180, 3, 180, 235, 175, 6, 0, 3, - 7, 116, 174, 5, 180, 165, 180, 165, 180, 236, - 180, 235, 175, 6, 0, 3, 7, 119, 174, 5, - 180, 244, 175, 6, 0, 3, 7, 120, 174, 5, - 180, 244, 180, 3, 180, 235, 175, 6, 0, 3, + 180, 238, 175, 6, 0, 3, 7, 118, 174, 5, + 180, 3, 180, 238, 175, 6, 0, 3, 7, 135, + 174, 5, 180, 3, 180, 238, 175, 6, 0, 3, + 7, 116, 174, 5, 180, 165, 180, 165, 180, 239, + 180, 238, 175, 6, 0, 3, 7, 119, 174, 5, + 180, 247, 175, 6, 0, 3, 7, 120, 174, 5, + 180, 247, 180, 3, 180, 238, 175, 6, 0, 3, 7, 115, 174, 5, 180, 3, 175, 6, 0, 3, - 7, 121, 174, 5, 180, 3, 180, 236, 175, 6, + 7, 121, 174, 5, 180, 3, 180, 239, 175, 6, 0, 3, 7, 123, 174, 5, 180, 3, 180, 3, 180, 3, 175, 6, 0, 3, 7, 122, 174, 5, - 180, 238, 175, 6, 0, 3, 7, 117, 174, 5, + 180, 241, 175, 6, 0, 3, 7, 117, 174, 5, 180, 3, 175, 6, 0, 3, 7, 44, 174, 5, 180, 3, 180, 3, 175, 6, 0, 3, 7, 133, - 174, 5, 180, 244, 175, 6, 0, 3, 7, 134, - 174, 5, 180, 244, 180, 3, 175, 6, 0, 3, + 174, 5, 180, 247, 175, 6, 0, 3, 7, 134, + 174, 5, 180, 247, 180, 3, 175, 6, 0, 3, 7, 132, 174, 5, 180, 3, 175, 6, 0, 3, - 7, 136, 174, 5, 180, 3, 180, 236, 175, 6, - 0, 3, 7, 137, 174, 5, 180, 3, 180, 236, - 180, 236, 175, 6, 0, 3, 7, 144, 174, 5, - 180, 3, 180, 236, 180, 236, 175, 6, 0, 3, - 7, 138, 174, 5, 180, 3, 180, 236, 175, 6, - 0, 3, 7, 148, 174, 5, 180, 3, 180, 236, - 180, 236, 175, 6, 0, 3, 7, 139, 174, 5, - 180, 3, 180, 244, 180, 244, 180, 235, 180, 235, - 175, 6, 0, 3, 7, 140, 174, 5, 180, 244, - 175, 6, 0, 3, 7, 141, 174, 142, 180, 235, + 7, 136, 174, 5, 180, 3, 180, 239, 175, 6, + 0, 3, 7, 137, 174, 5, 180, 3, 180, 239, + 180, 239, 175, 6, 0, 3, 7, 144, 174, 5, + 180, 3, 180, 239, 180, 239, 175, 6, 0, 3, + 7, 138, 174, 5, 180, 3, 180, 239, 175, 6, + 0, 3, 7, 148, 174, 5, 180, 3, 180, 239, + 180, 239, 175, 6, 0, 3, 7, 139, 174, 5, + 180, 3, 180, 247, 180, 247, 180, 238, 180, 238, + 175, 6, 0, 3, 7, 140, 174, 5, 180, 247, + 175, 6, 0, 3, 7, 141, 174, 142, 180, 238, 180, 3, 175, 6, 0, 3, 7, 143, 174, 5, - 180, 244, 180, 235, 175, 6, 0, 3, 7, 145, + 180, 247, 180, 238, 175, 6, 0, 3, 7, 145, 174, 5, 180, 5, 180, 3, 180, 3, 175, 6, 0, 3, 7, 146, 174, 5, 180, 5, 180, 3, 175, 6, 0, 3, 7, 147, 174, 3, 180, 3, 175, 6, 0, 0, 189, 190, 0, 192, 0, 191, 0, 210, 0, 211, 0, 212, 0, 215, 0, 216, - 0, 217, 0, 218, 0, 221, 0, 233, 0, 234, + 0, 217, 0, 218, 0, 221, 0, 236, 0, 237, 0, 220, 0, 219, 0, 33, 174, 5, 175, 6, - 0, 33, 174, 5, 180, 246, 175, 6, 0, 4, - 5, 181, 193, 182, 6, 0, 4, 5, 4, 238, + 0, 33, 174, 5, 180, 249, 175, 6, 0, 4, + 5, 181, 193, 182, 6, 0, 4, 5, 4, 241, 181, 193, 182, 6, 0, 0, 193, 196, 0, 193, 200, 0, 193, 203, 0, 193, 205, 0, 193, 206, - 0, 236, 0, 194, 180, 236, 0, 236, 0, 195, - 180, 236, 0, 0, 0, 4, 197, 174, 194, 175, - 198, 181, 195, 182, 6, 0, 250, 0, 199, 180, - 250, 0, 0, 76, 174, 236, 180, 236, 180, 236, - 175, 201, 181, 199, 182, 6, 0, 250, 0, 202, - 180, 250, 0, 0, 77, 174, 236, 180, 236, 180, - 236, 180, 236, 175, 204, 181, 202, 182, 6, 0, - 78, 181, 243, 182, 181, 243, 182, 6, 0, 0, + 0, 239, 0, 194, 180, 239, 0, 239, 0, 195, + 180, 239, 0, 0, 0, 4, 197, 174, 194, 175, + 198, 181, 195, 182, 6, 0, 253, 0, 199, 180, + 253, 0, 0, 76, 174, 239, 180, 239, 180, 239, + 175, 201, 181, 199, 182, 6, 0, 253, 0, 202, + 180, 253, 0, 0, 77, 174, 239, 180, 239, 180, + 239, 180, 239, 175, 204, 181, 202, 182, 6, 0, + 78, 181, 246, 182, 181, 246, 182, 6, 0, 0, 79, 207, 181, 195, 182, 6, 0, 7, 0, 149, 0, 150, 0, 151, 0, 152, 0, 170, 0, 171, - 0, 4, 208, 236, 6, 0, 4, 176, 236, 177, - 208, 236, 6, 0, 4, 176, 181, 246, 182, 177, - 208, 244, 6, 0, 4, 176, 177, 7, 244, 6, - 0, 4, 209, 6, 0, 4, 176, 236, 177, 209, - 6, 0, 4, 178, 4, 7, 250, 6, 0, 4, - 176, 236, 177, 178, 4, 7, 250, 6, 0, 4, - 178, 4, 208, 236, 6, 0, 4, 176, 236, 177, - 178, 4, 208, 236, 6, 0, 4, 178, 4, 209, - 6, 0, 4, 176, 236, 177, 178, 4, 209, 6, - 0, 4, 178, 88, 178, 4, 7, 247, 6, 0, - 4, 176, 236, 177, 178, 88, 178, 4, 7, 247, - 6, 0, 4, 178, 89, 7, 248, 6, 0, 4, - 176, 236, 177, 178, 89, 7, 248, 6, 0, 60, - 174, 4, 175, 178, 4, 7, 236, 6, 0, 60, - 174, 4, 175, 178, 4, 7, 250, 6, 0, 41, - 174, 236, 175, 7, 238, 6, 0, 56, 41, 174, - 236, 175, 7, 244, 6, 0, 72, 41, 244, 7, - 181, 236, 180, 236, 180, 236, 182, 6, 0, 48, - 49, 244, 7, 236, 6, 0, 44, 174, 236, 175, - 7, 244, 6, 0, 46, 174, 236, 175, 7, 244, - 6, 0, 42, 174, 236, 175, 7, 244, 6, 0, - 42, 174, 236, 175, 7, 244, 52, 238, 6, 0, - 43, 174, 236, 175, 7, 244, 6, 0, 43, 174, - 236, 175, 7, 244, 52, 238, 6, 0, 50, 174, - 236, 175, 7, 181, 236, 180, 236, 180, 5, 180, - 5, 180, 5, 182, 6, 0, 81, 174, 236, 175, - 7, 244, 6, 0, 82, 174, 236, 175, 7, 244, - 6, 0, 83, 174, 236, 175, 7, 244, 87, 244, - 84, 236, 6, 0, 44, 67, 174, 236, 175, 7, - 244, 6, 0, 72, 44, 244, 7, 181, 236, 180, - 236, 180, 236, 182, 6, 0, 56, 44, 174, 236, - 175, 7, 244, 6, 0, 52, 45, 174, 236, 175, - 7, 244, 6, 0, 53, 45, 174, 236, 175, 7, - 244, 6, 0, 99, 45, 174, 236, 175, 7, 181, - 236, 180, 244, 182, 6, 0, 83, 45, 85, 86, - 174, 236, 175, 7, 242, 87, 181, 244, 180, 244, - 182, 84, 181, 236, 180, 236, 182, 6, 0, 83, - 45, 174, 236, 175, 7, 242, 87, 181, 244, 180, - 244, 182, 84, 181, 236, 180, 236, 182, 6, 0, - 45, 67, 174, 236, 175, 7, 244, 6, 0, 56, - 45, 174, 236, 175, 7, 244, 6, 0, 55, 47, - 174, 236, 175, 7, 244, 6, 0, 47, 174, 236, - 175, 7, 244, 6, 0, 56, 47, 174, 236, 175, - 7, 244, 6, 0, 62, 238, 181, 213, 182, 0, - 61, 181, 238, 180, 238, 180, 236, 182, 181, 213, - 182, 0, 63, 238, 181, 213, 182, 0, 64, 181, - 238, 180, 236, 182, 181, 213, 182, 0, 215, 0, + 0, 4, 208, 239, 6, 0, 4, 176, 239, 177, + 208, 239, 6, 0, 4, 176, 181, 249, 182, 177, + 208, 247, 6, 0, 4, 176, 177, 7, 247, 6, + 0, 4, 209, 6, 0, 4, 176, 239, 177, 209, + 6, 0, 4, 178, 4, 7, 253, 6, 0, 4, + 176, 239, 177, 178, 4, 7, 253, 6, 0, 4, + 178, 4, 208, 239, 6, 0, 4, 176, 239, 177, + 178, 4, 208, 239, 6, 0, 4, 178, 4, 209, + 6, 0, 4, 176, 239, 177, 178, 4, 209, 6, + 0, 4, 178, 88, 178, 4, 7, 250, 6, 0, + 4, 176, 239, 177, 178, 88, 178, 4, 7, 250, + 6, 0, 4, 178, 89, 7, 251, 6, 0, 4, + 176, 239, 177, 178, 89, 7, 251, 6, 0, 60, + 174, 4, 175, 178, 4, 7, 239, 6, 0, 60, + 174, 4, 175, 178, 4, 7, 253, 6, 0, 41, + 174, 239, 175, 7, 241, 6, 0, 56, 41, 174, + 239, 175, 7, 247, 6, 0, 72, 41, 247, 7, + 181, 239, 180, 239, 180, 239, 182, 6, 0, 48, + 49, 247, 7, 239, 6, 0, 44, 174, 239, 175, + 7, 247, 6, 0, 46, 174, 239, 175, 7, 247, + 6, 0, 42, 174, 239, 175, 7, 247, 6, 0, + 42, 174, 239, 175, 7, 247, 52, 241, 6, 0, + 43, 174, 239, 175, 7, 247, 6, 0, 43, 174, + 239, 175, 7, 247, 52, 241, 6, 0, 50, 174, + 239, 175, 7, 181, 239, 180, 239, 180, 5, 180, + 5, 180, 5, 182, 6, 0, 81, 174, 239, 175, + 7, 247, 6, 0, 82, 174, 239, 175, 7, 247, + 6, 0, 83, 174, 239, 175, 7, 247, 87, 247, + 84, 239, 6, 0, 44, 67, 174, 239, 175, 7, + 247, 6, 0, 72, 44, 247, 7, 181, 239, 180, + 239, 180, 239, 182, 6, 0, 56, 44, 174, 239, + 175, 7, 247, 6, 0, 52, 45, 174, 239, 175, + 7, 247, 6, 0, 53, 45, 174, 239, 175, 7, + 247, 6, 0, 99, 45, 174, 239, 175, 7, 181, + 239, 180, 247, 182, 6, 0, 83, 45, 85, 86, + 174, 239, 175, 7, 245, 87, 181, 247, 180, 247, + 182, 84, 181, 239, 180, 239, 182, 6, 0, 83, + 45, 174, 239, 175, 7, 245, 87, 181, 247, 180, + 247, 182, 84, 181, 239, 180, 239, 182, 6, 0, + 45, 67, 174, 239, 175, 7, 247, 6, 0, 56, + 45, 174, 239, 175, 7, 247, 6, 0, 55, 47, + 174, 239, 175, 7, 247, 6, 0, 47, 174, 239, + 175, 7, 247, 6, 0, 56, 47, 174, 239, 175, + 7, 247, 6, 0, 62, 241, 181, 213, 182, 0, + 61, 181, 241, 180, 241, 180, 239, 182, 181, 213, + 182, 0, 63, 241, 181, 213, 182, 0, 64, 181, + 241, 180, 239, 182, 181, 213, 182, 0, 215, 0, 214, 0, 212, 0, 0, 214, 211, 0, 214, 41, - 181, 246, 182, 6, 0, 214, 44, 181, 246, 182, - 6, 0, 214, 45, 181, 246, 182, 6, 0, 214, - 47, 181, 246, 182, 6, 0, 66, 181, 214, 182, - 0, 66, 4, 176, 236, 177, 6, 0, 74, 4, - 176, 236, 177, 6, 0, 75, 4, 176, 236, 177, + 181, 249, 182, 6, 0, 214, 44, 181, 249, 182, + 6, 0, 214, 45, 181, 249, 182, 6, 0, 214, + 47, 181, 249, 182, 6, 0, 66, 181, 214, 182, + 0, 66, 4, 176, 239, 177, 6, 0, 74, 4, + 176, 239, 177, 6, 0, 75, 4, 176, 239, 177, 6, 0, 69, 181, 214, 182, 0, 69, 4, 176, - 236, 177, 6, 0, 69, 4, 6, 0, 69, 4, - 4, 6, 0, 88, 247, 181, 214, 182, 0, 100, - 250, 6, 0, 101, 250, 6, 0, 100, 181, 214, - 182, 0, 101, 181, 214, 182, 0, 4, 250, 6, - 0, 4, 4, 176, 236, 177, 250, 6, 0, 4, - 236, 6, 0, 60, 174, 4, 175, 178, 4, 6, + 239, 177, 6, 0, 69, 4, 6, 0, 69, 4, + 4, 6, 0, 88, 250, 181, 214, 182, 0, 100, + 253, 6, 0, 101, 253, 6, 0, 100, 181, 214, + 182, 0, 101, 181, 214, 182, 0, 4, 253, 6, + 0, 4, 4, 176, 239, 177, 253, 6, 0, 4, + 239, 6, 0, 60, 174, 4, 175, 178, 4, 6, 0, 80, 4, 6, 0, 95, 6, 0, 38, 6, - 0, 38, 181, 236, 180, 236, 180, 236, 180, 236, - 180, 236, 180, 236, 182, 6, 0, 39, 6, 0, - 90, 174, 236, 8, 236, 175, 0, 90, 174, 236, - 8, 236, 8, 236, 175, 0, 90, 4, 91, 181, - 236, 8, 236, 182, 0, 90, 4, 91, 181, 236, - 8, 236, 8, 236, 182, 0, 92, 0, 98, 4, - 0, 96, 0, 97, 4, 6, 0, 93, 174, 236, - 175, 0, 94, 0, 65, 41, 181, 236, 180, 238, - 182, 6, 0, 65, 41, 181, 236, 180, 238, 180, - 238, 180, 236, 182, 6, 0, 65, 41, 181, 236, - 180, 238, 180, 238, 180, 238, 180, 236, 182, 6, - 0, 0, 65, 41, 181, 236, 180, 238, 182, 222, - 181, 231, 182, 6, 0, 0, 65, 41, 181, 236, - 180, 238, 180, 238, 180, 236, 182, 223, 181, 231, - 182, 6, 0, 0, 65, 41, 181, 236, 180, 238, - 180, 238, 180, 238, 180, 236, 182, 224, 181, 231, - 182, 6, 0, 65, 44, 181, 236, 180, 238, 182, - 6, 0, 65, 44, 181, 236, 180, 238, 180, 238, - 180, 236, 182, 6, 0, 65, 44, 181, 236, 180, - 238, 180, 238, 180, 238, 180, 236, 182, 6, 0, - 0, 65, 44, 181, 236, 180, 238, 182, 225, 181, - 231, 182, 6, 0, 0, 65, 44, 181, 236, 180, - 238, 180, 238, 180, 236, 182, 226, 181, 231, 182, - 6, 0, 0, 65, 44, 181, 236, 180, 238, 180, - 238, 180, 238, 180, 236, 182, 227, 181, 231, 182, - 6, 0, 65, 45, 181, 236, 180, 238, 182, 6, - 0, 65, 45, 181, 236, 180, 238, 180, 238, 180, - 236, 182, 6, 0, 65, 45, 181, 236, 180, 238, - 180, 238, 180, 238, 180, 236, 182, 6, 0, 0, - 65, 45, 181, 236, 180, 238, 182, 228, 181, 231, - 182, 6, 0, 0, 65, 45, 181, 236, 180, 238, - 180, 238, 180, 236, 182, 229, 181, 231, 182, 6, - 0, 0, 65, 45, 181, 236, 180, 238, 180, 238, - 180, 238, 180, 236, 182, 230, 181, 231, 182, 6, - 0, 232, 0, 231, 232, 0, 73, 181, 244, 180, - 244, 180, 244, 182, 6, 0, 73, 181, 244, 180, - 244, 182, 6, 0, 68, 6, 0, 54, 44, 244, - 7, 236, 6, 0, 54, 44, 244, 7, 236, 57, - 59, 236, 6, 0, 54, 44, 244, 7, 236, 57, - 58, 236, 6, 0, 54, 45, 181, 236, 182, 7, - 244, 6, 0, 54, 45, 181, 236, 182, 7, 244, - 4, 6, 0, 51, 45, 181, 236, 182, 7, 244, - 6, 0, 54, 47, 181, 236, 182, 7, 244, 6, - 0, 68, 45, 244, 7, 236, 6, 0, 68, 45, - 244, 6, 0, 70, 6, 0, 71, 6, 0, 109, - 0, 110, 0, 111, 0, 112, 0, 113, 0, 237, - 0, 174, 236, 175, 0, 164, 236, 0, 163, 236, - 0, 169, 236, 0, 236, 164, 236, 0, 236, 163, - 236, 0, 236, 165, 236, 0, 236, 166, 236, 0, - 236, 167, 236, 0, 236, 173, 236, 0, 236, 159, - 236, 0, 236, 161, 236, 0, 236, 160, 236, 0, - 236, 162, 236, 0, 236, 156, 236, 0, 236, 157, - 236, 0, 236, 155, 236, 0, 236, 154, 236, 0, - 236, 153, 236, 8, 236, 0, 12, 174, 236, 175, - 0, 13, 174, 236, 175, 0, 14, 174, 236, 175, - 0, 15, 174, 236, 175, 0, 16, 174, 236, 175, - 0, 17, 174, 236, 175, 0, 18, 174, 236, 175, - 0, 19, 174, 236, 175, 0, 20, 174, 236, 175, - 0, 22, 174, 236, 175, 0, 23, 174, 236, 180, - 236, 175, 0, 24, 174, 236, 175, 0, 25, 174, - 236, 175, 0, 26, 174, 236, 175, 0, 27, 174, - 236, 175, 0, 28, 174, 236, 175, 0, 29, 174, - 236, 175, 0, 30, 174, 236, 180, 236, 175, 0, - 31, 174, 236, 180, 236, 175, 0, 32, 174, 236, - 180, 236, 175, 0, 21, 174, 236, 175, 0, 12, - 176, 236, 177, 0, 13, 176, 236, 177, 0, 14, - 176, 236, 177, 0, 15, 176, 236, 177, 0, 16, - 176, 236, 177, 0, 17, 176, 236, 177, 0, 18, - 176, 236, 177, 0, 19, 176, 236, 177, 0, 20, - 176, 236, 177, 0, 22, 176, 236, 177, 0, 23, - 176, 236, 180, 236, 177, 0, 24, 176, 236, 177, - 0, 25, 176, 236, 177, 0, 26, 176, 236, 177, - 0, 27, 176, 236, 177, 0, 28, 176, 236, 177, - 0, 29, 176, 236, 177, 0, 30, 176, 236, 180, - 236, 177, 0, 31, 176, 236, 180, 236, 177, 0, - 32, 176, 236, 180, 236, 177, 0, 21, 176, 236, - 177, 0, 3, 0, 9, 0, 10, 0, 11, 0, - 103, 0, 104, 0, 105, 0, 4, 0, 4, 176, - 236, 177, 0, 179, 4, 176, 177, 0, 4, 209, - 0, 4, 176, 236, 177, 209, 0, 4, 178, 4, - 0, 4, 176, 236, 177, 178, 4, 0, 4, 178, - 4, 209, 0, 4, 176, 236, 177, 178, 4, 209, - 0, 102, 174, 5, 180, 236, 175, 0, 239, 0, - 164, 238, 0, 163, 238, 0, 238, 164, 238, 0, - 238, 163, 238, 0, 181, 236, 180, 236, 180, 236, - 180, 236, 180, 236, 182, 0, 181, 236, 180, 236, - 180, 236, 180, 236, 182, 0, 181, 236, 180, 236, - 180, 236, 182, 0, 174, 236, 180, 236, 180, 236, - 175, 0, 0, 174, 241, 175, 0, 5, 0, 241, - 180, 5, 0, 0, 181, 243, 182, 0, 174, 243, - 175, 0, 244, 0, 243, 180, 244, 0, 236, 0, - 245, 0, 181, 246, 182, 0, 164, 181, 246, 182, - 0, 236, 8, 236, 0, 236, 8, 236, 8, 236, - 0, 41, 181, 236, 182, 0, 212, 0, 215, 0, - 221, 0, 4, 176, 177, 0, 164, 4, 176, 177, - 0, 4, 176, 181, 246, 182, 177, 0, 164, 4, - 176, 181, 246, 182, 177, 0, 236, 0, 245, 0, - 246, 180, 236, 0, 246, 180, 245, 0, 181, 236, - 180, 236, 180, 236, 180, 236, 182, 0, 181, 236, - 180, 236, 180, 236, 182, 0, 4, 0, 4, 178, - 88, 178, 4, 0, 181, 249, 182, 0, 4, 176, - 236, 177, 178, 89, 0, 247, 0, 249, 180, 247, - 0, 5, 0, 40, 0, 35, 174, 250, 180, 250, - 175, 0, 36, 174, 250, 175, 0, 37, 174, 250, - 175, 0, 34, 174, 250, 175, 0, 34, 174, 250, - 180, 246, 175, 0, 34, 174, 4, 178, 4, 175, - 0, 34, 174, 4, 176, 236, 177, 178, 4, 175, - 0 + 0, 38, 181, 239, 180, 239, 180, 239, 180, 239, + 180, 239, 180, 239, 182, 6, 0, 39, 6, 0, + 90, 174, 239, 8, 239, 175, 0, 90, 174, 239, + 8, 239, 8, 239, 175, 0, 90, 4, 91, 181, + 239, 8, 239, 182, 0, 90, 4, 91, 181, 239, + 8, 239, 8, 239, 182, 0, 92, 0, 98, 4, + 0, 96, 0, 97, 4, 6, 0, 93, 174, 239, + 175, 0, 94, 0, 65, 241, 181, 214, 182, 0, + 65, 181, 241, 180, 241, 180, 239, 182, 181, 214, + 182, 0, 65, 181, 241, 180, 241, 180, 241, 180, + 239, 182, 181, 214, 182, 0, 0, 65, 241, 181, + 214, 222, 234, 182, 0, 0, 65, 181, 241, 180, + 241, 180, 239, 182, 181, 214, 223, 234, 182, 0, + 0, 65, 181, 241, 180, 241, 180, 241, 180, 239, + 182, 181, 214, 224, 234, 182, 0, 65, 41, 181, + 239, 180, 241, 182, 6, 0, 65, 44, 181, 239, + 180, 241, 182, 6, 0, 65, 45, 181, 239, 180, + 241, 182, 6, 0, 65, 41, 181, 239, 180, 241, + 180, 241, 180, 239, 182, 6, 0, 65, 44, 181, + 239, 180, 241, 180, 241, 180, 239, 182, 6, 0, + 65, 45, 181, 239, 180, 241, 180, 241, 180, 239, + 182, 6, 0, 65, 41, 181, 239, 180, 241, 180, + 241, 180, 241, 180, 239, 182, 6, 0, 65, 44, + 181, 239, 180, 241, 180, 241, 180, 241, 180, 239, + 182, 6, 0, 65, 45, 181, 239, 180, 241, 180, + 241, 180, 241, 180, 239, 182, 6, 0, 0, 65, + 41, 181, 239, 180, 241, 182, 225, 181, 234, 182, + 6, 0, 0, 65, 44, 181, 239, 180, 241, 182, + 226, 181, 234, 182, 6, 0, 0, 65, 45, 181, + 239, 180, 241, 182, 227, 181, 234, 182, 6, 0, + 0, 65, 41, 181, 239, 180, 241, 180, 241, 180, + 239, 182, 228, 181, 234, 182, 6, 0, 0, 65, + 44, 181, 239, 180, 241, 180, 241, 180, 239, 182, + 229, 181, 234, 182, 6, 0, 0, 65, 45, 181, + 239, 180, 241, 180, 241, 180, 239, 182, 230, 181, + 234, 182, 6, 0, 0, 65, 41, 181, 239, 180, + 241, 180, 241, 180, 241, 180, 239, 182, 231, 181, + 234, 182, 6, 0, 0, 65, 44, 181, 239, 180, + 241, 180, 241, 180, 241, 180, 239, 182, 232, 181, + 234, 182, 6, 0, 0, 65, 45, 181, 239, 180, + 241, 180, 241, 180, 241, 180, 239, 182, 233, 181, + 234, 182, 6, 0, 235, 0, 234, 235, 0, 73, + 181, 247, 180, 247, 180, 247, 182, 6, 0, 73, + 181, 247, 180, 247, 182, 6, 0, 68, 6, 0, + 54, 44, 247, 7, 239, 6, 0, 54, 44, 247, + 7, 239, 57, 59, 239, 6, 0, 54, 44, 247, + 7, 239, 57, 58, 239, 6, 0, 54, 45, 181, + 239, 182, 7, 247, 6, 0, 54, 45, 181, 239, + 182, 7, 247, 4, 6, 0, 51, 45, 181, 239, + 182, 7, 247, 6, 0, 54, 47, 181, 239, 182, + 7, 247, 6, 0, 68, 45, 247, 7, 239, 6, + 0, 68, 45, 247, 6, 0, 70, 6, 0, 71, + 6, 0, 109, 0, 110, 0, 111, 0, 112, 0, + 113, 0, 240, 0, 174, 239, 175, 0, 164, 239, + 0, 163, 239, 0, 169, 239, 0, 239, 164, 239, + 0, 239, 163, 239, 0, 239, 165, 239, 0, 239, + 166, 239, 0, 239, 167, 239, 0, 239, 173, 239, + 0, 239, 159, 239, 0, 239, 161, 239, 0, 239, + 160, 239, 0, 239, 162, 239, 0, 239, 156, 239, + 0, 239, 157, 239, 0, 239, 155, 239, 0, 239, + 154, 239, 0, 239, 153, 239, 8, 239, 0, 12, + 174, 239, 175, 0, 13, 174, 239, 175, 0, 14, + 174, 239, 175, 0, 15, 174, 239, 175, 0, 16, + 174, 239, 175, 0, 17, 174, 239, 175, 0, 18, + 174, 239, 175, 0, 19, 174, 239, 175, 0, 20, + 174, 239, 175, 0, 22, 174, 239, 175, 0, 23, + 174, 239, 180, 239, 175, 0, 24, 174, 239, 175, + 0, 25, 174, 239, 175, 0, 26, 174, 239, 175, + 0, 27, 174, 239, 175, 0, 28, 174, 239, 175, + 0, 29, 174, 239, 175, 0, 30, 174, 239, 180, + 239, 175, 0, 31, 174, 239, 180, 239, 175, 0, + 32, 174, 239, 180, 239, 175, 0, 21, 174, 239, + 175, 0, 12, 176, 239, 177, 0, 13, 176, 239, + 177, 0, 14, 176, 239, 177, 0, 15, 176, 239, + 177, 0, 16, 176, 239, 177, 0, 17, 176, 239, + 177, 0, 18, 176, 239, 177, 0, 19, 176, 239, + 177, 0, 20, 176, 239, 177, 0, 22, 176, 239, + 177, 0, 23, 176, 239, 180, 239, 177, 0, 24, + 176, 239, 177, 0, 25, 176, 239, 177, 0, 26, + 176, 239, 177, 0, 27, 176, 239, 177, 0, 28, + 176, 239, 177, 0, 29, 176, 239, 177, 0, 30, + 176, 239, 180, 239, 177, 0, 31, 176, 239, 180, + 239, 177, 0, 32, 176, 239, 180, 239, 177, 0, + 21, 176, 239, 177, 0, 3, 0, 9, 0, 10, + 0, 11, 0, 103, 0, 104, 0, 105, 0, 4, + 0, 4, 176, 239, 177, 0, 179, 4, 176, 177, + 0, 4, 209, 0, 4, 176, 239, 177, 209, 0, + 4, 178, 4, 0, 4, 176, 239, 177, 178, 4, + 0, 4, 178, 4, 209, 0, 4, 176, 239, 177, + 178, 4, 209, 0, 102, 174, 5, 180, 239, 175, + 0, 242, 0, 164, 241, 0, 163, 241, 0, 241, + 164, 241, 0, 241, 163, 241, 0, 181, 239, 180, + 239, 180, 239, 180, 239, 180, 239, 182, 0, 181, + 239, 180, 239, 180, 239, 180, 239, 182, 0, 181, + 239, 180, 239, 180, 239, 182, 0, 174, 239, 180, + 239, 180, 239, 175, 0, 0, 174, 244, 175, 0, + 5, 0, 244, 180, 5, 0, 0, 181, 246, 182, + 0, 174, 246, 175, 0, 247, 0, 246, 180, 247, + 0, 239, 0, 248, 0, 181, 249, 182, 0, 164, + 181, 249, 182, 0, 239, 8, 239, 0, 239, 8, + 239, 8, 239, 0, 41, 181, 239, 182, 0, 212, + 0, 215, 0, 221, 0, 4, 176, 177, 0, 164, + 4, 176, 177, 0, 4, 176, 181, 249, 182, 177, + 0, 164, 4, 176, 181, 249, 182, 177, 0, 239, + 0, 248, 0, 249, 180, 239, 0, 249, 180, 248, + 0, 181, 239, 180, 239, 180, 239, 180, 239, 182, + 0, 181, 239, 180, 239, 180, 239, 182, 0, 4, + 0, 4, 178, 88, 178, 4, 0, 181, 252, 182, + 0, 4, 176, 239, 177, 178, 89, 0, 250, 0, + 252, 180, 250, 0, 5, 0, 40, 0, 35, 174, + 253, 180, 253, 175, 0, 36, 174, 253, 175, 0, + 37, 174, 253, 175, 0, 34, 174, 253, 175, 0, + 34, 174, 253, 180, 249, 175, 0, 34, 174, 4, + 178, 4, 175, 0, 34, 174, 4, 176, 239, 177, + 178, 4, 175, 0 }; #endif @@ -614,25 +622,26 @@ static const short yyrline[] = { 0, 1719, 1723, 1739, 1755, 1771, 1791, 1806, 1812, 1818, 1829, 1839, 1849, 1863, 1881, 1895, 1904, 1910, 1921, 1934, 1979, 1994, 2010, 2020, 2042, 2046, 2051, 2056, 2067, 2084, 2100, - 2126, 2153, 2185, 2192, 2197, 2203, 2207, 2215, 2234, 2250, - 2266, 2271, 2287, 2292, 2308, 2313, 2331, 2354, 2377, 2400, - 2405, 2428, 2433, 2456, 2461, 2487, 2510, 2533, 2556, 2561, - 2584, 2590, 2613, 2619, 2644, 2648, 2653, 2680, 2704, 2712, - 2731, 2749, 2767, 2796, 2831, 2858, 2885, 2899, 2917, 2922, - 2931, 2933, 2934, 2935, 2936, 2939, 2941, 2942, 2943, 2944, - 2945, 2946, 2947, 2948, 2955, 2956, 2957, 2958, 2959, 2960, - 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969, 2970, - 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, - 2981, 2982, 2983, 2984, 2985, 2986, 2988, 2989, 2990, 2991, - 2992, 2993, 2994, 2995, 2996, 2997, 2998, 2999, 3000, 3001, - 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3013, 3018, 3019, - 3020, 3021, 3022, 3023, 3027, 3040, 3060, 3074, 3087, 3110, - 3128, 3146, 3164, 3182, 3189, 3194, 3198, 3202, 3206, 3212, - 3217, 3221, 3225, 3231, 3235, 3240, 3244, 3249, 3253, 3257, - 3263, 3269, 3276, 3282, 3286, 3290, 3301, 3308, 3319, 3339, - 3349, 3359, 3371, 3388, 3407, 3431, 3459, 3465, 3469, 3473, - 3485, 3490, 3502, 3509, 3530, 3535, 3549, 3555, 3561, 3566, - 3574, 3582, 3596, 3610, 3614, 3633, 3655 + 2126, 2153, 2185, 2192, 2197, 2203, 2207, 2215, 2224, 2232, + 2240, 2245, 2253, 2258, 2266, 2271, 2281, 2288, 2295, 2302, + 2309, 2316, 2323, 2330, 2337, 2344, 2349, 2356, 2361, 2368, + 2373, 2380, 2385, 2392, 2397, 2404, 2409, 2416, 2421, 2428, + 2433, 2440, 2445, 2455, 2459, 2464, 2491, 2515, 2523, 2542, + 2560, 2578, 2607, 2642, 2669, 2696, 2710, 2728, 2733, 2742, + 2744, 2745, 2746, 2747, 2750, 2752, 2753, 2754, 2755, 2756, + 2757, 2758, 2759, 2766, 2767, 2768, 2769, 2770, 2771, 2772, + 2773, 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, + 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, + 2793, 2794, 2795, 2796, 2797, 2799, 2800, 2801, 2802, 2803, + 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, + 2814, 2815, 2816, 2817, 2818, 2819, 2824, 2829, 2830, 2831, + 2832, 2833, 2834, 2838, 2851, 2871, 2885, 2898, 2921, 2939, + 2957, 2975, 2993, 3000, 3005, 3009, 3013, 3017, 3023, 3028, + 3032, 3036, 3042, 3046, 3051, 3055, 3060, 3064, 3068, 3074, + 3080, 3087, 3093, 3097, 3101, 3112, 3119, 3130, 3150, 3160, + 3170, 3180, 3197, 3216, 3240, 3268, 3274, 3278, 3282, 3294, + 3299, 3311, 3318, 3339, 3344, 3358, 3364, 3370, 3375, 3383, + 3391, 3405, 3419, 3423, 3442, 3464 }; #endif @@ -671,11 +680,11 @@ static const char * const yytname[] = { "$","error","$undefined.","tDOUBLE", "@3","Text3DValues","Text3D","@4","InterpolationMatrix","Time","@5","NumericAffectation", "NumericIncrement","Affectation","Shape","Transform","MultipleShape","ListOfShapes", "Duplicata","Delete","Colorify","Visibility","Command","Loop","Extrude","@6", -"@7","@8","@9","@10","@11","@12","@13","@14","ExtrudeParameters","ExtrudeParameter", -"Transfinite","Coherence","BoolExpr","FExpr","FExpr_Single","VExpr","VExpr_Single", -"ListOfStrings","RecursiveListOfStrings","ListOfListOfDouble","RecursiveListOfListOfDouble", -"ListOfDouble","FExpr_Multi","RecursiveListOfDouble","ColorExpr","ListOfColor", -"RecursiveListOfColor","StringExpr", NULL +"@7","@8","@9","@10","@11","@12","@13","@14","@15","@16","@17","ExtrudeParameters", +"ExtrudeParameter","Transfinite","Coherence","BoolExpr","FExpr","FExpr_Single", +"VExpr","VExpr_Single","ListOfStrings","RecursiveListOfStrings","ListOfListOfDouble", +"RecursiveListOfListOfDouble","ListOfDouble","FExpr_Multi","RecursiveListOfDouble", +"ColorExpr","ListOfColor","RecursiveListOfColor","StringExpr", NULL }; #endif @@ -699,24 +708,25 @@ static const short yyr1[] = { 0, 216, 216, 216, 217, 218, 218, 218, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, - 222, 221, 223, 221, 224, 221, 221, 221, 221, 225, - 221, 226, 221, 227, 221, 221, 221, 221, 228, 221, - 229, 221, 230, 221, 231, 231, 232, 232, 232, 233, - 233, 233, 233, 233, 233, 233, 233, 233, 234, 234, - 235, 235, 235, 235, 235, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 238, 238, 238, 238, 238, 239, - 239, 239, 239, 240, 240, 241, 241, 242, 242, 242, - 243, 243, 244, 244, 244, 244, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, - 247, 247, 247, 247, 248, 248, 249, 249, 250, 250, - 250, 250, 250, 250, 250, 250, 250 + 222, 221, 223, 221, 224, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 225, 221, 226, 221, 227, + 221, 228, 221, 229, 221, 230, 221, 231, 221, 232, + 221, 233, 221, 234, 234, 235, 235, 235, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 237, 237, 238, + 238, 238, 238, 238, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 241, 241, 241, 241, 241, 242, 242, + 242, 242, 243, 243, 244, 244, 245, 245, 245, 246, + 246, 247, 247, 247, 247, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 249, 249, 249, 249, 250, + 250, 250, 250, 251, 251, 252, 252, 253, 253, 253, + 253, 253, 253, 253, 253, 253 }; static const short yyr2[] = { 0, @@ -738,25 +748,26 @@ static const short yyr2[] = { 0, 2, 6, 6, 6, 6, 4, 6, 6, 6, 4, 6, 3, 4, 5, 3, 3, 4, 4, 3, 7, 3, 7, 3, 2, 2, 15, 2, 6, 8, 8, - 10, 1, 2, 1, 3, 4, 1, 8, 12, 14, - 0, 12, 0, 16, 0, 18, 8, 12, 14, 0, - 12, 0, 16, 0, 18, 8, 12, 14, 0, 12, - 0, 16, 0, 18, 1, 2, 9, 7, 2, 6, - 9, 9, 8, 9, 8, 8, 6, 4, 2, 2, - 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, + 10, 1, 2, 1, 3, 4, 1, 5, 11, 13, + 0, 7, 0, 13, 0, 15, 8, 8, 8, 12, + 12, 12, 14, 14, 14, 0, 12, 0, 12, 0, + 12, 0, 16, 0, 16, 0, 16, 0, 18, 0, + 18, 0, 18, 1, 2, 9, 7, 2, 6, 9, + 9, 8, 9, 8, 8, 6, 4, 2, 2, 1, + 1, 1, 1, 1, 1, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 5, 4, 4, 4, 4, 4, + 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, + 4, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, - 4, 4, 6, 6, 6, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, - 4, 4, 4, 6, 6, 6, 4, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 4, 2, 5, 3, - 6, 4, 7, 6, 1, 2, 2, 3, 3, 11, - 9, 7, 7, 0, 3, 1, 3, 0, 3, 3, - 1, 3, 1, 1, 3, 4, 3, 5, 4, 1, - 1, 1, 3, 4, 6, 7, 1, 1, 3, 3, - 9, 7, 1, 5, 3, 6, 1, 3, 1, 1, - 6, 4, 4, 4, 6, 6, 9 + 4, 4, 6, 6, 6, 4, 1, 1, 1, 1, + 1, 1, 1, 1, 4, 4, 2, 5, 3, 6, + 4, 7, 6, 1, 2, 2, 3, 3, 11, 9, + 7, 7, 0, 3, 1, 3, 0, 3, 3, 1, + 3, 1, 1, 3, 4, 3, 5, 4, 1, 1, + 1, 3, 4, 6, 7, 1, 1, 3, 3, 9, + 7, 1, 5, 3, 6, 1, 3, 1, 1, 6, + 4, 4, 4, 6, 6, 9 }; static const short yydefact[] = { 0, @@ -768,1453 +779,1490 @@ static const short yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 182, 0, 187, 0, 184, 0, 0, 0, 0, 0, 48, 50, 49, 51, 52, 53, 54, 55, 56, 57, 62, 61, 58, 59, - 60, 0, 9, 10, 12, 11, 13, 324, 324, 0, - 298, 305, 359, 91, 299, 300, 301, 0, 0, 0, + 60, 0, 9, 10, 12, 11, 13, 333, 333, 0, + 307, 314, 368, 91, 308, 309, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 360, 0, 302, 303, 304, 92, 93, 94, + 0, 0, 369, 0, 311, 312, 313, 92, 93, 94, 95, 0, 0, 0, 96, 97, 0, 0, 0, 0, - 0, 0, 0, 236, 0, 0, 175, 0, 177, 0, + 0, 0, 0, 245, 0, 0, 175, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 315, 0, 0, - 0, 0, 0, 0, 150, 0, 0, 150, 229, 230, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 353, - 0, 0, 0, 0, 0, 174, 0, 183, 0, 359, - 150, 0, 150, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, + 0, 0, 0, 0, 0, 0, 150, 0, 0, 150, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 362, 0, 0, 0, 0, 0, 174, 0, 183, + 0, 368, 150, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 308, 0, 67, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 317, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 305, 239, 238, 240, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 102, 171, 0, 0, 0, 0, 0, + 0, 0, 314, 248, 247, 249, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 102, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 305, 0, 0, 0, 340, 341, 342, 333, 0, - 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 317, 316, 0, 0, 0, - 0, 150, 150, 0, 0, 0, 0, 0, 0, 0, - 0, 162, 0, 0, 0, 0, 0, 0, 173, 0, - 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, - 185, 0, 0, 165, 0, 166, 0, 0, 0, 0, + 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 314, 0, 0, 0, 349, 350, 351, + 342, 0, 343, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 325, 0, + 0, 0, 0, 150, 150, 0, 0, 0, 0, 0, + 0, 0, 0, 150, 0, 0, 0, 0, 162, 0, + 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, + 0, 0, 0, 150, 0, 0, 0, 185, 0, 0, + 165, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 335, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 347, 348, 0, - 0, 91, 0, 0, 0, 0, 0, 98, 0, 254, - 253, 251, 252, 247, 249, 248, 250, 242, 241, 243, - 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 319, 318, 149, - 0, 148, 147, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 156, 151, 228, 0, 163, 0, 160, + 0, 246, 0, 0, 356, 357, 0, 0, 91, 0, + 0, 0, 0, 0, 98, 0, 263, 262, 260, 261, + 256, 258, 257, 259, 251, 250, 252, 253, 254, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 328, 327, 149, 0, 148, 147, + 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, + 0, 0, 0, 156, 151, 237, 0, 163, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, - 0, 15, 0, 306, 312, 67, 77, 0, 0, 0, - 89, 0, 68, 69, 70, 71, 72, 256, 277, 257, - 278, 258, 279, 259, 280, 260, 281, 261, 282, 262, - 283, 263, 284, 264, 285, 276, 297, 265, 286, 0, - 0, 267, 288, 268, 289, 269, 290, 270, 291, 271, - 292, 272, 293, 0, 0, 0, 0, 0, 0, 0, - 0, 364, 0, 0, 362, 363, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 334, 0, + 0, 15, 0, 315, 321, 67, 77, 0, 0, 0, + 89, 0, 68, 69, 70, 71, 72, 265, 286, 266, + 287, 267, 288, 268, 289, 269, 290, 270, 291, 271, + 292, 272, 293, 273, 294, 285, 306, 274, 295, 0, + 0, 276, 297, 277, 298, 278, 299, 279, 300, 280, + 301, 281, 302, 0, 0, 0, 0, 0, 0, 0, + 0, 373, 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, - 0, 307, 0, 63, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 343, 0, 0, 0, 0, 335, - 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 316, 0, 63, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 352, 0, 0, 0, 0, 344, + 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 145, + 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 0, 324, 0, - 309, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 306, 101, 349, 350, 0, 0, 0, 0, - 0, 103, 104, 106, 0, 0, 357, 0, 112, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, + 0, 333, 0, 318, 0, 0, 0, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 315, 101, 358, 359, 0, + 0, 0, 0, 0, 103, 104, 106, 0, 0, 366, + 0, 112, 264, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 348, 353, 0, 345, 0, 119, + 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 344, 0, 336, 0, 119, 0, 0, 0, - 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, - 0, 0, 0, 227, 161, 0, 0, 158, 159, 0, - 0, 0, 328, 0, 354, 0, 0, 0, 178, 0, + 0, 0, 0, 0, 0, 224, 157, 0, 0, 0, + 0, 236, 161, 0, 0, 158, 159, 0, 0, 0, + 337, 0, 363, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 231, 232, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 311, 170, 0, - 0, 0, 0, 0, 331, 0, 266, 287, 273, 294, - 274, 295, 275, 296, 0, 366, 365, 361, 314, 0, - 91, 0, 0, 0, 0, 99, 0, 0, 0, 355, - 64, 0, 116, 122, 0, 124, 0, 0, 120, 0, - 121, 141, 0, 0, 338, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, - 0, 0, 0, 150, 0, 191, 0, 200, 0, 209, - 0, 0, 0, 0, 0, 0, 127, 128, 0, 0, + 0, 240, 241, 242, 243, 244, 0, 0, 0, 0, + 0, 0, 0, 14, 0, 320, 170, 0, 0, 0, + 0, 0, 340, 0, 275, 296, 282, 303, 283, 304, + 284, 305, 0, 375, 374, 370, 323, 0, 91, 0, + 0, 0, 0, 99, 0, 0, 0, 364, 64, 0, + 116, 122, 0, 124, 0, 0, 120, 0, 121, 141, + 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, + 0, 150, 0, 206, 0, 208, 0, 210, 0, 0, + 228, 0, 192, 225, 0, 0, 0, 0, 0, 0, + 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 324, 313, 66, - 0, 73, 0, 0, 0, 0, 0, 75, 0, 0, - 0, 0, 109, 0, 0, 110, 0, 358, 0, 0, - 0, 130, 138, 345, 0, 0, 225, 133, 134, 0, - 0, 0, 223, 226, 140, 117, 132, 139, 142, 0, - 0, 0, 323, 0, 322, 0, 0, 188, 0, 0, - 197, 0, 0, 206, 0, 152, 153, 154, 155, 0, - 0, 328, 0, 0, 0, 0, 0, 352, 0, 180, - 179, 0, 0, 0, 0, 17, 0, 26, 0, 30, - 0, 24, 0, 0, 29, 0, 34, 32, 0, 0, - 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, - 46, 0, 0, 78, 0, 0, 0, 332, 0, 0, - 0, 0, 100, 105, 107, 0, 113, 0, 0, 123, - 125, 346, 0, 222, 221, 224, 114, 115, 150, 0, - 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 329, 0, 0, 0, 0, 0, 0, 328, 0, + 0, 333, 322, 66, 0, 73, 0, 0, 0, 0, + 0, 75, 0, 0, 0, 0, 109, 0, 0, 110, + 0, 367, 0, 0, 0, 130, 138, 354, 0, 0, + 234, 133, 134, 0, 0, 0, 232, 235, 140, 117, + 132, 139, 142, 0, 0, 0, 332, 0, 331, 0, + 0, 197, 0, 0, 198, 0, 0, 199, 0, 0, + 0, 0, 152, 153, 154, 155, 0, 0, 337, 0, + 0, 0, 0, 0, 361, 0, 180, 179, 0, 0, + 0, 0, 17, 0, 26, 0, 30, 0, 24, 0, + 0, 29, 0, 34, 32, 0, 0, 0, 0, 0, + 0, 41, 0, 0, 0, 0, 0, 46, 0, 0, + 78, 0, 0, 0, 341, 0, 0, 0, 0, 100, + 105, 107, 0, 113, 0, 0, 123, 125, 355, 0, + 231, 230, 233, 114, 115, 150, 0, 146, 0, 0, + 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, + 339, 338, 0, 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 74, 0, 0, 0, 76, 90, 367, 0, 356, 0, - 0, 0, 0, 321, 0, 0, 0, 0, 0, 0, - 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 351, 181, 0, 31, 0, 0, - 0, 0, 21, 0, 27, 0, 33, 22, 35, 0, - 38, 0, 42, 43, 0, 0, 45, 0, 0, 0, - 0, 0, 0, 111, 0, 0, 144, 0, 0, 193, - 0, 219, 0, 0, 216, 202, 0, 0, 211, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 0, 88, 0, 0, 320, 189, 0, 0, 0, - 192, 198, 0, 0, 201, 207, 0, 0, 210, 118, - 131, 0, 0, 135, 0, 0, 0, 0, 25, 28, - 36, 0, 37, 44, 39, 0, 0, 0, 0, 0, - 0, 0, 195, 0, 0, 204, 0, 213, 0, 0, - 0, 0, 0, 0, 0, 0, 79, 0, 86, 0, - 0, 0, 190, 0, 0, 0, 199, 0, 0, 208, - 0, 0, 0, 0, 0, 20, 23, 0, 0, 0, - 80, 0, 176, 0, 0, 0, 0, 0, 0, 0, + 74, 0, 0, 0, 76, 90, 376, 0, 365, 0, + 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, + 0, 360, 181, 0, 31, 0, 0, 0, 0, 21, + 0, 27, 0, 33, 22, 35, 0, 38, 0, 42, + 43, 0, 0, 45, 0, 0, 0, 0, 0, 0, + 111, 0, 0, 144, 0, 212, 0, 0, 214, 0, + 0, 216, 0, 0, 189, 0, 150, 0, 0, 0, + 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, + 88, 0, 0, 329, 200, 0, 0, 207, 201, 0, + 0, 209, 202, 0, 0, 211, 0, 195, 0, 227, + 118, 131, 0, 0, 135, 0, 0, 0, 0, 25, + 28, 36, 0, 37, 44, 39, 0, 0, 0, 0, + 0, 0, 0, 218, 0, 220, 0, 222, 194, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 194, 0, 0, 218, 203, 0, 212, 0, - 0, 0, 0, 0, 40, 16, 81, 83, 0, 84, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 196, 217, 205, 214, 0, 0, 0, 0, 85, + 79, 0, 86, 0, 0, 0, 203, 0, 0, 204, + 0, 0, 205, 0, 0, 226, 0, 0, 0, 0, + 20, 23, 0, 0, 0, 80, 0, 176, 0, 0, + 0, 0, 0, 0, 0, 196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 213, 0, 215, 0, + 217, 0, 0, 0, 0, 0, 40, 16, 81, 83, + 0, 84, 126, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 219, 221, 223, 0, 0, 0, 0, 85, 87, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 136, 0, 18, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0 }; -static const short yydefgoto[] = { 1504, - 2, 14, 15, 16, 17, 3, 67, 68, 69, 445, - 1071, 1077, 643, 814, 1240, 1420, 644, 1378, 1459, 645, - 1422, 646, 647, 818, 141, 251, 70, 575, 346, 561, - 562, 347, 74, 75, 76, 77, 78, 348, 1119, 1348, - 1404, 1122, 1353, 1408, 1125, 1357, 1411, 1262, 1263, 80, - 81, 939, 349, 144, 366, 178, 246, 438, 1032, 954, - 955, 351, 500, 202, 711, 848, 145 +static const short yydefgoto[] = { 1534, + 2, 14, 15, 16, 17, 3, 67, 68, 69, 452, + 1095, 1101, 653, 827, 1270, 1455, 654, 1409, 1491, 655, + 1457, 656, 657, 831, 141, 253, 70, 585, 348, 568, + 569, 349, 74, 75, 76, 77, 78, 350, 767, 1346, + 1421, 1143, 1146, 1149, 1376, 1380, 1384, 1438, 1441, 1444, + 905, 906, 80, 81, 957, 351, 144, 368, 178, 248, + 445, 1056, 972, 973, 353, 507, 204, 721, 861, 145 }; -static const short yypact[] = { 2410, - 53, 531, 2559,-32768, 36, 64, 73, 88, 92, 104, - -57, -28, -4,-32768,-32768,-32768,-32768, 1785, 18, 3, - 136, 51, 116, 140, -23, 124, 157, 172, 229, 178, - 242, 311, 329, 169, 383, 183, 212, 282, -77, -77, - 285, 288, 14, 426, 17, 468, 491, 185, 474, 497, - 500, 342, 347, -11, 21, 25,-32768, 356,-32768, 546, --32768, 558, 567, 553, 15, 28,-32768,-32768,-32768,-32768, +static const short yypact[] = { 2531, + 37, 43, 2680,-32768, 50, 76, 91, 106, 115, 131, + -66, -25, -15,-32768,-32768,-32768,-32768, 1768, 5, 9, + 185, 42, 54, 58, -19, 145, 109, 125, 171, 153, + 179, 235, 295, 27, 302, 458, 191, 194, -96, -96, + 224, 396, 1, 367, 13, 414, 441, 102, 461, 478, + 489, 334, 364, -22, 16, 31,-32768, 369,-32768, 543, +-32768, 558, 562, 537, 19, 26,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 2439,-32768,-32768,-32768,-32768,-32768, 430, 430, 607, --32768, 510, 23,-32768,-32768,-32768,-32768, 110, 190, 206, - 274, 277, 283, 299, 324, 350, 355, 370, 381, 384, - 389, 393, 398, 439, 449, 450, 472, 489, 442, 445, - 453, 462,-32768, 490,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 1888, 1888, 1888,-32768,-32768, 1888, 387, 65, 690, - 1888, 667, 648,-32768, 692, 704,-32768, 1888,-32768, 1888, - 1888, 1888, 544, 1888, 548, 1888, 1888, 1370, 1888, 556, - 572, 596, 1370, 562, 597, 617, 625, 626, 632, 642, - 763, -77, -77, -77, 1888, 1888, -63,-32768, 204, -77, - 645, 646, 663, 654,-32768, 1370, 34,-32768,-32768,-32768, - 1370, 1370, 684, 685, 856, 1888, 1888, -50, 1888, 694, - 1888, 682, 791, 1888, 1888,-32768, 877,-32768, 710,-32768, --32768, 879,-32768, 880, 717, 718, 719, 721, 722, 723, - 724, 725, 726, 727, 728, 729, 730, 731, 732, 740, - 750, 751, 752, 753, 754, 757, 761, 762, 765, 766, - 767, 768, 769, 770, 889, 773, 755, 775, 1888, 933, --32768, -77,-32768, 1888, 1888, 1888, 1888, 1888, 1888, 1888, - 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, - 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, - 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, - 1888, 1888, 1888, 1888, 1888, 91, 313, 313, 313, 940, - 593, 774, 774, 774, 4767, 941, 1820, 4017, 344, 771, - 943, 780, 714,-32768,-32768, 1888, 1888, 1888, 1888, 1888, - 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, --32768, -99, 3071, 4790, 4813, 4836, 1888, 4859, 1888, 4882, - 4905, 618, 800, 1500, 1820,-32768,-32768,-32768, 1193, 978, --32768, 4928, 1888, 1888, 1888, 979, 1888, 1888, 1888, 1888, - 1888, 1888, 1888, 812, 191,-32768,-32768, 3093, 3115, -77, - -77, 479, 479, 257, 1888, 1888, 1888, 1888, 2199, 643, - 982,-32768, 1888, 2220, 983, 984, 1888, 1888,-32768, 4951, - 4974, 903, 1888, 4997, 905, 3137,-32768, 815, 1945, 5020, --32768, 1888, 2265,-32768, 2286,-32768, 993, 996, 997, 998, - 999, 1000, 1001, 1004, 1005, 1006, 1007, 1008, 1012, 1015, - 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 873, - 1027, 1028, 1029, 1030, 1033, 1032,-32768, -9, 1036, 1038, - 1042, 4042, 513, 259, 6, 5043, 4067, 5066, 4092, 5089, - 4117, 5112, 4142, 5135, 4167, 5158, 4192, 5181, 4217, 5204, - 4242, 5227, 4267, 5250, 4292, 5273, 4317, 3159, 3181, 5296, - 4342, 5319, 4367, 5342, 4392, 5365, 4417, 5388, 4442, 5411, - 4467, 3203, 3225, 3247, 3269, 3291, 3313, 498, 113, 868, - 882, 883, 874, 1888,-32768, 1370, 2060, 1193,-32768, 507, - 451, 313, 1888, 1053, 1056, 24, 884,-32768, 1972, 592, - 540, 569, 569, 444, 444, 444, 444, 222, 222, 774, - 774, 774, 774, 1058, 1820, 1888, 1059, 1060, 1065, 5434, - 1066, 5457, 1067, 1069, 948, 1888, 647, 1820, 534, 1888, - 1888, 1077, 2591, 5480, 5503, 1888, 2615, 2639, 5526, 5549, - 5572, 5595, 5618, 887, -77, 1888, 1888,-32768,-32768,-32768, - 912, 2620,-32768, 913, 1888, 3335, 3357, 3379, 4492, -29, - -37, -20, -25,-32768,-32768,-32768, 1888,-32768, 4517,-32768, - 916, 917, 4542, 4567, 1093, 1094, 928, 5641, 1096, 930, - 1888, 2345, 1888, 1888,-32768, 5664,-32768,-32768, 924, 929, - 934, 935, 936, 938, 944, 946, 951, 955, 956, 957, - 958, 959, 960, 961, 963, 964, 968, 969, 980, 981, - 988, 1002, 1009, 1013, 1014, 1026, 1031, 1034,-32768, 1105, - 945,-32768, 1035, 37,-32768,-32768,-32768, 939, 949, 947, --32768, 1152,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 2560,-32768,-32768,-32768,-32768,-32768, 413, 413, 448, +-32768, 280, 17,-32768,-32768,-32768,-32768, -125, -45, 182, + 270, 352, 387, 447, 453, 482, 493, 499, 510, 514, + 517, 526, 530, 541, 549, 550, 585, 586, 418, 428, + 433, 457,-32768, 472,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 2013, 2013, 2013,-32768,-32768, 2013, 1445, 141, 571, + 2013, 629, 825,-32768, 643, 655,-32768, 2013,-32768, 2013, + 2013, 2013, 487, 2013, 492, 2013, 2013, 1272, 2013, 471, + 500, 513, 1272, 520, 531, 533, 545, 556, 557, 566, + 690, -96, -96, -96, 2013, 2013, -87,-32768, -57, -96, + 569, 575, 583, 1665, -53, 591,-32768, 1272, 28,-32768, +-32768,-32768, 1272, 1272, 608, 625, 765, 2013, 2013, -48, + 2013, 624, 2013, 640, 716, 2013, 2013,-32768, 829,-32768, + 671,-32768,-32768, 847,-32768, 851, 686, 694, 702, 711, + 731, 736, 737, 738, 739, 740, 741, 742, 743, 744, + 745, 747, 748, 749, 750, 752, 753, 758, 759, 760, + 761, 762, 763, 764, 766, 767, 859, 695, 770, 768, + 2013, 861,-32768, -96,-32768, 2013, 2013, 2013, 2013, 2013, + 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, + 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, + 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, + 2013, 2013, 2013, 2013, 2013, 2013, 2013, 381, 476, 476, + 476, 934, 463, 769, 769, 769, 4946, 939, 1945, 4196, + 278, 771, 943, 777, 860,-32768,-32768, 2013, 2013, 2013, + 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, + 2013, 2013,-32768, -80, 3250, 4969, 4992, 5015, 2013, 5038, + 2013, 5061, 5084, 477, 773, 1721, 1945,-32768,-32768,-32768, + 1828, 948,-32768, 5107, 2013, 2013, 2013, 950, 2013, 2013, + 2013, 2013, 2013, 2013, 2013, 783, 155,-32768,-32768, 3272, + 3294, -96, -96, 647, 647, 327, 2013, 2013, 2013, 1665, + 1665, 2013, 337,-32768, 2013, 848, 169, 953,-32768, 2013, + 2236, 954, 955, 2013, 2013,-32768, 5130, 5153, 874, 2013, + 5176, 875, 3316,-32768, 784, 1937, 5199,-32768, 2013, 2257, +-32768, 2305,-32768, 961, 964, 965, 966, 968, 969, 970, + 971, 972, 978, 988, 989, 990, 991, 992, 994, 998, + 999, 1000, 1001, 1002, 1003, 1006, 870, 1013, 1023, 1024, + 1029, 1032, 1034,-32768, 39, 1035, 1031, 1036, 4221, 217, + -16, 10, 5222, 4246, 5245, 4271, 5268, 4296, 5291, 4321, + 5314, 4346, 5337, 4371, 5360, 4396, 5383, 4421, 5406, 4446, + 5429, 4471, 5452, 4496, 3338, 3360, 5475, 4521, 5498, 4546, + 5521, 4571, 5544, 4596, 5567, 4621, 5590, 4646, 3382, 3404, + 3426, 3448, 3470, 3492, 379, 150, 787, 867, 872, 868, + 2013,-32768, 1272, 2220, 1828,-32768, 590, 219, 476, 2013, + 1043, 1046, 18, 876,-32768, 1972, 449, 1014, 582, 582, + 685, 685, 685, 685, 258, 258, 769, 769, 769, 769, + 1045, 1945, 2013, 1047, 1049, 1050, 5613, 1051, 5636, 1052, + 1053, 1486, 2013, 494, 1945, 595, 2013, 2013, 1054, 2043, + 5659, 5682, 2013, 2481, 2742, 5705, 5728, 5751, 5774, 5797, + 887, -96, 2013, 2013,-32768,-32768,-32768, 884, 2741,-32768, + 885, 2013, 3514, 3536, 3558, 3222, -96, 2326, 4671, -21, + -39, -37, 29,-32768,-32768,-32768, 2013,-32768, 4696,-32768, + 871, 889, 4721, 4746, 1061, 1064, 898, 5820, 1068, 899, + 2013, 2385, 2013, 2013,-32768, 5843,-32768,-32768, 901, 903, + 904, 905, 906, 907, 909, 910, 911, 913, 914, 916, + 917, 918, 919, 920, 921, 923, 924, 925, 926, 928, + 929, 930, 931, 932, 933, 951, 952, 956,-32768, 1109, + 959,-32768, 957, 317,-32768,-32768,-32768, 967, 980, 949, +-32768, 1132,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1888, - 1888,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1888, 1888, 1888, 1888, 1888, 1888, 1888, - 1155,-32768, 1820, 313,-32768,-32768, 1888, 4592, 1172, 1820, - 1003, 76, 1888, 1173, 1175, 756,-32768, 1178, 1011, 21, - 1186,-32768, 1888,-32768, 145, 3401, -77, 1370, 1370, 1188, - 1370, 1190, 1370, 1370,-32768, 1820, 2663, 1240, 535,-32768, - 2022, 926, 1037, 1191, 1195, 1198, 478, 1200, 1201, 1202, - 1203, 1206, 1209, 1212, 1196, 272, 3423, 3445,-32768,-32768, - 2687, -77, -77, -77, 1215, 1820, 1820, 1820, 1820, 1010, - 1216, 1888, 1888, 1217, 1220, 1370, 1370, 1888, 1221, 1370, - 1223, 3467,-32768, 2037, 620, 1222, 1227, 1888, 1888, -77, - 1228, 1230, 1071, 1231, 1237, 1370, 1370, 1238, -77, 1239, - 1242, 1370, 1370, 1244, 1245, 1270, 1271, 1272, 1370, 483, - 1370, 1273, 1287, 1289, 1292, 1293,-32768, 1294, 430, 1297, --32768, 1298, 12, 1129, 1888, 1888, 1370, 1117,-32768, 5687, - 4617, 5710, 4642, 5733, 4667, 5756, 4692, 4717, 1130, 203, - 1131, 5779, -49,-32768, 1193,-32768, 68, 541, 1132, 1300, - 1124,-32768,-32768,-32768, 21, 1888,-32768, 539,-32768, 2359, - 1302, 1888, 11, 50, 54, 1370, 1305, 1370, 1306, 1307, - 586,-32768,-32768, 1820,-32768, 1888,-32768, 1888, 1370, 1370, - 1370,-32768, 619, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 720, 1888, 1888, 1888, 1133, -71, 133, 199,-32768, 610, - 640, 649, 653,-32768,-32768, 3489, 3511,-32768,-32768, 1309, - 1311, 5802, 142, 1232,-32768, 1888, 1888, 1888,-32768, 1137, - 1140, 3533, 3555, -118, 1141, 1147, 1143, 1150, 1148, 1154, - 1151, 1153, -97, 1156, 1157, 1162, 1159, 1161, 1181, 1182, - 1183, 1184, 1192,-32768,-32768,-32768,-32768,-32768, 1185, 1189, - 1225, 1235, 1243, 1233, 1246,-32768, 1247, 513,-32768, 1321, - 1888, 3577, 3599, 656,-32768, 1888,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 1229,-32768,-32768,-32768,-32768, 1370, - 313, 1888, 1324, 1367, 24,-32768, 1372, 4742, 21,-32768, --32768, 3621,-32768,-32768, -77,-32768, -77, 1404,-32768, 1406, --32768,-32768, 1199, 657, 2359, 3643, 1412, 1414, 1416, 1888, - 1888, 836, 1418, 1419, 1422, 1423, 1424, 1431,-32768, 1992, - 2711, 5825, 1987, 479, -77, 1432, -77, 1433, -77, 1434, - 1435, 1436, 1437, 1440, 1888, 1888,-32768,-32768, 1443, 1370, - 1370, 1360, 1370, 2524, 424, 5848, 1888, 1448, 1888, 1370, - 1446, 1450, 1449, 1291, 1451, 483, 1452, 1456, 1888, 1454, - 1458, 1457, 1459, 1463, 483, 1888, 1888, 1888, 1370, 1461, - 1465, 483, 1888, 1466, 1467, 1470, 1888, 430,-32768,-32768, - 253, 2359, 1888, 1888, 1370, 1281, 661, 2359, 1473, 1472, - 1474, 1407,-32768, 1447, 1475,-32768, 1301,-32768, 1888, 26, - 48,-32768,-32768,-32768, 1308, 1888,-32768,-32768,-32768, 1529, - 1569, 1476,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1703, - 1477, 1290,-32768, 1888,-32768, 1304, 292,-32768, 1303, 297, --32768, 1310, 301,-32768, 1313,-32768,-32768,-32768,-32768, 3665, - 3687, 142, 266, 665, 1314, 1403, 1888,-32768, 1888,-32768, --32768, 3709, 1315, 3731, 1312,-32768, 1316,-32768, 1317,-32768, - 1323,-32768, 1319, 5871,-32768, 1320,-32768,-32768, 1326, 1327, - 5894, 3753, 5917, 1325,-32768, 1331, 1332, 3775, 1356, 1362, --32768, 3797, 1358,-32768, 1888, 3819, 3841,-32768, 1370, 1888, - 1482, 1365,-32768,-32768,-32768, 21,-32768, 1453, 3863,-32768, --32768,-32768, 3885,-32768,-32768,-32768,-32768,-32768, 479, 2561, --32768, 1612, 75, 1612, 75, 1612, 75, 1888, 1888, 1460, --32768,-32768, 1370, 1888, 2735, 2759, 1370, 1535, 142, 483, - 1540, 1888, 1539, 483, 1542, 1543, 1544, 1546, 1547, 1888, - 1548, 1370, 1550, 1552, 1888, 1562, 1570, 1888, 1572, 1397, - 2359, 1888, 1888, 669, 2359,-32768,-32768, 1573,-32768, 1888, - 1576, 1400, 1888,-32768, 1612, 1612, 1888, 2783, 306, 1577, - 1405, -42,-32768, 2807, 319, -32, 2831, 339, -15, 2855, - 2879, 1409, 1408, 1812,-32768,-32768, 1402,-32768, 1411, 1413, - 1415, 3907,-32768, 1410,-32768, 1417,-32768,-32768,-32768, 5940, --32768, 1426,-32768,-32768, 5963, 1421,-32768, 5986, 1427, 1888, - 6009, 3929, 1581,-32768, 3951, 1428,-32768, 2903, 2052, 1588, - 1888,-32768, 1370, 1591,-32768, 1592, 1888, 1593, 1604, 1888, - 1605, 1606, 1607, 1370, 1370,-32768, 1608, 483, 483, 483, - 483, 1611, 1613, 1614, 483, 1639, 1640, 1641, 1643, 672, --32768, 1888,-32768, 1888, 1644,-32768,-32768, 1469, 2927, 1438, --32768,-32768, 1471, 2951,-32768,-32768, 1478, 2975,-32768,-32768, --32768, 1481, 1480,-32768, 1486, 1487, 1479, 1483,-32768,-32768, --32768, 1488,-32768,-32768,-32768, 1490, 1645, 1491, 6032, 2999, - 1493, 75, 1647, 1370, 75, 1649, 75, 1650, 1370, 1587, - 483, 483, 1651, 1669, 483, 1671,-32768, 313,-32768, 1672, - 1675, 39,-32768, 1496, 673, 40,-32768, 1506, 100,-32768, - 1516, 1517, 1519, 1518, 1521,-32768,-32768, 1530, 1531, 676, --32768, 1523,-32768, 1525, 1702, 75, 1370, 1704, 1705, 75, - 1707, 75, 1634, 1888, 483, 1370, 1713, 1714, 313, 1715, - 313, 1721,-32768, 109, 1555,-32768,-32768, 112,-32768, 249, - 1557, 3973, 1559, 1560,-32768,-32768,-32768,-32768, 677,-32768, --32768, 1735, 1737, 1738, 1740, 1888, 1888, 483, 1370, 313, - 1741,-32768,-32768,-32768,-32768, 3995, 3023, 1568, 1571,-32768, --32768, 1888, 1743, 1370, 483, 3047,-32768, 1574, 1575, 1746, - 1370, 1747,-32768, 1578,-32768, 1370, 1579, 1370, 1582, 483, - 1580, 1750,-32768, 1757, 1761,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2013, + 2013,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 2013, 2013, 2013, 2013, 2013, 2013, 2013, + 1135,-32768, 1945, 476,-32768,-32768, 2013, 4771, 1134, 1945, + 987, 285, 2013, 1136, 1137, 962,-32768, 1138, 1007, 16, + 1159,-32768, 2013,-32768, 151, 3580, -96, 1272, 1272, 1160, + 1272, 1161, 1272, 1272,-32768, 1945, 2766, 1542, 596,-32768, + 2005, 996, 963, 1165, 1175, 1178, 626, 1179, 1181, 1183, + 1184, 1185, 1187, 1188, 1162, 359, 3602, 3624,-32768,-32768, + 2790, -96, -96, -96, 368,-32768, 282, 1190, 1945, 1945, + 1945, 1945, 1225, 1193, 2013, 2013, 1194, 1195, 1272, 1272, + 2013, 1196, 1272, 1198, 3646,-32768, 2103, 663, 1197, 1202, + 2013, 2013, -96, 1203, 1204, 1044, 1205, 1207, 1272, 1272, + 1209, -96, 1211, 1213, 1272, 1272, 1214, 1215, 1216, 1219, + 1220, 1272, 486, 1272, 1221, 1222, 1223, 1226, 1230,-32768, + 1229, 413, 1232,-32768, 1231, 14, 1065, 2013, 2013, 1272, + 1057,-32768, 5866, 4796, 5889, 4821, 5912, 4846, 5935, 4871, + 4896, 1066, 228, 1069, 5958, 366,-32768, 1828,-32768, 12, + 326, 1062, 1218, 1240,-32768,-32768,-32768, 16, 2013,-32768, + 614,-32768, 6234, 1237, 2013, 23, 21, 46, 1272, 1239, + 1272, 1242, 1243, 615,-32768,-32768, 1945,-32768, 2013,-32768, + 2013, 1272, 1272, 1272,-32768, 475, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 636, 2013, 2013, 2013, 1070, 220, 229, + 275, 1665, 1246, 1072, -32,-32768,-32768, 618, 632, 633, + 660,-32768,-32768, 3668, 3690,-32768,-32768, 1250, 1251, 5981, + 143, 1171,-32768, 2013, 2013, 2013,-32768, 1079, 1081, 3712, + 3734, 231, 1083, 1089, 1086, 1094, 1091, 1098, 1097, 1099, + 279, 1100, 1103, 1130, 1126, 1127, 1128, 1131, 1140, 1141, + 1139,-32768,-32768,-32768,-32768,-32768, 1143, 1144, 1146, 1147, + 1148, 1142, 1149,-32768, 1150, 217,-32768, 1304, 2013, 3756, + 3778, 664,-32768, 2013,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1153,-32768,-32768,-32768,-32768, 1272, 476, 2013, + 1306, 1312, 18,-32768, 1326, 4921, 16,-32768,-32768, 3800, +-32768,-32768, -96,-32768, -96, 1333,-32768, 1334,-32768,-32768, + 1164, 674, 6234, 3822, 1336, 1337, 1338, 2013, 2013, 802, + 1342, 1343, 1344, 1345, 1347, 1349,-32768, 2048, 2814, 6004, + 2645, 647, -96, 1350, -96, 1351, -96, 1352, 2838, 378, +-32768, 1272,-32768,-32768, 1354, 1355, 1356, 1357, 2013, 2013, +-32768,-32768, 1311, 1272, 1272, 1277, 1272, 2682, 307, 6027, + 2013, 1362, 2013, 1272, 1361, 1367, 1363, 1245, 1377, 486, + 1402, 1409, 2013, 1413, 1426, 1424, 1425, 1429, 486, 2013, + 2013, 2013, 1272, 1427, 1435, 486, 2013, 1436, 1437, 1438, + 2013, 413,-32768,-32768, 304, 6234, 2013, 2013, 1272, 1262, + 687, 6234, 1443, 1446, 1472, 1261,-32768, 1476, 1478,-32768, + 1264,-32768, 2013, 38, 59,-32768,-32768,-32768, 1305, 2013, +-32768,-32768,-32768, 1366, 1439, 1479,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 1475, 1480, 1307,-32768, 2013,-32768, 1309, + 401,-32768, 1353, 404,-32768, 1359, 408,-32768, 1360, 1394, + 2013, 1313,-32768,-32768,-32768,-32768, 3844, 3866, 143, 329, + 691, 1395, 1403, 2013,-32768, 2013,-32768,-32768, 3888, 1317, + 3910, 1358,-32768, 1364,-32768, 1397,-32768, 1368,-32768, 1398, + 6050,-32768, 1399,-32768,-32768, 1405, 1406, 6073, 3932, 6096, + 1404,-32768, 1407, 1408, 3954, 1417, 1410,-32768, 3976, 1430, +-32768, 2013, 3998, 4020,-32768, 1272, 2013, 1518, 1411,-32768, +-32768,-32768, 16,-32768, 1447, 4042,-32768,-32768,-32768, 4064, +-32768,-32768,-32768,-32768,-32768, 647, 2712,-32768, 1665, 282, + 1665, 282, 1665, 282,-32768, 2862, 1272, 2013, 2013, 1448, +-32768,-32768, 1272, 2013, 2886, 2910, 1272, 1531, 143, 486, + 1539, 2013, 1581, 486, 1601, 1608, 1607, 1609, 1610, 2013, + 1611, 1272, 1612, 1614, 2013, 1618, 1617, 2013, 1620, 1452, + 6234, 2013, 2013, 692, 6234,-32768,-32768, 1621,-32768, 2013, + 1638, 1469, 2013,-32768, 2934, 437, -28, 2958, 456, -26, + 2982, 474, -4, 2408, 1471, 700, 3006, 3030, 1473, 1477, + 1694,-32768,-32768, 1474,-32768, 1481, 1482, 1484, 4086,-32768, + 1483,-32768, 1491,-32768,-32768,-32768, 6119,-32768, 1490,-32768, +-32768, 6142, 1496,-32768, 6165, 1492, 2013, 6188, 4108, 1647, +-32768, 4130, 1493,-32768, 3054, 1653, 2013, 1692, 1693, 2013, + 1695, 1696, 2013, 1697,-32768, 282,-32768, 1272, 1698, 1701, + 1702, 1272, 1272,-32768, 1703, 486, 486, 486, 486, 1704, + 1706, 1707, 486, 1708, 1709, 1711, 1713, 701,-32768, 2013, +-32768, 2013, 1715,-32768,-32768, 1541, 3078,-32768,-32768, 1545, + 3102,-32768,-32768, 1546, 3126,-32768, 2, 2469, 1547,-32768, +-32768,-32768, 1548, 1572,-32768, 1575, 1576, 1582, 1583,-32768, +-32768,-32768, 1579,-32768,-32768,-32768, 1580, 1755, 1584, 6211, + 3150, 1586, 282, 1756, 282, 1757, 282, 1758,-32768,-32768, + 282, 1770, 1272, 1690, 486, 486, 1795, 1800, 486, 1802, +-32768, 476,-32768, 1803, 1805, 11,-32768, 1630, 36,-32768, + 1631, 45,-32768, 1632, 49,-32768, 1633, 1635, 1634, 1637, +-32768,-32768, 1643, 1644, 706,-32768, 1639,-32768, 1640, 1815, + 282, 1821, 282, 1824, 282,-32768, 1747, 2013, 486, 1272, + 1826, 1827, 476, 1829, 476, 1831,-32768, 138,-32768, 214, +-32768, 225, 1657, 4152, 1660, 1661,-32768,-32768,-32768,-32768, + 717,-32768,-32768, 1836, 1837, 1839, 2013, 2013, 486, 1272, + 476, 1846,-32768,-32768,-32768, 4174, 3174, 1682, 1683,-32768, +-32768, 2013, 1858, 1272, 486, 3198,-32768, 1685, 1691, 1862, + 1272, 1863,-32768, 1699,-32768, 1272, 1700, 1272, 1712, 486, + 1714, 1868,-32768, 1875, 1876,-32768 }; static const short yypgoto[] = {-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1127, --32768, 464,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, -301, -14,-32768, 1762, 0, -367, - -174, 4,-32768,-32768,-32768,-32768,-32768, 1763,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, -1102, -1247,-32768, --32768, -886, -18,-32768, 353,-32768, -84,-32768, -1084, -1007, - 276, -246, -332, -698, 793,-32768, -64 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1235, +-32768, 551,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, -299, -14,-32768, 1874, 4, -364, + -88, 6,-32768,-32768,-32768,-32768,-32768, 1879,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -1129, -889,-32768,-32768, -660, -18,-32768, 41,-32768, -83, +-32768, -1109, -1029, -155, -251, -337, -707, 890,-32768, -64 }; -#define YYLAST 6207 +#define YYLAST 6407 static const short yytable[] = { 143, - 212, 214, 72, 142, 247, 564, 73, 503, 147, 637, - 379, 847, 539, 384, 1315, 637, 983, 184, 1315, 210, - 187, 1315, 1133, 1134, 200, 1260, 252, 709, 203, 153, - 1261, 1190, 210, 198, 392, 1260, 403, 381, 405, 382, - 1261, 210, 82, 153, 370, 371, 155, 1210, 119, 120, - 121, 122, 1260, 1191, 123, 984, 1041, 1261, 4, 986, - 499, 119, 120, 121, 122, 370, 371, 123, 309, 83, - 119, 120, 121, 122, 94, 524, 123, 1050, 84, 838, - 525, 638, 639, 640, 641, 173, 174, 638, 639, 640, - 641, 370, 371, 85, 488, 210, 175, 86, 499, 370, - 371, 985, 1266, 176, 1269, 987, 1260, 1260, 1015, 87, - 1016, 1261, 1261, 302, 303, 304, 88, 372, 305, 308, - 135, 136, 313, 393, 119, 120, 121, 122, 810, 333, - 123, 334, 335, 336, 1279, 338, 154, 340, 341, 1314, - 352, 149, 1260, 757, 150, 89, 977, 1261, 157, 1318, - 154, 756, 310, 311, 1315, 759, 368, 369, 1315, 1151, - 758, 1315, 199, 839, 840, 629, 1321, 1260, 1160, 90, - 630, 1244, 1261, 370, 371, 1167, 1260, 390, 391, 1260, - 394, 1261, 396, 148, 1261, 399, 400, 642, 370, 371, - 155, 146, 715, 950, 185, 211, 1315, 188, 204, 703, - 1315, 201, 1315, 253, 710, 729, 135, 136, 213, 383, - 370, 371, 163, 164, 810, 165, 128, 129, 130, 131, - 1425, 1429, 592, 167, 150, 191, 168, 169, 192, 170, - 442, 489, 490, 491, 492, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 486, 487, 158, 499, 1402, - 1088, 1431, 1406, 254, 1409, 255, 160, 692, 498, 151, - 1462, 499, 693, 1464, 504, 370, 371, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, - 522, 523, 1017, 152, 1018, 1030, 1260, 210, 530, 851, - 532, 1261, 1031, 1444, 700, 303, 498, 1448, 181, 1450, - 156, 182, 183, 1280, 543, 544, 545, 1284, 547, 548, - 549, 550, 551, 552, 553, 157, 119, 120, 121, 122, - 502, 159, 123, 370, 371, 161, 566, 567, 568, 569, - 830, 370, 371, 256, 579, 257, 370, 371, 583, 584, - 555, 560, 560, 162, 588, 563, 563, 967, 1019, 258, - 1020, 259, 700, 596, 373, 171, 327, 328, 329, 91, - 301, 177, 179, 861, 330, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 370, - 371, 370, 371, 890, 891, 892, 893, 1174, 635, 166, - 1465, 1139, 1175, 350, 370, 371, 565, 705, 356, 636, - 1211, 1365, 1366, 1367, 1368, 1075, 499, 260, 1372, 261, - 262, 882, 263, 836, 370, 371, 264, 94, 265, 370, - 371, 380, 172, 370, 371, 180, 385, 386, 370, 371, - 186, 1202, 266, 189, 267, 698, 1204, 193, 303, 499, - 1206, 370, 371, 872, 706, 1311, 704, 1248, 124, 125, - 126, 127, 128, 129, 130, 131, 190, 268, 1317, 269, - 194, 370, 371, 195, 1414, 1415, 498, 716, 1418, 499, - 499, 499, 499, 135, 136, 196, 698, 727, 1320, 498, - 197, 731, 732, 270, 365, 271, 367, 737, 272, 205, - 273, 994, 374, 5, 873, 970, 972, 747, 748, 38, - 39, 40, 41, 274, 43, 275, 751, 971, 1453, 132, - 133, 206, 49, 50, 276, 134, 277, 278, 760, 279, - 137, 207, 280, 306, 281, 140, 282, 307, 283, 812, - 208, 284, 772, 285, 774, 775, 316, 317, 318, 319, - 320, 1478, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 934, 935, 936, 937, 938, 330, 209, 1489, 128, - 129, 130, 131, 245, 444, 1140, 325, 326, 327, 328, - 329, 248, 286, 1501, 287, 296, 330, 499, 297, 811, - 135, 136, 288, 290, 289, 291, 298, 908, 702, 831, - 316, 317, 318, 319, 320, 299, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 292, 1116, 293, 576, 577, - 330, 820, 821, 315, 6, 7, 8, 9, 10, 11, - 12, 13, 294, 300, 295, 822, 823, 824, 825, 826, - 827, 828, 314, 690, 498, 691, 1000, 1001, 832, 135, - 136, 835, 135, 136, 841, 249, 700, 250, 701, 128, - 129, 130, 131, 312, 850, 319, 320, 331, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 498, 332, 698, - 135, 136, 330, 700, 700, 730, 865, 337, 979, 508, - 980, 339, 558, 559, 947, 1009, 1010, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 353, 498, 498, 498, - 498, 330, 357, 896, 897, 354, 318, 319, 320, 902, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 912, - 913, 844, 135, 136, 330, 700, 364, 993, 494, 355, - 250, 699, 316, 317, 318, 319, 320, 358, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 135, 136, 700, - 359, 1021, 330, 535, 909, 250, 952, 953, 360, 361, - 316, 317, 318, 319, 320, 362, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 363, 135, 136, 811, 700, - 330, 1022, 728, 973, 250, 375, 376, 978, 700, 378, - 1023, 1252, 700, 982, 1024, 1075, 700, 1076, 1095, 1102, - 1180, 1103, 1181, 377, 1075, 498, 1212, 995, 1075, 996, - 1303, 1180, 1427, 1377, 1428, 1439, 1470, 1440, 1471, 387, - 388, 389, 397, 1011, 1012, 1013, 316, 317, 318, 319, - 320, 395, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 398, 401, 402, 404, 406, 330, 1034, 1035, 1036, - 407, 408, 409, 437, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 1081, 746, 316, 317, - 318, 319, 320, 422, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 423, 424, 425, 426, 427, 330, 440, - 428, 867, 1072, 1069, 429, 430, 443, 1078, 431, 432, - 433, 434, 435, 436, 493, 1111, 330, 496, 505, 506, - 91, 301, 439, 1082, 441, 507, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 536, 1100, 1101, 1173, 541, 546, 554, 578, 587, 581, - 582, 1110, 590, 854, 855, 593, 857, 599, 859, 860, - 600, 601, 602, 603, 604, 605, 1130, 1131, 606, 607, - 608, 609, 610, 560, 622, 894, 611, 563, 1142, 612, - 1144, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 1154, 623, 624, 625, 626, 627, 628, 1161, 1162, 1163, - 631, 900, 901, 632, 1168, 904, 633, 694, 1172, 124, - 125, 126, 127, 697, 1176, 1177, 695, 696, 707, 708, - 712, 920, 921, 714, 745, 717, 718, 926, 927, 853, - 1189, 719, 721, 723, 933, 724, 940, 1193, 316, 317, - 318, 319, 320, 733, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 749, 750, 1200, 762, 763, 330, 766, - 767, 768, 770, 777, 886, 887, 888, 771, 778, 807, - 132, 133, 815, 779, 780, 781, 134, 782, 1215, 808, - 1216, 137, 816, 783, 725, 784, 140, 817, 726, 976, - 785, 988, 914, 990, 786, 787, 788, 789, 790, 791, - 792, 923, 793, 794, 997, 998, 999, 795, 796, 1002, - 1003, 1004, 1005, 1006, 1007, 1008, 1241, 819, 829, 797, - 798, 1245, 316, 317, 318, 319, 320, 799, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 834, 842, 837, - 843, 800, 330, 1258, 845, 1264, 846, 1267, 801, 1270, - 1271, 849, 802, 803, 856, 1274, 858, 869, 560, 881, - 540, 870, 563, 1282, 871, 804, 874, 875, 876, 877, - 805, 1290, 878, 806, 809, 879, 1295, 868, 880, 1298, - 889, 895, 898, 1301, 1302, 899, 905, 903, 910, 911, - 915, 1305, 916, 918, 1308, 917, 302, 303, 1309, 919, - 922, 924, 91, 301, 925, 1080, 928, 929, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 930, 931, 932, 941, 316, 317, 318, 319, - 320, 1078, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 942, 1349, 943, 944, 945, 330, 956, 1354, 946, - 948, 1358, 951, 949, 966, 968, 975, 981, 1136, 974, - 989, 991, 992, 1014, 1027, 1145, 1028, 1037, 1033, 1038, - 1042, 1043, 1044, 1379, 1045, 1380, 1070, 1046, 1047, 1083, - 1048, 1052, 1049, 1421, 1164, 1051, 1053, 1090, 1054, 1091, - 1055, 124, 125, 126, 127, 316, 317, 318, 319, 320, - 1178, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 1056, 1057, 1058, 1059, 1061, 330, 1060, 1117, 1062, 1120, - 1084, 1123, 91, 342, 1457, 1094, 1460, 1086, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 132, 133, 1063, 1480, 1079, 1066, 134, 1092, - 343, 1093, 1185, 137, 1064, 1452, 863, 1097, 140, 1098, - 864, 1099, 1065, 1104, 1105, 1067, 1068, 1106, 1107, 1108, - 38, 39, 40, 41, 42, 43, 1109, 1118, 1121, 1124, - 1126, 1127, 1128, 49, 50, 1129, 1135, 1476, 1477, 1132, - 1143, 1146, 1147, 1186, 1148, 1149, 1150, 1152, 1153, 1155, - 1156, 1179, 1157, 1486, 1158, 1159, 1165, 1166, 1169, 1170, - 1199, 124, 125, 126, 127, 1171, 1182, 1183, 1188, 1184, - 1187, 1196, 1198, 1203, 1192, 1201, 1214, 1246, 1273, 1218, - 1205, 1220, 1277, 1207, 1213, 1221, 1222, 1223, 1224, 1226, - 1227, 1228, 91, 537, 1232, 1233, 1234, 1292, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 132, 344, 1194, 1236, 1237, 1239, 134, 1247, - 1278, 1249, 1281, 137, 1283, 1286, 1272, 1285, 140, 1287, - 345, 1288, 1289, 1291, 1259, 1293, 1265, 1294, 1268, 316, - 317, 318, 319, 320, 1296, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 1195, 1297, 1299, 1300, 1304, 330, - 1306, 1307, 1312, 1327, 1332, 1313, 1343, 1325, 1350, 1324, - 1328, 1333, 1329, 1347, 1330, 1337, 1351, 1352, 1355, 1362, - 1363, 124, 125, 126, 127, 1335, 1339, 1345, 367, 1356, - 1359, 1360, 1361, 1364, 91, 301, 1369, 1384, 1370, 1371, + 214, 216, 352, 142, 186, 249, 72, 358, 73, 546, + 571, 510, 860, 647, 147, 1044, 189, 647, 94, 202, + 254, 719, 200, 212, 1160, 1161, 1002, 153, 1001, 155, + 212, 388, 387, 389, 205, 903, 399, 392, 393, 903, + 904, 903, 4, 1217, 904, 5, 904, 153, 256, 1240, + 257, 1004, 119, 120, 121, 122, 82, 506, 123, 119, + 120, 121, 122, 903, 1218, 123, 173, 174, 904, 903, + 163, 164, 1003, 165, 904, 372, 373, 175, 903, 177, + 179, 83, 185, 904, 176, 648, 649, 650, 651, 648, + 649, 650, 651, 374, 531, 506, 84, 1005, 386, 532, + 1287, 391, 1290, 903, 1293, 372, 373, 88, 904, 372, + 373, 85, 903, 304, 305, 306, 903, 904, 307, 310, + 86, 904, 315, 375, 410, 400, 412, 384, 258, 335, + 259, 336, 337, 338, 154, 340, 87, 342, 343, 1306, + 354, 770, 193, 771, 311, 194, 372, 373, 89, 1043, + 995, 201, 150, 1338, 154, 1341, 370, 371, 90, 769, + 128, 129, 130, 131, 646, 371, 6, 7, 8, 9, + 10, 11, 12, 13, 586, 587, 1274, 1344, 146, 397, + 398, 187, 401, 1419, 403, 372, 373, 406, 407, 148, + 149, 652, 1460, 190, 725, 968, 203, 255, 720, 213, + 372, 373, 157, 390, 206, 903, 215, 739, 713, 772, + 904, 155, 367, 639, 369, 150, 1387, 1462, 640, 158, + 376, 372, 373, 160, 383, 94, 1464, 151, 312, 313, + 1466, 152, 449, 496, 497, 498, 499, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 161, + 506, 903, 156, 1436, 509, 1439, 904, 1442, 851, 1112, + 505, 1445, 903, 506, 451, 578, 511, 904, 157, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 529, 530, 1166, 602, 1054, 372, 373, 1494, + 537, 212, 539, 1055, 702, 864, 159, 305, 505, 703, + 710, 1478, 989, 1480, 562, 1482, 550, 551, 552, 162, + 554, 555, 556, 557, 558, 559, 560, 709, 166, 903, + 119, 120, 121, 122, 904, 260, 123, 261, 573, 574, + 575, 304, 305, 576, 171, 843, 579, 128, 129, 130, + 131, 589, 852, 853, 172, 593, 594, 567, 567, 570, + 570, 598, 372, 373, 495, 212, 135, 136, 135, 136, + 606, 372, 373, 372, 373, 1495, 712, 1044, 874, 1033, + 1044, 1034, 985, 1044, 180, 1065, 1496, 710, 1035, 1178, + 1036, 188, 565, 566, 119, 120, 121, 122, 1187, 191, + 123, 369, 329, 330, 331, 1194, 128, 129, 130, 131, + 332, 908, 909, 910, 911, 645, 181, 372, 373, 182, + 183, 372, 373, 262, 715, 263, 192, 135, 136, 135, + 136, 506, 250, 1074, 1037, 251, 1038, 252, 849, 318, + 319, 320, 321, 322, 195, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 128, 129, 130, 131, 1201, 332, + 212, 196, 708, 1202, 506, 305, 135, 136, 1167, 372, + 373, 716, 197, 714, 823, 135, 136, 1044, 167, 372, + 373, 168, 169, 1241, 170, 1278, 572, 198, 1099, 119, + 120, 121, 122, 505, 726, 123, 577, 506, 506, 506, + 506, 372, 373, 708, 737, 264, 505, 265, 741, 742, + 372, 373, 1018, 1019, 747, 135, 136, 199, 895, 1012, + 372, 373, 207, 823, 757, 758, 1044, 902, 208, 1044, + 988, 990, 1044, 761, 700, 1044, 701, 1151, 173, 174, + 266, 209, 267, 372, 373, 210, 372, 373, 773, 175, + 372, 373, 867, 868, 314, 870, 184, 872, 873, 825, + 1229, 211, 785, 1231, 787, 788, 247, 1233, 1044, 1307, + 1044, 298, 1044, 1311, 952, 953, 954, 955, 956, 372, + 373, 299, 756, 320, 321, 322, 300, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 1337, 765, 372, 373, + 268, 332, 269, 918, 919, 506, 270, 922, 271, 824, + 301, 885, 135, 136, 316, 1340, 372, 373, 501, 844, + 252, 1027, 1028, 938, 939, 302, 135, 136, 333, 944, + 945, 355, 542, 1343, 252, 272, 951, 273, 958, 334, + 339, 833, 834, 135, 136, 341, 274, 1140, 275, 738, + 926, 252, 276, 356, 277, 835, 836, 837, 838, 839, + 840, 841, 886, 278, 505, 279, 357, 280, 845, 281, + 282, 848, 283, 366, 854, 1396, 1397, 1398, 1399, 284, + 359, 285, 1403, 286, 863, 287, 361, 38, 39, 40, + 41, 360, 43, 1006, 288, 1008, 289, 505, 362, 708, + 49, 50, 290, 292, 291, 293, 1015, 1016, 1017, 363, + 364, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 965, 365, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 377, + 505, 505, 505, 505, 332, 378, 914, 915, 294, 296, + 295, 297, 920, 379, 1449, 1450, 385, 866, 1453, 710, + 396, 711, 930, 931, 710, 710, 740, 878, 318, 319, + 320, 321, 322, 394, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 997, 710, 998, 1011, 710, 332, 1045, + 395, 402, 899, 900, 901, 1126, 405, 1127, 1485, 970, + 971, 710, 710, 1046, 1047, 318, 319, 320, 321, 322, + 404, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 317, 824, 1104, 932, 408, 332, 991, 927, 1508, 710, + 996, 1048, 941, 1099, 409, 1100, 1000, 327, 328, 329, + 330, 331, 411, 710, 1519, 1119, 413, 332, 505, 414, + 1013, 1282, 1014, 444, 450, 515, 1207, 415, 1208, 1531, + 1099, 1099, 1242, 1330, 446, 416, 1029, 1030, 1031, 1348, + 1207, 1349, 1408, 1039, 417, 1473, 1152, 1474, 580, 23, + 24, 581, 582, 27, 583, 29, 1501, 30, 1502, 32, + 33, 1163, 35, 36, 418, 1058, 1059, 1060, 1172, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 48, + 429, 430, 431, 432, 1105, 433, 434, 1191, 52, 53, + 54, 435, 436, 437, 438, 439, 440, 441, 500, 442, + 443, 332, 1040, 1205, 447, 503, 64, 448, 512, 513, + 1096, 1093, 514, 543, 548, 1102, 553, 561, 588, 597, + 591, 592, 600, 1135, 603, 609, 704, 857, 610, 611, + 612, 1106, 613, 614, 615, 616, 617, 318, 319, 320, + 321, 322, 618, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 619, 620, 621, 622, 623, 332, 624, 1124, + 1125, 880, 625, 626, 627, 628, 629, 630, 1200, 1134, + 631, 632, 318, 319, 320, 321, 322, 633, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 634, 635, 584, + 1157, 1158, 332, 636, 637, 567, 642, 570, 638, 641, + 643, 705, 1169, 1114, 1171, 1115, 706, 707, 717, 718, + 724, 775, 722, 727, 1181, 728, 729, 731, 733, 734, + 743, 1188, 1189, 1190, 755, 759, 760, 779, 1195, 776, + 780, 781, 1199, 1141, 783, 1144, 784, 1147, 1203, 1204, + 790, 1296, 791, 792, 793, 794, 795, 1300, 796, 797, + 798, 1304, 799, 800, 1216, 801, 802, 803, 804, 805, + 806, 1220, 807, 808, 809, 810, 1319, 811, 812, 813, + 814, 815, 816, 820, 318, 319, 320, 321, 322, 1227, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 830, + 817, 818, 1236, 821, 332, 819, 822, 832, 842, 847, + 828, 855, 856, 881, 858, 1245, 1294, 1246, 318, 319, + 320, 321, 322, 829, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 850, 862, 894, 869, 871, 332, 321, + 322, 882, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 883, 859, 1271, 884, 887, 332, 888, 1275, 889, + 890, 891, 1389, 892, 893, 907, 1393, 1394, 913, 916, + 917, 923, 921, 928, 929, 933, 934, 936, 935, 937, + 1285, 940, 1288, 942, 1291, 943, 946, 947, 948, 1297, + 1298, 949, 950, 959, 993, 1301, 960, 961, 962, 567, + 912, 570, 963, 1309, 964, 966, 967, 974, 969, 992, + 984, 1317, 999, 986, 1007, 994, 1322, 1009, 1010, 1325, + 1032, 1041, 1042, 1328, 1329, 1051, 1052, 1057, 1388, 1061, + 1062, 1332, 1066, 1067, 1335, 1068, 1212, 1447, 1069, 1286, + 1070, 1289, 1071, 1292, 91, 344, 1072, 1076, 1073, 1075, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 1373, 1374, 1375, 1376, 1381, 1382, - 1397, 1385, 1403, 1393, 1407, 1410, 1416, 1394, 1387, 1405, - 1389, 1390, 132, 133, 1412, 1391, 1392, 1395, 134, 1396, - 1413, 1398, 1401, 137, 1417, 1419, 1426, 1423, 140, 1424, - 538, 316, 317, 318, 319, 320, 1430, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 1432, 1435, 1433, 1434, - 1436, 330, 1445, 1441, 1437, 1438, 1442, 1443, 1197, 1446, - 1447, 1454, 1449, 124, 125, 126, 127, 1451, 1455, 1456, - 1458, 316, 317, 318, 319, 320, 1461, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 1463, 1466, 1468, 1469, - 1472, 330, 1473, 1474, 1479, 1475, 1481, 1484, 1487, 1492, - 1485, 1493, 1495, 1491, 1502, 1503, 1505, 1496, 1498, 1488, - 1506, 1500, 813, 1340, 71, 79, 1494, 1085, 0, 0, - 0, 1497, 0, 1499, 1255, 1256, 0, 0, 0, 0, - 134, 0, 0, 0, 0, 1257, 0, 91, 92, 93, - 140, 94, 176, 95, 96, 97, 98, 99, 100, 101, + 115, 116, 117, 118, 1077, 1078, 1079, 1080, 1102, 1094, + 1081, 1107, 345, 1084, 1486, 1108, 1090, 1159, 1377, 1082, + 1083, 1381, 1085, 1086, 1385, 1087, 1088, 1089, 1091, 1092, + 1103, 1110, 38, 39, 40, 41, 42, 43, 1116, 1117, + 1118, 1121, 1122, 1123, 1509, 49, 50, 1128, 1129, 1130, + 1131, 1410, 1132, 1411, 1133, 1142, 1145, 1148, 1518, 1153, + 1154, 1155, 1156, 1162, 1170, 1524, 1173, 1456, 1175, 1174, + 1527, 1221, 1529, 124, 125, 126, 127, 318, 319, 320, + 321, 322, 1177, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 318, 319, 320, 321, 322, 332, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 1179, 1489, 1176, + 1492, 1180, 332, 318, 319, 320, 321, 322, 1182, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 1183, 1184, + 1185, 1186, 1192, 332, 132, 346, 1510, 1193, 1196, 1197, + 134, 1215, 1206, 1198, 1222, 137, 1209, 91, 303, 1484, + 140, 1210, 347, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 1326, 119, 120, - 121, 122, 91, 342, 123, 0, 0, 0, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 316, 317, 318, 319, 320, - 343, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, - 38, 39, 40, 41, 42, 43, 124, 125, 126, 127, - 91, 301, 0, 49, 50, 0, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 124, 125, 126, 127, 0, 0, 0, 0, 0, - 0, 0, 0, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 132, 133, 0, - 0, 0, 594, 134, 135, 136, 0, 0, 137, 0, - 138, 0, 139, 140, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 713, - 0, 0, 132, 497, 330, 0, 0, 0, 134, 124, - 125, 126, 127, 137, 91, 301, 210, 0, 140, 0, + 112, 113, 114, 115, 116, 117, 118, 1211, 1506, 1507, + 1224, 1219, 1213, 1214, 1223, 1225, 1244, 1226, 91, 303, + 1228, 1248, 1237, 1516, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 318, 319, + 320, 321, 322, 1276, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 1230, 1299, 1279, 1305, 1250, 332, 1232, + 1234, 1308, 1253, 1251, 91, 303, 124, 125, 126, 127, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 119, 120, 121, 122, 866, - 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, - 132, 133, 0, 0, 0, 0, 134, 0, 0, 0, - 0, 137, 91, 537, 0, 0, 140, 0, 95, 96, + 115, 116, 117, 118, 1235, 1243, 1252, 1254, 1256, 1257, + 1258, 1263, 1264, 1262, 1267, 1277, 1310, 124, 125, 126, + 127, 318, 319, 320, 321, 322, 1266, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 1312, 132, 133, 1269, + 1313, 332, 1314, 134, 1315, 1316, 1318, 1320, 137, 1321, + 1323, 308, 1324, 140, 1326, 309, 1331, 318, 319, 320, + 321, 322, 1327, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 1333, 124, 125, 126, 127, 332, 132, 133, + 1334, 1347, 1371, 1352, 134, 1355, 1353, 1360, 1375, 137, + 1356, 1357, 735, 1358, 140, 1361, 736, 91, 303, 1363, + 1365, 1367, 1373, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 1378, 1379, 1354, + 1382, 1383, 1386, 1390, 132, 133, 1391, 1392, 1395, 1400, + 134, 1401, 1402, 1404, 1405, 137, 1406, 1407, 876, 1412, + 140, 1413, 877, 91, 544, 1415, 1417, 1423, 1422, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 1424, 1425, 1426, 1427, 1428, 1429, 1430, + 1431, 1437, 1440, 1443, 1432, 1435, 124, 125, 126, 127, + 91, 92, 93, 1448, 94, 1446, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 1451, 119, 120, 121, 122, 1452, 1454, 123, 1458, 1459, + 1461, 1463, 1465, 1469, 1467, 1468, 1470, 1471, 1472, 1475, + 1477, 1476, 124, 125, 126, 127, 1479, 380, 381, 1481, + 1483, 1487, 1488, 134, 1490, 547, 1493, 1497, 382, 1499, + 1500, 1503, 1504, 140, 1505, 176, 318, 319, 320, 321, + 322, 1511, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 1514, 1515, 1517, 1521, 1522, 332, 1523, 1525, 124, + 125, 126, 127, 1533, 1535, 1536, 71, 1368, 1526, 1528, + 826, 79, 1109, 132, 133, 0, 0, 0, 1532, 134, + 0, 1530, 0, 0, 137, 0, 0, 0, 0, 140, + 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 129, 130, 131, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 0, 0, 0, 0, 134, 135, 136, 0, + 0, 137, 0, 138, 604, 139, 140, 91, 344, 0, + 0, 0, 0, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 0, 0, 723, + 318, 319, 320, 321, 322, 345, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 0, 0, 0, 38, 39, 40, 41, 42, + 43, 0, 879, 0, 0, 91, 303, 0, 49, 50, + 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 0, 124, 125, 126, 127, + 91, 303, 212, 0, 0, 0, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 0, 119, 120, 121, 122, 0, 0, 123, 0, 318, + 319, 320, 321, 322, 0, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 0, 0, 132, 504, 332, + 925, 0, 0, 134, 124, 125, 126, 127, 137, 0, + 0, 0, 0, 140, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 0, 0, 0, 124, + 125, 126, 127, 0, 0, 0, 0, 318, 319, 320, + 321, 322, 0, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 0, 0, 132, 133, 332, 0, 0, + 0, 134, 0, 0, 0, 0, 137, 0, 0, 0, + 0, 140, 0, 0, 0, 318, 319, 320, 321, 322, + 0, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 132, 133, 0, 0, 0, 332, 134, 0, 0, 0, + 0, 137, 91, 544, 744, 0, 140, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 124, 125, 126, 127, 316, 317, 318, - 319, 320, 0, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 0, 0, 0, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 316, - 317, 318, 319, 320, 330, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 132, 133, 0, 0, 0, 330, - 134, 124, 125, 126, 127, 137, 1114, 0, 1115, 0, - 140, 0, 0, 0, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 316, - 317, 318, 319, 320, 330, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 316, 317, 318, 319, 320, 330, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 132, 133, 330, 0, 495, 0, 134, 0, - 0, 556, 0, 137, 0, 0, 0, 0, 140, 570, - 23, 24, 571, 572, 27, 573, 29, 0, 30, 0, + 117, 118, 0, 0, 0, 318, 319, 320, 321, 322, + 0, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 0, 0, 0, 0, 332, 580, 23, 24, 581, + 582, 27, 583, 29, 0, 30, 0, 32, 33, 0, + 35, 36, 0, 0, 0, 0, 0, 580, 23, 24, + 581, 582, 27, 583, 29, 0, 30, 48, 32, 33, + 0, 35, 36, 0, 0, 0, 52, 53, 54, 0, + 0, 124, 125, 126, 127, 0, 0, 0, 48, 0, + 0, 0, 0, 0, 64, 0, 0, 52, 53, 54, + 0, 0, 0, 0, 0, 580, 23, 24, 581, 582, + 27, 583, 29, 0, 30, 64, 32, 33, 0, 35, + 36, 0, 0, 0, 0, 0, 580, 23, 24, 581, + 582, 27, 583, 29, 0, 30, 48, 32, 33, 0, + 35, 36, 132, 133, 0, 52, 53, 54, 134, 0, + 0, 0, 0, 137, 0, 0, 0, 48, 140, 0, + 0, 0, 0, 64, 0, 0, 52, 53, 54, 0, + 0, 0, 0, 0, 0, 0, 0, 590, 0, 0, + 0, 0, 0, 0, 64, 580, 23, 24, 581, 582, + 27, 583, 29, 0, 30, 0, 32, 33, 607, 35, + 36, 0, 0, 0, 0, 0, 0, 0, 580, 23, + 24, 581, 582, 27, 583, 29, 48, 30, 0, 32, + 33, 0, 35, 36, 0, 52, 53, 54, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 0, 0, 0, 64, 0, 0, 608, 0, 52, 53, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 766, 0, 580, + 23, 24, 581, 582, 27, 583, 29, 0, 30, 0, 32, 33, 0, 35, 36, 0, 0, 0, 0, 0, - 570, 23, 24, 571, 572, 27, 573, 29, 0, 30, - 48, 32, 33, 0, 35, 36, 0, 0, 0, 52, + -4, 1, 0, -4, -47, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 48, 0, 0, 0, 0, 0, 64, 0, 0, - 52, 53, 54, 0, 0, 570, 23, 24, 571, 572, - 27, 573, 29, 0, 30, 0, 32, 33, 64, 35, - 36, 0, 0, 0, 0, 0, 570, 23, 24, 571, - 572, 27, 573, 29, 0, 30, 48, 32, 33, 0, - 35, 36, 0, 0, 0, 52, 53, 54, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, - 0, 0, 0, 64, 0, 0, 52, 53, 54, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 574, 0, 0, 0, 64, 570, 23, 24, 571, 572, - 27, 573, 29, 0, 30, 0, 32, 33, 0, 35, - 36, 580, 0, 0, 0, 0, 0, 0, 0, -4, - 1, 0, -4, -47, 0, 0, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 52, 53, 54, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -47, 64, 0, 0, 597, -47, -47, 0, - -47, -47, -47, -47, -47, -47, -47, -47, 0, -47, - -47, -47, -47, -47, -47, -47, 0, 598, 0, -47, - -47, -47, -47, -47, -47, -47, 0, -47, -47, -47, - -47, -47, 215, -47, -47, 0, 0, 0, 0, -47, - -47, -47, -47, 0, 0, 0, 0, -47, 0, -47, - 0, -47, -47, -47, -47, -47, -47, -47, -47, -47, - -47, 316, 317, 318, 319, 320, 0, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 773, 0, 0, 0, - 0, 330, 0, -4, -4, -4, -4, -4, -4, -4, - -4, 0, 0, 0, 216, 217, 218, 0, 0, 0, - 0, 0, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 18, 0, 0, 0, 0, 0, 0, 0, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 0, 239, 240, 241, 242, 243, 244, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 20, 21, 0, 22, - 23, 24, 25, 26, 27, 28, 29, 0, 30, 31, - 32, 33, 34, 35, 36, 0, 0, 0, 37, 38, - 39, 40, 41, 42, 43, 0, 44, 45, 46, 47, - 48, 0, 49, 50, 0, 0, 0, 0, 51, 52, - 53, 54, 0, 0, 0, 0, 55, 0, 56, 0, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 570, 23, 24, 571, 572, 27, 573, 29, 0, 30, - 0, 32, 33, 0, 35, 36, 316, 317, 318, 319, - 320, 0, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 48, 0, 0, 0, 0, 330, 0, 0, 0, - 52, 53, 54, 1137, 0, 1138, 0, 0, 0, 0, - 0, 0, 0, 316, 317, 318, 319, 320, 64, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, - 1253, 0, 1254, 316, 317, 318, 319, 320, 0, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 316, 317, 318, - 319, 320, 734, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 316, 317, 318, 319, 320, 738, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 316, 317, 318, 319, 320, - 739, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 316, - 317, 318, 319, 320, 862, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 316, 317, 318, 319, 320, 885, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 316, 317, 318, - 319, 320, 1112, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 316, 317, 318, 319, 320, 1275, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 316, 317, 318, 319, 320, - 1276, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 316, - 317, 318, 319, 320, 1310, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 316, 317, 318, 319, 320, 1316, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 316, 317, 318, - 319, 320, 1319, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 316, 317, 318, 319, 320, 1322, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 316, 317, 318, 319, 320, - 1323, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 316, - 317, 318, 319, 320, 1346, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 316, 317, 318, 319, 320, 1383, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 316, 317, 318, - 319, 320, 1386, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 316, 317, 318, 319, 320, 1388, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 316, 317, 318, 319, 320, - 1400, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 316, - 317, 318, 319, 320, 1483, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 316, 317, 318, 319, 320, 1490, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 526, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 556, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 557, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 316, 317, 318, 319, 320, 591, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 316, 317, 318, 319, 320, 670, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 671, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 684, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 685, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 316, 317, 318, 319, 320, 686, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 316, 317, 318, 319, 320, 687, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 688, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 689, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 752, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 316, 317, 318, 319, 320, 753, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 316, 317, 318, 319, 320, 754, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 852, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 883, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 884, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 316, 317, 318, 319, 320, 906, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 316, 317, 318, 319, 320, 1025, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 1026, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 1039, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 1040, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 316, 317, 318, 319, 320, 1073, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 316, 317, 318, 319, 320, 1074, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 1089, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 1096, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 1208, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 316, 317, 318, 319, 320, 1209, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 316, 317, 318, 319, 320, 1217, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 1219, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 1230, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 1235, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 316, 317, 318, 319, 320, 1238, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 316, 317, 318, 319, 320, 1242, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 1243, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 1250, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 1251, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 316, 317, 318, 319, 320, 1331, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 316, 317, 318, 319, 320, 1342, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 316, 317, 318, 319, 320, - 1344, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 316, 317, 318, - 319, 320, 1467, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 316, - 317, 318, 319, 320, 1482, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 501, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 634, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 649, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 651, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 653, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 655, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 657, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 659, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 661, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 663, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 665, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 667, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 669, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 673, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 675, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 677, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 679, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 681, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 683, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 755, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 761, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 764, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 765, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 833, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 958, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 960, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 962, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 964, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 965, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 1087, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 495, 316, 317, 318, 319, 320, 0, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, - 0, 0, 330, 0, 527, 316, 317, 318, 319, 320, - 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 528, 316, 317, - 318, 319, 320, 0, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 0, 0, 0, 0, 0, 330, 0, - 529, 316, 317, 318, 319, 320, 0, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 531, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 533, 316, 317, 318, - 319, 320, 0, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 534, - 316, 317, 318, 319, 320, 0, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, - 330, 0, 542, 316, 317, 318, 319, 320, 0, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 585, 316, 317, 318, 319, - 320, 0, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 0, 0, 0, 0, 0, 330, 0, 586, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 589, 316, 317, 318, 319, 320, 0, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, - 0, 0, 330, 0, 595, 316, 317, 318, 319, 320, - 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 648, 316, 317, - 318, 319, 320, 0, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 0, 0, 0, 0, 0, 330, 0, - 650, 316, 317, 318, 319, 320, 0, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 652, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 654, 316, 317, 318, - 319, 320, 0, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 656, - 316, 317, 318, 319, 320, 0, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, - 330, 0, 658, 316, 317, 318, 319, 320, 0, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 660, 316, 317, 318, 319, - 320, 0, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 0, 0, 0, 0, 0, 330, 0, 662, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 664, 316, 317, 318, 319, 320, 0, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, - 0, 0, 330, 0, 666, 316, 317, 318, 319, 320, - 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 668, 316, 317, - 318, 319, 320, 0, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 0, 0, 0, 0, 0, 330, 0, - 672, 316, 317, 318, 319, 320, 0, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 674, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 676, 316, 317, 318, - 319, 320, 0, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 678, - 316, 317, 318, 319, 320, 0, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, - 330, 0, 680, 316, 317, 318, 319, 320, 0, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 682, 316, 317, 318, 319, - 320, 0, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 0, 0, 0, 0, 0, 330, 0, 720, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 722, 316, 317, 318, 319, 320, 0, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, - 0, 0, 330, 0, 735, 316, 317, 318, 319, 320, - 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 736, 316, 317, - 318, 319, 320, 0, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 0, 0, 0, 0, 0, 330, 0, - 740, 316, 317, 318, 319, 320, 0, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 741, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 742, 316, 317, 318, - 319, 320, 0, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 743, - 316, 317, 318, 319, 320, 0, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, - 330, 0, 744, 316, 317, 318, 319, 320, 0, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 769, 316, 317, 318, 319, - 320, 0, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 0, 0, 0, 0, 0, 330, 0, 776, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 957, 316, 317, 318, 319, 320, 0, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, - 0, 0, 330, 0, 959, 316, 317, 318, 319, 320, - 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 961, 316, 317, - 318, 319, 320, 0, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 0, 0, 0, 0, 0, 330, 0, - 963, 316, 317, 318, 319, 320, 0, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 969, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 1029, 316, 317, 318, - 319, 320, 0, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 330, 0, 1113, - 316, 317, 318, 319, 320, 0, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, - 330, 0, 1141, 316, 317, 318, 319, 320, 0, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 330, 0, 1225, 316, 317, 318, 319, - 320, 0, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 0, 0, 0, 0, 0, 330, 0, 1229, 316, - 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 330, - 0, 1231, 316, 317, 318, 319, 320, 0, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, - 0, 0, 330, 0, 1334, 316, 317, 318, 319, 320, - 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 0, 0, 0, 330, 0, 1336, 316, 317, - 318, 319, 320, 0, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 0, 0, 0, 0, 0, 330, 0, - 1338, 316, 317, 318, 319, 320, 0, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 330, 0, 1341, 316, 317, 318, 319, 320, 0, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 330, 0, 1399 + 0, 0, 0, -47, 0, 0, 786, 64, -47, -47, + 0, -47, -47, -47, -47, -47, -47, -47, -47, 0, + -47, -47, -47, -47, -47, -47, -47, 0, 0, 1345, + -47, -47, -47, -47, -47, -47, -47, 0, -47, -47, + -47, -47, -47, 217, -47, -47, 0, 0, 0, 0, + -47, -47, -47, -47, 0, 0, 0, 0, -47, 0, + -47, 0, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, 0, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 1420, 0, 0, 332, -4, -4, -4, -4, -4, -4, + -4, -4, 748, 0, 0, 218, 219, 220, 0, 0, + 0, 0, 0, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 18, 0, 0, 0, 0, 0, 0, + 0, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 0, 241, 242, 243, 244, 245, 246, 0, 0, + 0, 0, 19, 0, 0, 0, 0, 20, 21, 0, + 22, 23, 24, 25, 26, 27, 28, 29, 0, 30, + 31, 32, 33, 34, 35, 36, 0, 0, 0, 37, + 38, 39, 40, 41, 42, 43, 0, 44, 45, 46, + 47, 48, 0, 49, 50, 0, 0, 0, 0, 51, + 52, 53, 54, 0, 0, 0, 0, 55, 0, 56, + 0, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 580, 23, 24, 581, 582, 27, 583, 29, 0, + 30, 0, 32, 33, 0, 35, 36, 318, 319, 320, + 321, 322, 0, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 48, 0, 0, 0, 0, 332, 0, 0, + 0, 52, 53, 54, 1138, 0, 1139, 0, 0, 0, + 0, 0, 0, 0, 318, 319, 320, 321, 322, 64, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 0, 0, 0, 0, + 0, 1164, 0, 1165, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 0, 0, 0, 0, + 0, 1283, 0, 1284, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 0, 0, 318, 319, + 320, 321, 322, 749, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 318, 319, 320, 321, 322, 875, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 0, 0, 318, 319, 320, 321, + 322, 898, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 0, 0, + 318, 319, 320, 321, 322, 1136, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 0, 0, 318, 319, 320, 321, 322, 1150, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 0, 0, 318, 319, + 320, 321, 322, 1295, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 318, 319, 320, 321, 322, 1302, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 0, 0, 318, 319, 320, 321, + 322, 1303, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 0, 0, + 318, 319, 320, 321, 322, 1336, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 0, 0, 318, 319, 320, 321, 322, 1339, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 0, 0, 318, 319, + 320, 321, 322, 1342, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 318, 319, 320, 321, 322, 1350, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 0, 0, 318, 319, 320, 321, + 322, 1351, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 0, 0, + 318, 319, 320, 321, 322, 1374, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 0, 0, 318, 319, 320, 321, 322, 1414, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 0, 0, 318, 319, + 320, 321, 322, 1416, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 318, 319, 320, 321, 322, 1418, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 0, 0, 318, 319, 320, 321, + 322, 1434, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 0, 0, + 318, 319, 320, 321, 322, 1513, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 0, 0, 318, 319, 320, 321, 322, 1520, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 502, 0, 0, 0, + 0, 563, 318, 319, 320, 321, 322, 0, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 533, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 563, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 564, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 318, 319, 320, 321, 322, 601, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 318, 319, 320, 321, 322, 680, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 681, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 694, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 695, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 318, 319, 320, 321, 322, 696, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 318, 319, 320, 321, 322, 697, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 698, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 699, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 762, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 318, 319, 320, 321, 322, 763, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 318, 319, 320, 321, 322, 764, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 865, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 896, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 897, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 318, 319, 320, 321, 322, 924, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 318, 319, 320, 321, 322, 1049, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 1050, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 1063, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 1064, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 318, 319, 320, 321, 322, 1097, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 318, 319, 320, 321, 322, 1098, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 1113, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 1120, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 1238, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 318, 319, 320, 321, 322, 1239, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 318, 319, 320, 321, 322, 1247, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 1249, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 1260, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 1265, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 318, 319, 320, 321, 322, 1268, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 318, 319, 320, 321, 322, 1272, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 1273, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 1280, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 1281, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 318, 319, 320, 321, 322, 1359, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 318, 319, 320, 321, 322, 1370, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 318, 319, 320, 321, 322, 1372, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 318, 319, 320, 321, + 322, 1498, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 318, 319, + 320, 321, 322, 1512, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 508, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 644, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 659, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 661, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 663, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 665, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 667, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 669, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 671, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 673, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 675, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 677, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 679, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 683, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 685, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 687, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 689, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 691, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 693, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 768, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 774, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 777, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 778, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 846, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 976, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 978, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 980, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 982, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 0, 0, 983, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 1111, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 502, 318, 319, 320, 321, 322, 0, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 0, 0, 0, + 0, 332, 0, 534, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 535, 318, 319, 320, + 321, 322, 0, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 0, 0, 0, 0, 332, 0, 536, + 318, 319, 320, 321, 322, 0, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 538, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 540, 318, 319, 320, 321, + 322, 0, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 541, 318, + 319, 320, 321, 322, 0, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 0, 0, 0, 0, 332, + 0, 549, 318, 319, 320, 321, 322, 0, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 595, 318, 319, 320, 321, 322, + 0, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 0, 0, 0, 0, 332, 0, 596, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 599, 318, 319, 320, 321, 322, 0, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 0, 0, 0, + 0, 332, 0, 605, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 658, 318, 319, 320, + 321, 322, 0, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 0, 0, 0, 0, 332, 0, 660, + 318, 319, 320, 321, 322, 0, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 662, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 664, 318, 319, 320, 321, + 322, 0, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 666, 318, + 319, 320, 321, 322, 0, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 0, 0, 0, 0, 332, + 0, 668, 318, 319, 320, 321, 322, 0, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 670, 318, 319, 320, 321, 322, + 0, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 0, 0, 0, 0, 332, 0, 672, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 674, 318, 319, 320, 321, 322, 0, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 0, 0, 0, + 0, 332, 0, 676, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 678, 318, 319, 320, + 321, 322, 0, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 0, 0, 0, 0, 332, 0, 682, + 318, 319, 320, 321, 322, 0, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 684, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 686, 318, 319, 320, 321, + 322, 0, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 688, 318, + 319, 320, 321, 322, 0, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 0, 0, 0, 0, 332, + 0, 690, 318, 319, 320, 321, 322, 0, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 692, 318, 319, 320, 321, 322, + 0, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 0, 0, 0, 0, 332, 0, 730, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 732, 318, 319, 320, 321, 322, 0, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 0, 0, 0, + 0, 332, 0, 745, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 746, 318, 319, 320, + 321, 322, 0, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 0, 0, 0, 0, 332, 0, 750, + 318, 319, 320, 321, 322, 0, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 751, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 752, 318, 319, 320, 321, + 322, 0, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 753, 318, + 319, 320, 321, 322, 0, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 0, 0, 0, 0, 332, + 0, 754, 318, 319, 320, 321, 322, 0, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 782, 318, 319, 320, 321, 322, + 0, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 0, 0, 0, 0, 332, 0, 789, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 975, 318, 319, 320, 321, 322, 0, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 0, 0, 0, + 0, 332, 0, 977, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 979, 318, 319, 320, + 321, 322, 0, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 0, 0, 0, 0, 332, 0, 981, + 318, 319, 320, 321, 322, 0, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 987, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 1053, 318, 319, 320, 321, + 322, 0, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332, 0, 1137, 318, + 319, 320, 321, 322, 0, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 0, 0, 0, 0, 332, + 0, 1168, 318, 319, 320, 321, 322, 0, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 0, 0, + 0, 0, 332, 0, 1255, 318, 319, 320, 321, 322, + 0, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 0, 0, 0, 0, 332, 0, 1259, 318, 319, + 320, 321, 322, 0, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 332, 0, + 1261, 318, 319, 320, 321, 322, 0, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 0, 0, 0, + 0, 332, 0, 1362, 318, 319, 320, 321, 322, 0, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 0, 0, 0, 0, 332, 0, 1364, 318, 319, 320, + 321, 322, 0, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 0, 0, 0, 0, 332, 0, 1366, + 318, 319, 320, 321, 322, 0, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 332, 0, 1369, 318, 319, 320, 321, 322, 0, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 0, + 0, 0, 0, 332, 0, 1433, 318, 319, 320, 321, + 322, 0, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 332 }; static const short yycheck[] = { 18, - 65, 66, 3, 18, 89, 373, 3, 309, 6, 4, - 185, 710, 345, 188, 1262, 4, 6, 4, 1266, 5, - 4, 1269, 1030, 1031, 4, 68, 4, 4, 4, 67, - 73, 6, 5, 45, 85, 68, 211, 4, 213, 6, - 73, 5, 7, 67, 163, 164, 67, 1132, 34, 35, - 36, 37, 68, 6, 40, 6, 175, 73, 6, 6, - 307, 34, 35, 36, 37, 163, 164, 40, 4, 6, - 34, 35, 36, 37, 7, 175, 40, 175, 6, 4, - 180, 76, 77, 78, 79, 163, 164, 76, 77, 78, - 79, 163, 164, 6, 4, 5, 174, 6, 345, 163, - 164, 52, 1205, 181, 1207, 52, 68, 68, 180, 6, - 182, 73, 73, 132, 133, 134, 174, 181, 137, 138, - 170, 171, 141, 174, 34, 35, 36, 37, 178, 148, - 40, 150, 151, 152, 1219, 154, 174, 156, 157, 182, - 159, 6, 68, 181, 174, 174, 845, 73, 174, 182, - 174, 181, 88, 89, 1402, 181, 175, 176, 1406, 1046, - 181, 1409, 174, 88, 89, 175, 182, 68, 1055, 174, - 180, 1179, 73, 163, 164, 1062, 68, 196, 197, 68, - 199, 73, 201, 181, 73, 204, 205, 182, 163, 164, - 67, 174, 525, 182, 181, 181, 1444, 181, 174, 501, - 1448, 181, 1450, 181, 181, 538, 170, 171, 181, 176, - 163, 164, 44, 45, 178, 47, 149, 150, 151, 152, - 182, 182, 397, 41, 174, 41, 44, 45, 44, 47, - 249, 296, 297, 298, 299, 254, 255, 256, 257, 258, + 65, 66, 158, 18, 4, 89, 3, 163, 3, 347, + 375, 311, 720, 4, 6, 905, 4, 4, 7, 4, + 4, 4, 45, 5, 1054, 1055, 6, 67, 6, 67, + 5, 4, 188, 6, 4, 68, 85, 193, 194, 68, + 73, 68, 6, 6, 73, 3, 73, 67, 174, 1159, + 176, 6, 34, 35, 36, 37, 7, 309, 40, 34, + 35, 36, 37, 68, 6, 40, 163, 164, 73, 68, + 44, 45, 52, 47, 73, 163, 164, 174, 68, 39, + 40, 6, 42, 73, 181, 76, 77, 78, 79, 76, + 77, 78, 79, 181, 175, 347, 6, 52, 187, 180, + 1230, 190, 1232, 68, 1234, 163, 164, 174, 73, 163, + 164, 6, 68, 132, 133, 134, 68, 73, 137, 138, + 6, 73, 141, 181, 213, 174, 215, 181, 174, 148, + 176, 150, 151, 152, 174, 154, 6, 156, 157, 1249, + 159, 181, 41, 181, 4, 44, 163, 164, 174, 182, + 858, 174, 174, 182, 174, 182, 175, 176, 174, 181, + 149, 150, 151, 152, 181, 184, 124, 125, 126, 127, + 128, 129, 130, 131, 6, 7, 1206, 182, 174, 198, + 199, 181, 201, 182, 203, 163, 164, 206, 207, 181, + 6, 182, 182, 181, 532, 182, 181, 181, 181, 181, + 163, 164, 174, 176, 174, 68, 181, 545, 508, 181, + 73, 67, 172, 175, 174, 174, 1346, 182, 180, 49, + 180, 163, 164, 45, 184, 7, 182, 174, 88, 89, + 182, 174, 251, 298, 299, 300, 301, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 49, 525, 1382, - 979, 182, 1385, 174, 1387, 176, 45, 175, 307, 174, - 182, 538, 180, 182, 309, 163, 164, 316, 317, 318, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 45, + 532, 68, 174, 1413, 7, 1415, 73, 1417, 4, 997, + 309, 1421, 68, 545, 254, 384, 311, 73, 174, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 180, 174, 182, 174, 68, 5, 337, 175, - 339, 73, 181, 1426, 180, 344, 345, 1430, 41, 1432, - 174, 44, 45, 1220, 353, 354, 355, 1224, 357, 358, - 359, 360, 361, 362, 363, 174, 34, 35, 36, 37, - 7, 174, 40, 163, 164, 45, 375, 376, 377, 378, - 693, 163, 164, 174, 383, 176, 163, 164, 387, 388, - 180, 372, 373, 45, 393, 372, 373, 175, 180, 174, - 182, 176, 180, 402, 181, 174, 165, 166, 167, 3, - 4, 39, 40, 726, 173, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 163, - 164, 163, 164, 756, 757, 758, 759, 175, 443, 47, - 182, 8, 180, 158, 163, 164, 180, 502, 163, 181, - 175, 1328, 1329, 1330, 1331, 180, 693, 174, 1335, 176, - 174, 180, 176, 700, 163, 164, 174, 7, 176, 163, - 164, 186, 181, 163, 164, 181, 191, 192, 163, 164, - 45, 180, 174, 6, 176, 494, 180, 4, 497, 726, - 180, 163, 164, 6, 503, 180, 501, 1186, 102, 103, - 104, 105, 149, 150, 151, 152, 6, 174, 180, 176, - 4, 163, 164, 4, 1391, 1392, 525, 526, 1395, 756, - 757, 758, 759, 170, 171, 174, 535, 536, 180, 538, - 174, 540, 541, 174, 172, 176, 174, 546, 174, 174, - 176, 864, 180, 3, 57, 837, 838, 556, 557, 61, - 62, 63, 64, 174, 66, 176, 565, 7, 1435, 163, - 164, 6, 74, 75, 174, 169, 176, 174, 577, 176, - 174, 4, 174, 177, 176, 179, 174, 181, 176, 634, - 4, 174, 591, 176, 593, 594, 153, 154, 155, 156, - 157, 1468, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 109, 110, 111, 112, 113, 173, 45, 1485, 149, - 150, 151, 152, 174, 252, 182, 163, 164, 165, 166, - 167, 5, 174, 1500, 176, 174, 173, 864, 174, 634, - 170, 171, 174, 174, 176, 176, 174, 8, 178, 694, - 153, 154, 155, 156, 157, 174, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 174, 1014, 176, 6, 7, - 173, 670, 671, 6, 124, 125, 126, 127, 128, 129, - 130, 131, 174, 174, 176, 684, 685, 686, 687, 688, - 689, 690, 6, 176, 693, 178, 58, 59, 697, 170, - 171, 700, 170, 171, 703, 176, 180, 178, 182, 149, - 150, 151, 152, 4, 713, 156, 157, 6, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 726, 5, 728, - 170, 171, 173, 180, 180, 182, 182, 174, 180, 6, - 182, 174, 370, 371, 809, 6, 7, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 181, 756, 757, 758, - 759, 173, 181, 762, 763, 174, 155, 156, 157, 768, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 778, - 779, 6, 170, 171, 173, 180, 4, 182, 176, 174, - 178, 496, 153, 154, 155, 156, 157, 181, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 170, 171, 180, - 174, 182, 173, 176, 175, 178, 815, 816, 174, 174, - 153, 154, 155, 156, 157, 174, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 174, 170, 171, 833, 180, - 173, 182, 176, 838, 178, 181, 181, 846, 180, 176, - 182, 1199, 180, 852, 182, 180, 180, 182, 182, 4, - 180, 6, 182, 181, 180, 864, 182, 866, 180, 868, - 182, 180, 180, 182, 182, 180, 180, 182, 182, 176, - 176, 6, 181, 882, 883, 884, 153, 154, 155, 156, - 157, 178, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 91, 6, 174, 6, 6, 173, 906, 907, 908, - 174, 174, 174, 5, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 971, 555, 153, 154, + 329, 330, 331, 332, 8, 404, 174, 163, 164, 182, + 339, 5, 341, 181, 175, 175, 174, 346, 347, 180, + 180, 1461, 7, 1463, 180, 1465, 355, 356, 357, 45, + 359, 360, 361, 362, 363, 364, 365, 503, 47, 68, + 34, 35, 36, 37, 73, 174, 40, 176, 377, 378, + 379, 380, 381, 382, 174, 703, 385, 149, 150, 151, + 152, 390, 88, 89, 181, 394, 395, 374, 375, 374, + 375, 400, 163, 164, 4, 5, 170, 171, 170, 171, + 409, 163, 164, 163, 164, 182, 178, 1287, 736, 180, + 1290, 182, 175, 1293, 181, 175, 182, 180, 180, 1070, + 182, 45, 372, 373, 34, 35, 36, 37, 1079, 6, + 40, 381, 165, 166, 167, 1086, 149, 150, 151, 152, + 173, 769, 770, 771, 772, 450, 41, 163, 164, 44, + 45, 163, 164, 174, 509, 176, 6, 170, 171, 170, + 171, 703, 5, 175, 180, 176, 182, 178, 710, 153, + 154, 155, 156, 157, 4, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 149, 150, 151, 152, 175, 173, + 5, 4, 501, 180, 736, 504, 170, 171, 182, 163, + 164, 510, 4, 508, 178, 170, 171, 1387, 41, 163, + 164, 44, 45, 175, 47, 1213, 180, 174, 180, 34, + 35, 36, 37, 532, 533, 40, 180, 769, 770, 771, + 772, 163, 164, 542, 543, 174, 545, 176, 547, 548, + 163, 164, 58, 59, 553, 170, 171, 174, 180, 877, + 163, 164, 174, 178, 563, 564, 1436, 180, 6, 1439, + 850, 851, 1442, 572, 176, 1445, 178, 180, 163, 164, + 174, 4, 176, 163, 164, 4, 163, 164, 587, 174, + 163, 164, 728, 729, 4, 731, 181, 733, 734, 644, + 180, 45, 601, 180, 603, 604, 174, 180, 1478, 1250, + 1480, 174, 1482, 1254, 109, 110, 111, 112, 113, 163, + 164, 174, 562, 155, 156, 157, 174, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 180, 577, 163, 164, + 174, 173, 176, 779, 780, 877, 174, 783, 176, 644, + 174, 6, 170, 171, 6, 180, 163, 164, 176, 704, + 178, 6, 7, 799, 800, 174, 170, 171, 6, 805, + 806, 181, 176, 180, 178, 174, 812, 176, 814, 5, + 174, 680, 681, 170, 171, 174, 174, 1032, 176, 176, + 8, 178, 174, 174, 176, 694, 695, 696, 697, 698, + 699, 700, 57, 174, 703, 176, 174, 174, 707, 176, + 174, 710, 176, 4, 713, 1356, 1357, 1358, 1359, 174, + 181, 176, 1363, 174, 723, 176, 174, 61, 62, 63, + 64, 181, 66, 869, 174, 871, 176, 736, 174, 738, + 74, 75, 174, 174, 176, 176, 882, 883, 884, 174, + 174, 887, 888, 889, 890, 891, 892, 893, 822, 174, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 181, + 769, 770, 771, 772, 173, 181, 775, 776, 174, 174, + 176, 176, 781, 181, 1425, 1426, 176, 727, 1429, 180, + 6, 182, 791, 792, 180, 180, 182, 182, 153, 154, + 155, 156, 157, 176, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 180, 180, 182, 182, 180, 173, 182, + 176, 178, 762, 763, 764, 4, 91, 6, 1469, 828, + 829, 180, 180, 182, 182, 153, 154, 155, 156, 157, + 181, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 6, 846, 988, 793, 6, 173, 851, 175, 1499, 180, + 859, 182, 802, 180, 174, 182, 865, 163, 164, 165, + 166, 167, 6, 180, 1515, 182, 6, 173, 877, 174, + 879, 1226, 881, 5, 4, 6, 180, 174, 182, 1530, + 180, 180, 182, 182, 180, 174, 895, 896, 897, 180, + 180, 182, 182, 902, 174, 180, 1042, 182, 41, 42, + 43, 44, 45, 46, 47, 48, 180, 50, 182, 52, + 53, 1057, 55, 56, 174, 924, 925, 926, 1064, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 72, + 174, 174, 174, 174, 989, 174, 174, 1083, 81, 82, + 83, 174, 174, 174, 174, 174, 174, 174, 5, 174, + 174, 173, 902, 1099, 175, 7, 99, 180, 178, 7, + 969, 966, 176, 181, 7, 974, 7, 175, 6, 86, + 7, 7, 88, 1028, 181, 5, 180, 6, 5, 5, + 5, 990, 5, 5, 5, 5, 5, 153, 154, 155, + 156, 157, 5, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 5, 5, 5, 5, 5, 173, 5, 1018, + 1019, 6, 5, 5, 5, 5, 5, 5, 1092, 1028, + 5, 142, 153, 154, 155, 156, 157, 5, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 5, 5, 182, + 1049, 1050, 173, 5, 3, 1032, 6, 1032, 5, 5, + 5, 175, 1061, 1003, 1063, 1005, 175, 180, 6, 4, + 6, 181, 177, 7, 1073, 7, 7, 7, 7, 7, + 7, 1080, 1081, 1082, 178, 182, 182, 7, 1087, 181, + 7, 174, 1091, 1033, 7, 1035, 178, 1037, 1097, 1098, + 180, 1237, 180, 180, 180, 180, 180, 1243, 180, 180, + 180, 1247, 180, 180, 1113, 180, 180, 180, 180, 180, + 180, 1120, 180, 180, 180, 180, 1262, 180, 180, 180, + 180, 180, 180, 5, 153, 154, 155, 156, 157, 1138, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 181, + 180, 180, 1151, 175, 173, 180, 180, 6, 4, 6, + 174, 6, 6, 181, 7, 1164, 1235, 1166, 153, 154, 155, 156, 157, 174, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 174, 174, 174, 174, 174, 173, 175, - 174, 6, 951, 948, 174, 174, 4, 956, 174, 174, - 174, 174, 174, 174, 5, 1010, 173, 7, 178, 7, - 3, 4, 180, 972, 180, 176, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 181, 1000, 1001, 1068, 7, 7, 175, 6, 86, 7, - 7, 1010, 88, 718, 719, 181, 721, 5, 723, 724, - 5, 5, 5, 5, 5, 5, 1025, 1026, 5, 5, - 5, 5, 5, 1014, 142, 6, 5, 1014, 1037, 5, - 1039, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 1049, 5, 5, 5, 5, 3, 5, 1056, 1057, 1058, - 5, 766, 767, 6, 1063, 770, 5, 180, 1067, 102, - 103, 104, 105, 180, 1073, 1074, 175, 175, 6, 4, - 177, 786, 787, 6, 178, 7, 7, 792, 793, 717, - 1089, 7, 7, 7, 799, 7, 801, 1096, 153, 154, - 155, 156, 157, 7, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 182, 182, 1114, 181, 181, 173, 7, - 7, 174, 7, 180, 752, 753, 754, 178, 180, 5, - 163, 164, 174, 180, 180, 180, 169, 180, 1137, 175, - 1139, 174, 174, 180, 177, 180, 179, 181, 181, 6, - 180, 856, 780, 858, 180, 180, 180, 180, 180, 180, - 180, 789, 180, 180, 869, 870, 871, 180, 180, 874, - 875, 876, 877, 878, 879, 880, 1175, 6, 4, 180, - 180, 1180, 153, 154, 155, 156, 157, 180, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 6, 6, 177, - 6, 180, 173, 1202, 7, 1204, 176, 1206, 180, 1208, - 1209, 6, 180, 180, 7, 1214, 7, 7, 1199, 4, - 8, 7, 1199, 1222, 7, 180, 7, 7, 7, 7, - 180, 1230, 7, 180, 180, 7, 1235, 181, 7, 1238, - 6, 6, 6, 1242, 1243, 6, 4, 7, 7, 3, - 3, 1250, 3, 3, 1253, 165, 1255, 1256, 1257, 3, - 3, 3, 3, 4, 3, 970, 3, 3, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 3, 3, 3, 3, 153, 154, 155, 156, - 157, 1300, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 5, 1311, 5, 3, 3, 173, 181, 1317, 6, - 4, 1320, 174, 6, 175, 175, 7, 6, 1033, 178, - 6, 6, 6, 181, 6, 1040, 6, 181, 87, 180, - 180, 175, 180, 1342, 175, 1344, 6, 180, 175, 6, - 180, 175, 180, 1398, 1059, 180, 175, 985, 180, 987, - 180, 102, 103, 104, 105, 153, 154, 155, 156, 157, - 1075, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 180, 180, 180, 180, 180, 173, 175, 1015, 180, 1017, - 4, 1019, 3, 4, 1439, 177, 1441, 6, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 163, 164, 180, 1470, 178, 175, 169, 6, - 41, 6, 6, 174, 180, 1434, 177, 6, 179, 6, - 181, 6, 180, 6, 6, 180, 180, 6, 6, 6, - 61, 62, 63, 64, 65, 66, 6, 6, 6, 6, - 6, 6, 6, 74, 75, 6, 87, 1466, 1467, 7, - 3, 6, 3, 7, 6, 165, 6, 6, 3, 6, - 3, 181, 6, 1482, 6, 3, 6, 3, 3, 3, - 181, 102, 103, 104, 105, 6, 4, 6, 178, 6, - 6, 6, 6, 181, 177, 182, 84, 6, 1213, 175, - 181, 180, 1217, 181, 181, 180, 180, 175, 180, 180, - 175, 175, 3, 4, 180, 175, 175, 1232, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 163, 164, 6, 180, 175, 180, 169, 175, - 6, 89, 3, 174, 6, 3, 87, 6, 179, 6, - 181, 6, 6, 6, 1202, 6, 1204, 6, 1206, 153, - 154, 155, 156, 157, 3, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 6, 6, 5, 181, 6, 173, - 5, 182, 6, 182, 175, 181, 6, 180, 1313, 181, - 180, 175, 180, 6, 180, 175, 6, 6, 6, 1324, - 1325, 102, 103, 104, 105, 180, 180, 180, 1256, 6, - 6, 6, 6, 6, 3, 4, 6, 180, 6, 6, + 165, 166, 167, 177, 6, 4, 7, 7, 173, 156, + 157, 7, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 7, 176, 1202, 7, 7, 173, 7, 1207, 7, + 7, 7, 1348, 7, 7, 6, 1352, 1353, 6, 6, + 6, 4, 7, 7, 3, 3, 3, 3, 165, 3, + 1229, 3, 1231, 3, 1233, 3, 3, 3, 3, 1238, + 1239, 3, 3, 3, 7, 1244, 5, 5, 3, 1226, + 6, 1226, 3, 1252, 6, 4, 6, 181, 174, 178, + 175, 1260, 6, 175, 6, 6, 1265, 6, 6, 1268, + 181, 6, 181, 1272, 1273, 6, 6, 87, 1347, 181, + 180, 1280, 180, 175, 1283, 180, 6, 1423, 175, 1229, + 180, 1231, 175, 1233, 3, 4, 180, 175, 180, 180, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 6, 6, 6, 5, 5, 181, - 6, 181, 6, 175, 6, 6, 6, 175, 181, 1384, - 180, 182, 163, 164, 1389, 180, 180, 180, 169, 180, - 84, 181, 180, 174, 6, 5, 181, 6, 179, 5, - 181, 153, 154, 155, 156, 157, 181, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 181, 180, 182, 181, - 180, 173, 1427, 181, 175, 175, 182, 6, 6, 6, - 6, 1436, 6, 102, 103, 104, 105, 84, 6, 6, - 6, 153, 154, 155, 156, 157, 6, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 182, 181, 180, 180, - 6, 173, 6, 6, 1469, 6, 6, 180, 6, 175, - 180, 6, 6, 180, 175, 6, 0, 180, 180, 1484, - 0, 180, 636, 1300, 3, 3, 1491, 975, -1, -1, - -1, 1496, -1, 1498, 163, 164, -1, -1, -1, -1, - 169, -1, -1, -1, -1, 174, -1, 3, 4, 5, - 179, 7, 181, 9, 10, 11, 12, 13, 14, 15, + 29, 30, 31, 32, 175, 180, 180, 180, 1327, 6, + 180, 6, 41, 175, 1470, 4, 175, 7, 1337, 180, + 180, 1340, 180, 180, 1343, 180, 180, 180, 180, 180, + 178, 6, 61, 62, 63, 64, 65, 66, 6, 6, + 177, 6, 6, 6, 1500, 74, 75, 6, 6, 6, + 6, 1370, 6, 1372, 6, 6, 6, 6, 1514, 6, + 6, 6, 6, 87, 3, 1521, 6, 1432, 6, 3, + 1526, 6, 1528, 102, 103, 104, 105, 153, 154, 155, + 156, 157, 6, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 153, 154, 155, 156, 157, 173, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 6, 1473, 165, + 1475, 3, 173, 153, 154, 155, 156, 157, 6, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 3, 6, + 6, 3, 6, 173, 163, 164, 1501, 3, 3, 3, + 169, 178, 181, 6, 6, 174, 4, 3, 4, 1468, + 179, 6, 181, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 6, 34, 35, - 36, 37, 3, 4, 40, -1, -1, -1, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, -1, -1, 153, 154, 155, 156, 157, - 41, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, -1, -1, -1, - 61, 62, 63, 64, 65, 66, 102, 103, 104, 105, - 3, 4, -1, 74, 75, -1, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - -1, 102, 103, 104, 105, -1, -1, -1, -1, -1, - -1, -1, -1, 149, 150, 151, 152, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 163, 164, -1, - -1, -1, 8, 169, 170, 171, -1, -1, 174, -1, - 176, -1, 178, 179, 153, 154, 155, 156, 157, -1, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 8, - -1, -1, 163, 164, 173, -1, -1, -1, 169, 102, - 103, 104, 105, 174, 3, 4, 5, -1, 179, -1, + 26, 27, 28, 29, 30, 31, 32, 6, 1497, 1498, + 6, 177, 7, 6, 6, 6, 84, 181, 3, 4, + 182, 175, 180, 1512, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 153, 154, + 155, 156, 157, 6, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 181, 87, 89, 6, 180, 173, 181, + 181, 3, 175, 180, 3, 4, 102, 103, 104, 105, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, 34, 35, 36, 37, 8, - -1, 40, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, - 163, 164, -1, -1, -1, -1, 169, -1, -1, -1, - -1, 174, 3, 4, -1, -1, 179, -1, 9, 10, + 29, 30, 31, 32, 181, 181, 180, 180, 180, 175, + 175, 175, 175, 180, 175, 175, 6, 102, 103, 104, + 105, 153, 154, 155, 156, 157, 180, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 6, 163, 164, 180, + 3, 173, 6, 169, 6, 6, 6, 6, 174, 6, + 3, 177, 6, 179, 5, 181, 6, 153, 154, 155, + 156, 157, 181, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 5, 102, 103, 104, 105, 173, 163, 164, + 182, 181, 6, 181, 169, 182, 180, 175, 6, 174, + 180, 180, 177, 180, 179, 175, 181, 3, 4, 180, + 175, 180, 180, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 6, 6, 6, + 6, 6, 6, 6, 163, 164, 6, 6, 6, 6, + 169, 6, 6, 6, 6, 174, 6, 5, 177, 5, + 179, 181, 181, 3, 4, 181, 181, 180, 182, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 182, 180, 180, 175, 175, 180, 180, + 6, 6, 6, 6, 181, 180, 102, 103, 104, 105, + 3, 4, 5, 84, 7, 6, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 6, 34, 35, 36, 37, 6, 5, 40, 6, 5, + 181, 181, 181, 180, 182, 181, 180, 175, 175, 181, + 6, 182, 102, 103, 104, 105, 6, 163, 164, 6, + 84, 6, 6, 169, 6, 8, 6, 181, 174, 180, + 180, 6, 6, 179, 6, 181, 153, 154, 155, 156, + 157, 6, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 180, 180, 6, 180, 175, 173, 6, 6, 102, + 103, 104, 105, 6, 0, 0, 3, 1327, 180, 180, + 646, 3, 993, 163, 164, -1, -1, -1, 175, 169, + -1, 180, -1, -1, 174, -1, -1, -1, -1, 179, + -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 149, 150, 151, 152, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 163, 164, -1, -1, -1, -1, 169, 170, 171, -1, + -1, 174, -1, 176, 8, 178, 179, 3, 4, -1, + -1, -1, -1, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, -1, 8, + 153, 154, 155, 156, 157, 41, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, -1, -1, -1, 61, 62, 63, 64, 65, + 66, -1, 8, -1, -1, 3, 4, -1, 74, 75, + -1, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, 102, 103, 104, 105, + 3, 4, 5, -1, -1, -1, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, 35, 36, 37, -1, -1, 40, -1, 153, + 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, + 164, 165, 166, 167, -1, -1, -1, 163, 164, 173, + 8, -1, -1, 169, 102, 103, 104, 105, 174, -1, + -1, -1, -1, 179, 153, 154, 155, 156, 157, -1, + 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, + -1, -1, -1, -1, 173, -1, -1, -1, -1, 102, + 103, 104, 105, -1, -1, -1, -1, 153, 154, 155, + 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, + 166, 167, -1, -1, -1, 163, 164, 173, -1, -1, + -1, 169, -1, -1, -1, -1, 174, -1, -1, -1, + -1, 179, -1, -1, -1, 153, 154, 155, 156, 157, + -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 163, 164, -1, -1, -1, 173, 169, -1, -1, -1, + -1, 174, 3, 4, 182, -1, 179, -1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, 102, 103, 104, 105, 153, 154, 155, - 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, - -1, -1, -1, -1, 153, 154, 155, 156, 157, -1, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 153, - 154, 155, 156, 157, 173, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 163, 164, -1, -1, -1, 173, - 169, 102, 103, 104, 105, 174, 180, -1, 182, -1, - 179, -1, -1, -1, 153, 154, 155, 156, 157, -1, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 153, - 154, 155, 156, 157, 173, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 153, 154, 155, 156, 157, 173, - 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, 163, 164, 173, -1, 175, -1, 169, -1, - -1, 180, -1, 174, -1, -1, -1, -1, 179, 41, - 42, 43, 44, 45, 46, 47, 48, -1, 50, -1, - 52, 53, -1, 55, 56, -1, -1, -1, -1, -1, - 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, - 72, 52, 53, -1, 55, 56, -1, -1, -1, 81, - 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 72, -1, -1, -1, -1, -1, 99, -1, -1, - 81, 82, 83, -1, -1, 41, 42, 43, 44, 45, - 46, 47, 48, -1, 50, -1, 52, 53, 99, 55, + 31, 32, -1, -1, -1, 153, 154, 155, 156, 157, + -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, + -1, -1, -1, -1, -1, 173, 41, 42, 43, 44, + 45, 46, 47, 48, -1, 50, -1, 52, 53, -1, + 55, 56, -1, -1, -1, -1, -1, 41, 42, 43, + 44, 45, 46, 47, 48, -1, 50, 72, 52, 53, + -1, 55, 56, -1, -1, -1, 81, 82, 83, -1, + -1, 102, 103, 104, 105, -1, -1, -1, 72, -1, + -1, -1, -1, -1, 99, -1, -1, 81, 82, 83, + -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, + 46, 47, 48, -1, 50, 99, 52, 53, -1, 55, 56, -1, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, 72, 52, 53, -1, - 55, 56, -1, -1, -1, 81, 82, 83, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 72, -1, -1, + 55, 56, 163, 164, -1, 81, 82, 83, 169, -1, + -1, -1, -1, 174, -1, -1, -1, 72, 179, -1, -1, -1, -1, 99, -1, -1, 81, 82, 83, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 182, -1, -1, -1, 99, 41, 42, 43, 44, 45, - 46, 47, 48, -1, 50, -1, 52, 53, -1, 55, - 56, 182, -1, -1, -1, -1, -1, -1, -1, 0, - 1, -1, 3, 4, -1, -1, 72, -1, -1, -1, - -1, -1, -1, -1, -1, 81, 82, 83, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 33, 99, -1, -1, 182, 38, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 182, -1, -1, + -1, -1, -1, -1, 99, 41, 42, 43, 44, 45, + 46, 47, 48, -1, 50, -1, 52, 53, 182, 55, + 56, -1, -1, -1, -1, -1, -1, -1, 41, 42, + 43, 44, 45, 46, 47, 48, 72, 50, -1, 52, + 53, -1, 55, 56, -1, 81, 82, 83, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, + -1, -1, -1, 99, -1, -1, 182, -1, 81, 82, + 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 99, 182, -1, 41, + 42, 43, 44, 45, 46, 47, 48, -1, 50, -1, + 52, 53, -1, 55, 56, -1, -1, -1, -1, -1, + 0, 1, -1, 3, 4, -1, -1, -1, -1, -1, + 72, -1, -1, -1, -1, -1, -1, -1, -1, 81, + 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, 182, 99, 38, 39, + -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, + 50, 51, 52, 53, 54, 55, 56, -1, -1, 182, + 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, 72, 44, 74, 75, -1, -1, -1, -1, + 80, 81, 82, 83, -1, -1, -1, -1, 88, -1, + 90, -1, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, -1, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + 182, -1, -1, 173, 124, 125, 126, 127, 128, 129, + 130, 131, 182, -1, -1, 106, 107, 108, -1, -1, + -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 4, -1, -1, -1, -1, -1, -1, + -1, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, -1, 143, 144, 145, 146, 147, 148, -1, -1, + -1, -1, 33, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, - 51, 52, 53, 54, 55, 56, -1, 182, -1, 60, + 51, 52, 53, 54, 55, 56, -1, -1, -1, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, - 71, 72, 44, 74, 75, -1, -1, -1, -1, 80, + 71, 72, -1, 74, 75, -1, -1, -1, -1, 80, 81, 82, 83, -1, -1, -1, -1, 88, -1, 90, -1, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 153, 154, 155, 156, 157, -1, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 182, -1, -1, -1, - -1, 173, -1, 124, 125, 126, 127, 128, 129, 130, - 131, -1, -1, -1, 106, 107, 108, -1, -1, -1, - -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 4, -1, -1, -1, -1, -1, -1, -1, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - -1, 143, 144, 145, 146, 147, 148, -1, -1, -1, - -1, 33, -1, -1, -1, -1, 38, 39, -1, 41, - 42, 43, 44, 45, 46, 47, 48, -1, 50, 51, - 52, 53, 54, 55, 56, -1, -1, -1, 60, 61, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, -1, 74, 75, -1, -1, -1, -1, 80, 81, - 82, 83, -1, -1, -1, -1, 88, -1, 90, -1, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, - -1, 52, 53, -1, 55, 56, 153, 154, 155, 156, - 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 72, -1, -1, -1, -1, 173, -1, -1, -1, - 81, 82, 83, 180, -1, 182, -1, -1, -1, -1, - -1, -1, -1, 153, 154, 155, 156, 157, 99, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, - 180, -1, 182, 153, 154, 155, 156, 157, -1, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, -1, -1, 153, 154, 155, - 156, 157, 182, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, - -1, 153, 154, 155, 156, 157, 182, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, -1, -1, 153, 154, 155, 156, 157, - 182, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, -1, -1, 153, - 154, 155, 156, 157, 182, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 153, 154, 155, 156, 157, 182, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, -1, -1, 153, 154, 155, - 156, 157, 182, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, - -1, 153, 154, 155, 156, 157, 182, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, -1, -1, 153, 154, 155, 156, 157, - 182, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, -1, -1, 153, - 154, 155, 156, 157, 182, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 153, 154, 155, 156, 157, 182, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, -1, -1, 153, 154, 155, - 156, 157, 182, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, - -1, 153, 154, 155, 156, 157, 182, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, -1, -1, 153, 154, 155, 156, 157, - 182, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, -1, -1, 153, - 154, 155, 156, 157, 182, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 153, 154, 155, 156, 157, 182, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, -1, -1, 153, 154, 155, - 156, 157, 182, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, -1, - -1, 153, 154, 155, 156, 157, 182, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, -1, -1, 153, 154, 155, 156, 157, - 182, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, -1, -1, 153, - 154, 155, 156, 157, 182, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 153, 154, 155, 156, 157, 182, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, - 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, - -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, - 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, - -1, -1, -1, 173, -1, 153, 154, 155, 156, 157, - 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 153, 154, 155, - 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, - 166, 167, -1, -1, -1, -1, -1, 173, -1, 153, - 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + 101, 41, 42, 43, 44, 45, 46, 47, 48, -1, + 50, -1, 52, 53, -1, 55, 56, 153, 154, 155, + 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 72, -1, -1, -1, -1, 173, -1, -1, + -1, 81, 82, 83, 180, -1, 182, -1, -1, -1, + -1, -1, -1, -1, 153, 154, 155, 156, 157, 99, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, -1, -1, -1, -1, + -1, 180, -1, 182, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, -1, -1, -1, -1, + -1, 180, -1, 182, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, -1, -1, 153, 154, + 155, 156, 157, 182, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 153, 154, 155, 156, 157, 182, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, -1, -1, 153, 154, 155, 156, + 157, 182, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, -1, -1, + 153, 154, 155, 156, 157, 182, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, -1, -1, 153, 154, 155, 156, 157, 182, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, -1, -1, 153, 154, + 155, 156, 157, 182, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 153, 154, 155, 156, 157, 182, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, -1, -1, 153, 154, 155, 156, + 157, 182, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, -1, -1, + 153, 154, 155, 156, 157, 182, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, -1, -1, 153, 154, 155, 156, 157, 182, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, -1, -1, 153, 154, + 155, 156, 157, 182, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 153, 154, 155, 156, 157, 182, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, -1, -1, 153, 154, 155, 156, + 157, 182, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, -1, -1, + 153, 154, 155, 156, 157, 182, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, -1, -1, 153, 154, 155, 156, 157, 182, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, -1, -1, 153, 154, + 155, 156, 157, 182, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 153, 154, 155, 156, 157, 182, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, -1, -1, 153, 154, 155, 156, + 157, 182, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, -1, -1, + 153, 154, 155, 156, 157, 182, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, -1, -1, 153, 154, 155, 156, 157, 182, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, 175, -1, -1, -1, + -1, 180, 153, 154, 155, 156, 157, -1, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, + 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, -1, -1, 177, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, - -1, 175, 153, 154, 155, 156, 157, -1, 159, 160, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 153, 154, 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, - -1, -1, 173, -1, 175, 153, 154, 155, 156, 157, - -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, - -1, -1, -1, -1, -1, 173, -1, 175, 153, 154, + -1, -1, 173, -1, 153, 154, 155, 156, 157, 180, + 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, + -1, -1, -1, -1, 173, -1, 153, 154, 155, 156, + 157, 180, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173, -1, 153, 154, + 155, 156, 157, 180, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, + -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, -1, -1, 177, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, 175, 153, 154, 155, 156, 157, -1, 159, 160, 161, @@ -2336,7 +2384,16 @@ static const short yycheck[] = { 18, 162, 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, 173, -1, 175, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, - -1, -1, -1, -1, 173, -1, 175 + -1, -1, -1, -1, 173, -1, 175, 153, 154, 155, + 156, 157, -1, 159, 160, 161, 162, 163, 164, 165, + 166, 167, -1, -1, -1, -1, -1, 173, -1, 175, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + 163, 164, 165, 166, 167, -1, -1, -1, -1, -1, + 173, -1, 175, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, 163, 164, 165, 166, 167, -1, -1, + -1, -1, -1, 173, -1, 175, 153, 154, 155, 156, + 157, -1, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, -1, -1, -1, -1, 173 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/bison.simple" @@ -5114,488 +5171,323 @@ case 187: ; break;} case 188: -#line 2219 "Gmsh.y" -{ - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], - 0., 0., 0., 0., 0., 0., 0., - &pc, &prc, 1, NULL); - TheShape.Type = MSH_POINT; +#line 2217 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShapes(TRANSLATE, yyvsp[-1].l, + yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], 0., 0., 0., 0., 0., 0., 0., + NULL, yyval.l); + List_Delete(yyvsp[-1].l); ; break;} case 189: -#line 2235 "Gmsh.y" -{ - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-8].d, 0., 0., 0., - yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, - &pc, &prc, 1, NULL); - TheShape.Type = MSH_POINT; +#line 2225 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShapes(ROTATE, yyvsp[-1].l, + 0., 0., 0., yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, + NULL, yyval.l); + List_Delete(yyvsp[-1].l); ; break;} case 190: -#line 2251 "Gmsh.y" -{ - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], - yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, - &pc, &prc, 1, NULL); - TheShape.Type = MSH_POINT; +#line 2233 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-1].l, + yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, + NULL, yyval.l); + List_Delete(yyvsp[-1].l); ; break;} case 191: -#line 2267 "Gmsh.y" +#line 2241 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 192: -#line 2272 "Gmsh.y" +#line 2246 "Gmsh.y" { - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], - 0., 0., 0., 0., 0., 0., 0., - &pc, &prc, 1, &extr); - TheShape.Type = MSH_POINT; yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShapes(TRANSLATE, yyvsp[-3].l, + yyvsp[-5].v[0], yyvsp[-5].v[1], yyvsp[-5].v[2], 0., 0., 0., 0., 0., 0., 0., + &extr, yyval.l); + List_Delete(yyvsp[-3].l); ; break;} case 193: -#line 2288 "Gmsh.y" +#line 2254 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 194: -#line 2293 "Gmsh.y" -{ - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)yyvsp[-12].d, 0., 0., 0., - yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, - &pc, &prc, 1, &extr); - TheShape.Type = MSH_POINT; +#line 2259 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShapes(ROTATE, yyvsp[-3].l, + 0., 0., 0., yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); + List_Delete(yyvsp[-3].l); ; break;} case 195: -#line 2309 "Gmsh.y" +#line 2267 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 196: -#line 2314 "Gmsh.y" -{ - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], - yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, - &pc, &prc, 1, &extr); - TheShape.Type = MSH_POINT; +#line 2272 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-3].l, + yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); + List_Delete(yyvsp[-3].l); ; break;} case 197: -#line 2332 "Gmsh.y" -{ - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], - 0., 0., 0., 0., 0., 0., 0., - &ps, 1, NULL); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } +#line 2282 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-4].d, + yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0., + NULL, yyval.l); ; break;} case 198: -#line 2355 "Gmsh.y" -{ - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-8].d, 0., 0., 0., - yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, - &ps, 1, NULL); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } +#line 2289 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-4].d, + yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0., + NULL, yyval.l); ; break;} case 199: -#line 2378 "Gmsh.y" -{ - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], - yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, - &ps, 1, NULL); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } +#line 2296 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-4].d, + yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], 0., 0., 0., 0., 0., 0., 0., + NULL, yyval.l); ; break;} case 200: -#line 2401 "Gmsh.y" +#line 2303 "Gmsh.y" { - extr.mesh.ExtrudeMesh = false; - extr.mesh.Recombine = false; + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-8].d, + 0., 0., 0., yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + NULL, yyval.l); ; break;} case 201: -#line 2406 "Gmsh.y" -{ - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], - 0., 0., 0., 0., 0., 0., 0., - &ps, 1, &extr); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } +#line 2310 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, + 0., 0., 0., yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + NULL, yyval.l); ; break;} case 202: -#line 2429 "Gmsh.y" +#line 2317 "Gmsh.y" { - extr.mesh.ExtrudeMesh = false; - extr.mesh.Recombine = false; + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, + 0., 0., 0., yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + NULL, yyval.l); ; break;} case 203: -#line 2434 "Gmsh.y" +#line 2324 "Gmsh.y" { - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)yyvsp[-12].d, 0., 0., 0., - yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, - &ps, 1, &extr); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-10].d, + yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + NULL, yyval.l); ; break;} case 204: -#line 2457 "Gmsh.y" +#line 2331 "Gmsh.y" { - extr.mesh.ExtrudeMesh = false; - extr.mesh.Recombine = false; + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-10].d, + yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + NULL, yyval.l); ; break;} case 205: -#line 2462 "Gmsh.y" -{ - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], - yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, - &ps, 1, &extr); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } +#line 2338 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-10].d, + yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, + NULL, yyval.l); ; break;} case 206: -#line 2488 "Gmsh.y" -{ - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-4].d, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2], - 0., 0., 0., 0., 0., 0., 0., - &pv, NULL); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } - yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add(yyval.l, &TheShape); - } +#line 2345 "Gmsh.y" +{ + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; ; break;} case 207: -#line 2511 "Gmsh.y" -{ - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-8].d, 0., 0., 0., - yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, - &pv, NULL); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } +#line 2350 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-8].d, + yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0., + &extr, yyval.l); ; break;} case 208: -#line 2534 "Gmsh.y" -{ - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-10].d, yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], - yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].v[0], yyvsp[-4].v[1], yyvsp[-4].v[2], yyvsp[-2].d, - &pv, NULL); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } - yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add(yyval.l, &TheShape); - } - ; - break;} -case 209: -#line 2557 "Gmsh.y" +#line 2357 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 210: -#line 2562 "Gmsh.y" -{ - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)yyvsp[-8].d, yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], - 0., 0., 0., 0., 0., 0., 0., - &pv, &extr); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } +case 209: +#line 2362 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, + yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0., + &extr, yyval.l); ; break;} -case 211: -#line 2585 "Gmsh.y" +case 210: +#line 2369 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 212: -#line 2591 "Gmsh.y" -{ - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)yyvsp[-12].d, 0., 0., 0., - yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, - &pv, &extr); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } +case 211: +#line 2374 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, + yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], 0., 0., 0., 0., 0., 0., 0., + &extr, yyval.l); ; break;} -case 213: -#line 2614 "Gmsh.y" +case 212: +#line 2381 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 214: -#line 2620 "Gmsh.y" -{ - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)yyvsp[-14].d, yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], - yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, - &pv, &extr); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } +case 213: +#line 2386 "Gmsh.y" +{ yyval.l = List_Create(2, 1, sizeof(Shape)); - List_Add(yyval.l, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add(yyval.l, &TheShape); - } + ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-12].d, + 0., 0., 0., yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); + ; + break;} +case 214: +#line 2393 "Gmsh.y" +{ + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; ; break;} case 215: -#line 2646 "Gmsh.y" +#line 2398 "Gmsh.y" { + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-12].d, + 0., 0., 0., yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); ; break;} case 216: -#line 2649 "Gmsh.y" +#line 2405 "Gmsh.y" { + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; ; break;} case 217: -#line 2655 "Gmsh.y" +#line 2410 "Gmsh.y" +{ + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-12].d, + 0., 0., 0., yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); + ; + break;} +case 218: +#line 2417 "Gmsh.y" +{ + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + ; + break;} +case 219: +#line 2422 "Gmsh.y" +{ + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-14].d, + yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); + ; + break;} +case 220: +#line 2429 "Gmsh.y" +{ + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + ; + break;} +case 221: +#line 2434 "Gmsh.y" +{ + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-14].d, + yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); + ; + break;} +case 222: +#line 2441 "Gmsh.y" +{ + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + ; + break;} +case 223: +#line 2446 "Gmsh.y" +{ + yyval.l = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-14].d, + yyvsp[-12].v[0], yyvsp[-12].v[1], yyvsp[-12].v[2], yyvsp[-10].v[0], yyvsp[-10].v[1], yyvsp[-10].v[2], yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].d, + &extr, yyval.l); + ; + break;} +case 224: +#line 2457 "Gmsh.y" +{ + ; + break;} +case 225: +#line 2460 "Gmsh.y" +{ + ; + break;} +case 226: +#line 2466 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -5622,8 +5514,8 @@ case 217: List_Delete(yyvsp[-2].l); ; break;} -case 218: -#line 2681 "Gmsh.y" +case 227: +#line 2492 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -5648,14 +5540,14 @@ case 218: List_Delete(yyvsp[-2].l); ; break;} -case 219: -#line 2705 "Gmsh.y" +case 228: +#line 2516 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} -case 220: -#line 2714 "Gmsh.y" +case 229: +#line 2525 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -5674,8 +5566,8 @@ case 220: List_Delete(yyvsp[-3].l); ; break;} -case 221: -#line 2732 "Gmsh.y" +case 230: +#line 2543 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -5694,8 +5586,8 @@ case 221: List_Delete(yyvsp[-6].l); ; break;} -case 222: -#line 2750 "Gmsh.y" +case 231: +#line 2561 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -5714,8 +5606,8 @@ case 222: List_Delete(yyvsp[-6].l); ; break;} -case 223: -#line 2768 "Gmsh.y" +case 232: +#line 2579 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d, THEM); if(!s) @@ -5745,8 +5637,8 @@ case 223: List_Delete(yyvsp[-1].l); ; break;} -case 224: -#line 2797 "Gmsh.y" +case 233: +#line 2608 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-5].d, THEM); if(!s) @@ -5782,8 +5674,8 @@ case 224: Free(yyvsp[-1].c); ; break;} -case 225: -#line 2832 "Gmsh.y" +case 234: +#line 2643 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d, THEM); if(!s) @@ -5811,8 +5703,8 @@ case 225: List_Delete(yyvsp[-1].l); ; break;} -case 226: -#line 2859 "Gmsh.y" +case 235: +#line 2670 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d, THEM); if(!v) @@ -5840,8 +5732,8 @@ case 226: List_Delete(yyvsp[-1].l); ; break;} -case 227: -#line 2886 "Gmsh.y" +case 236: +#line 2697 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -5856,8 +5748,8 @@ case 227: List_Delete(yyvsp[-3].l); ; break;} -case 228: -#line 2900 "Gmsh.y" +case 237: +#line 2711 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ double d; @@ -5871,72 +5763,72 @@ case 228: List_Delete(yyvsp[-1].l); ; break;} -case 229: -#line 2919 "Gmsh.y" +case 238: +#line 2730 "Gmsh.y" { ReplaceAllDuplicates(THEM); ; break;} -case 230: -#line 2923 "Gmsh.y" +case 239: +#line 2734 "Gmsh.y" { IntersectAllSegmentsTogether(); ; break;} -case 231: -#line 2932 "Gmsh.y" +case 240: +#line 2743 "Gmsh.y" {yyval.i = 1;; break;} -case 232: -#line 2933 "Gmsh.y" +case 241: +#line 2744 "Gmsh.y" {yyval.i = 0;; break;} -case 233: -#line 2934 "Gmsh.y" +case 242: +#line 2745 "Gmsh.y" {yyval.i = -1;; break;} -case 234: -#line 2935 "Gmsh.y" +case 243: +#line 2746 "Gmsh.y" {yyval.i = -1;; break;} -case 235: -#line 2936 "Gmsh.y" +case 244: +#line 2747 "Gmsh.y" {yyval.i = -1;; break;} -case 236: -#line 2940 "Gmsh.y" +case 245: +#line 2751 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 237: -#line 2941 "Gmsh.y" +case 246: +#line 2752 "Gmsh.y" { yyval.d = yyvsp[-1].d; ; break;} -case 238: -#line 2942 "Gmsh.y" +case 247: +#line 2753 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} -case 239: -#line 2943 "Gmsh.y" +case 248: +#line 2754 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 240: -#line 2944 "Gmsh.y" +case 249: +#line 2755 "Gmsh.y" { yyval.d = !yyvsp[0].d; ; break;} -case 241: -#line 2945 "Gmsh.y" +case 250: +#line 2756 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d; ; break;} -case 242: -#line 2946 "Gmsh.y" +case 251: +#line 2757 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d; ; break;} -case 243: -#line 2947 "Gmsh.y" +case 252: +#line 2758 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d; ; break;} -case 244: -#line 2949 "Gmsh.y" +case 253: +#line 2760 "Gmsh.y" { if(!yyvsp[0].d) yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -5944,248 +5836,248 @@ case 244: yyval.d = yyvsp[-2].d / yyvsp[0].d; ; break;} -case 245: -#line 2955 "Gmsh.y" +case 254: +#line 2766 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d; ; break;} -case 246: -#line 2956 "Gmsh.y" +case 255: +#line 2767 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ; break;} -case 247: -#line 2957 "Gmsh.y" +case 256: +#line 2768 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d; ; break;} -case 248: -#line 2958 "Gmsh.y" +case 257: +#line 2769 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d; ; break;} -case 249: -#line 2959 "Gmsh.y" +case 258: +#line 2770 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d; ; break;} -case 250: -#line 2960 "Gmsh.y" +case 259: +#line 2771 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d; ; break;} -case 251: -#line 2961 "Gmsh.y" +case 260: +#line 2772 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d; ; break;} -case 252: -#line 2962 "Gmsh.y" +case 261: +#line 2773 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d; ; break;} -case 253: -#line 2963 "Gmsh.y" +case 262: +#line 2774 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d; ; break;} -case 254: -#line 2964 "Gmsh.y" +case 263: +#line 2775 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d; ; break;} -case 255: -#line 2965 "Gmsh.y" +case 264: +#line 2776 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d; ; break;} -case 256: -#line 2966 "Gmsh.y" +case 265: +#line 2777 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 257: -#line 2967 "Gmsh.y" +case 266: +#line 2778 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 258: -#line 2968 "Gmsh.y" +case 267: +#line 2779 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 259: -#line 2969 "Gmsh.y" +case 268: +#line 2780 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 260: -#line 2970 "Gmsh.y" +case 269: +#line 2781 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 261: -#line 2971 "Gmsh.y" +case 270: +#line 2782 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 262: -#line 2972 "Gmsh.y" +case 271: +#line 2783 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 263: -#line 2973 "Gmsh.y" +case 272: +#line 2784 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 264: -#line 2974 "Gmsh.y" +case 273: +#line 2785 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 265: -#line 2975 "Gmsh.y" +case 274: +#line 2786 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 266: -#line 2976 "Gmsh.y" +case 275: +#line 2787 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} -case 267: -#line 2977 "Gmsh.y" +case 276: +#line 2788 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 268: -#line 2978 "Gmsh.y" +case 277: +#line 2789 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 269: -#line 2979 "Gmsh.y" +case 278: +#line 2790 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 270: -#line 2980 "Gmsh.y" +case 279: +#line 2791 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 271: -#line 2981 "Gmsh.y" +case 280: +#line 2792 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 272: -#line 2982 "Gmsh.y" +case 281: +#line 2793 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 273: -#line 2983 "Gmsh.y" +case 282: +#line 2794 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 274: -#line 2984 "Gmsh.y" +case 283: +#line 2795 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 275: -#line 2985 "Gmsh.y" +case 284: +#line 2796 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 276: -#line 2986 "Gmsh.y" +case 285: +#line 2797 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 277: -#line 2988 "Gmsh.y" +case 286: +#line 2799 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 278: -#line 2989 "Gmsh.y" +case 287: +#line 2800 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 279: -#line 2990 "Gmsh.y" +case 288: +#line 2801 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 280: -#line 2991 "Gmsh.y" +case 289: +#line 2802 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 281: -#line 2992 "Gmsh.y" +case 290: +#line 2803 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 282: -#line 2993 "Gmsh.y" +case 291: +#line 2804 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 283: -#line 2994 "Gmsh.y" +case 292: +#line 2805 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 284: -#line 2995 "Gmsh.y" +case 293: +#line 2806 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 285: -#line 2996 "Gmsh.y" +case 294: +#line 2807 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 286: -#line 2997 "Gmsh.y" +case 295: +#line 2808 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 287: -#line 2998 "Gmsh.y" +case 296: +#line 2809 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} -case 288: -#line 2999 "Gmsh.y" +case 297: +#line 2810 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 289: -#line 3000 "Gmsh.y" +case 298: +#line 2811 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 290: -#line 3001 "Gmsh.y" +case 299: +#line 2812 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 291: -#line 3002 "Gmsh.y" +case 300: +#line 2813 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 292: -#line 3003 "Gmsh.y" +case 301: +#line 2814 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 293: -#line 3004 "Gmsh.y" +case 302: +#line 2815 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 294: -#line 3005 "Gmsh.y" +case 303: +#line 2816 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 295: -#line 3006 "Gmsh.y" +case 304: +#line 2817 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 296: -#line 3007 "Gmsh.y" +case 305: +#line 2818 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 297: -#line 3008 "Gmsh.y" +case 306: +#line 2819 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 298: -#line 3017 "Gmsh.y" +case 307: +#line 2828 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 299: -#line 3018 "Gmsh.y" +case 308: +#line 2829 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} -case 300: -#line 3019 "Gmsh.y" +case 309: +#line 2830 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} -case 301: -#line 3020 "Gmsh.y" +case 310: +#line 2831 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} -case 302: -#line 3021 "Gmsh.y" +case 311: +#line 2832 "Gmsh.y" { yyval.d = GMSH_MAJOR_VERSION; ; break;} -case 303: -#line 3022 "Gmsh.y" +case 312: +#line 2833 "Gmsh.y" { yyval.d = GMSH_MINOR_VERSION; ; break;} -case 304: -#line 3023 "Gmsh.y" +case 313: +#line 2834 "Gmsh.y" { yyval.d = GMSH_PATCH_VERSION; ; break;} -case 305: -#line 3028 "Gmsh.y" +case 314: +#line 2839 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[0].c; @@ -6199,8 +6091,8 @@ case 305: Free(yyvsp[0].c); ; break;} -case 306: -#line 3041 "Gmsh.y" +case 315: +#line 2852 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-3].c; @@ -6221,8 +6113,8 @@ case 306: Free(yyvsp[-3].c); ; break;} -case 307: -#line 3061 "Gmsh.y" +case 316: +#line 2872 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-2].c; @@ -6237,8 +6129,8 @@ case 307: Free(yyvsp[-2].c); ; break;} -case 308: -#line 3075 "Gmsh.y" +case 317: +#line 2886 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-1].c; @@ -6252,8 +6144,8 @@ case 308: Free(yyvsp[-1].c); ; break;} -case 309: -#line 3088 "Gmsh.y" +case 318: +#line 2899 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-4].c; @@ -6274,8 +6166,8 @@ case 309: Free(yyvsp[-4].c); ; break;} -case 310: -#line 3111 "Gmsh.y" +case 319: +#line 2922 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -6294,8 +6186,8 @@ case 310: Free(yyvsp[-2].c); Free(yyvsp[0].c); ; break;} -case 311: -#line 3129 "Gmsh.y" +case 320: +#line 2940 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -6314,8 +6206,8 @@ case 311: Free(yyvsp[-5].c); Free(yyvsp[0].c); ; break;} -case 312: -#line 3147 "Gmsh.y" +case 321: +#line 2958 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -6334,8 +6226,8 @@ case 312: Free(yyvsp[-3].c); Free(yyvsp[-1].c); ; break;} -case 313: -#line 3165 "Gmsh.y" +case 322: +#line 2976 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -6354,138 +6246,138 @@ case 313: Free(yyvsp[-6].c); Free(yyvsp[-1].c); ; break;} -case 314: -#line 3183 "Gmsh.y" +case 323: +#line 2994 "Gmsh.y" { yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d); Free(yyvsp[-3].c); ; break;} -case 315: -#line 3191 "Gmsh.y" +case 324: +#line 3002 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)); ; break;} -case 316: -#line 3195 "Gmsh.y" +case 325: +#line 3006 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i]; ; break;} -case 317: -#line 3199 "Gmsh.y" +case 326: +#line 3010 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} -case 318: -#line 3203 "Gmsh.y" +case 327: +#line 3014 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i]; ; break;} -case 319: -#line 3207 "Gmsh.y" +case 328: +#line 3018 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i]; ; break;} -case 320: -#line 3214 "Gmsh.y" +case 329: +#line 3025 "Gmsh.y" { yyval.v[0] = yyvsp[-9].d; yyval.v[1] = yyvsp[-7].d; yyval.v[2] = yyvsp[-5].d; yyval.v[3] = yyvsp[-3].d; yyval.v[4] = yyvsp[-1].d; ; break;} -case 321: -#line 3218 "Gmsh.y" +case 330: +#line 3029 "Gmsh.y" { yyval.v[0] = yyvsp[-7].d; yyval.v[1] = yyvsp[-5].d; yyval.v[2] = yyvsp[-3].d; yyval.v[3] = yyvsp[-1].d; yyval.v[4] = 1.0; ; break;} -case 322: -#line 3222 "Gmsh.y" +case 331: +#line 3033 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} -case 323: -#line 3226 "Gmsh.y" +case 332: +#line 3037 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} -case 324: -#line 3233 "Gmsh.y" +case 333: +#line 3044 "Gmsh.y" { ; break;} -case 325: -#line 3236 "Gmsh.y" +case 334: +#line 3047 "Gmsh.y" { ; break;} -case 326: -#line 3242 "Gmsh.y" +case 335: +#line 3053 "Gmsh.y" { ; break;} -case 327: -#line 3245 "Gmsh.y" +case 336: +#line 3056 "Gmsh.y" { ; break;} -case 328: -#line 3251 "Gmsh.y" +case 337: +#line 3062 "Gmsh.y" { ; break;} -case 329: -#line 3254 "Gmsh.y" +case 338: +#line 3065 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 330: -#line 3258 "Gmsh.y" +case 339: +#line 3069 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 331: -#line 3265 "Gmsh.y" +case 340: +#line 3076 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(List_T*)); List_Add(yyval.l, &(yyvsp[0].l)); ; break;} -case 332: -#line 3270 "Gmsh.y" +case 341: +#line 3081 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)); ; break;} -case 333: -#line 3278 "Gmsh.y" +case 342: +#line 3089 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 334: -#line 3283 "Gmsh.y" +case 343: +#line 3094 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 335: -#line 3287 "Gmsh.y" +case 344: +#line 3098 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 336: -#line 3291 "Gmsh.y" +case 345: +#line 3102 "Gmsh.y" { yyval.l = yyvsp[-1].l; double *pd; @@ -6495,16 +6387,16 @@ case 336: } ; break;} -case 337: -#line 3303 "Gmsh.y" +case 346: +#line 3114 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); for(double d = yyvsp[-2].d; (yyvsp[-2].d < yyvsp[0].d) ? (d <= yyvsp[0].d) : (d >= yyvsp[0].d); (yyvsp[-2].d < yyvsp[0].d) ? (d += 1.) : (d -= 1.)) List_Add(yyval.l, &d); ; break;} -case 338: -#line 3309 "Gmsh.y" +case 347: +#line 3120 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); if(!yyvsp[0].d || (yyvsp[-4].d < yyvsp[-2].d && yyvsp[0].d < 0) || (yyvsp[-4].d > yyvsp[-2].d && yyvsp[0].d > 0)){ @@ -6516,8 +6408,8 @@ case 338: List_Add(yyval.l, &d); ; break;} -case 339: -#line 3320 "Gmsh.y" +case 348: +#line 3131 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -6538,8 +6430,8 @@ case 339: } ; break;} -case 340: -#line 3340 "Gmsh.y" +case 349: +#line 3151 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6550,8 +6442,8 @@ case 340: List_Delete(yyvsp[0].l); ; break;} -case 341: -#line 3350 "Gmsh.y" +case 350: +#line 3161 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6562,11 +6454,9 @@ case 341: List_Delete(yyvsp[0].l); ; break;} -case 342: -#line 3360 "Gmsh.y" +case 351: +#line 3171 "Gmsh.y" { - // FIXME: The syntax for this is ugly: we get double semi-colons - // at the end of the line yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ Shape *s = (Shape*) List_Pointer(yyvsp[0].l, i); @@ -6576,8 +6466,8 @@ case 342: List_Delete(yyvsp[0].l); ; break;} -case 343: -#line 3372 "Gmsh.y" +case 352: +#line 3181 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6595,8 +6485,8 @@ case 343: Free(yyvsp[-2].c); ; break;} -case 344: -#line 3389 "Gmsh.y" +case 353: +#line 3198 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6616,8 +6506,8 @@ case 344: Free(yyvsp[-2].c); ; break;} -case 345: -#line 3408 "Gmsh.y" +case 354: +#line 3217 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6642,8 +6532,8 @@ case 345: List_Delete(yyvsp[-2].l); ; break;} -case 346: -#line 3432 "Gmsh.y" +case 355: +#line 3241 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6670,27 +6560,27 @@ case 346: List_Delete(yyvsp[-2].l); ; break;} -case 347: -#line 3461 "Gmsh.y" +case 356: +#line 3270 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 348: -#line 3466 "Gmsh.y" +case 357: +#line 3275 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 349: -#line 3470 "Gmsh.y" +case 358: +#line 3279 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 350: -#line 3474 "Gmsh.y" +case 359: +#line 3283 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ double d; @@ -6700,20 +6590,20 @@ case 350: List_Delete(yyvsp[0].l); ; break;} -case 351: -#line 3487 "Gmsh.y" +case 360: +#line 3296 "Gmsh.y" { yyval.u = CTX.PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} -case 352: -#line 3491 "Gmsh.y" +case 361: +#line 3300 "Gmsh.y" { yyval.u = CTX.PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} -case 353: -#line 3503 "Gmsh.y" +case 362: +#line 3312 "Gmsh.y" { int flag; yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); @@ -6721,8 +6611,8 @@ case 353: Free(yyvsp[0].c); ; break;} -case 354: -#line 3510 "Gmsh.y" +case 363: +#line 3319 "Gmsh.y" { unsigned int (*pColOpt)(int num, int action, unsigned int value); StringXColor *pColCat; @@ -6742,14 +6632,14 @@ case 354: Free(yyvsp[-4].c); Free(yyvsp[0].c); ; break;} -case 355: -#line 3532 "Gmsh.y" +case 364: +#line 3341 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 356: -#line 3536 "Gmsh.y" +case 365: +#line 3345 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -6762,27 +6652,27 @@ case 356: Free(yyvsp[-5].c); ; break;} -case 357: -#line 3551 "Gmsh.y" +case 366: +#line 3360 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); List_Add(yyval.l, &(yyvsp[0].u)); ; break;} -case 358: -#line 3556 "Gmsh.y" +case 367: +#line 3365 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)); ; break;} -case 359: -#line 3563 "Gmsh.y" +case 368: +#line 3372 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} -case 360: -#line 3567 "Gmsh.y" +case 369: +#line 3376 "Gmsh.y" { yyval.c = (char *)Malloc(32*sizeof(char)); time_t now; @@ -6791,8 +6681,8 @@ case 360: yyval.c[strlen(yyval.c) - 1] = '\0'; ; break;} -case 361: -#line 3575 "Gmsh.y" +case 370: +#line 3384 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)); strcpy(yyval.c, yyvsp[-3].c); @@ -6801,8 +6691,8 @@ case 361: Free(yyvsp[-1].c); ; break;} -case 362: -#line 3583 "Gmsh.y" +case 371: +#line 3392 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -6817,8 +6707,8 @@ case 362: Free(yyvsp[-1].c); ; break;} -case 363: -#line 3597 "Gmsh.y" +case 372: +#line 3406 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -6833,14 +6723,14 @@ case 363: Free(yyvsp[-1].c); ; break;} -case 364: -#line 3611 "Gmsh.y" +case 373: +#line 3420 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} -case 365: -#line 3615 "Gmsh.y" +case 374: +#line 3424 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring); @@ -6860,8 +6750,8 @@ case 365: List_Delete(yyvsp[-1].l); ; break;} -case 366: -#line 3634 "Gmsh.y" +case 375: +#line 3443 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6884,8 +6774,8 @@ case 366: } ; break;} -case 367: -#line 3656 "Gmsh.y" +case 376: +#line 3465 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -7130,7 +7020,7 @@ yyerrhandle: } return 1; } -#line 3679 "Gmsh.y" +#line 3488 "Gmsh.y" void DeleteSymbol(void *a, void *b){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 5a904dc955..6a32f11afc 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,5 +1,5 @@ %{ -// $Id: Gmsh.y,v 1.215 2006-01-06 00:34:29 geuzaine Exp $ +// $Id: Gmsh.y,v 1.216 2006-01-14 22:32:58 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -2213,432 +2213,243 @@ Loop : // E X T R U D E Extrude : - - // Points - tExtrude tPoint '{' FExpr ',' VExpr '}' tEND - { - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)$4, $6[0], $6[1], $6[2], - 0., 0., 0., 0., 0., 0., 0., - &pc, &prc, 1, NULL); - TheShape.Type = MSH_POINT; + tExtrude VExpr '{' ListOfShapes '}' + { $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add($$, &TheShape); - } + ExtrudeShapes(TRANSLATE, $4, + $2[0], $2[1], $2[2], 0., 0., 0., 0., 0., 0., 0., + NULL, $$); + List_Delete($4); } - | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND + | tExtrude '{' VExpr ',' VExpr ',' FExpr '}' '{' ListOfShapes '}' { - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)$4, 0., 0., 0., - $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, - &pc, &prc, 1, NULL); - TheShape.Type = MSH_POINT; $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add($$, &TheShape); - } + ExtrudeShapes(ROTATE, $10, + 0., 0., 0., $3[0], $3[1], $3[2], $5[0], $5[1], $5[2], $7, + NULL, $$); + List_Delete($10); } - | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr'}' tEND + | tExtrude '{' VExpr ',' VExpr ',' VExpr ',' FExpr '}' '{' ListOfShapes '}' { - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)$4, $6[0], $6[1], $6[2], - $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, - &pc, &prc, 1, NULL); - TheShape.Type = MSH_POINT; $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add($$, &TheShape); - } + ExtrudeShapes(TRANSLATE_ROTATE, $12, + $3[0], $3[1], $3[2], $5[0], $5[1], $5[2], $7[0], $7[1], $7[2], $9, + NULL, $$); + List_Delete($12); } - | tExtrude tPoint '{' FExpr ',' VExpr '}' + | tExtrude VExpr '{' ListOfShapes { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - '{' ExtrudeParameters '}' tEND + ExtrudeParameters '}' { - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(TRANSLATE, (int)$4, $6[0], $6[1], $6[2], - 0., 0., 0., 0., 0., 0., 0., - &pc, &prc, 1, &extr); - TheShape.Type = MSH_POINT; $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add($$, &TheShape); - } + ExtrudeShapes(TRANSLATE, $4, + $2[0], $2[1], $2[2], 0., 0., 0., 0., 0., 0., 0., + &extr, $$); + List_Delete($4); } - | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' + | tExtrude '{' VExpr ',' VExpr ',' FExpr '}' '{' ListOfShapes { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - '{' ExtrudeParameters '}' tEND + ExtrudeParameters '}' { - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(ROTATE, (int)$4, 0., 0., 0., - $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, - &pc, &prc, 1, &extr); - TheShape.Type = MSH_POINT; $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add($$, &TheShape); - } + ExtrudeShapes(ROTATE, $10, + 0., 0., 0., $3[0], $3[1], $3[2], $5[0], $5[1], $5[2], $7, + &extr, $$); + List_Delete($10); } - | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr'}' + | tExtrude '{' VExpr ',' VExpr ',' VExpr ',' FExpr '}' '{' ListOfShapes { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - '{' ExtrudeParameters '}' tEND + ExtrudeParameters '}' { - Curve *pc, *prc; - Shape TheShape; - TheShape.Num = Extrude_ProtudePoint(TRANSLATE_ROTATE, (int)$4, $6[0], $6[1], $6[2], - $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, - &pc, &prc, 1, &extr); - TheShape.Type = MSH_POINT; $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pc){ - TheShape.Num = pc->Num; - TheShape.Type = pc->Typ; - List_Add($$, &TheShape); - } + ExtrudeShapes(TRANSLATE_ROTATE, $12, + $3[0], $3[1], $3[2], $5[0], $5[1], $5[2], $7[0], $7[1], $7[2], $9, + &extr, $$); + List_Delete($12); } - // Lines + // Deprecated extrude commands (for backward compatibility) + | tExtrude tPoint '{' FExpr ',' VExpr '}' tEND + { + $$ = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE, MSH_POINT, (int)$4, + $6[0], $6[1], $6[2], 0., 0., 0., 0., 0., 0., 0., + NULL, $$); + } | tExtrude tLine '{' FExpr ',' VExpr '}' tEND { - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)$4, $6[0], $6[1], $6[2], - 0., 0., 0., 0., 0., 0., 0., - &ps, 1, NULL); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)$4, + $6[0], $6[1], $6[2], 0., 0., 0., 0., 0., 0., 0., + NULL, $$); + } + | tExtrude tSurface '{' FExpr ',' VExpr '}' tEND + { + $$ = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)$4, + $6[0], $6[1], $6[2], 0., 0., 0., 0., 0., 0., 0., + NULL, $$); + } + | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND + { + $$ = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(ROTATE, MSH_POINT, (int)$4, + 0., 0., 0., $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, + NULL, $$); } | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND { - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)$4, 0., 0., 0., - $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, - &ps, 1, NULL); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)$4, + 0., 0., 0., $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, + NULL, $$); + } + | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND + { + $$ = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)$4, + 0., 0., 0., $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, + NULL, $$); + } + | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr'}' tEND + { + $$ = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)$4, + $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, + NULL, $$); } | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND { - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)$4, $6[0], $6[1], $6[2], - $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, - &ps, 1, NULL); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)$4, + $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, + NULL, $$); } - | tExtrude tLine '{' FExpr ',' VExpr '}' + | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND + { + $$ = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)$4, + $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, + NULL, $$); + } + | tExtrude tPoint '{' FExpr ',' VExpr '}' { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - '{' ExtrudeParameters '}' tEND + '{' ExtrudeParameters '}' tEND { - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(TRANSLATE, (int)$4, $6[0], $6[1], $6[2], - 0., 0., 0., 0., 0., 0., 0., - &ps, 1, &extr); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_POINT, (int)$4, + $6[0], $6[1], $6[2], 0., 0., 0., 0., 0., 0., 0., + &extr, $$); } - | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' + | tExtrude tLine '{' FExpr ',' VExpr '}' { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } '{' ExtrudeParameters '}' tEND { - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(ROTATE, (int)$4, 0., 0., 0., - $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, - &ps, 1, &extr); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)$4, + $6[0], $6[1], $6[2], 0., 0., 0., 0., 0., 0., 0., + &extr, $$); } - | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' + | tExtrude tSurface '{' FExpr ',' VExpr '}' { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - '{' ExtrudeParameters '}' tEND + '{' ExtrudeParameters '}' tEND { - Surface *ps; - Shape TheShape; - TheShape.Num = Extrude_ProtudeCurve(TRANSLATE_ROTATE, (int)$4, $6[0], $6[1], $6[2], - $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, - &ps, 1, &extr); - Curve *c = FindCurve(TheShape.Num, THEM); - if(!c){ - //yymsg(WARNING, "Unknown curve %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = c->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(ps){ - TheShape.Num = ps->Num; - TheShape.Type = ps->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)$4, + $6[0], $6[1], $6[2], 0., 0., 0., 0., 0., 0., 0., + &extr, $$); } - - // Surfaces - - | tExtrude tSurface '{' FExpr ',' VExpr '}' tEND + | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' { - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)$4, $6[0], $6[1], $6[2], - 0., 0., 0., 0., 0., 0., 0., - &pv, NULL); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } - $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add($$, &TheShape); - } + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; } - | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND + '{' ExtrudeParameters '}' tEND { - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)$4, 0., 0., 0., - $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, - &pv, NULL); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(ROTATE, MSH_POINT, (int)$4, + 0., 0., 0., $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, + &extr, $$); } - | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND + | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' + { + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + } + '{' ExtrudeParameters '}' tEND { - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)$4, $6[0], $6[1], $6[2], - $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, - &pv, NULL); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)$4, + 0., 0., 0., $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, + &extr, $$); } - | tExtrude tSurface '{' FExpr ',' VExpr '}' + | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } '{' ExtrudeParameters '}' tEND { - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(TRANSLATE, (int)$4, $6[0], $6[1], $6[2], - 0., 0., 0., 0., 0., 0., 0., - &pv, &extr); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)$4, + 0., 0., 0., $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, + &extr, $$); } - | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' + | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr'}' { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - - '{' ExtrudeParameters '}' tEND + '{' ExtrudeParameters '}' tEND { - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(ROTATE, (int)$4, 0., 0., 0., - $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10, - &pv, &extr); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)$4, + $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, + &extr, $$); } - | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' + | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' + { + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + } + '{' ExtrudeParameters '}' tEND + { + $$ = List_Create(2, 1, sizeof(Shape)); + ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)$4, + $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, + &extr, $$); + } + | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - '{' ExtrudeParameters '}' tEND { - Volume *pv; - Shape TheShape; - TheShape.Num = Extrude_ProtudeSurface(TRANSLATE_ROTATE, (int)$4, $6[0], $6[1], $6[2], - $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, - &pv, &extr); - Surface *s = FindSurface(TheShape.Num, THEM); - if(!s){ - //yymsg(WARNING, "Unknown surface %d", TheShape.Num); - TheShape.Type = 0; - } - else{ - TheShape.Type = s->Typ; - } $$ = List_Create(2, 1, sizeof(Shape)); - List_Add($$, &TheShape); - if(pv){ - TheShape.Num = pv->Num; - TheShape.Type = pv->Typ; - List_Add($$, &TheShape); - } + ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)$4, + $6[0], $6[1], $6[2], $8[0], $8[1], $8[2], $10[0], $10[1], $10[2], $12, + &extr, $$); } + // End of deprecated Extrude commands ; ExtrudeParameters : @@ -3358,8 +3169,6 @@ FExpr_Multi : } | Extrude { - // FIXME: The syntax for this is ugly: we get double semi-colons - // at the end of the line $$ = List_Create(List_Nbr($1), 1, sizeof(double)); for(int i = 0; i < List_Nbr($1); i++){ Shape *s = (Shape*) List_Pointer($1, i); diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index ae826d2efd..e88c80e49b 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.247 2006-01-06 00:35:43 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.248 2006-01-14 22:32:58 geuzaine Exp $ */ #define FLEX_SCANNER @@ -1026,7 +1026,7 @@ char *yytext; #line 1 "Gmsh.l" #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.247 2006-01-06 00:35:43 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.248 2006-01-14 22:32:58 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // diff --git a/TODO b/TODO index d344369997..43cb57fda6 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -$Id: TODO,v 1.114 2006-01-14 17:13:14 geuzaine Exp $ +$Id: TODO,v 1.115 2006-01-14 22:32:58 geuzaine Exp $ ******************************************************************** @@ -23,13 +23,6 @@ On Windows WITHOUT Cygwin: ******************************************************************** -introduce new syntax for Extrude that matches the syntax for the other -transformations ("Extrude {...} { Line{...}; <Layers{...};> }"). would -allow multiple extrusions in one command + nicer ret[] = Extrude{}{}; -syntax - -******************************************************************** - allow mixed 1st/2nd order meshes (2nd order only where the geometry requires it). Add this as an advanced option since it will create meshes with hanging nodes. diff --git a/benchmarks/extrude/point_new.geo b/benchmarks/extrude/point_new.geo new file mode 100644 index 0000000000..975c80e9b2 --- /dev/null +++ b/benchmarks/extrude/point_new.geo @@ -0,0 +1,26 @@ +L = 0.25; +lclev = L / 4; + +Point(1) = {0.0*L, 0.0*L, 0.0, lclev}; + +Extrude {L,0,0}{ Point{1}; }{ Layers { {5,10}, {1,1}, {0.7,1} } ; Recombine; } +Extrude {0,L/2,0}{ Line{1}; } { Layers { {5,10}, {2,2}, {0.7,1} } ; Recombine; } +Extrude {0,0,L}{ Surface{5}; } { Layers { {5,10}, {3,3}, {0.7,1} } ; Recombine; } + +Point(1000) = {1, 0, 0, lclev}; +Extrude { {0,0,1} , {0.85,0,0} , -2*Pi/3 }{ Point{1000}; } { + Layers { {5,10}, {1,1}, {0.7,1} } ; Recombine; +} + +Extrude { {0,0,1} , {0.85,0,0} , -2*Pi/3 }{ Point{1001}; } { + Layers { {5,10}, {1,1}, {0.7,1} } ; Recombine; +} +Extrude { {0,0,1} , {0.85,0,0} , -2*Pi/3 }{ Point{1003}; } { + Layers { {5,10}, {1,1}, {0.7,1} } ; Recombine; +} + +Line Loop(31) = {29,30,28}; +Plane Surface(32) = {31}; +Extrude {0,0,L/2}{ Surface{32}; } { + Layers { {5,10}, {1,1}, {0.7,1} } ; Recombine; +} diff --git a/demos/cone.geo b/demos/cone.geo index d1d28fd2f8..fa0399150e 100644 --- a/demos/cone.geo +++ b/demos/cone.geo @@ -7,9 +7,9 @@ Line(2) = {2,6}; Line(3) = {6,1}; Line Loop(4) = {2,3,1}; Plane Surface(5) = {4}; -Extrude Surface {5, {0,0,1}, {0,0,0}, Pi/2}; -Extrude Surface {17, {0,0,1}, {0,0,0}, Pi/2}; -Extrude Surface {29, {0,0,1}, {0,0,0}, Pi/2}; -Extrude Surface {41, {0,0,1}, {0,0,0}, Pi/2}; +Extrude {{0,0,1}, {0,0,0}, Pi/2} { Surface{5}; } +Extrude {{0,0,1}, {0,0,0}, Pi/2} { Surface{17}; } +Extrude {{0,0,1}, {0,0,0}, Pi/2} { Surface{29}; } +Extrude {{0,0,1}, {0,0,0}, Pi/2} { Surface{41}; } Physical Surface(53) = {12,24,36,48,52,40,28,16}; ExteriorShell = 53; diff --git a/demos/cube.geo b/demos/cube.geo index 9a6d2d796b..edd17731ae 100644 --- a/demos/cube.geo +++ b/demos/cube.geo @@ -9,7 +9,9 @@ Line(3) = {2,1}; Line(4) = {1,4}; Line Loop(5) = {2,3,4,1}; Plane Surface(6) = {5}; -Extrude Surface { 6, {0,0.0,1} }; +Extrude {0,0.0,1} { + Surface{6}; +} // try netgen: // Mesh.Algorithm3D = 4; diff --git a/demos/hex.geo b/demos/hex.geo index b8a702e4a1..0e589c2acc 100644 --- a/demos/hex.geo +++ b/demos/hex.geo @@ -1,10 +1,10 @@ // an example of a purely hexahedral mesh lc = 0.3; -Point(1) = {0.0,0.0,0.0,lc}; -Point(2) = {1,0.0,0.0,lc}; -Point(3) = {1,1,0.0,0.5*lc}; -Point(4) = {0,1,0.0,lc}; +Point(1) = {0,0,0,lc}; +Point(2) = {1,0,0,lc}; +Point(3) = {1,1,0,lc}; +Point(4) = {0,1,0,lc}; Line(1) = {4,3}; Line(2) = {3,2}; Line(3) = {2,1}; @@ -15,4 +15,20 @@ Plane Surface(6) = {5}; Transfinite Line{1:4} = 5; Transfinite Surface{6} = {1,2,3,4}; Recombine Surface{6}; -Extrude Surface { 6, {0,0.0,1} } { Layers{5,1}; Recombine;}; +Extrude {0,0,1} { + Surface{6}; Layers{5,1}; Recombine; +} + + +// we could do the same using only extrusions: + +Point(100) = {2,0,0,lc}; +l[] = Extrude {1,0,0}{ + Point{100}; Layers{4,1}; +}; +s[] = Extrude {0,1,0}{ + Line{l[1]}; Layers{4,1}; Recombine; +}; +Extrude {0,0,1}{ + Surface{s[1]}; Layers{4,1}; Recombine; +}; diff --git a/demos/piece-extr-rec.geo b/demos/piece-extr-rec.geo index 593a690eca..6de76bb42c 100644 --- a/demos/piece-extr-rec.geo +++ b/demos/piece-extr-rec.geo @@ -86,15 +86,13 @@ For i In {0:4} EndFor Recombine Surface {47,49,91}; -Extrude Surface {47, {0,0,0.2}}{ Layers{ ones[], ones[], ep[] }; Recombine; }; -Extrude Surface {49, {0,0,0.2}}{ Layers{ ones[], ones[], ep[] }; Recombine; }; -Extrude Surface {91, {0,0,0.2}}{ Layers{ ones[{0:4}],ones[{0:4}], ep2[] }; Recombine; }; -Extrude Surface {47, {0,0,-0.2}}{ Layers{ ones[{0:4}],ones[{0:4}], ep2[] }; Recombine; }; - -Physical Volume(1) = 1 ; - -Physical Surface(2) = {288,49,215,211,207,203,199,195,191,187,183,179,175,171, - 167,163,159,155,151,147,143,139,135,271,267,263,259,255, - 251,247,243,239,235,231,227,223,219,372,343,62,301,330, - 313,74,355,367,86,325,321,82,363,359,78,317,91,47,347, - 66,371,90,305,329,309,70,351}; + +Extrude {0,0,0.2}{ + Surface{47,49}; Layers{ ones[], ep[] }; Recombine; +} +Extrude {0,0,0.2}{ + Surface{91}; Layers{ ones[{0:4}], ep2[] }; Recombine; +} +Extrude {0,0,-0.2}{ + Surface{47}; Layers{ ones[{0:4}], ep2[] }; Recombine; +} diff --git a/demos/piece-extr.geo b/demos/piece-extr.geo index be6d982bb5..31e98a8e1d 100644 --- a/demos/piece-extr.geo +++ b/demos/piece-extr.geo @@ -85,15 +85,12 @@ For i In {0:4} ep2[i]=2*ep[i]; EndFor -Extrude Surface {47, {0,0,0.2}}{ Layers{ ones[], ones[], ep[] }; }; -Extrude Surface {49, {0,0,0.2}}{ Layers{ ones[], ones[], ep[] }; }; -Extrude Surface {91, {0,0,0.2}}{ Layers{ ones[{0:4}],ones[{0:4}], ep2[] }; }; -Extrude Surface {47, {0,0,-0.2}}{ Layers{ ones[{0:4}],ones[{0:4}], ep2[] }; }; - -Physical Volume(1) = 1 ; - -Physical Surface(2) = {288,49,215,211,207,203,199,195,191,187,183,179,175,171, - 167,163,159,155,151,147,143,139,135,271,267,263,259,255, - 251,247,243,239,235,231,227,223,219,372,343,62,301,330, - 313,74,355,367,86,325,321,82,363,359,78,317,91,47,347, - 66,371,90,305,329,309,70,351}; +Extrude {0,0,0.2}{ + Surface{47,49}; Layers{ ones[], ep[] }; +} +Extrude {0,0,0.2}{ + Surface{91}; Layers{ ones[{0:4}], ep2[] }; +} +Extrude {0,0,-0.2}{ + Surface{47}; Layers{ ones[{0:4}], ep2[] }; +} diff --git a/demos/piece.geo b/demos/piece.geo index 7d63e9f281..5685a9d4bd 100644 --- a/demos/piece.geo +++ b/demos/piece.geo @@ -79,7 +79,12 @@ Line Loop(48) = -{-2,-1,5,6,4,3,31,-26,-25,29,30,28,27,35,-20,-19, 23,24,22,21,34,-14,-13,17,18,16,15,33,-8,-7,11,12,10,9,32}; Plane Surface(49) = {48,46}; -Extrude Surface {47, {0,0,0.2}}; -Extrude Surface {49, {0,0,0.2}}; -Extrude Surface {91, {0,0,0.2}}; -Extrude Surface {47, {0,0,-0.2}}; +Extrude {0,0,0.2}{ + Surface{47,49}; +} +Extrude {0,0,0.2}{ + Surface{91}; +} +Extrude {0,0,-0.2}{ + Surface{47}; +} diff --git a/doc/VERSIONS b/doc/VERSIONS index 36e95de79e..2430f031a8 100644 --- a/doc/VERSIONS +++ b/doc/VERSIONS @@ -1,10 +1,11 @@ -$Id: VERSIONS,v 1.351 2006-01-14 16:24:55 geuzaine Exp $ +$Id: VERSIONS,v 1.352 2006-01-14 22:32:58 geuzaine Exp $ New since 1.61: new option to draw color gradients in the background; enhanced perspective projection mode; new "lasso" selection mode (same as "lasso" zoom, but in selection mode); new "invert selection" button in the visibility browser; new snapping grid when adding points in the -GUI; nicer normal smoothing; various small bug fixes and enhancements. +GUI; nicer normal smoothing; new extrude syntax (old syntax still +available, but deprecated); various small bug fixes and enhancements. New in 1.61: added support for second order (curved) elements in post-processor; new version (1.4) of post-processing file formats; new diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi index 481ab4102a..c5b2aa11ee 100644 --- a/doc/texinfo/gmsh.texi +++ b/doc/texinfo/gmsh.texi @@ -1,5 +1,5 @@ \input texinfo.tex @c -*-texinfo-*- -@c $Id: gmsh.texi,v 1.195 2006-01-06 00:34:34 geuzaine Exp $ +@c $Id: gmsh.texi,v 1.196 2006-01-14 22:32:58 geuzaine Exp $ @c @c Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle @c @@ -1654,31 +1654,40 @@ can be extended in order to also extrude the mesh): @var{extrude}: @ftable @code -@item Extrude Point | Line | Surface @{ @var{expression}, @{ @var{expression-list} @} @}; -Extrudes the @var{expression}-th point, line or surface using a -translation. The @var{expression-list} should contain three -@w{@var{expression}s} giving the X, Y and Z components of the translation -vector. - -@item Extrude Point | Line | Surface @{ @var{expression}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @}; -Extrudes the @var{expression}-th point, line or surface using a -rotation. The first @var{expression-list} should contain three -@w{@var{expression}s} giving the X, Y and Z direction of the rotation axis; -the second @var{expression-list} should contain three @w{@var{expression}s} -giving the X, Y and Z components of any point on this axis; the last -@var{expression} should contain the rotation angle (in radians). - -@item Extrude Point | Line | Surface @{ @var{expression}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @}; -Extrudes the @var{expression}-th point, line or surface using a translation -combined with a rotation. The first @var{expression-list} should contain -three @w{@var{expression}s} giving the X, Y and Z components of the -translation vector; the second @var{expression-list} should contain three -@w{@var{expression}s} giving the X, Y and Z direction of the rotation axis; -the third @var{expression-list} should contain three @w{@var{expression}s} -giving the X, Y and Z components of any point on this axis; the last +@item Extrude @{ @var{expression-list} @} @{ @var{extrude-list} @} +Extrudes all elementary entities (points, lines or surfaces) in +@var{extrude-list} using a translation. The @var{expression-list} should +contain three @w{@var{expression}s} giving the X, Y and Z components of +the translation vector. + +@item Extrude @{ @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @} @{ @var{extrude-list} @} +Extrudes all elementary entities (points, lines or surfaces) in +@var{extrude-list} using a rotation. The first @var{expression-list} +should contain three @w{@var{expression}s} giving the X, Y and Z +direction of the rotation axis; the second @var{expression-list} should +contain three @w{@var{expression}s} giving the X, Y and Z components of +any point on this axis; the last @var{expression} should contain the +rotation angle (in radians). + +@item Extrude @{ @{ @var{expression-list} @}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @} @{ @var{extrude-list} @} +Extrudes all elementary entities (points, lines or surfaces) in +@var{extrude-list} using a translation combined with a rotation. The +first @var{expression-list} should contain three @w{@var{expression}s} +giving the X, Y and Z components of the translation vector; the second +@var{expression-list} should contain three @w{@var{expression}s} giving +the X, Y and Z direction of the rotation axis; the third +@var{expression-list} should contain three @w{@var{expression}s} giving +the X, Y and Z components of any point on this axis; the last @var{expression} should contain the rotation angle (in radians). @end ftable +@noindent with + +@example +@var{extrude-list}: + Point | Line | Surface @{ @var{expression-list} @}; @dots{} +@end example + @c ......................................................................... @c Transformations @c ......................................................................... @@ -1985,7 +1994,7 @@ numbers are listed in @var{expression-list}. The new value is given by @cindex Mesh, elliptic @ftable @code -@item Extrude Point | Line | Surface @{ @var{expression}, @{ @var{expression-list} @} @} @{ @var{layers}; @dots{} @}; +@item Extrude @{ @var{expression-list} @} @{ @var{extrude-list} @var{layers} @} Extrudes both the geometry and the mesh using a translation (@pxref{Extrusions}). The @var{layers} option determines how the mesh is extruded and has the following syntax: @@ -1994,7 +2003,7 @@ extruded and has the following syntax: @var{layers}: @group Layers @{ @{ @var{expression-list} @}, < @{ @var{expression-list} @}, > - @{ @var{expression-list} @} @} | Recombine + @{ @var{expression-list} @} @} | Recombine; @dots{} @end group @end example @@ -2016,11 +2025,11 @@ into quadrangles when possible. For surface extrusions, the @code{Recombine} option will recombine tetrahedra into prisms, hexahedra or pyramids. -@item Extrude Point | Line | Surface @{ @var{expression}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @} @{ @var{layers}; @dots{} @}; +@item Extrude @{ @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @} @{ @var{extrude-list} @var{layers} @} Extrudes both the geometry and the mesh using a rotation (@pxref{Extrusions}). The @var{layers} option is defined as above. -@item Extrude Point | Line | Surface @{ @var{expression}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @} @{ @var{layers}; @dots{} @}; +@item Extrude @{ @{ @var{expression-list} @}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @} @{ @var{extrude-list} @var{layers} @} Extrudes both the geometry and the mesh using a combined translation and rotation (@pxref{Extrusions}). The @var{layers} option is defined as above. diff --git a/tutorial/t2.geo b/tutorial/t2.geo index a3dbd3b90d..7fb50cd18b 100644 --- a/tutorial/t2.geo +++ b/tutorial/t2.geo @@ -69,7 +69,7 @@ Volume(119) = {118}; // following command extrudes the surface 11 along the z axis and // automatically creates a new volume: -Extrude Surface { 11, {0, 0, h} }; +Extrude {0, 0, h} { Surface{11}; } // All these geometrical transformations automatically generate new // elementary entities. The following command permits to manually diff --git a/tutorial/t3.geo b/tutorial/t3.geo index b33f336ef2..810a53b076 100644 --- a/tutorial/t3.geo +++ b/tutorial/t3.geo @@ -19,9 +19,9 @@ Include "t1.geo"; h = 0.1; -Extrude Surface { 6, {0,0,h} } { - Layers { {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} }; -}; +Extrude {0,0,h} { + Surface{6}; Layers{ {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} }; +} // The extrusion can also be performed with a rotation instead of a // translation, and the resulting mesh can be recombined into prisms @@ -29,16 +29,16 @@ Extrude Surface { 6, {0,0,h} } { // ({0,1,0}), an axis point ({-0.1,0,0.1}) and a rotation angle // (-Pi/2): -Extrude Surface { 122, {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { - Recombine; Layers { 7, 9004, 1 }; -}; +Extrude { {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { + Surface{122}; Layers { 7, 9004, 1 }; Recombine; +} // Note that a translation ({-2*h,0,0}) and a rotation ({1,0,0}, // {0,0.15,0.25}, Pi/2) can also be combined: -aa[] = Extrude Surface {news-1, {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2}{ - Layers { 10, 1 }; Recombine; -}; ; +aa[] = Extrude { {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2 } { + Surface{news-1}; Layers{ 10, 1 }; Recombine; +}; // In this last extrusion command we didn't specify an explicit // volume number (which is equivalent to setting it to "0"), -- GitLab