From 4b184d8f8ea46be6d61d18c2e9dd819e3a6ff165 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 28 Nov 2000 11:28:35 +0000
Subject: [PATCH] *** empty log message ***

---
 Mesh/1D_Mesh.cpp       |   37 +-
 Mesh/2D_DivAndConq.cpp |    4 +-
 Mesh/Metric.cpp        |    5 +-
 Mesh/Numeric.cpp       |   15 +-
 Parser/Gmsh.l          |    4 +-
 Parser/Gmsh.tab.cpp    | 2234 +++++++++++++++++++---------------------
 Parser/Gmsh.tab.cpp.h  |  278 ++---
 Parser/Gmsh.y          |   39 +-
 Parser/Gmsh.yy.cpp     |    6 +-
 9 files changed, 1269 insertions(+), 1353 deletions(-)

diff --git a/Mesh/1D_Mesh.cpp b/Mesh/1D_Mesh.cpp
index 4e7c1973ad..4d3ffba9ff 100644
--- a/Mesh/1D_Mesh.cpp
+++ b/Mesh/1D_Mesh.cpp
@@ -1,4 +1,4 @@
-/* $Id: 1D_Mesh.cpp,v 1.6 2000-11-26 15:43:46 geuzaine Exp $ */
+/* $Id: 1D_Mesh.cpp,v 1.7 2000-11-28 11:28:31 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -14,6 +14,11 @@ extern int        CurrentNodeNumber;
 
 Curve *THEC;
 
+// ipar[0] = nbpoints
+// abs(ipar[1]) = method
+// sign(ipar[1]) = orientation
+// dpar[0] = parameter
+
 double F_One (double t){
   Vertex der;
   double d;
@@ -22,6 +27,7 @@ double F_One (double t){
   return (d);
 }
 
+
 double F_Transfini (double t){
   Vertex der;
   double d, a, b, val, ZePauwer;
@@ -36,17 +42,17 @@ double F_Transfini (double t){
   else{
     switch (abs (THEC->ipar[1])){
 
-    case 2:
+    case 1: // progression
       if (sign (THEC->ipar[1]) == -1)
-        ZePauwer = 1. / THEC->dpar[0];
+	ZePauwer = 1. / THEC->dpar[0];
       else
-        ZePauwer = THEC->dpar[0];
+	ZePauwer = THEC->dpar[0];
       b = log (1. / ZePauwer) / THEC->l;
       a = (1. - exp (-b * THEC->l)) / (b * (double) THEC->ipar[0]);
-      val =d / (a * exp (b * (t * THEC->l))) ;
+      val = d / (a * exp (b * (t * THEC->l))) ;
       break ;
 
-    case 1:
+    case 2: //bump
       if (THEC->dpar[0] > 1.0){
         a = -4. * sqrt (THEC->dpar[0] - 1.) * 
           atan2 (1., sqrt (THEC->dpar[0] - 1.)) / 
@@ -66,7 +72,6 @@ double F_Transfini (double t){
       Msg(WARNING, "Unknown Case in Transfinite Mesh Line");
       val = 1. ;
     }
-    
   }
 
   return val ;
@@ -96,16 +101,11 @@ void Maillage_Curve (void *data, void *dummy){
 
   Msg(STATUS, "Meshing Curve %d", c->Num);
 
-  if (c->Method != TRANSFINI && Extrude_Mesh (c)){
-    Points = List_Create (10, 10, sizeof (IntPoint));
-    c->l = Integration (c->ubeg, c->uend, F_One, Points, 1.e-5);
-    List_Delete (Points);
-  }
-  else{
-    Points = List_Create (10, 10, sizeof (IntPoint));
-    c->l = Integration (c->ubeg, c->uend, F_One, Points, 1.e-5);
-    List_Delete (Points);
-    
+  Points = List_Create (10, 10, sizeof (IntPoint));
+  c->l = Integration (c->ubeg, c->uend, F_One, Points, 1.e-5);
+  List_Delete (Points);
+
+  if (c->Method == TRANSFINI || !Extrude_Mesh (c)){
     if (c->Method == TRANSFINI){
       Points = List_Create (10, 10, sizeof (IntPoint));
       a = Integration (c->ubeg, c->uend, F_Transfini, Points, 1.e-7);
@@ -115,6 +115,7 @@ void Maillage_Curve (void *data, void *dummy){
       Points = List_Create (10, 10, sizeof (IntPoint));
       a = Integration (c->ubeg, c->uend, F_Lc, Points, 1.e-5);
       N = IMAX (2, (int) (a + 1.));
+
       if (c->Typ == MSH_SEGM_CIRC ||
           c->Typ == MSH_SEGM_CIRC_INV ||
           c->Typ == MSH_SEGM_ELLI ||
@@ -151,6 +152,7 @@ void Maillage_Curve (void *data, void *dummy){
       List_Read (Points, count - 1, &P1);
       List_Read (Points, count, &P2);
       d = (double) NUMP *b;
+
       if ((fabs (P2.p) >= fabs (d)) && (fabs (P1.p) < fabs (d))){
         dt = P2.t - P1.t;
         dp = P2.p - P1.p;
@@ -187,6 +189,7 @@ void Maillage_Curve (void *data, void *dummy){
       List_Add (c->Vertices, &pV);
     }
   }
+
   for (i = 0; i < List_Nbr (c->Vertices) - 1; i++){
     List_Read (c->Vertices, i, &v1);
     List_Read (c->Vertices, i + 1, &v2);
diff --git a/Mesh/2D_DivAndConq.cpp b/Mesh/2D_DivAndConq.cpp
index 1f961c4bdf..0c61416553 100644
--- a/Mesh/2D_DivAndConq.cpp
+++ b/Mesh/2D_DivAndConq.cpp
@@ -1,4 +1,4 @@
-/* $Id: 2D_DivAndConq.cpp,v 1.5 2000-11-26 15:43:46 geuzaine Exp $ */
+/* $Id: 2D_DivAndConq.cpp,v 1.6 2000-11-28 11:28:31 geuzaine Exp $ */
 /*
 
    A L G O R I T H M E    D I V I D E    A N D     C O N Q U E R   
@@ -352,7 +352,7 @@ int CircumCircle(double x1,double y1,double x2,double y2,double x3,double y3,
   *xc = (double) ((a1*(y3-y2) + a2*(y1-y3) + a3*(y2-y1)) / d);
   *yc = (double) ((a1*(x2-x3) + a2*(x3-x1) + a3*(x1-x2)) / d);
   
-  if(fabs(d) < 1.e-12 * LC2D)
+  if(fabs(d) < 1.e-12 * DSQR(LC2D))
     Msg(WARNING, "Points Almost Colinear in CircumCircle (d = %g)", d); 
 
   return(1);
diff --git a/Mesh/Metric.cpp b/Mesh/Metric.cpp
index 6a65510b2c..08ee814fc7 100644
--- a/Mesh/Metric.cpp
+++ b/Mesh/Metric.cpp
@@ -1,4 +1,4 @@
-/* $Id: Metric.cpp,v 1.3 2000-11-26 15:43:47 geuzaine Exp $ */
+/* $Id: Metric.cpp,v 1.4 2000-11-28 11:28:32 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -314,6 +314,9 @@ double GMSHMetric::getLc (double u, Curve * c){
   Vertex du = InterpolateCurve (c, u, 1);
   Local_Metric_Of_Attractors (v.Pos.X, v.Pos.Y, v.Pos.Z, NULL);
   l = LengthVector (&du);
+
+  //printf("GetLC : u = %g l=%g  lc=%g  return=%g  ", u, l, v.lc, l/v.lc);
+
   return l / v.lc;
 }
 
diff --git a/Mesh/Numeric.cpp b/Mesh/Numeric.cpp
index 2bb99f5cd1..c51e4a4125 100644
--- a/Mesh/Numeric.cpp
+++ b/Mesh/Numeric.cpp
@@ -1,4 +1,4 @@
-/* $Id: Numeric.cpp,v 1.6 2000-11-26 15:43:47 geuzaine Exp $ */
+/* $Id: Numeric.cpp,v 1.7 2000-11-28 11:28:32 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -469,22 +469,19 @@ void RecursiveIntegration (IntPoint * from, IntPoint * to, double (*f) (double X
 
 double Integration (double t1, double t2, double (*f) (double X),
                     List_T * pPoints, double Prec){
-  int depth, i;
+  int depth;
   IntPoint from, to;
 
   depth = 0;
+
   from.t = t1;
-  from.lc = f (from.t);
+  from.lc = f(from.t);
   from.p = 0.0;
+  List_Add (pPoints, &from);
 
   to.t = t2;
-  to.lc = f (to.t);
-
-  List_Add (pPoints, &from);
+  to.lc = f(to.t);
   RecursiveIntegration (&from, &to, f, pPoints, Prec, &depth);
-  for (i = 0; i < List_Nbr (pPoints); i++){
-    List_Read (pPoints, i, &to);
-  }
   
   List_Read (pPoints, List_Nbr (pPoints) - 1, &to);
   return (to.p);
diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l
index fc94308cc8..c699302db6 100644
--- a/Parser/Gmsh.l
+++ b/Parser/Gmsh.l
@@ -1,4 +1,4 @@
-%{ /* $Id: Gmsh.l,v 1.4 2000-11-25 15:26:11 geuzaine Exp $ */
+%{ /* $Id: Gmsh.l,v 1.5 2000-11-28 11:28:35 geuzaine Exp $ */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -139,7 +139,7 @@ Physical                return tPhysical;
 Pi                      return tPi;
 Plane                   return tPlane;
 Point                   return tPoint;
-Power                   return tPower;
+Power                   return tProgression;
 Progression             return tProgression;
 Parametric		return tParametric;
 
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 36f89cb040..13066bf585 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -1,151 +1,152 @@
 
 /*  A Bison parser, made from Gmsh.y
-    by GNU Bison version 1.28  */
+ by  GNU Bison version 1.25
+  */
 
 #define YYBISON 1  /* Identify Bison output.  */
 
-#define	tDOUBLE	257
-#define	tSTRING	258
-#define	tBIGSTR	259
-#define	tEND	260
-#define	tAFFECT	261
-#define	tDOTS	262
-#define	tPi	263
-#define	tExp	264
-#define	tLog	265
-#define	tLog10	266
-#define	tSqrt	267
-#define	tSin	268
-#define	tAsin	269
-#define	tCos	270
-#define	tAcos	271
-#define	tTan	272
-#define	tAtan	273
-#define	tAtan2	274
-#define	tSinh	275
-#define	tCosh	276
-#define	tTanh	277
-#define	tFabs	278
-#define	tFloor	279
-#define	tCeil	280
-#define	tFmod	281
-#define	tModulo	282
-#define	tHypot	283
-#define	tPoint	284
-#define	tCircle	285
-#define	tEllipsis	286
-#define	tLine	287
-#define	tSurface	288
-#define	tSpline	289
-#define	tVolume	290
-#define	tCharacteristic	291
-#define	tLength	292
-#define	tParametric	293
-#define	tElliptic	294
-#define	tPlane	295
-#define	tRuled	296
-#define	tTransfinite	297
-#define	tComplex	298
-#define	tPhysical	299
-#define	tUsing	300
-#define	tPower	301
-#define	tBump	302
-#define	tProgression	303
-#define	tAssociation	304
-#define	tRotate	305
-#define	tTranslate	306
-#define	tSymmetry	307
-#define	tDilate	308
-#define	tExtrude	309
-#define	tDuplicata	310
-#define	tLoop	311
-#define	tInclude	312
-#define	tRecombine	313
-#define	tDelete	314
-#define	tCoherence	315
-#define	tView	316
-#define	tOffset	317
-#define	tAttractor	318
-#define	tLayers	319
-#define	tScalarTetrahedron	320
-#define	tVectorTetrahedron	321
-#define	tTensorTetrahedron	322
-#define	tScalarTriangle	323
-#define	tVectorTriangle	324
-#define	tTensorTriangle	325
-#define	tScalarLine	326
-#define	tVectorLine	327
-#define	tTensorLine	328
-#define	tScalarPoint	329
-#define	tVectorPoint	330
-#define	tTensorPoint	331
-#define	tBSpline	332
-#define	tNurbs	333
-#define	tOrder	334
-#define	tWith	335
-#define	tBounds	336
-#define	tKnots	337
-#define	tColor	338
-#define	tGeneral	339
-#define	tGeometry	340
-#define	tMesh	341
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	342
-#define	tB_SPLINE_CURVE_WITH_KNOTS	343
-#define	tCARTESIAN_POINT	344
-#define	tTRUE	345
-#define	tFALSE	346
-#define	tUNSPECIFIED	347
-#define	tU	348
-#define	tV	349
-#define	tEDGE_CURVE	350
-#define	tVERTEX_POINT	351
-#define	tORIENTED_EDGE	352
-#define	tPLANE	353
-#define	tFACE_OUTER_BOUND	354
-#define	tEDGE_LOOP	355
-#define	tADVANCED_FACE	356
-#define	tVECTOR	357
-#define	tDIRECTION	358
-#define	tAXIS2_PLACEMENT_3D	359
-#define	tISO	360
-#define	tENDISO	361
-#define	tENDSEC	362
-#define	tDATA	363
-#define	tHEADER	364
-#define	tFILE_DESCRIPTION	365
-#define	tFILE_SCHEMA	366
-#define	tFILE_NAME	367
-#define	tMANIFOLD_SOLID_BREP	368
-#define	tCLOSED_SHELL	369
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	370
-#define	tFACE_BOUND	371
-#define	tCYLINDRICAL_SURFACE	372
-#define	tCONICAL_SURFACE	373
-#define	tCIRCLE	374
-#define	tTRIMMED_CURVE	375
-#define	tGEOMETRIC_SET	376
-#define	tCOMPOSITE_CURVE_SEGMENT	377
-#define	tCONTINUOUS	378
-#define	tCOMPOSITE_CURVE	379
-#define	tTOROIDAL_SURFACE	380
-#define	tPRODUCT_DEFINITION	381
-#define	tPRODUCT_DEFINITION_SHAPE	382
-#define	tSHAPE_DEFINITION_REPRESENTATION	383
-#define	tELLIPSE	384
-#define	tTrimmed	385
-#define	tSolid	386
-#define	tEndSolid	387
-#define	tVertex	388
-#define	tFacet	389
-#define	tNormal	390
-#define	tOuter	391
-#define	tLoopSTL	392
-#define	tEndLoop	393
-#define	tEndFacet	394
-#define	UMINUS	395
+#define	tDOUBLE	258
+#define	tSTRING	259
+#define	tBIGSTR	260
+#define	tEND	261
+#define	tAFFECT	262
+#define	tDOTS	263
+#define	tPi	264
+#define	tExp	265
+#define	tLog	266
+#define	tLog10	267
+#define	tSqrt	268
+#define	tSin	269
+#define	tAsin	270
+#define	tCos	271
+#define	tAcos	272
+#define	tTan	273
+#define	tAtan	274
+#define	tAtan2	275
+#define	tSinh	276
+#define	tCosh	277
+#define	tTanh	278
+#define	tFabs	279
+#define	tFloor	280
+#define	tCeil	281
+#define	tFmod	282
+#define	tModulo	283
+#define	tHypot	284
+#define	tPoint	285
+#define	tCircle	286
+#define	tEllipsis	287
+#define	tLine	288
+#define	tSurface	289
+#define	tSpline	290
+#define	tVolume	291
+#define	tCharacteristic	292
+#define	tLength	293
+#define	tParametric	294
+#define	tElliptic	295
+#define	tPlane	296
+#define	tRuled	297
+#define	tTransfinite	298
+#define	tComplex	299
+#define	tPhysical	300
+#define	tUsing	301
+#define	tPower	302
+#define	tBump	303
+#define	tProgression	304
+#define	tAssociation	305
+#define	tRotate	306
+#define	tTranslate	307
+#define	tSymmetry	308
+#define	tDilate	309
+#define	tExtrude	310
+#define	tDuplicata	311
+#define	tLoop	312
+#define	tInclude	313
+#define	tRecombine	314
+#define	tDelete	315
+#define	tCoherence	316
+#define	tView	317
+#define	tOffset	318
+#define	tAttractor	319
+#define	tLayers	320
+#define	tScalarTetrahedron	321
+#define	tVectorTetrahedron	322
+#define	tTensorTetrahedron	323
+#define	tScalarTriangle	324
+#define	tVectorTriangle	325
+#define	tTensorTriangle	326
+#define	tScalarLine	327
+#define	tVectorLine	328
+#define	tTensorLine	329
+#define	tScalarPoint	330
+#define	tVectorPoint	331
+#define	tTensorPoint	332
+#define	tBSpline	333
+#define	tNurbs	334
+#define	tOrder	335
+#define	tWith	336
+#define	tBounds	337
+#define	tKnots	338
+#define	tColor	339
+#define	tGeneral	340
+#define	tGeometry	341
+#define	tMesh	342
+#define	tB_SPLINE_SURFACE_WITH_KNOTS	343
+#define	tB_SPLINE_CURVE_WITH_KNOTS	344
+#define	tCARTESIAN_POINT	345
+#define	tTRUE	346
+#define	tFALSE	347
+#define	tUNSPECIFIED	348
+#define	tU	349
+#define	tV	350
+#define	tEDGE_CURVE	351
+#define	tVERTEX_POINT	352
+#define	tORIENTED_EDGE	353
+#define	tPLANE	354
+#define	tFACE_OUTER_BOUND	355
+#define	tEDGE_LOOP	356
+#define	tADVANCED_FACE	357
+#define	tVECTOR	358
+#define	tDIRECTION	359
+#define	tAXIS2_PLACEMENT_3D	360
+#define	tISO	361
+#define	tENDISO	362
+#define	tENDSEC	363
+#define	tDATA	364
+#define	tHEADER	365
+#define	tFILE_DESCRIPTION	366
+#define	tFILE_SCHEMA	367
+#define	tFILE_NAME	368
+#define	tMANIFOLD_SOLID_BREP	369
+#define	tCLOSED_SHELL	370
+#define	tADVANCED_BREP_SHAPE_REPRESENTATION	371
+#define	tFACE_BOUND	372
+#define	tCYLINDRICAL_SURFACE	373
+#define	tCONICAL_SURFACE	374
+#define	tCIRCLE	375
+#define	tTRIMMED_CURVE	376
+#define	tGEOMETRIC_SET	377
+#define	tCOMPOSITE_CURVE_SEGMENT	378
+#define	tCONTINUOUS	379
+#define	tCOMPOSITE_CURVE	380
+#define	tTOROIDAL_SURFACE	381
+#define	tPRODUCT_DEFINITION	382
+#define	tPRODUCT_DEFINITION_SHAPE	383
+#define	tSHAPE_DEFINITION_REPRESENTATION	384
+#define	tELLIPSE	385
+#define	tTrimmed	386
+#define	tSolid	387
+#define	tEndSolid	388
+#define	tVertex	389
+#define	tFacet	390
+#define	tNormal	391
+#define	tOuter	392
+#define	tLoopSTL	393
+#define	tEndLoop	394
+#define	tEndFacet	395
+#define	UMINUS	396
 
 #line 1 "Gmsh.y"
- /* $Id: Gmsh.tab.cpp,v 1.9 2000-11-26 15:43:47 geuzaine Exp $ */
+ /* $Id: Gmsh.tab.cpp,v 1.10 2000-11-28 11:28:35 geuzaine Exp $ */
 
 #include <stdarg.h>
 
@@ -215,11 +216,11 @@ typedef union {
 
 
 
-#define	YYFINAL		1339
+#define	YYFINAL		1336
 #define	YYFLAG		-32768
 #define	YYNTBASE	157
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 395 ? yytranslate[x] : 237)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 396 ? yytranslate[x] : 237)
 
 static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -247,21 +248,21 @@ static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,   138,   139,   140,   148
+     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+    96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+   106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,   138,   139,   140,   148
 };
 
 #if YYDEBUG != 0
@@ -284,15 +285,15 @@ static const short yyprhs[] = {     0,
   1171,  1180,  1189,  1195,  1204,  1212,  1221,  1229,  1241,  1249,
   1259,  1261,  1263,  1265,  1266,  1269,  1274,  1279,  1283,  1291,
   1300,  1312,  1325,  1338,  1347,  1360,  1369,  1381,  1397,  1399,
-  1402,  1412,  1415,  1422,  1432,  1442,  1452,  1461,  1470,  1479,
-  1486,  1491,  1494,  1499,  1500,  1503,  1504,  1510,  1511,  1517,
-  1518,  1524,  1525,  1528,  1533,  1542,  1547,  1557,  1565,  1567,
-  1569,  1571,  1573,  1575,  1577,  1581,  1585,  1589,  1593,  1597,
-  1601,  1604,  1607,  1612,  1617,  1622,  1627,  1632,  1637,  1642,
-  1647,  1652,  1657,  1664,  1669,  1674,  1679,  1684,  1689,  1694,
-  1701,  1708,  1715,  1717,  1719,  1721,  1725,  1732,  1744,  1754,
-  1762,  1770,  1771,  1775,  1777,  1781,  1782,  1786,  1790,  1792,
-  1796,  1797,  1799,  1803,  1805,  1807,  1811
+  1402,  1412,  1415,  1422,  1432,  1442,  1451,  1460,  1469,  1476,
+  1481,  1484,  1489,  1490,  1493,  1494,  1500,  1501,  1507,  1508,
+  1514,  1515,  1518,  1523,  1532,  1537,  1547,  1555,  1557,  1559,
+  1561,  1563,  1565,  1567,  1571,  1575,  1579,  1583,  1587,  1591,
+  1594,  1597,  1602,  1607,  1612,  1617,  1622,  1627,  1632,  1637,
+  1642,  1647,  1654,  1659,  1664,  1669,  1674,  1679,  1684,  1691,
+  1698,  1705,  1707,  1709,  1711,  1715,  1722,  1734,  1744,  1752,
+  1760,  1761,  1765,  1767,  1771,  1772,  1776,  1780,  1782,  1786,
+  1787,  1789,  1793,  1795,  1797,  1801
 };
 
 static const short yyrhs[] = {   159,
@@ -438,9 +439,8 @@ static const short yyrhs[] = {   159,
    152,   153,   213,   154,     6,     0,   214,     0,   213,   214,
      0,    65,   153,   235,   151,   235,   151,   235,   154,     6,
      0,    59,     6,     0,    43,    33,   235,     7,   227,     6,
-     0,    43,    33,   235,     7,   227,    46,    47,   227,     6,
-     0,    43,    33,   235,     7,   227,    46,    48,   227,     6,
      0,    43,    33,   235,     7,   227,    46,    49,   227,     6,
+     0,    43,    33,   235,     7,   227,    46,    48,   227,     6,
      0,    43,    34,   153,   227,   154,     7,   235,     6,     0,
     40,    34,   153,   227,   154,     7,   235,     6,     0,    43,
     36,   153,   227,   154,     7,   235,     6,     0,    59,    34,
@@ -502,15 +502,15 @@ static const short yyrline[] = { 0,
    913,   919,   925,   937,   943,   949,   961,   967,   972,   977,
    984,   986,   987,   990,   995,  1006,  1024,  1039,  1070,  1075,
   1079,  1083,  1087,  1093,  1098,  1102,  1106,  1111,  1119,  1123,
-  1128,  1146,  1156,  1174,  1191,  1208,  1225,  1246,  1266,  1286,
-  1301,  1323,  1334,  1338,  1340,  1343,  1346,  1347,  1349,  1350,
-  1352,  1355,  1357,  1360,  1371,  1381,  1391,  1399,  1475,  1477,
-  1478,  1479,  1480,  1483,  1485,  1486,  1487,  1488,  1489,  1490,
-  1491,  1492,  1493,  1494,  1495,  1496,  1497,  1498,  1499,  1500,
-  1501,  1502,  1503,  1504,  1505,  1506,  1507,  1508,  1509,  1510,
-  1511,  1512,  1515,  1517,  1518,  1529,  1536,  1549,  1558,  1566,
-  1574,  1584,  1588,  1593,  1597,  1602,  1606,  1610,  1616,  1622,
-  1628,  1632,  1638,  1651,  1657,  1666,  1670
+  1128,  1146,  1156,  1174,  1191,  1208,  1229,  1249,  1269,  1286,
+  1310,  1321,  1325,  1327,  1330,  1333,  1334,  1336,  1337,  1339,
+  1342,  1344,  1347,  1358,  1368,  1378,  1386,  1462,  1464,  1465,
+  1466,  1467,  1470,  1472,  1473,  1474,  1475,  1476,  1477,  1478,
+  1479,  1480,  1481,  1482,  1483,  1484,  1485,  1486,  1487,  1488,
+  1489,  1490,  1491,  1492,  1493,  1494,  1495,  1496,  1497,  1498,
+  1499,  1502,  1504,  1505,  1516,  1523,  1536,  1545,  1553,  1561,
+  1571,  1575,  1580,  1584,  1589,  1593,  1597,  1603,  1609,  1615,
+  1619,  1625,  1638,  1644,  1653,  1657
 };
 #endif
 
@@ -577,14 +577,14 @@ static const short yyr1[] = {     0,
    207,   207,   207,   208,   208,   209,   210,   211,   212,   212,
    212,   212,   212,   212,   212,   212,   212,   212,   213,   213,
    214,   214,   215,   215,   215,   215,   215,   215,   215,   215,
-   215,   216,   217,   218,   218,   220,   219,   221,   219,   222,
-   219,   223,   223,   224,   224,   224,   225,   225,   226,   226,
-   226,   226,   226,   227,   227,   227,   227,   227,   227,   227,
+   216,   217,   218,   218,   220,   219,   221,   219,   222,   219,
+   223,   223,   224,   224,   224,   225,   225,   226,   226,   226,
+   226,   226,   227,   227,   227,   227,   227,   227,   227,   227,
    227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
    227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-   227,   227,   228,   228,   228,   229,   229,   230,   230,   230,
-   230,   231,   231,   232,   232,   233,   233,   233,   234,   234,
-   235,   235,   235,   236,   236,   236,   236
+   227,   228,   228,   228,   229,   229,   230,   230,   230,   230,
+   231,   231,   232,   232,   233,   233,   233,   234,   234,   235,
+   235,   235,   236,   236,   236,   236
 };
 
 static const short yyr2[] = {     0,
@@ -606,15 +606,15 @@ static const short yyr2[] = {     0,
      8,     8,     5,     8,     7,     8,     7,    11,     7,     9,
      1,     1,     1,     0,     2,     4,     4,     3,     7,     8,
     11,    12,    12,     8,    12,     8,    11,    15,     1,     2,
-     9,     2,     6,     9,     9,     9,     8,     8,     8,     6,
-     4,     2,     4,     0,     2,     0,     5,     0,     5,     0,
-     5,     0,     2,     4,     8,     4,     9,     7,     1,     1,
-     1,     1,     1,     1,     3,     3,     3,     3,     3,     3,
-     2,     2,     4,     4,     4,     4,     4,     4,     4,     4,
-     4,     4,     6,     4,     4,     4,     4,     4,     4,     6,
-     6,     6,     1,     1,     1,     3,     6,    11,     9,     7,
-     7,     0,     3,     1,     3,     0,     3,     3,     1,     3,
-     0,     1,     3,     1,     1,     3,     3
+     9,     2,     6,     9,     9,     8,     8,     8,     6,     4,
+     2,     4,     0,     2,     0,     5,     0,     5,     0,     5,
+     0,     2,     4,     8,     4,     9,     7,     1,     1,     1,
+     1,     1,     1,     3,     3,     3,     3,     3,     3,     2,
+     2,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+     4,     6,     4,     4,     4,     4,     4,     4,     6,     6,
+     6,     1,     1,     1,     3,     6,    11,     9,     7,     7,
+     0,     3,     1,     3,     0,     3,     3,     1,     3,     0,
+     1,     3,     1,     1,     3,     3
 };
 
 static const short yydefact[] = {    51,
@@ -624,504 +624,511 @@ static const short yydefact[] = {    51,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,    52,    53,    54,    55,    56,    57,
-    58,    62,    59,    60,    61,    63,   243,   245,   244,     0,
+    58,    62,    59,    60,    61,    63,   242,   244,   243,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   214,    12,     0,    13,    14,    16,    15,
-    17,   252,   252,     0,    64,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   261,     0,     0,     0,     0,
-   261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   164,     0,   261,   164,
-   192,     0,     0,     0,     0,     0,     0,   194,     0,     0,
+     0,     0,     0,   213,    12,     0,    13,    14,    16,    15,
+    17,   251,   251,     0,    64,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   260,     0,     0,     0,     0,
+   260,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   164,     0,   260,   164,
+   191,     0,     0,     0,     0,     0,     0,   193,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   222,
-   221,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   221,
+   220,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   262,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   261,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,   168,     0,
      0,     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,   215,   217,   216,   218,   219,   220,     0,
+     0,     0,     0,   214,   216,   215,   217,   218,   219,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   254,     0,     0,     0,     0,   128,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   264,   265,     0,     0,     0,
+   253,     0,     0,     0,     0,   128,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   263,   264,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   166,   165,   191,     0,   167,     0,     0,     0,     0,
-     0,     0,     0,     0,   196,   198,   200,   193,   195,     0,
-   223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     0,   234,   235,   236,   237,   238,   239,     0,     0,     0,
-   217,   216,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   166,   165,   190,     0,   167,     0,     0,     0,     0,
+     0,     0,     0,     0,   195,   197,   199,   192,   194,     0,
+   222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     0,   233,   234,   235,   236,   237,   238,     0,     0,     0,
+   216,   215,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   253,     0,    19,     0,   133,     0,
-   261,   261,     0,   143,   261,     0,   153,   261,   261,     0,
-     0,   263,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   252,     0,    19,     0,   133,     0,
+   260,   260,     0,   143,   260,     0,   153,   260,   260,     0,
+     0,   262,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,   164,   164,
      0,     0,     0,     0,     0,     0,    67,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,     0,     0,   261,     0,     0,   261,     0,     0,
+    78,    79,     0,     0,   260,     0,     0,   260,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   261,   261,     0,     0,
-     0,     0,   261,   261,     0,     0,     0,     0,     0,   261,
-     0,   261,     0,     0,     0,     0,     0,   255,     0,   252,
-     0,     0,     0,   261,     0,   261,     0,     0,     0,   246,
-   266,   267,   132,     0,   261,   261,   261,   183,     0,   261,
-   261,   261,   261,   261,   261,   261,     0,     0,     0,   163,
+     0,     0,     0,     0,     0,     0,   260,   260,     0,     0,
+     0,     0,   260,   260,     0,     0,     0,     0,     0,   260,
+     0,   260,     0,     0,     0,     0,     0,   254,     0,   251,
+     0,     0,     0,   260,     0,   260,     0,     0,     0,   245,
+   265,   266,   132,     0,   260,   260,   260,   183,     0,   260,
+   260,   260,   260,   260,   260,   260,     0,     0,     0,   163,
      0,   162,   161,     0,     0,     0,     0,     0,     0,     0,
-   190,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    65,     0,     0,     0,     0,   256,
-     0,   202,   202,   202,     0,   233,   240,   241,   242,     0,
+   189,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    65,     0,     0,     0,     0,   255,
+     0,   201,   201,   201,     0,   232,   239,   240,   241,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   209,   210,   211,   212,   213,     0,     0,
+     0,     0,     0,   208,   209,   210,   211,   212,     0,     0,
      0,     0,     0,     0,     0,    18,     0,   129,   137,     0,
    140,     0,   134,     0,   135,   155,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   157,   159,   164,     0,     0,     0,
-     0,     0,     0,     0,   169,     0,     0,     0,     0,     0,
+     0,     0,     0,   157,   159,   164,     0,     0,     0,     0,
+     0,     0,     0,   169,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   144,
+     0,   260,   260,     0,   260,     0,     0,   201,     0,     0,
+   260,     0,     0,     0,   260,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   144,     0,   261,   261,     0,   261,     0,     0,   202,     0,
-     0,   261,     0,     0,     0,   261,     0,     0,     0,     0,
+     0,     0,     0,   260,     0,     0,     0,     0,     0,     0,
+     0,     0,   251,     0,   142,   152,     0,     0,   187,   146,
+   148,     0,     0,   186,   188,   154,   130,   141,   151,   156,
+     0,     0,     0,     0,     0,   174,     0,   176,     0,   170,
+     0,     0,    66,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   255,     0,   258,
+     0,     0,     0,     0,   196,   202,   198,   200,     0,     0,
+     0,     0,     0,    21,     0,    30,     0,    34,     0,    28,
+     0,     0,    33,     0,    38,    36,     0,     0,     0,     0,
+     0,     0,    45,     0,     0,     0,     0,     0,    50,     0,
+     0,   138,   246,     0,   185,   184,   250,     0,   249,   164,
+   160,     0,     0,     0,     0,     0,     0,   179,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   261,     0,     0,     0,     0,     0,
-     0,     0,     0,   252,     0,   142,   152,     0,     0,   188,
-   146,   148,     0,     0,     0,   187,   189,   154,   130,   141,
-   151,   156,     0,     0,     0,     0,     0,   174,     0,   176,
-     0,   170,     0,     0,    66,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   256,
-     0,   259,     0,     0,     0,     0,   197,   203,   199,   201,
-     0,     0,     0,     0,     0,    21,     0,    30,     0,    34,
-     0,    28,     0,     0,    33,     0,    38,    36,     0,     0,
-     0,     0,     0,     0,    45,     0,     0,     0,     0,     0,
-    50,     0,     0,   138,   247,     0,   184,   185,   186,   251,
-     0,   250,   164,   160,     0,     0,     0,     0,     0,     0,
-   179,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   261,   258,   257,
-   261,     0,     0,     0,     0,   147,     0,     0,   256,     0,
+     0,     0,     0,     0,   260,   257,   256,   260,     0,     0,
+     0,     0,   147,     0,     0,   255,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   260,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   261,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   182,   261,     0,   180,     0,
+     0,     0,   182,   260,     0,   180,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   260,
+   260,     0,   259,     0,     0,   203,   244,     0,   205,     0,
+    35,     0,     0,     0,     0,    25,     0,    31,     0,    37,
+    26,    39,     0,    42,     0,    46,    47,     0,     0,    49,
+     0,     0,     0,     0,   248,   158,     0,     0,     0,     0,
+   177,   171,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   260,   260,   145,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   261,   261,     0,   260,     0,     0,   204,   245,
-     0,   206,     0,    35,     0,     0,     0,     0,    25,     0,
-    31,     0,    37,    26,    39,     0,    42,     0,    46,    47,
-     0,     0,    49,     0,     0,     0,     0,   249,   158,     0,
-     0,     0,     0,   177,   171,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   261,
-   261,   145,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   173,
-   175,   172,     0,   261,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    82,    86,    90,   131,   136,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    29,    32,    40,
-     0,    41,    48,    43,     0,     0,   248,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   173,   175,   172,     0,
+   260,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    82,    86,    90,   131,   136,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    29,    32,    40,     0,    41,    48,
+    43,     0,     0,   247,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   260,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   261,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   261,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   205,
-     0,     0,     0,     0,    24,    27,     0,     0,     0,   178,
+     0,   260,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   204,     0,     0,     0,
+     0,    24,    27,     0,     0,     0,   178,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    80,     0,
+    84,     0,    88,     0,     0,     0,   207,     0,     0,   260,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    80,     0,    84,     0,    88,     0,     0,     0,   208,
-     0,     0,   261,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    44,    20,
-   139,   181,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    81,    83,    85,    87,    89,    91,     0,     0,   207,
-     0,     0,   261,     0,     0,     0,     0,     0,     0,    94,
-    98,   102,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     5,   261,
+     0,     0,     0,     0,     0,    44,    20,   139,   181,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    81,    83,
+    85,    87,    89,    91,     0,     0,   206,     0,     0,   260,
+     0,     0,     0,     0,     0,     0,    94,    98,   102,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    92,     0,    96,     0,   100,     0,   261,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   149,     0,    22,     0,     0,     0,     0,     0,     0,
-    93,    95,    97,    99,   101,   103,   261,     0,     0,     0,
-   106,   110,   114,     0,     0,     0,     0,     0,     0,     0,
-   261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   104,     0,   108,     0,   112,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   105,   107,   109,   111,   113,   115,     0,   118,   122,
-   126,    23,     0,     0,     0,     0,     0,     0,     0,   116,
-     0,   120,     0,   124,     0,     0,     0,     0,     0,     0,
-   117,   119,   121,   123,   125,   127,     0,     0,     0
+     0,     0,     0,     0,     0,     5,   260,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   150,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    92,     0,
+    96,     0,   100,     0,   260,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   149,     0,
+    22,     0,     0,     0,     0,     0,     0,    93,    95,    97,
+    99,   101,   103,   260,     0,     0,     0,   106,   110,   114,
+     0,     0,     0,     0,     0,     0,     0,   260,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   104,
+     0,   108,     0,   112,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   105,   107,
+   109,   111,   113,   115,     0,   118,   122,   126,    23,     0,
+     0,     0,     0,     0,     0,     0,   116,     0,   120,     0,
+   124,     0,     0,     0,     0,     0,     0,   117,   119,   121,
+   123,   125,   127,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1337,
+static const short yydefgoto[] = {  1334,
      4,     5,    18,    19,    20,    21,     6,    55,    56,   368,
-  1111,   491,  1059,  1113,   492,  1060,  1115,   493,  1061,  1221,
-   494,  1194,  1223,   495,  1195,  1225,   496,  1196,  1282,   497,
-  1268,  1284,   498,  1269,  1286,   499,  1270,  1319,   500,  1313,
-  1321,   501,  1314,  1323,   502,  1315,    57,   363,   580,   581,
-   582,   583,    61,    62,    63,   860,   861,    64,    65,    66,
-   260,   379,   509,   510,   511,   718,   719,   885,   649,   224,
-    94,   337,   240,   210,   322,   715,   801,   802,   338
+  1108,   491,  1056,  1110,   492,  1057,  1112,   493,  1058,  1218,
+   494,  1191,  1220,   495,  1192,  1222,   496,  1193,  1279,   497,
+  1265,  1281,   498,  1266,  1283,   499,  1267,  1316,   500,  1310,
+  1318,   501,  1311,  1320,   502,  1312,    57,   363,   580,   581,
+   582,   583,    61,    62,    63,   857,   858,    64,    65,    66,
+   260,   379,   509,   510,   511,   717,   718,   882,   649,   224,
+    94,   337,   240,   210,   322,   714,   799,   800,   338
 };
 
 static const short yypact[] = {   266,
--32768,-32768,  -100,-32768,   343,  1294,   611,     9,    68,    74,
-    91,   106,   121,   203,   -80,   -13,    22,-32768,-32768,-32768,
--32768,   207,   183,    73,   102,   120,   -45,   -41,   143,   168,
-   164,   197,   315,   321,   327,    33,   280,    86,   238,   287,
-   288,   290,   -26,   289,   436,   411,   293,   441,   452,     2,
-   308,   -29,   309,   431,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   316,
-   317,   341,   356,   361,   386,   387,   391,   408,   412,   413,
-   415,   416,   418,   420,   430,   432,   433,   435,   448,   611,
-   611,   611,   460,-32768,-32768,  1286,-32768,-32768,-32768,-32768,
--32768,   449,   449,   544,-32768,   611,   611,   611,   611,   450,
-   611,   451,   611,   611,   611,   505,   611,   407,   457,   461,
-   505,   428,   459,   466,   467,   468,   469,   495,   -27,   -27,
-   -27,   -27,   496,   501,   503,   611,-32768,   648,   505,-32768,
--32768,   -57,   506,   507,   611,   -68,   611,-32768,   509,   611,
-   611,   611,   611,   611,   611,   611,   611,   611,   611,   611,
-   611,   611,   611,   611,   611,   611,   611,   611,   611,   511,
-   511,   196,   611,   611,   611,   611,   611,   460,   512,   513,
-   514,   518,   519,   520,   523,   524,   548,   549,   550,   551,
-   567,   573,   574,   579,   581,   582,   583,   584,   593,   597,
-   598,   600,   603,   610,   615,   616,   618,   623,   656,   575,
-   622,   594,    54,   237,   358,   399,   611,   498,   611,   626,
-   657,   751,   611,   878,   756,   796,   611,   611,   611,   769,
-   611,   611,   611,   611,   611,   611,   611,   611,   611,   640,
-   645,   646,   659,   611,   611,   611,   259,   795,-32768,    83,
-  1020,   -27,-32768,   611,   611,   807,   725,   611,   818,   -24,
-   611,   829,   849,   897,   943,   957,  1061,  1091,  1111,  1128,
-  1147,  1037,  1217,  1274,  1284,  1295,  1306,  1316,  1071,  1157,
-  1763,   611,   611,-32768,   -58,   401,   511,   511,   511,   -72,
-   803,   812,   815,   816,   817,   828,   830,   833,   836,   837,
-   838,   840,   841,   842,   850,   851,   853,   855,   856,   858,
-   859,   864,   865,   699,   867,   877,   881,   882,   880,   883,
--32768,    84,   885,   886,   894,-32768,   235,   884,   895,  1326,
-   253,  1336,   900,   902,   903,   185,-32768,   -19,   611,   906,
-   -51,  1346,  1356,   611,   595,   650,  1366,  1377,  1387,  1397,
-  1407,  1772,  1781,   -27,   754,   778,   611,  1790,  1799,  1808,
-   -27,-32768,-32768,-32768,   611,-32768,   779,   346,  1817,  1826,
-   927,   785,  1417,   930,-32768,-32768,-32768,-32768,-32768,  1427,
+-32768,-32768,  -112,-32768,   344,  1309,   667,     9,    68,    59,
+    61,    76,   110,   114,   -45,   -22,    -8,-32768,-32768,-32768,
+-32768,   172,   165,    35,    47,    49,   -37,   -31,    63,    65,
+   181,    67,   189,   236,   282,    44,   216,   103,   143,   168,
+   188,   198,   -26,   196,   349,   325,   228,   383,   391,     3,
+   247,   -29,   253,   373,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   283,
+   284,   287,   288,   290,   291,   292,   295,   296,   297,   299,
+   308,   312,   317,   332,   337,   338,   342,   343,   345,   667,
+   667,   667,   611,-32768,-32768,  1361,-32768,-32768,-32768,-32768,
+-32768,   348,   348,   500,-32768,   667,   667,   667,   667,   356,
+   667,   361,   667,   667,   667,   505,   667,   387,   394,   395,
+   505,   389,   400,   397,   410,   415,   421,   423,   -58,   -58,
+   -58,   -58,   424,   425,   428,   667,-32768,   549,   505,-32768,
+-32768,   -57,   429,   430,   667,   -53,   667,-32768,   432,   667,
+   667,   667,   667,   667,   667,   667,   667,   667,   667,   667,
+   667,   667,   667,   667,   667,   667,   667,   667,   667,   434,
+   434,   358,   667,   667,   667,   667,   667,   611,   435,   448,
+   454,   455,   459,   462,   466,   467,   468,   469,   495,   496,
+   503,   504,   506,   507,   509,   510,   519,   523,   555,   556,
+   557,   559,   564,   568,   569,   570,   576,   580,   602,   433,
+   458,   499,   112,   732,   742,   780,   667,   791,   667,   802,
+   817,   828,   667,   320,   661,   846,   667,   667,   667,   697,
+   667,   667,   667,   667,   667,   667,   667,   667,   667,   578,
+   590,   592,   581,   667,   667,   667,   259,   825,-32768,   187,
+  1017,   -58,-32768,   667,   667,   894,   649,   667,   940,   -56,
+   667,   954,  1034,  1062,  1088,  1108,  1125,  1144,  1177,  1232,
+  1252,   418,  1262,  1272,  1282,  1292,  1349,  1359,  1154,  1806,
+  1815,   667,   667,-32768,   -73,    43,   434,   434,   434,   218,
+   741,   744,   747,   748,   753,   754,   761,   762,   764,   765,
+   766,   767,   769,   771,   785,   786,   787,   792,   793,   795,
+   796,   797,   799,   623,   800,   801,   803,   804,   811,   810,
+-32768,  -114,   834,   836,   835,-32768,   202,   837,   841,  1369,
+   235,  1379,   843,   844,   845,   197,-32768,   -39,   667,   847,
+   457,  1390,  1400,   667,   498,   518,  1410,  1420,  1430,  1440,
+  1450,  1824,  1833,   -58,   654,   663,   667,  1842,  1851,  1860,
+   -58,-32768,-32768,-32768,   667,-32768,   690,   346,  1869,  1878,
+   856,   700,  1460,   858,-32768,-32768,-32768,-32768,-32768,  1470,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   611,-32768,-32768,-32768,-32768,-32768,-32768,   611,   611,   611,
-  -118,  -118,   805,   793,   804,   806,   814,   825,   826,   831,
-   832,   834,   848,   869,   874,   893,   896,   909,   912,   915,
-   916,   917,   931,   932,   939,   940,   942,   945,   946,   953,
-   954,   956,   959,   941,-32768,   802,-32768,   962,-32768,   -27,
-   505,   505,   951,-32768,   505,   972,-32768,   505,   505,    30,
-   611,-32768,    62,   797,   973,   977,   982,    32,   993,   995,
-   997,   999,  1000,  1011,  1024,   611,   611,   964,   522,   522,
-  1438,   -27,   -27,   -27,   131,   112,-32768,   819,   898,   944,
-   958,   966,   967,   968,   969,   970,   981,   983,   985,   960,
+   667,-32768,-32768,-32768,-32768,-32768,-32768,   667,   667,   667,
+   -23,   -23,   715,   717,   720,   722,   728,   729,   745,   746,
+   749,   755,   756,   759,   776,   777,   779,   788,   790,   798,
+   807,   813,   816,   819,   824,   827,   830,   831,   848,   850,
+   852,   853,   864,   878,-32768,   740,-32768,   866,-32768,   -58,
+   505,   505,   886,-32768,   505,   892,-32768,   505,   505,    31,
+   667,-32768,   119,   781,   931,   935,   937,    57,   943,   948,
+   969,   979,   989,   990,  1011,   667,   667,   868,   334,   334,
+  1480,   -58,   -58,   -58,    84,   128,-32768,   870,   871,   872,
+   874,   879,   891,   895,   907,   910,   913,   914,   915,  1022,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   611,   611,   505,   611,  1025,   505,   892,   928,
-   984,  1129,  1448,  1458,  1468,  1478,  1004,  1137,   611,   611,
-   -27,  1138,  1139,  1008,  1153,  1156,   505,   505,  1160,   -27,
-  1161,  1162,   505,   505,  1163,  1170,  1172,  1173,  1175,   505,
-   333,   505,  1181,  1155,  1182,  1190,  1191,-32768,  1203,   449,
-  1205,    23,  1206,   505,  1212,   505,  1213,  1215,   611,   878,
-   185,-32768,-32768,   611,   505,   505,   505,-32768,   147,   505,
-   505,   505,   505,   505,   505,   505,  1835,  1844,   611,-32768,
-  1076,  1113,-32768,  1078,  1085,   174,   244,   255,   -27,  1233,
--32768,   638,   611,   611,   611,   611,   611,   611,   611,   611,
-   611,   611,   611,   611,-32768,  1853,  1862,  1235,  1488,   -17,
-  1159,  1241,  1241,  1241,   611,-32768,-32768,-32768,-32768,   611,
-  1095,  1871,  1880,  1096,  1098,  1106,  1099,  1107,  1110,  1112,
-  1124,  1125,  1126,  1130,  1127,  1134,  1146,  1154,  1164,  1165,
-  1166,  1189,  1136,-32768,-32768,-32768,-32768,-32768,  1192,  1200,
-  1208,  1216,  1219,  1152,  1220,-32768,  1226,-32768,-32768,   -27,
--32768,  1256,-32768,  1301,-32768,-32768,   349,  1889,  1307,  1308,
-  1315,   611,   611,   611,  1317,  1351,  1358,  1362,  1373,  1375,
-  1386,   611,   611,  1498,-32768,-32768,   522,   -27,  1388,   -27,
-  1389,   -27,    11,  1242,-32768,  1392,  1898,  1907,  1916,  1925,
-  1934,  1943,  1952,  1961,  1970,  1979,  1988,  1997,   611,   611,
--32768,  1240,   505,   505,  1229,   505,  1325,  1188,  1241,  1245,
-  1267,   286,   460,  1419,   611,   505,  1404,  1421,  1425,  1287,
-  1428,   333,  1429,  1434,   611,  1436,  1440,  1439,  1442,  1443,
-   333,   611,   611,   611,   505,  1450,  1454,   333,   611,  1460,
-  1461,  1467,   611,   449,  1470,-32768,-32768,   611,   611,-32768,
--32768,-32768,   119,   128,   135,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  1508,   410,  1313,  1320,  1332,-32768,  1333,-32768,
-  1335,-32768,    52,   611,-32768,   611,   611,   611,   611,   611,
-   611,   611,   611,   611,   611,   611,   611,  1521,  1531,   -17,
-   282,-32768,   -12,  1314,  1413,    10,-32768,-32768,-32768,-32768,
-  1481,   460,  1342,  2006,  1345,-32768,  1352,-32768,  1353,-32768,
-  1354,-32768,  1363,  1541,-32768,  1365,-32768,-32768,  1355,  1361,
-  1551,  2015,  1561,  1368,-32768,  1372,  1376,  2024,  1383,  1385,
--32768,  2033,  1384,-32768,   878,  2042,-32768,-32768,-32768,-32768,
-   611,-32768,   522,-32768,   611,   611,   611,  1491,  1364,   -40,
--32768,  1572,  2051,  2060,  2069,  2078,  2087,  2096,  2105,  2114,
-  2123,  2132,  2141,  2150,  1520,  1537,  1462,   505,-32768,-32768,
-   505,   611,  1542,   668,  1548,-32768,   100,  1549,   -17,   333,
-  1544,   611,  1552,   333,  1558,  1554,  1559,  1562,  1568,   611,
-  1569,   505,  1571,  1574,   611,  1564,  1579,   611,  1573,  1584,
-   576,  1441,  1583,  1593,  1603,-32768,   505,  1582,-32768,  1590,
-   611,   611,   611,   611,   611,   611,   611,   611,   611,   611,
-   611,   611,   505,   505,  1445,-32768,  1455,   178,-32768,  1457,
-  2159,-32768,   611,-32768,  1464,  1465,  1474,  2168,-32768,  1447,
--32768,  1453,-32768,-32768,-32768,  1613,-32768,  1475,-32768,-32768,
-  1623,  1466,-32768,  1633,  1477,  1484,   611,-32768,-32768,  1632,
-  1639,    12,  1495,-32768,-32768,  2177,  2186,  2195,  2204,  2213,
-  2222,  2231,  2240,  2249,  1643,  1653,  1663,  1642,  1649,   505,
-   505,-32768,   611,   611,   460,   333,   333,   333,   333,  1650,
-  1652,  1655,   333,  1656,  1662,  1665,  1604,  1614,   670,-32768,
--32768,-32768,    52,   505,   611,   611,   611,   611,   611,   611,
-   611,   611,   611,-32768,-32768,-32768,-32768,-32768,  1518,  1485,
-   708,  2258,   460,  1527,  1528,  1497,  1507,-32768,-32768,-32768,
-  1530,-32768,-32768,-32768,  1538,  1547,-32768,   -39,  1550,  2267,
-  2276,  2285,  2294,  2303,  2312,  2321,  2330,  2339,  1476,  1519,
-  1529,   505,  1608,  1686,   611,   220,   333,   333,  1696,  1702,
-   333,  1694,  1704,  1705,   505,   611,   611,   611,   611,   611,
-   611,   611,   611,   611,   611,   611,   611,  1560,  1566,-32768,
-   613,   611,  1580,  1589,-32768,-32768,  1570,  1578,  1581,-32768,
-  1587,  2348,  2357,  2366,  2375,  2384,  2393,  2402,  2411,  2420,
-    50,   878,    63,   878,    64,   878,  1645,   611,   611,-32768,
-   460,   333,   505,  1706,  1717,  1737,  1738,   611,   611,   611,
-   611,   611,   611,   611,   611,   611,   611,  1744,   611,  1745,
-   611,  1747,  1601,  2429,   722,   460,  1609,  1610,-32768,-32768,
--32768,-32768,  2438,  2447,  2456,  2465,  2474,  2483,  1673,  1683,
-  1693,   878,-32768,   878,-32768,   878,-32768,   611,   611,-32768,
-    43,   333,   505,   611,   611,   611,   611,   611,   611,-32768,
--32768,-32768,  2492,   735,  1624,  1612,  1619,  2501,  2510,  2519,
-  2528,  2537,  2546,  1618,  1620,  1621,   611,  1774,-32768,   505,
-   333,   611,   611,   611,   611,   611,   611,   611,   611,   611,
-   784,-32768,  1630,  1631,  2555,  2564,  2573,  2582,  2591,  2600,
-    99,   878,   140,   878,   166,   878,  1778,   505,  1784,   611,
-   611,   611,   611,   611,   611,   611,  1785,   611,  1787,   611,
-  1788,-32768,  1659,-32768,  2609,  2618,  2627,  1703,  1713,  1723,
-   878,-32768,   878,-32768,   878,-32768,   505,   611,   611,   611,
--32768,-32768,-32768,  1660,  2636,  2645,  2654,  1647,  1648,  1651,
-   505,   611,   611,   611,   611,   611,   611,  1669,  2663,  2672,
-  2681,   182,   878,   184,   878,   208,   878,   333,   611,   611,
-   611,   611,  1797,   611,  1807,   611,  1815,  1671,  1733,  1743,
-  1753,   878,-32768,   878,-32768,   878,-32768,  1818,-32768,-32768,
--32768,-32768,  1661,  1677,  1678,   611,   611,   611,   216,   878,
-   217,   878,   236,   878,   611,  1827,   611,  1828,   611,  1834,
-   878,-32768,   878,-32768,   878,-32768,  1841,  1843,-32768
+-32768,-32768,   667,   667,   505,   667,  1035,   505,   925,   926,
+   927,  1037,  1490,  1500,  1510,  1520,   953,  1085,   667,   667,
+   -58,  1087,  1090,   946,  1091,  1098,   505,   505,  1099,   -58,
+  1101,  1102,   505,   505,  1104,  1107,  1109,  1111,  1112,   505,
+   333,   505,  1113,  1123,  1127,  1114,  1130,-32768,  1124,   348,
+  1128,    21,  1129,   505,  1131,   505,  1132,  1133,   667,   320,
+   197,-32768,-32768,   667,   505,   505,   505,-32768,   211,   505,
+   505,   505,   505,   505,   505,   505,  1887,  1896,   667,-32768,
+   959,  1110,-32768,   996,  1000,   131,   179,   219,   -58,  1150,
+-32768,   404,   667,   667,   667,   667,   667,   667,   667,   667,
+   667,   667,   667,   667,-32768,  1905,  1914,  1151,  1530,   -18,
+  1077,  1157,  1157,  1157,   667,-32768,-32768,-32768,-32768,   667,
+  1012,  1923,  1932,  1010,  1019,  1020,  1025,  1021,  1031,  1032,
+  1039,  1040,  1049,  1051,  1057,  1058,  1052,  1061,  1064,  1065,
+  1066,  1067,  1075,-32768,-32768,-32768,-32768,-32768,  1068,  1078,
+  1084,  1092,  1093,  1086,  1094,-32768,  1095,-32768,-32768,   -58,
+-32768,  1207,-32768,  1230,-32768,-32768,   -75,  1941,  1233,  1236,
+  1241,   667,   667,  1249,  1250,  1253,  1255,  1266,  1267,  1269,
+   667,   667,  1543,-32768,-32768,   334,   -58,  1270,   -58,  1277,
+   -58,    11,  1134,-32768,  1285,  1950,  1959,  1968,  1977,  1986,
+  1995,  2004,  2013,  2022,  2031,  2040,  2049,   667,   667,-32768,
+  1251,   505,   505,  1195,   505,  1287,  1138,  1157,  1141,  1147,
+   286,   611,  1299,   667,   505,  1298,  1308,  1306,  1169,  1310,
+   333,  1312,  1321,   667,  1319,  1324,  1322,  1325,  1327,   333,
+   667,   667,   667,   505,  1326,  1330,   333,   667,  1331,  1333,
+  1341,   667,   348,  1350,-32768,-32768,   667,   667,-32768,-32768,
+-32768,   135,   178,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  1553,   340,  1184,  1201,  1206,-32768,  1215,-32768,  1221,-32768,
+    28,   667,-32768,   667,   667,   667,   667,   667,   667,   667,
+   667,   667,   667,   667,   667,  1563,  1573,   -18,   243,-32768,
+   -24,  1205,  1300,    10,-32768,-32768,-32768,-32768,  1373,   611,
+  1231,  2058,  1234,-32768,  1235,-32768,  1238,-32768,  1240,-32768,
+  1248,  1586,-32768,  1258,-32768,-32768,  1260,  1261,  1596,  2067,
+  1606,  1259,-32768,  1268,  1271,  2076,  1278,  1280,-32768,  2085,
+  1279,-32768,   320,  2094,-32768,-32768,-32768,   667,-32768,   334,
+-32768,   667,   667,   667,  1376,  1247,   -43,-32768,  1616,  2103,
+  2112,  2121,  2130,  2139,  2148,  2157,  2166,  2175,  2184,  2193,
+  2202,  1395,  1396,  1336,   505,-32768,-32768,   505,   667,  1416,
+   809,  1427,-32768,   -55,  1433,   -18,   333,  1439,   667,  1437,
+   333,  1446,  1442,  1447,  1448,  1449,   667,  1461,   505,  1462,
+  1463,   667,  1443,  1464,   667,  1451,  1467,   392,  1320,  1626,
+  1636,  1646,-32768,   505,  1479,-32768,  1491,   667,   667,   667,
+   667,   667,   667,   667,   667,   667,   667,   667,   667,   505,
+   505,  1343,-32768,  1348,   190,-32768,  1355,  2211,-32768,   667,
+-32768,  1356,  1358,  1365,  2220,-32768,  1368,-32768,  1374,-32768,
+-32768,-32768,  1656,-32768,  1366,-32768,-32768,  1666,  1375,-32768,
+  1676,  1378,  1386,   667,-32768,-32768,  1494,  1504,    12,  1387,
+-32768,-32768,  2229,  2238,  2247,  2256,  2265,  2274,  2283,  2292,
+  2301,  1686,  1696,  1706,  1524,  1534,   505,   505,-32768,   667,
+   667,   611,   333,   333,   333,   333,  1535,  1541,  1542,   333,
+  1544,  1545,  1551,  1468,  1555,   554,-32768,-32768,-32768,    28,
+   505,   667,   667,   667,   667,   667,   667,   667,   667,   667,
+-32768,-32768,-32768,-32768,-32768,  1407,  1413,   567,  2310,   611,
+  1417,  1419,  1409,  1425,-32768,-32768,-32768,  1436,-32768,-32768,
+-32768,  1456,  1457,-32768,   -40,  1459,  2319,  2328,  2337,  2346,
+  2355,  2364,  2373,  2382,  2391,  1418,  1428,  1435,   505,  1498,
+  1584,   667,   100,   333,   333,  1585,  1591,   333,  1593,  1595,
+  1605,   505,   667,   667,   667,   667,   667,   667,   667,   667,
+   667,   667,   667,   667,  1466,  1465,-32768,   405,   667,  1476,
+  1477,-32768,-32768,  1469,  1485,  1486,-32768,  1487,  2400,  2409,
+  2418,  2427,  2436,  2445,  2454,  2463,  2472,    22,   320,    36,
+   320,    53,   320,  1521,   667,   667,-32768,   611,   333,   505,
+  1611,  1625,  1634,  1641,   667,   667,   667,   667,   667,   667,
+   667,   667,   667,   667,  1642,   667,  1644,   667,  1645,  1505,
+  2481,   579,   611,  1509,  1516,-32768,-32768,-32768,-32768,  2490,
+  2499,  2508,  2517,  2526,  2535,  1716,  1726,  1736,   320,-32768,
+   320,-32768,   320,-32768,   667,   667,-32768,   650,   333,   505,
+   667,   667,   667,   667,   667,   667,-32768,-32768,-32768,  2544,
+   594,  1528,  1519,  1526,  2553,  2562,  2571,  2580,  2589,  2598,
+  1508,  1518,  1525,   667,  1674,-32768,   505,   333,   667,   667,
+   667,   667,   667,   667,   667,   667,   667,   619,-32768,  1532,
+  1529,  2607,  2616,  2625,  2634,  2643,  2652,    60,   320,    99,
+   320,   140,   320,  1678,   505,  1684,   667,   667,   667,   667,
+   667,   667,   667,  1685,   667,  1687,   667,  1688,-32768,  1549,
+-32768,  2661,  2670,  2679,  1746,  1756,  1766,   320,-32768,   320,
+-32768,   320,-32768,   505,   667,   667,   667,-32768,-32768,-32768,
+  1550,  2688,  2697,  2706,  1557,  1558,  1560,   505,   667,   667,
+   667,   667,   667,   667,  1552,  2715,  2724,  2733,   166,   320,
+   174,   320,   175,   320,   333,   667,   667,   667,   667,  1698,
+   667,  1714,   667,  1715,  1571,  1776,  1786,  1796,   320,-32768,
+   320,-32768,   320,-32768,  1718,-32768,-32768,-32768,-32768,  1574,
+  1580,  1581,   667,   667,   667,   214,   320,   215,   320,   229,
+   320,   667,  1720,   667,  1730,   667,  1731,   320,-32768,   320,
+-32768,   320,-32768,  1743,  1744,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1367,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1276,
 -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,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,  1845,  1847,  -468,
-   257,  1848,-32768,-32768,-32768,   847,  -857,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  -591,-32768,-32768,  -711,    -7,
--32768,  1399,  -121,  -102,-32768,  -776,  1149,   463,-32768
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1740,  1741,  -468,
+    58,  1748,-32768,-32768,-32768,   757,  -854,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,  -601,-32768,-32768,  -708,    -7,
+-32768,  1305,  -121,  -102,-32768,  -777,  1044,   460,-32768
 };
 
 
-#define	YYLAST		2832
+#define	YYLAST		2884
 
 
 static const short yytable[] = {    93,
-   211,   584,   919,   133,   146,   252,   134,   135,   241,   242,
-   243,   110,   257,   883,    95,   112,   782,  1012,   858,   858,
-   821,   720,   721,   877,   859,   859,   175,   176,   659,   830,
-   177,   143,    67,    68,   144,     7,   837,   568,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    86,    87,    88,    89,   326,
-   375,   376,   377,   660,   403,   121,   122,   563,   123,   102,
-   282,   283,   175,   176,    96,  -222,   177,   569,  -222,    97,
-  -222,   258,   170,   171,   172,   178,  -222,  -222,   364,   365,
-   177,   282,   283,   175,   176,   253,    98,   177,   213,   214,
-   215,   216,   455,   218,   111,   220,   221,   222,   113,   226,
-   858,    99,   945,   918,  1074,   125,   859,   591,   126,   127,
-   147,   128,   238,   136,   847,   239,   100,   808,   247,   378,
-   367,   451,   713,   848,   452,   714,   103,   256,   878,   259,
-   849,   880,   262,   263,   264,   265,   266,   267,   268,   269,
+   211,   584,   916,   133,   146,   252,   134,   135,   241,   242,
+   243,   719,   720,   880,    95,   855,   780,  1009,   855,   110,
+   874,   856,   819,     7,   856,   112,   659,   257,   375,   376,
+   377,   828,   143,    67,    68,   144,   434,   435,   835,    69,
+    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+    80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+  -221,   660,   568,  -221,    97,  -221,    98,   282,   283,   175,
+   176,  -221,  -221,   177,    96,   177,   121,   122,   940,   123,
+   757,    99,   170,   171,   172,   178,   855,   282,   283,   175,
+   176,   238,   856,   177,   239,   253,   258,   378,   213,   214,
+   215,   216,   569,   218,   102,   220,   221,   222,   942,   226,
+   915,   451,   111,  1071,   452,   100,   806,   326,   113,   101,
+   147,   175,   176,   136,   563,   177,   875,   103,   247,   877,
+   367,   712,   125,   591,   713,   126,   127,   256,   128,   259,
+   845,   104,   262,   263,   264,   265,   266,   267,   268,   269,
    270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-   280,   281,   884,   783,  1013,   285,   286,   287,   288,   289,
-   290,   104,    90,    91,   282,   283,   175,   176,   946,    92,
-   177,  1185,   950,   992,   559,   282,   283,   175,   176,   106,
-   919,   177,   450,   672,   673,   674,   282,   283,   175,   176,
-  1137,   116,   177,  1138,   282,   283,   175,   176,   101,   330,
-   177,   332,   105,  1139,  1141,   336,  1140,  1142,   776,   341,
-   342,   343,   107,   345,   346,   347,   348,   349,   350,   351,
-   352,   353,   468,   943,   434,   435,   358,   359,   360,   475,
-   439,   440,   282,   283,   175,   176,   369,   370,   177,  1236,
-   373,   108,  1237,   380,   282,   283,   175,   176,   444,   445,
-   177,   282,   283,   175,   176,    -7,    -7,   177,    -7,   109,
+   280,   281,   881,   781,  1010,   285,   286,   287,   288,   289,
+   290,   106,  1134,    90,    91,  1135,  -220,   105,   943,  -220,
+    92,  -220,   947,   846,   107,   559,  1136,  -220,  -220,  1137,
+   916,   177,   364,   365,   248,   989,   108,   251,   109,   282,
+   283,   175,   176,  1138,   450,   177,  1139,   439,   440,   330,
+  1233,   332,   114,  1234,   115,   336,   117,   774,   116,   341,
+   342,   343,   118,   345,   346,   347,   348,   349,   350,   351,
+   352,   353,   468,  1089,   589,   590,   358,   359,   360,   475,
+   444,   445,   282,   283,   175,   176,   369,   370,   177,  1235,
+   373,   124,  1236,   380,   282,   283,   175,   176,   672,   673,
+   177,   282,   283,   175,   176,    -7,    -7,   177,    -7,   119,
    282,   283,   175,   176,   401,   402,   177,   282,   283,   175,
-   176,   589,   590,   177,  1034,  1035,  1036,  1037,    67,    68,
-  1238,  1041,   114,  1239,    69,    70,    71,    72,    73,    74,
+   176,   687,   688,   177,  1031,  1032,  1033,  1034,    67,    68,
+  1237,  1038,   129,  1238,    69,    70,    71,    72,    73,    74,
     75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    86,    87,    88,    89,   124,  1240,   115,   551,  1241,
-   282,   283,   175,   176,   688,   689,   177,   282,   283,   175,
-   176,   453,  1292,   177,  1294,  1293,   458,  1295,   282,   283,
-   175,   176,    -1,     8,   177,     9,   117,   284,   118,   471,
-   586,   587,   588,  1092,   119,  1093,  1094,   476,  1296,  1097,
-   120,  1297,   282,   283,   175,   176,  1325,  1327,   177,  1326,
-  1328,    -7,    -7,    -7,    -7,    -7,    -7,    -7,    -7,   282,
-   283,   175,   176,   513,   912,   177,  1329,   129,   327,  1330,
-   514,   515,   516,   248,   690,   691,   251,     1,     2,   624,
-     3,   282,   283,   175,   176,   692,   693,   177,   633,   361,
-  1147,   478,   479,   480,   481,   482,   483,   484,   485,   486,
+    85,    86,    87,    88,    89,   120,  1289,   130,   551,  1290,
+   282,   283,   175,   176,  1291,  1293,   177,  1292,  1294,   689,
+   690,   453,   282,   283,   175,   176,   458,   131,   177,   282,
+   283,   175,   176,    -1,     8,   177,     9,   132,   137,   471,
+   586,   587,   588,   138,   403,  1090,  1091,   476,   139,  1094,
+   282,   283,   175,   176,  1322,  1324,   177,  1323,  1325,   691,
+   692,    -7,    -7,    -7,    -7,    -7,    -7,    -7,    -7,  1326,
+   140,   909,  1327,   513,    39,    40,    41,    42,   141,    44,
+   514,   515,   516,   875,   876,   142,   145,     1,     2,   624,
+     3,   282,   283,   175,   176,   148,   149,   177,   633,   361,
+  1144,   478,   479,   480,   481,   482,   483,   484,   485,   486,
    487,   488,   489,   644,   645,   646,   647,   648,   173,   174,
-   175,   176,   878,   879,   177,    92,   130,   131,   223,   132,
-   138,   137,   560,   561,   139,   140,   141,   657,    10,    11,
-    12,    13,    14,    15,    16,    17,   142,   145,   577,   578,
-  1186,   148,    67,    68,   149,   150,   151,   694,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    86,    87,    88,    89,  1214,
-   152,   282,   283,   175,   176,   606,   607,   177,   609,   490,
-   282,   283,   175,   176,   758,   153,   177,    67,    68,   328,
-   154,   622,   623,    69,    70,    71,    72,    73,    74,    75,
+   175,   176,   150,   151,   177,    92,   152,   153,   223,   154,
+   155,   156,   560,   561,   157,   158,   159,   657,   160,    10,
+    11,    12,    13,    14,    15,    16,    17,   161,   577,   578,
+  1183,   162,   282,   283,   175,   176,   163,   693,   177,   478,
+   479,   480,   481,   482,   483,   484,   485,   486,   487,   488,
+   489,   164,   282,   283,   175,   176,   165,   166,   177,  1211,
+   848,   167,   168,   849,   169,   606,   607,   209,   609,   490,
+   282,   283,   175,   176,   212,   217,   177,    67,    68,   284,
+   219,   622,   623,    69,    70,    71,    72,    73,    74,    75,
     76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-    86,    87,    88,    89,  -221,   155,   156,  -221,   755,  -221,
-   157,   282,   283,   175,   176,  -221,  -221,   177,   212,   177,
-   329,   667,   282,   283,   175,   176,   668,   158,   177,   227,
-   851,   159,   160,   852,   161,   162,   777,   163,   779,   164,
-   781,   684,    39,    40,    41,    42,  1298,    44,   225,   165,
-   231,   166,   167,   230,   168,   697,   698,   699,   700,   701,
-   702,   703,   704,   705,   706,   707,   708,   169,   209,   217,
-   219,   250,   173,   174,   175,   176,   228,   722,   177,    92,
-   229,   232,   723,    67,    68,   233,   234,   235,   236,    69,
+    86,    87,    88,    89,   282,   283,   175,   176,   754,   227,
+   177,   231,   964,   228,   229,   965,   233,   282,   283,   175,
+   176,   667,   232,   177,   249,  1116,   668,   695,  1117,   234,
+   282,   283,   175,   176,   235,   775,   177,   777,   391,   779,
+   236,   683,   237,   244,   245,   225,  1295,   246,   254,   255,
+   230,   261,   177,   323,   291,   696,   697,   698,   699,   700,
+   701,   702,   703,   704,   705,   706,   707,   292,   250,   282,
+   283,   175,   176,   293,   294,   177,   321,   721,   295,   324,
+   455,   296,   722,    67,    68,   297,   298,   299,   300,    69,
     70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
     80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-   282,   283,   175,   176,   237,   244,   177,    90,    91,   331,
-   245,   843,   246,   249,    92,   254,   255,   223,   261,   177,
-   321,   291,   292,   293,   763,   764,   765,   294,   295,   296,
-    67,   940,   297,   298,   773,   774,    69,    70,    71,    72,
-    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-    83,    84,    85,    86,    87,    88,    89,   299,   300,   301,
-   302,   798,   799,   478,   479,   480,   481,   482,   483,   484,
-   485,   486,   487,   488,   489,   812,   303,   814,   282,   283,
-   175,   176,   304,   305,   177,   323,   967,   824,   306,   968,
-   307,   308,   309,   310,   831,   832,   833,   282,   283,   175,
-   176,   838,   311,   177,   325,   842,   312,   313,   459,   314,
-   845,   846,   315,    90,    91,   282,   283,   175,   176,   316,
-    92,   177,   339,  1119,   317,   318,  1120,   319,   282,   283,
-   175,   176,   320,   324,   177,   344,   862,   333,   863,   864,
-   865,   866,   867,   868,   869,   870,   871,   872,   873,   874,
-   354,   696,   282,   283,   175,   176,   355,   356,   177,   282,
-   283,   175,   176,   460,   887,   177,   372,   404,   334,   357,
-    90,    91,   282,   283,   175,   176,   405,    92,   177,   406,
-   407,   408,   427,  1047,    24,    25,    26,    27,    28,    29,
-    30,    31,   409,    32,   410,    34,    35,   411,    37,    38,
-   412,   413,   414,   911,   415,   416,   417,   913,   914,   915,
-   282,   283,   175,   176,   418,   419,   177,   420,    50,   421,
-   422,  1064,   423,   424,   282,   283,   175,   176,   425,   426,
-   177,   428,    51,    52,   938,  1170,   941,   282,   283,   175,
-   176,   429,   432,   177,   948,   430,   431,   433,  1198,   436,
-   441,   437,   956,   282,   283,   175,   176,   961,   438,   177,
-   964,   442,   335,   552,   553,   447,   469,   555,   448,   449,
-   557,   558,   454,   976,   977,   978,   979,   980,   981,   982,
-   983,   984,   985,   986,   987,    54,   282,   283,   175,   176,
-   470,   477,   177,   505,   506,   995,   508,  1227,   282,   283,
-   175,   176,   517,   518,   177,   548,   564,   340,   362,   282,
-   283,   175,   176,   549,   519,   177,   520,   554,   371,  1009,
-   282,   283,   175,   176,   521,   605,   177,   608,   593,   374,
-   611,   282,   283,   175,   176,   522,   523,   177,   556,   565,
-   381,   524,   525,   566,   526,  1031,  1032,  1033,   567,   630,
-   631,   282,   283,   175,   176,   636,   637,   177,   527,   570,
-   382,   571,   643,   572,   650,   573,   574,  1050,  1051,  1052,
-  1053,  1054,  1055,  1056,  1057,  1058,   662,   575,   664,   528,
-   282,   283,   175,   176,   529,  1066,   177,   669,   670,   671,
-   576,   610,   675,   676,   677,   678,   679,   680,   681,   282,
-   283,   175,   176,   530,   612,   177,   531,   594,   383,    24,
-    25,    26,    27,    28,    29,    30,    31,  1091,    32,   532,
-    34,    35,   533,    37,    38,   534,   535,   536,  1102,  1103,
-  1104,  1105,  1106,  1107,  1108,  1109,  1110,  1112,  1114,  1116,
-   613,   537,   538,    50,  1121,   282,   283,   175,   176,   539,
-   540,   177,   541,   595,   384,   542,   543,    51,    52,   282,
-   283,   175,   176,   544,   545,   177,   546,   596,   385,   547,
-  1144,  1145,   550,  1146,   579,   597,   598,   599,   600,   601,
-  1153,  1154,  1155,  1156,  1157,  1158,  1159,  1160,  1161,  1162,
-   602,  1164,   603,  1166,   604,   615,   614,   620,  1171,   621,
-   625,   626,    24,    25,    26,    27,    28,    29,    30,    31,
-    54,    32,   627,    34,    35,   628,    37,    38,   629,   652,
-  1183,  1184,   632,   634,   635,   638,  1188,  1189,  1190,  1191,
-  1192,  1193,   639,   366,   640,   641,    50,   642,   805,   282,
-   283,   175,   176,   651,   811,   177,   653,   391,   815,  1211,
-    51,    52,   654,   655,  1215,  1216,  1217,  1218,  1219,  1220,
-  1222,  1224,  1226,   282,   283,   175,   176,   834,   656,   177,
-   658,   661,   386,   282,   283,   175,   176,   663,   665,   177,
-   666,   398,  1245,  1246,  1247,  1248,  1249,  1250,  1251,   685,
-  1253,   686,  1255,   282,   283,   175,   176,   687,   695,   177,
-   711,   716,   387,    54,   717,   724,   800,   727,   728,   730,
-  1265,  1266,  1267,   282,   283,   175,   176,   729,   731,   177,
-   732,   756,   388,   733,  1279,  1280,  1281,  1283,  1285,  1287,
-   282,   283,   175,   176,   734,   735,   177,   736,   738,   389,
-   737,  1299,  1300,  1301,  1302,   739,  1304,   746,  1306,   282,
-   283,   175,   176,    -3,    22,   177,   740,    23,   390,   282,
-   283,   175,   176,   752,   741,   177,   757,   399,  1320,  1322,
-  1324,   804,   760,   761,   742,   743,   744,  1331,   179,  1333,
-   762,  1335,   766,    24,    25,    26,    27,    28,    29,    30,
-    31,   806,    32,    33,    34,    35,    36,    37,    38,   745,
-   936,   807,   747,   937,    39,    40,    41,    42,    43,    44,
-   748,    45,    46,    47,    48,    49,   767,    50,   749,   282,
-   283,   175,   176,   768,   958,   177,   750,   769,   392,   751,
-   753,    51,    52,   180,   181,   182,   754,    53,   770,   973,
-   771,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-   192,   772,   784,   778,   780,   988,   989,   785,   809,   193,
-   194,   195,   196,   197,   198,   199,   200,   201,   202,   816,
-   203,   204,   205,   206,   207,   208,   282,   283,   175,   176,
-   810,   813,   177,   817,    54,   393,   282,   283,   175,   176,
-   818,   819,   177,   820,   822,   394,   823,   282,   283,   175,
-   176,   825,   826,   177,   827,   829,   395,   828,   282,   283,
-   175,   176,  1029,  1030,   177,   835,   836,   396,   282,   283,
-   175,   176,   839,   840,   177,   853,   881,   397,   282,   283,
-   175,   176,   841,   854,   177,   844,  1049,   443,   282,   283,
-   175,   176,   855,   856,   177,   857,   886,   446,   282,   283,
-   175,   176,   882,   888,   177,   890,   916,   456,   282,   283,
-   175,   176,   891,   892,   177,   893,   897,   457,   282,   283,
-   175,   176,   898,   894,   177,   896,   917,   461,   902,   282,
-   283,   175,   176,   903,  1088,   177,   933,   904,   462,   282,
-   283,   175,   176,   906,   909,   177,   907,  1101,   463,   282,
-   283,   175,   176,   934,   935,   177,   947,   939,   464,   282,
-   283,   175,   176,   942,   944,   177,   952,   949,   465,   282,
-   283,   175,   176,   951,   953,   177,   962,   954,   507,   282,
-   283,   175,   176,   955,   957,   177,   959,   965,   512,   960,
-   282,   283,   175,   176,   963,  1148,   177,   974,   966,   585,
-   282,   283,   175,   176,   969,   975,   177,   990,  1000,   616,
-   282,   283,   175,   176,  1001,   991,   177,   993,  1045,   617,
-   282,   283,   175,   176,   996,   997,   177,  1005,  1046,   618,
-   282,   283,   175,   176,   998,  1003,   177,  1007,  1085,   619,
-   282,   283,   175,   176,  1008,  1187,   177,  1010,  1063,   712,
-   282,   283,   175,   176,  1011,  1014,   177,  1027,  1069,   775,
-   282,   283,   175,   176,  1028,  1038,   177,  1039,  1070,   850,
-  1040,  1042,  1213,   282,   283,   175,   176,  1043,  1062,   177,
-  1044,  1086,   875,   282,   283,   175,   176,  1067,  1068,   177,
-  1071,  1087,   876,   282,   283,   175,   176,  1089,  1072,   177,
-  1243,  1090,   895,   282,   283,   175,   176,  1073,  1098,   177,
-  1075,  1095,   899,   282,   283,   175,   176,  1096,  1099,   177,
-  1100,  1149,   901,  1117,   282,   283,   175,   176,  1118,  1264,
-   177,  1124,  1150,   920,  1143,   282,   283,   175,   176,  1125,
-  1122,   177,  1126,  1278,   970,   282,   283,   175,   176,  1123,
-  1127,   177,  1151,  1152,   971,   282,   283,   175,   176,  1163,
-  1165,   177,  1167,  1168,   972,   282,   283,   175,   176,  1172,
-  1173,   177,  1200,  1199,  1002,   282,   283,   175,   176,  1201,
-  1208,   177,  1209,  1210,  1004,   282,   283,   175,   176,  1212,
-  1228,   177,  1229,  1242,  1006,   282,   283,   175,   176,  1244,
-  1252,   177,  1254,  1256,  1024,   282,   283,   175,   176,  1275,
-  1276,   177,  1303,  1277,  1025,   282,   283,   175,   176,  1257,
-  1271,   177,  1305,  1316,  1026,   282,   283,   175,   176,  1288,
-  1307,   177,  1308,  1312,  1180,   282,   283,   175,   176,  1317,
-  1318,   177,  1332,  1334,  1181,   282,   283,   175,   176,  1336,
-  1338,   177,  1339,   592,  1182,   282,   283,   175,   176,   562,
-    58,   177,    59,    60,  1261,   282,   283,   175,   176,  1048,
-     0,   177,   803,     0,  1262,   282,   283,   175,   176,     0,
-     0,   177,     0,     0,  1263,   282,   283,   175,   176,     0,
-     0,   177,     0,     0,  1309,   282,   283,   175,   176,     0,
-     0,   177,     0,     0,  1310,   282,   283,   175,   176,     0,
-     0,   177,     0,     0,  1311,   282,   283,   175,   176,     0,
-     0,   177,     0,   400,   282,   283,   175,   176,     0,     0,
-   177,     0,   466,   282,   283,   175,   176,     0,     0,   177,
-     0,   467,   282,   283,   175,   176,     0,     0,   177,     0,
-   472,   282,   283,   175,   176,     0,     0,   177,     0,   473,
-   282,   283,   175,   176,     0,     0,   177,     0,   474,   282,
-   283,   175,   176,     0,     0,   177,     0,   503,   282,   283,
-   175,   176,     0,     0,   177,     0,   504,   282,   283,   175,
-   176,     0,     0,   177,     0,   682,   282,   283,   175,   176,
-     0,     0,   177,     0,   683,   282,   283,   175,   176,     0,
-     0,   177,     0,   709,   282,   283,   175,   176,     0,     0,
-   177,     0,   710,   282,   283,   175,   176,     0,     0,   177,
-     0,   725,   282,   283,   175,   176,     0,     0,   177,     0,
-   726,   282,   283,   175,   176,     0,     0,   177,     0,   759,
+   282,   283,   175,   176,   301,   302,   177,    90,    91,   325,
+   841,   459,   303,   304,    92,   305,   306,   223,   307,   308,
+   282,   283,   175,   176,   762,   763,   177,   339,   309,    67,
+    68,   460,   310,   771,   772,    69,    70,    71,    72,    73,
+    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+    84,    85,    86,    87,    88,    89,   282,   283,   175,   176,
+   796,   797,   177,   344,   311,   312,   313,  1044,   314,   282,
+   283,   175,   176,   315,   810,   177,   812,   316,   317,   318,
+  1061,   282,   283,   175,   176,   319,   822,   177,   354,   320,
+   372,   357,  1167,   829,   830,   831,   282,   283,   175,   176,
+   836,   355,   177,   356,   840,   404,   427,  1195,   405,   843,
+   844,   406,   407,   173,   174,   175,   176,   408,   409,   177,
+    92,   282,   283,   175,   176,   410,   411,   177,   412,   413,
+   414,   415,  1224,   416,   859,   417,   860,   861,   862,   863,
+   864,   865,   866,   867,   868,   869,   870,   871,  1182,   418,
+   419,   420,   282,   283,   175,   176,   421,   422,   177,   423,
+   424,   425,   884,   426,   428,   429,   469,   430,   431,    90,
+    91,    67,   937,   432,   433,   470,    92,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+    82,    83,    84,    85,    86,    87,    88,    89,   436,   438,
+   908,   437,   477,   441,   910,   911,   912,   442,   447,   506,
+   448,   449,   517,   454,    24,    25,    26,    27,    28,    29,
+    30,    31,   505,    32,   508,    34,    35,   518,    37,    38,
+   519,   935,   520,   938,   282,   283,   175,   176,   521,   522,
+   177,   945,   548,   327,   282,   283,   175,   176,    50,   953,
+   177,   549,   554,   328,   958,   523,   524,   961,   556,   525,
+   552,   553,    51,    52,   555,   526,   527,   557,   558,   528,
+   973,   974,   975,   976,   977,   978,   979,   980,   981,   982,
+   983,   984,   282,   283,   175,   176,   529,   530,   177,   531,
+   564,   329,   992,   282,   283,   175,   176,   565,   532,   177,
+   533,   566,   331,   567,   282,   283,   175,   176,   534,   570,
+   177,    90,    91,   333,   571,    54,  1006,   535,    92,   282,
+   283,   175,   176,   536,   608,   177,   537,   611,   334,   538,
+   282,   283,   175,   176,   539,   572,   177,   540,   362,   335,
+   541,   542,  1028,  1029,  1030,   573,   630,   631,   282,   283,
+   175,   176,   636,   637,   177,   574,   575,   340,   543,   643,
+   544,   650,   545,   546,  1047,  1048,  1049,  1050,  1051,  1052,
+  1053,  1054,  1055,   662,   547,   664,   550,   576,   579,   593,
+   594,   595,  1063,   596,   669,   670,   671,   605,   597,   674,
+   675,   676,   677,   678,   679,   680,   282,   283,   175,   176,
+   598,   610,   177,   615,   599,   371,    24,    25,    26,    27,
+    28,    29,    30,    31,  1088,    32,   600,    34,    35,   601,
+    37,    38,   602,   603,   604,  1099,  1100,  1101,  1102,  1103,
+  1104,  1105,  1106,  1107,  1109,  1111,  1113,   612,   613,   614,
+    50,  1118,   282,   283,   175,   176,   620,   621,   177,   625,
+   627,   374,   626,   628,    51,    52,   282,   283,   175,   176,
+   629,   632,   177,   634,   635,   381,   638,  1141,  1142,   639,
+  1143,   640,   684,   641,   642,   651,   654,  1150,  1151,  1152,
+  1153,  1154,  1155,  1156,  1157,  1158,  1159,   652,  1161,   656,
+  1163,   653,   655,   658,   661,  1168,   663,   665,   666,    24,
+    25,    26,    27,    28,    29,    30,    31,    54,    32,   685,
+    34,    35,   686,    37,    38,   694,   710,  1180,  1181,   715,
+   716,   726,   723,  1185,  1186,  1187,  1188,  1189,  1190,   727,
+   366,   728,   730,    50,   803,   729,   282,   283,   175,   176,
+   809,   731,   177,   732,   813,   382,  1208,    51,    52,   733,
+   734,  1212,  1213,  1214,  1215,  1216,  1217,  1219,  1221,  1223,
+   735,   736,   739,   832,   282,   283,   175,   176,   737,   738,
+   177,   740,   755,   383,   741,   742,   743,   744,   746,  1242,
+  1243,  1244,  1245,  1246,  1247,  1248,   745,  1250,   747,  1252,
+   282,   283,   175,   176,   748,   756,   177,   751,   759,   384,
+    54,   760,   749,   750,   752,   753,   761,  1262,  1263,  1264,
+   282,   283,   175,   176,   764,   765,   177,   798,   766,   385,
+   767,  1276,  1277,  1278,  1280,  1282,  1284,   282,   283,   175,
+   176,   768,   769,   177,   770,   776,   386,   802,  1296,  1297,
+  1298,  1299,   778,  1301,   782,  1303,   282,   283,   175,   176,
+   783,   805,   177,   804,   807,   387,   282,   283,   175,   176,
+   808,   811,   177,   814,   398,  1317,  1319,  1321,    -3,    22,
+   815,   816,    23,   817,  1328,   818,  1330,   820,  1332,   282,
+   283,   175,   176,   821,   823,   177,   824,   825,   388,   827,
+   826,   833,   834,   837,   933,   838,   850,   934,    24,    25,
+    26,    27,    28,    29,    30,    31,   839,    32,    33,    34,
+    35,    36,    37,    38,   851,   842,   852,   878,   955,    39,
+    40,    41,    42,    43,    44,   853,    45,    46,    47,    48,
+    49,   854,    50,   970,   282,   283,   175,   176,   883,   879,
+   177,   913,   885,   389,   887,   888,    51,    52,   889,   985,
+   986,   890,    53,   179,   282,   283,   175,   176,   891,   914,
+   177,   930,   931,   390,   282,   283,   175,   176,   893,   899,
+   177,   894,   895,   392,   282,   283,   175,   176,   932,   900,
+   177,   936,   901,   393,   282,   283,   175,   176,   903,   906,
+   177,   904,   939,   394,   282,   283,   175,   176,   941,    54,
+   177,   944,   946,   395,   949,   959,  1026,  1027,   180,   181,
+   182,   948,   950,   951,   952,   962,   183,   184,   185,   186,
+   187,   188,   189,   190,   191,   192,   954,   956,   957,   960,
+  1046,   963,  1042,   966,   193,   194,   195,   196,   197,   198,
+   199,   200,   201,   202,   971,   203,   204,   205,   206,   207,
+   208,   282,   283,   175,   176,   987,   972,   177,   988,  1007,
+   396,   282,   283,   175,   176,   990,   993,   177,   994,  1008,
+   397,   282,   283,   175,   176,   995,  1000,   177,  1085,   997,
+   443,   282,   283,   175,   176,   998,  1002,   177,  1004,  1024,
+   446,  1098,   282,   283,   175,   176,  1005,  1011,   177,  1025,
+  1035,   456,   282,   283,   175,   176,  1036,  1037,   177,  1039,
+  1040,   457,   282,   283,   175,   176,  1041,  1059,   177,  1043,
+  1066,   461,   282,   283,   175,   176,  1060,  1064,   177,  1065,
+  1082,   462,   282,   283,   175,   176,  1067,  1086,   177,  1145,
+  1083,   463,   282,   283,   175,   176,  1068,  1084,   177,  1087,
+  1092,   464,   282,   283,   175,   176,  1093,  1095,   177,  1096,
+  1140,   465,   282,   283,   175,   176,  1069,  1070,   177,  1072,
+  1097,   507,   282,   283,   175,   176,  1146,  1115,   177,  1114,
+  1121,   512,   282,   283,   175,   176,  1119,  1120,   177,  1184,
+  1147,   585,   282,   283,   175,   176,  1122,  1123,   177,  1148,
+  1124,   616,   282,   283,   175,   176,  1149,  1160,   177,  1162,
+  1164,   617,   282,   283,   175,   176,  1210,  1165,   177,  1169,
+  1205,   618,   282,   283,   175,   176,  1170,  1196,   177,  1197,
+  1206,   619,   282,   283,   175,   176,  1198,  1207,   177,  1209,
+  1226,   711,  1225,  1239,  1240,   282,   283,   175,   176,  1241,
+  1249,   177,  1251,  1253,   773,   282,   283,   175,   176,  1254,
+  1268,   177,  1285,  1300,   847,   282,   283,   175,   176,  1272,
+  1273,   177,  1274,  1261,   872,   282,   283,   175,   176,  1302,
+  1304,   177,  1305,  1309,   873,  1329,  1313,  1275,   282,   283,
+   175,   176,  1314,  1315,   177,  1331,  1333,   892,   282,   283,
+   175,   176,  1335,  1336,   177,    58,    59,   896,   282,   283,
+   175,   176,   592,    60,   177,   562,   801,   898,   282,   283,
+   175,   176,     0,     0,   177,     0,  1045,   917,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,   967,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,   968,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,   969,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,   999,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1001,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1003,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1021,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1022,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1023,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1177,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1178,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1179,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1258,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1259,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1260,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1306,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1307,   282,   283,
+   175,   176,     0,     0,   177,     0,     0,  1308,   282,   283,
+   175,   176,     0,     0,   177,     0,   399,   282,   283,   175,
+   176,     0,     0,   177,     0,   400,   282,   283,   175,   176,
+     0,     0,   177,     0,   466,   282,   283,   175,   176,     0,
+     0,   177,     0,   467,   282,   283,   175,   176,     0,     0,
+   177,     0,   472,   282,   283,   175,   176,     0,     0,   177,
+     0,   473,   282,   283,   175,   176,     0,     0,   177,     0,
+   474,   282,   283,   175,   176,     0,     0,   177,     0,   503,
+   282,   283,   175,   176,     0,     0,   177,     0,   504,   282,
+   283,   175,   176,     0,     0,   177,     0,   681,   282,   283,
+   175,   176,     0,     0,   177,     0,   682,   282,   283,   175,
+   176,     0,     0,   177,     0,   708,   282,   283,   175,   176,
+     0,     0,   177,     0,   709,   282,   283,   175,   176,     0,
+     0,   177,     0,   724,   282,   283,   175,   176,     0,     0,
+   177,     0,   725,   282,   283,   175,   176,     0,     0,   177,
+     0,   758,   282,   283,   175,   176,     0,     0,   177,     0,
+   784,   282,   283,   175,   176,     0,     0,   177,     0,   785,
    282,   283,   175,   176,     0,     0,   177,     0,   786,   282,
    283,   175,   176,     0,     0,   177,     0,   787,   282,   283,
    175,   176,     0,     0,   177,     0,   788,   282,   283,   175,
@@ -1131,271 +1138,276 @@ static const short yytable[] = {    93,
    177,     0,   792,   282,   283,   175,   176,     0,     0,   177,
      0,   793,   282,   283,   175,   176,     0,     0,   177,     0,
    794,   282,   283,   175,   176,     0,     0,   177,     0,   795,
-   282,   283,   175,   176,     0,     0,   177,     0,   796,   282,
-   283,   175,   176,     0,     0,   177,     0,   797,   282,   283,
-   175,   176,     0,     0,   177,     0,   889,   282,   283,   175,
-   176,     0,     0,   177,     0,   900,   282,   283,   175,   176,
-     0,     0,   177,     0,   905,   282,   283,   175,   176,     0,
-     0,   177,     0,   908,   282,   283,   175,   176,     0,     0,
-   177,     0,   910,   282,   283,   175,   176,     0,     0,   177,
-     0,   921,   282,   283,   175,   176,     0,     0,   177,     0,
-   922,   282,   283,   175,   176,     0,     0,   177,     0,   923,
-   282,   283,   175,   176,     0,     0,   177,     0,   924,   282,
-   283,   175,   176,     0,     0,   177,     0,   925,   282,   283,
-   175,   176,     0,     0,   177,     0,   926,   282,   283,   175,
-   176,     0,     0,   177,     0,   927,   282,   283,   175,   176,
-     0,     0,   177,     0,   928,   282,   283,   175,   176,     0,
-     0,   177,     0,   929,   282,   283,   175,   176,     0,     0,
-   177,     0,   930,   282,   283,   175,   176,     0,     0,   177,
-     0,   931,   282,   283,   175,   176,     0,     0,   177,     0,
-   932,   282,   283,   175,   176,     0,     0,   177,     0,   994,
-   282,   283,   175,   176,     0,     0,   177,     0,   999,   282,
-   283,   175,   176,     0,     0,   177,     0,  1015,   282,   283,
-   175,   176,     0,     0,   177,     0,  1016,   282,   283,   175,
-   176,     0,     0,   177,     0,  1017,   282,   283,   175,   176,
-     0,     0,   177,     0,  1018,   282,   283,   175,   176,     0,
-     0,   177,     0,  1019,   282,   283,   175,   176,     0,     0,
-   177,     0,  1020,   282,   283,   175,   176,     0,     0,   177,
-     0,  1021,   282,   283,   175,   176,     0,     0,   177,     0,
-  1022,   282,   283,   175,   176,     0,     0,   177,     0,  1023,
-   282,   283,   175,   176,     0,     0,   177,     0,  1065,   282,
-   283,   175,   176,     0,     0,   177,     0,  1076,   282,   283,
-   175,   176,     0,     0,   177,     0,  1077,   282,   283,   175,
-   176,     0,     0,   177,     0,  1078,   282,   283,   175,   176,
-     0,     0,   177,     0,  1079,   282,   283,   175,   176,     0,
-     0,   177,     0,  1080,   282,   283,   175,   176,     0,     0,
-   177,     0,  1081,   282,   283,   175,   176,     0,     0,   177,
-     0,  1082,   282,   283,   175,   176,     0,     0,   177,     0,
-  1083,   282,   283,   175,   176,     0,     0,   177,     0,  1084,
-   282,   283,   175,   176,     0,     0,   177,     0,  1128,   282,
-   283,   175,   176,     0,     0,   177,     0,  1129,   282,   283,
-   175,   176,     0,     0,   177,     0,  1130,   282,   283,   175,
-   176,     0,     0,   177,     0,  1131,   282,   283,   175,   176,
-     0,     0,   177,     0,  1132,   282,   283,   175,   176,     0,
-     0,   177,     0,  1133,   282,   283,   175,   176,     0,     0,
-   177,     0,  1134,   282,   283,   175,   176,     0,     0,   177,
-     0,  1135,   282,   283,   175,   176,     0,     0,   177,     0,
-  1136,   282,   283,   175,   176,     0,     0,   177,     0,  1169,
-   282,   283,   175,   176,     0,     0,   177,     0,  1174,   282,
-   283,   175,   176,     0,     0,   177,     0,  1175,   282,   283,
-   175,   176,     0,     0,   177,     0,  1176,   282,   283,   175,
-   176,     0,     0,   177,     0,  1177,   282,   283,   175,   176,
-     0,     0,   177,     0,  1178,   282,   283,   175,   176,     0,
-     0,   177,     0,  1179,   282,   283,   175,   176,     0,     0,
-   177,     0,  1197,   282,   283,   175,   176,     0,     0,   177,
-     0,  1202,   282,   283,   175,   176,     0,     0,   177,     0,
-  1203,   282,   283,   175,   176,     0,     0,   177,     0,  1204,
-   282,   283,   175,   176,     0,     0,   177,     0,  1205,   282,
-   283,   175,   176,     0,     0,   177,     0,  1206,   282,   283,
-   175,   176,     0,     0,   177,     0,  1207,   282,   283,   175,
-   176,     0,     0,   177,     0,  1230,   282,   283,   175,   176,
-     0,     0,   177,     0,  1231,   282,   283,   175,   176,     0,
-     0,   177,     0,  1232,   282,   283,   175,   176,     0,     0,
-   177,     0,  1233,   282,   283,   175,   176,     0,     0,   177,
-     0,  1234,   282,   283,   175,   176,     0,     0,   177,     0,
-  1235,   282,   283,   175,   176,     0,     0,   177,     0,  1258,
-   282,   283,   175,   176,     0,     0,   177,     0,  1259,   282,
-   283,   175,   176,     0,     0,   177,     0,  1260,   282,   283,
-   175,   176,     0,     0,   177,     0,  1272,   282,   283,   175,
-   176,     0,     0,   177,     0,  1273,   282,   283,   175,   176,
-     0,     0,   177,     0,  1274,   282,   283,   175,   176,     0,
-     0,   177,     0,  1289,   282,   283,   175,   176,     0,     0,
-   177,     0,  1290,   282,   283,   175,   176,     0,     0,   177,
-     0,  1291
+   282,   283,   175,   176,     0,     0,   177,     0,   886,   282,
+   283,   175,   176,     0,     0,   177,     0,   897,   282,   283,
+   175,   176,     0,     0,   177,     0,   902,   282,   283,   175,
+   176,     0,     0,   177,     0,   905,   282,   283,   175,   176,
+     0,     0,   177,     0,   907,   282,   283,   175,   176,     0,
+     0,   177,     0,   918,   282,   283,   175,   176,     0,     0,
+   177,     0,   919,   282,   283,   175,   176,     0,     0,   177,
+     0,   920,   282,   283,   175,   176,     0,     0,   177,     0,
+   921,   282,   283,   175,   176,     0,     0,   177,     0,   922,
+   282,   283,   175,   176,     0,     0,   177,     0,   923,   282,
+   283,   175,   176,     0,     0,   177,     0,   924,   282,   283,
+   175,   176,     0,     0,   177,     0,   925,   282,   283,   175,
+   176,     0,     0,   177,     0,   926,   282,   283,   175,   176,
+     0,     0,   177,     0,   927,   282,   283,   175,   176,     0,
+     0,   177,     0,   928,   282,   283,   175,   176,     0,     0,
+   177,     0,   929,   282,   283,   175,   176,     0,     0,   177,
+     0,   991,   282,   283,   175,   176,     0,     0,   177,     0,
+   996,   282,   283,   175,   176,     0,     0,   177,     0,  1012,
+   282,   283,   175,   176,     0,     0,   177,     0,  1013,   282,
+   283,   175,   176,     0,     0,   177,     0,  1014,   282,   283,
+   175,   176,     0,     0,   177,     0,  1015,   282,   283,   175,
+   176,     0,     0,   177,     0,  1016,   282,   283,   175,   176,
+     0,     0,   177,     0,  1017,   282,   283,   175,   176,     0,
+     0,   177,     0,  1018,   282,   283,   175,   176,     0,     0,
+   177,     0,  1019,   282,   283,   175,   176,     0,     0,   177,
+     0,  1020,   282,   283,   175,   176,     0,     0,   177,     0,
+  1062,   282,   283,   175,   176,     0,     0,   177,     0,  1073,
+   282,   283,   175,   176,     0,     0,   177,     0,  1074,   282,
+   283,   175,   176,     0,     0,   177,     0,  1075,   282,   283,
+   175,   176,     0,     0,   177,     0,  1076,   282,   283,   175,
+   176,     0,     0,   177,     0,  1077,   282,   283,   175,   176,
+     0,     0,   177,     0,  1078,   282,   283,   175,   176,     0,
+     0,   177,     0,  1079,   282,   283,   175,   176,     0,     0,
+   177,     0,  1080,   282,   283,   175,   176,     0,     0,   177,
+     0,  1081,   282,   283,   175,   176,     0,     0,   177,     0,
+  1125,   282,   283,   175,   176,     0,     0,   177,     0,  1126,
+   282,   283,   175,   176,     0,     0,   177,     0,  1127,   282,
+   283,   175,   176,     0,     0,   177,     0,  1128,   282,   283,
+   175,   176,     0,     0,   177,     0,  1129,   282,   283,   175,
+   176,     0,     0,   177,     0,  1130,   282,   283,   175,   176,
+     0,     0,   177,     0,  1131,   282,   283,   175,   176,     0,
+     0,   177,     0,  1132,   282,   283,   175,   176,     0,     0,
+   177,     0,  1133,   282,   283,   175,   176,     0,     0,   177,
+     0,  1166,   282,   283,   175,   176,     0,     0,   177,     0,
+  1171,   282,   283,   175,   176,     0,     0,   177,     0,  1172,
+   282,   283,   175,   176,     0,     0,   177,     0,  1173,   282,
+   283,   175,   176,     0,     0,   177,     0,  1174,   282,   283,
+   175,   176,     0,     0,   177,     0,  1175,   282,   283,   175,
+   176,     0,     0,   177,     0,  1176,   282,   283,   175,   176,
+     0,     0,   177,     0,  1194,   282,   283,   175,   176,     0,
+     0,   177,     0,  1199,   282,   283,   175,   176,     0,     0,
+   177,     0,  1200,   282,   283,   175,   176,     0,     0,   177,
+     0,  1201,   282,   283,   175,   176,     0,     0,   177,     0,
+  1202,   282,   283,   175,   176,     0,     0,   177,     0,  1203,
+   282,   283,   175,   176,     0,     0,   177,     0,  1204,   282,
+   283,   175,   176,     0,     0,   177,     0,  1227,   282,   283,
+   175,   176,     0,     0,   177,     0,  1228,   282,   283,   175,
+   176,     0,     0,   177,     0,  1229,   282,   283,   175,   176,
+     0,     0,   177,     0,  1230,   282,   283,   175,   176,     0,
+     0,   177,     0,  1231,   282,   283,   175,   176,     0,     0,
+   177,     0,  1232,   282,   283,   175,   176,     0,     0,   177,
+     0,  1255,   282,   283,   175,   176,     0,     0,   177,     0,
+  1256,   282,   283,   175,   176,     0,     0,   177,     0,  1257,
+   282,   283,   175,   176,     0,     0,   177,     0,  1269,   282,
+   283,   175,   176,     0,     0,   177,     0,  1270,   282,   283,
+   175,   176,     0,     0,   177,     0,  1271,   282,   283,   175,
+   176,     0,     0,   177,     0,  1286,   282,   283,   175,   176,
+     0,     0,   177,     0,  1287,   282,   283,   175,   176,     0,
+     0,   177,     0,  1288
 };
 
 static const short yycheck[] = {     7,
-   103,   470,   860,    30,    34,    63,    33,    34,   130,   131,
-   132,    57,    81,     4,     6,    57,     6,     6,    59,    59,
-   732,   613,   614,   800,    65,    65,   145,   146,     6,   741,
-   149,    30,     3,     4,    33,   136,   748,     6,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,     6,
-    85,    86,    87,    41,   137,    33,    34,     6,    36,   150,
-   143,   144,   145,   146,     7,   134,   149,    46,   137,     6,
-   139,   150,    90,    91,    92,    93,   145,   146,     6,     7,
-   149,   143,   144,   145,   146,   153,     6,   149,   106,   107,
-   108,   109,   154,   111,   150,   113,   114,   115,   150,   117,
-    59,     6,   889,   154,   154,    30,    65,     6,    33,    34,
-   150,    36,   150,   150,     6,   153,     6,   719,   136,   154,
-   252,   151,   150,     6,   154,   153,   150,   145,   151,   147,
-     6,   154,   150,   151,   152,   153,   154,   155,   156,   157,
+   103,   470,   857,    30,    34,    63,    33,    34,   130,   131,
+   132,   613,   614,     4,     6,    59,     6,     6,    59,    57,
+   798,    65,   731,   136,    65,    57,     6,    81,    85,    86,
+    87,   740,    30,     3,     4,    33,   151,   152,   747,     9,
+    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+   134,    41,     6,   137,     6,   139,     6,   143,   144,   145,
+   146,   145,   146,   149,     7,   149,    33,    34,   134,    36,
+   156,     6,    90,    91,    92,    93,    59,   143,   144,   145,
+   146,   150,    65,   149,   153,   153,   150,   154,   106,   107,
+   108,   109,    46,   111,   150,   113,   114,   115,   886,   117,
+   154,   151,   150,   154,   154,     6,   718,     6,   150,     6,
+   150,   145,   146,   150,     6,   149,   151,   150,   136,   154,
+   252,   150,    30,     6,   153,    33,    34,   145,    36,   147,
+     6,   150,   150,   151,   152,   153,   154,   155,   156,   157,
    158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
    168,   169,   153,   153,   153,   173,   174,   175,   176,   177,
-   178,   150,   143,   144,   143,   144,   145,   146,   890,   150,
-   149,   139,   894,     6,   155,   143,   144,   145,   146,     7,
-  1048,   149,     8,    47,    48,    49,   143,   144,   145,   146,
-   151,    38,   149,   154,   143,   144,   145,   146,     6,   217,
-   149,   219,     6,   151,   151,   223,   154,   154,   687,   227,
-   228,   229,   150,   231,   232,   233,   234,   235,   236,   237,
+   178,     7,   151,   143,   144,   154,   134,     6,   887,   137,
+   150,   139,   891,     6,   150,   155,   151,   145,   146,   154,
+  1045,   149,     6,     7,   137,     6,   150,   140,   150,   143,
+   144,   145,   146,   151,     8,   149,   154,     6,     7,   217,
+   151,   219,   150,   154,   150,   223,   150,   686,    38,   227,
+   228,   229,    34,   231,   232,   233,   234,   235,   236,   237,
    238,   239,   354,   134,   151,   152,   244,   245,   246,   361,
      6,     7,   143,   144,   145,   146,   254,   255,   149,   151,
-   258,   150,   154,   261,   143,   144,   145,   146,     6,     7,
-   149,   143,   144,   145,   146,     0,     1,   149,     3,   150,
+   258,    36,   154,   261,   143,   144,   145,   146,    48,    49,
+   149,   143,   144,   145,   146,     0,     1,   149,     3,    34,
    143,   144,   145,   146,   282,   283,   149,   143,   144,   145,
-   146,   151,   152,   149,   996,   997,   998,   999,     3,     4,
-   151,  1003,   150,   154,     9,    10,    11,    12,    13,    14,
+   146,   151,   152,   149,   993,   994,   995,   996,     3,     4,
+   151,  1000,   150,   154,     9,    10,    11,    12,    13,    14,
     15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    36,   151,   150,   440,   154,
-   143,   144,   145,   146,   151,   152,   149,   143,   144,   145,
-   146,   339,   151,   149,   151,   154,   344,   154,   143,   144,
-   145,   146,     0,     1,   149,     3,   150,   152,    34,   357,
-   472,   473,   474,   134,    34,  1067,  1068,   365,   151,  1071,
-    34,   154,   143,   144,   145,   146,   151,   151,   149,   154,
-   154,   106,   107,   108,   109,   110,   111,   112,   113,   143,
-   144,   145,   146,   391,   853,   149,   151,   150,   152,   154,
-   398,   399,   400,   137,   151,   152,   140,   132,   133,   521,
-   135,   143,   144,   145,   146,   151,   152,   149,   530,   151,
-  1122,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    25,    26,    27,    28,    29,    34,   151,   150,   440,   154,
+   143,   144,   145,   146,   151,   151,   149,   154,   154,   151,
+   152,   339,   143,   144,   145,   146,   344,   150,   149,   143,
+   144,   145,   146,     0,     1,   149,     3,   150,   153,   357,
+   472,   473,   474,     5,   137,  1064,  1065,   365,    34,  1068,
+   143,   144,   145,   146,   151,   151,   149,   154,   154,   151,
+   152,   106,   107,   108,   109,   110,   111,   112,   113,   151,
+   153,   850,   154,   391,    51,    52,    53,    54,     6,    56,
+   398,   399,   400,   151,   152,     5,   150,   132,   133,   521,
+   135,   143,   144,   145,   146,   153,    34,   149,   530,   151,
+  1119,    66,    67,    68,    69,    70,    71,    72,    73,    74,
     75,    76,    77,    91,    92,    93,    94,    95,   143,   144,
-   145,   146,   151,   152,   149,   150,   150,   150,   153,   150,
-     5,   153,   450,   451,    34,   153,     6,   550,   106,   107,
-   108,   109,   110,   111,   112,   113,     5,   150,   466,   467,
-  1172,   153,     3,     4,    34,   150,   150,   589,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,  1201,
-   150,   143,   144,   145,   146,   503,   504,   149,   506,   154,
-   143,   144,   145,   146,   156,   150,   149,     3,     4,   152,
+   145,   146,   150,   150,   149,   150,   150,   150,   153,   150,
+   150,   150,   450,   451,   150,   150,   150,   550,   150,   106,
+   107,   108,   109,   110,   111,   112,   113,   150,   466,   467,
+  1169,   150,   143,   144,   145,   146,   150,   589,   149,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,   150,   143,   144,   145,   146,   150,   150,   149,  1198,
+   151,   150,   150,   154,   150,   503,   504,   150,   506,   154,
+   143,   144,   145,   146,     5,   150,   149,     3,     4,   152,
    150,   519,   520,     9,    10,    11,    12,    13,    14,    15,
     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,   134,   150,   150,   137,   660,   139,
-   150,   143,   144,   145,   146,   145,   146,   149,     5,   149,
-   152,   559,   143,   144,   145,   146,   564,   150,   149,   153,
-   151,   150,   150,   154,   150,   150,   688,   150,   690,   150,
-   692,   579,    51,    52,    53,    54,  1288,    56,   116,   150,
-   153,   150,   150,   121,   150,   593,   594,   595,   596,   597,
-   598,   599,   600,   601,   602,   603,   604,   150,   150,   150,
-   150,   139,   143,   144,   145,   146,   150,   615,   149,   150,
-   150,   153,   620,     3,     4,   150,   150,   150,   150,     9,
+    26,    27,    28,    29,   143,   144,   145,   146,   660,   153,
+   149,   153,   151,   150,   150,   154,   150,   143,   144,   145,
+   146,   559,   153,   149,     6,   151,   564,   154,   154,   150,
+   143,   144,   145,   146,   150,   687,   149,   689,   151,   691,
+   150,   579,   150,   150,   150,   116,  1285,   150,   150,   150,
+   121,   150,   149,   151,   150,   593,   594,   595,   596,   597,
+   598,   599,   600,   601,   602,   603,   604,   150,   139,   143,
+   144,   145,   146,   150,   150,   149,     5,   615,   150,   152,
+   154,   150,   620,     3,     4,   150,   150,   150,   150,     9,
     10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-   143,   144,   145,   146,   150,   150,   149,   143,   144,   152,
-   150,   754,   150,     6,   150,   150,   150,   153,   150,   149,
-     5,   150,   150,   150,   672,   673,   674,   150,   150,   150,
-     3,     4,   150,   150,   682,   683,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,    28,    29,   150,   150,   150,
-   150,   709,   710,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    76,    77,   723,   150,   725,   143,   144,
-   145,   146,   150,   150,   149,   151,   151,   735,   150,   154,
-   150,   150,   150,   150,   742,   743,   744,   143,   144,   145,
-   146,   749,   150,   149,   151,   753,   150,   150,   154,   150,
-   758,   759,   150,   143,   144,   143,   144,   145,   146,   150,
-   150,   149,     7,   151,   150,   150,   154,   150,   143,   144,
-   145,   146,   150,   152,   149,     7,   784,   152,   786,   787,
-   788,   789,   790,   791,   792,   793,   794,   795,   796,   797,
-   151,   154,   143,   144,   145,   146,   152,   152,   149,   143,
-   144,   145,   146,   154,   812,   149,    82,     5,   152,   151,
-   143,   144,   143,   144,   145,   146,     5,   150,   149,     5,
-     5,     5,   124,   154,    30,    31,    32,    33,    34,    35,
-    36,    37,     5,    39,     5,    41,    42,     5,    44,    45,
-     5,     5,     5,   851,     5,     5,     5,   855,   856,   857,
-   143,   144,   145,   146,     5,     5,   149,     5,    64,     5,
-     5,   154,     5,     5,   143,   144,   145,   146,     5,     5,
-   149,     5,    78,    79,   882,   154,   884,   143,   144,   145,
-   146,     5,     3,   149,   892,     5,     5,     5,   154,     5,
-     7,     6,   900,   143,   144,   145,   146,   905,     5,   149,
-   908,     7,   152,   441,   442,     6,   153,   445,     7,     7,
-   448,   449,     7,   921,   922,   923,   924,   925,   926,   927,
-   928,   929,   930,   931,   932,   131,   143,   144,   145,   146,
-   153,   153,   149,     7,   150,   943,     7,   154,   143,   144,
-   145,   146,   138,   151,   149,     5,   150,   152,   154,   143,
-   144,   145,   146,   152,   151,   149,   151,     7,   152,   967,
-   143,   144,   145,   146,   151,     6,   149,   505,   150,   152,
-   508,   143,   144,   145,   146,   151,   151,   149,     7,     7,
-   152,   151,   151,     7,   151,   993,   994,   995,     7,   527,
-   528,   143,   144,   145,   146,   533,   534,   149,   151,     7,
-   152,     7,   540,     7,   542,     7,     7,  1015,  1016,  1017,
-  1018,  1019,  1020,  1021,  1022,  1023,   554,     7,   556,   151,
-   143,   144,   145,   146,   151,  1033,   149,   565,   566,   567,
-     7,     7,   570,   571,   572,   573,   574,   575,   576,   143,
-   144,   145,   146,   151,   153,   149,   151,   150,   152,    30,
-    31,    32,    33,    34,    35,    36,    37,  1065,    39,   151,
-    41,    42,   151,    44,    45,   151,   151,   151,  1076,  1077,
-  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,
-   153,   151,   151,    64,  1092,   143,   144,   145,   146,   151,
-   151,   149,   151,   150,   152,   151,   151,    78,    79,   143,
-   144,   145,   146,   151,   151,   149,   151,   150,   152,   151,
-  1118,  1119,   151,  1121,   151,   150,   150,   150,   150,   150,
-  1128,  1129,  1130,  1131,  1132,  1133,  1134,  1135,  1136,  1137,
-   150,  1139,   150,  1141,   150,     7,   153,   134,  1146,     3,
-     3,     3,    30,    31,    32,    33,    34,    35,    36,    37,
-   131,    39,   145,    41,    42,     3,    44,    45,     3,     5,
-  1168,  1169,     3,     3,     3,     3,  1174,  1175,  1176,  1177,
-  1178,  1179,     3,   154,     3,     3,    64,     3,   716,   143,
-   144,   145,   146,     3,   722,   149,     5,   151,   726,  1197,
-    78,    79,     3,     3,  1202,  1203,  1204,  1205,  1206,  1207,
-  1208,  1209,  1210,   143,   144,   145,   146,   745,     6,   149,
-     6,     6,   152,   143,   144,   145,   146,     6,     6,   149,
-     6,   151,  1230,  1231,  1232,  1233,  1234,  1235,  1236,   154,
-  1238,   154,  1240,   143,   144,   145,   146,   153,     6,   149,
-     6,    83,   152,   131,     4,   151,     7,   152,   151,   151,
-  1258,  1259,  1260,   143,   144,   145,   146,   152,   152,   149,
-   151,     6,   152,   152,  1272,  1273,  1274,  1275,  1276,  1277,
-   143,   144,   145,   146,   151,   151,   149,   152,   152,   152,
-   151,  1289,  1290,  1291,  1292,   152,  1294,   152,  1296,   143,
-   144,   145,   146,     0,     1,   149,   151,     4,   152,   143,
-   144,   145,   146,   152,   151,   149,     6,   151,  1316,  1317,
-  1318,    83,     6,     6,   151,   151,   151,  1325,    33,  1327,
-     6,  1329,     6,    30,    31,    32,    33,    34,    35,    36,
-    37,     7,    39,    40,    41,    42,    43,    44,    45,   151,
-   878,   154,   151,   881,    51,    52,    53,    54,    55,    56,
-   151,    58,    59,    60,    61,    62,     6,    64,   151,   143,
-   144,   145,   146,     6,   902,   149,   151,     6,   152,   151,
-   151,    78,    79,    88,    89,    90,   151,    84,     6,   917,
-     6,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-   105,     6,   151,     6,     6,   933,   934,     6,   154,   114,
-   115,   116,   117,   118,   119,   120,   121,   122,   123,     6,
-   125,   126,   127,   128,   129,   130,   143,   144,   145,   146,
-   154,     3,   149,     3,   131,   152,   143,   144,   145,   146,
-     6,   145,   149,     6,     6,   152,     3,   143,   144,   145,
-   146,     6,     3,   149,     6,     3,   152,     6,   143,   144,
-   145,   146,   990,   991,   149,     6,     3,   152,   143,   144,
-   145,   146,     3,     3,   149,   153,   153,   152,   143,   144,
-   145,   146,     6,   154,   149,     6,  1014,   152,   143,   144,
-   145,   146,   151,   151,   149,   151,     6,   152,   143,   144,
-   145,   146,    80,   152,   149,   151,     6,   152,   143,   144,
-   145,   146,   151,   151,   149,   152,   152,   152,   143,   144,
-   145,   146,   152,   151,   149,   151,   153,   152,   151,   143,
-   144,   145,   146,   152,  1062,   149,     7,   152,   152,   143,
-   144,   145,   146,   151,   151,   149,   152,  1075,   152,   143,
-   144,   145,   146,     7,    83,   149,     3,     6,   152,   143,
-   144,   145,   146,     6,     6,   149,     3,     6,   152,   143,
-   144,   145,   146,     6,     6,   149,     3,     6,   152,   143,
-   144,   145,   146,     6,     6,   149,     6,     5,   152,     6,
-   143,   144,   145,   146,     6,  1123,   149,     6,     5,   152,
-   143,   144,   145,   146,   154,     6,   149,   153,   152,   152,
-   143,   144,   145,   146,   152,   151,   149,   151,     5,   152,
-   143,   144,   145,   146,   151,   151,   149,   152,     5,   152,
-   143,   144,   145,   146,   151,   151,   149,   151,   153,   152,
-   143,   144,   145,   146,   151,  1173,   149,     6,   154,   152,
-   143,   144,   145,   146,     6,   151,   149,     6,   152,   152,
-   143,   144,   145,   146,     6,     6,   149,     6,   152,   152,
-     6,     6,  1200,   143,   144,   145,   146,     6,   151,   149,
-     6,   153,   152,   143,   144,   145,   146,   151,   151,   149,
-   151,   153,   152,   143,   144,   145,   146,    80,   151,   149,
-  1228,     6,   152,   143,   144,   145,   146,   151,     5,   149,
-   151,     6,   152,   143,   144,   145,   146,     6,     5,   149,
-     6,     6,   152,   154,   143,   144,   145,   146,   153,  1257,
-   149,   152,     6,   152,    80,   143,   144,   145,   146,   152,
-   151,   149,   152,  1271,   152,   143,   144,   145,   146,   151,
-   154,   149,     6,     6,   152,   143,   144,   145,   146,     6,
-     6,   149,     6,   153,   152,   143,   144,   145,   146,   151,
-   151,   149,   151,   140,   152,   143,   144,   145,   146,   151,
-   153,   149,   153,   153,   152,   143,   144,   145,   146,     6,
-   151,   149,   152,     6,   152,   143,   144,   145,   146,     6,
-     6,   149,     6,     6,   152,   143,   144,   145,   146,   153,
-   153,   149,     6,   153,   152,   143,   144,   145,   146,   151,
-   151,   149,     6,   153,   152,   143,   144,   145,   146,   151,
-     6,   149,   152,     6,   152,   143,   144,   145,   146,   153,
-   153,   149,     6,     6,   152,   143,   144,   145,   146,     6,
-     0,   149,     0,   477,   152,   143,   144,   145,   146,   451,
-     6,   149,     6,     6,   152,   143,   144,   145,   146,  1013,
-    -1,   149,   714,    -1,   152,   143,   144,   145,   146,    -1,
-    -1,   149,    -1,    -1,   152,   143,   144,   145,   146,    -1,
-    -1,   149,    -1,    -1,   152,   143,   144,   145,   146,    -1,
-    -1,   149,    -1,    -1,   152,   143,   144,   145,   146,    -1,
-    -1,   149,    -1,    -1,   152,   143,   144,   145,   146,    -1,
+   143,   144,   145,   146,   150,   150,   149,   143,   144,   151,
+   753,   154,   150,   150,   150,   150,   150,   153,   150,   150,
+   143,   144,   145,   146,   672,   673,   149,     7,   150,     3,
+     4,   154,   150,   681,   682,     9,    10,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,   143,   144,   145,   146,
+   708,   709,   149,     7,   150,   150,   150,   154,   150,   143,
+   144,   145,   146,   150,   722,   149,   724,   150,   150,   150,
+   154,   143,   144,   145,   146,   150,   734,   149,   151,   150,
+    82,   151,   154,   741,   742,   743,   143,   144,   145,   146,
+   748,   152,   149,   152,   752,     5,   124,   154,     5,   757,
+   758,     5,     5,   143,   144,   145,   146,     5,     5,   149,
+   150,   143,   144,   145,   146,     5,     5,   149,     5,     5,
+     5,     5,   154,     5,   782,     5,   784,   785,   786,   787,
+   788,   789,   790,   791,   792,   793,   794,   795,   139,     5,
+     5,     5,   143,   144,   145,   146,     5,     5,   149,     5,
+     5,     5,   810,     5,     5,     5,   153,     5,     5,   143,
+   144,     3,     4,     3,     5,   153,   150,     9,    10,    11,
+    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+    22,    23,    24,    25,    26,    27,    28,    29,     5,     5,
+   848,     6,   153,     7,   852,   853,   854,     7,     6,   150,
+     7,     7,   138,     7,    30,    31,    32,    33,    34,    35,
+    36,    37,     7,    39,     7,    41,    42,   151,    44,    45,
+   151,   879,   151,   881,   143,   144,   145,   146,   151,   151,
+   149,   889,     5,   152,   143,   144,   145,   146,    64,   897,
+   149,   152,     7,   152,   902,   151,   151,   905,     7,   151,
+   441,   442,    78,    79,   445,   151,   151,   448,   449,   151,
+   918,   919,   920,   921,   922,   923,   924,   925,   926,   927,
+   928,   929,   143,   144,   145,   146,   151,   151,   149,   151,
+   150,   152,   940,   143,   144,   145,   146,     7,   151,   149,
+   151,     7,   152,     7,   143,   144,   145,   146,   151,     7,
+   149,   143,   144,   152,     7,   131,   964,   151,   150,   143,
+   144,   145,   146,   151,   505,   149,   151,   508,   152,   151,
+   143,   144,   145,   146,   151,     7,   149,   151,   154,   152,
+   151,   151,   990,   991,   992,     7,   527,   528,   143,   144,
+   145,   146,   533,   534,   149,     7,     7,   152,   151,   540,
+   151,   542,   151,   151,  1012,  1013,  1014,  1015,  1016,  1017,
+  1018,  1019,  1020,   554,   151,   556,   151,     7,   151,   150,
+   150,   150,  1030,   150,   565,   566,   567,     6,   150,   570,
+   571,   572,   573,   574,   575,   576,   143,   144,   145,   146,
+   150,     7,   149,     7,   150,   152,    30,    31,    32,    33,
+    34,    35,    36,    37,  1062,    39,   150,    41,    42,   150,
+    44,    45,   150,   150,   150,  1073,  1074,  1075,  1076,  1077,
+  1078,  1079,  1080,  1081,  1082,  1083,  1084,   153,   153,   153,
+    64,  1089,   143,   144,   145,   146,   134,     3,   149,     3,
+   145,   152,     3,     3,    78,    79,   143,   144,   145,   146,
+     3,     3,   149,     3,     3,   152,     3,  1115,  1116,     3,
+  1118,     3,   154,     3,     3,     3,     3,  1125,  1126,  1127,
+  1128,  1129,  1130,  1131,  1132,  1133,  1134,     5,  1136,     6,
+  1138,     5,     3,     6,     6,  1143,     6,     6,     6,    30,
+    31,    32,    33,    34,    35,    36,    37,   131,    39,   154,
+    41,    42,   153,    44,    45,     6,     6,  1165,  1166,    83,
+     4,   152,   151,  1171,  1172,  1173,  1174,  1175,  1176,   151,
+   154,   152,   152,    64,   715,   151,   143,   144,   145,   146,
+   721,   151,   149,   152,   725,   152,  1194,    78,    79,   151,
+   151,  1199,  1200,  1201,  1202,  1203,  1204,  1205,  1206,  1207,
+   152,   151,   151,   744,   143,   144,   145,   146,   152,   152,
+   149,   151,     6,   152,   151,   151,   151,   151,   151,  1227,
+  1228,  1229,  1230,  1231,  1232,  1233,   152,  1235,   151,  1237,
+   143,   144,   145,   146,   151,     6,   149,   152,     6,   152,
+   131,     6,   151,   151,   151,   151,     6,  1255,  1256,  1257,
+   143,   144,   145,   146,     6,     6,   149,     7,     6,   152,
+     6,  1269,  1270,  1271,  1272,  1273,  1274,   143,   144,   145,
+   146,     6,     6,   149,     6,     6,   152,    83,  1286,  1287,
+  1288,  1289,     6,  1291,   151,  1293,   143,   144,   145,   146,
+     6,   154,   149,     7,   154,   152,   143,   144,   145,   146,
+   154,     3,   149,     6,   151,  1313,  1314,  1315,     0,     1,
+     3,     6,     4,   145,  1322,     6,  1324,     6,  1326,   143,
+   144,   145,   146,     3,     6,   149,     3,     6,   152,     3,
+     6,     6,     3,     3,   875,     3,   153,   878,    30,    31,
+    32,    33,    34,    35,    36,    37,     6,    39,    40,    41,
+    42,    43,    44,    45,   154,     6,   151,   153,   899,    51,
+    52,    53,    54,    55,    56,   151,    58,    59,    60,    61,
+    62,   151,    64,   914,   143,   144,   145,   146,     6,    80,
+   149,     6,   152,   152,   151,   151,    78,    79,   151,   930,
+   931,   152,    84,    33,   143,   144,   145,   146,   151,   153,
+   149,     7,     7,   152,   143,   144,   145,   146,   151,   151,
+   149,   152,   152,   152,   143,   144,   145,   146,    83,   152,
+   149,     6,   152,   152,   143,   144,   145,   146,   151,   151,
+   149,   152,     6,   152,   143,   144,   145,   146,     6,   131,
+   149,     3,     6,   152,     3,     3,   987,   988,    88,    89,
+    90,     6,     6,     6,     6,     5,    96,    97,    98,    99,
+   100,   101,   102,   103,   104,   105,     6,     6,     6,     6,
+  1011,     5,     5,   154,   114,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,     6,   125,   126,   127,   128,   129,
+   130,   143,   144,   145,   146,   153,     6,   149,   151,     6,
+   152,   143,   144,   145,   146,   151,   151,   149,   151,     6,
+   152,   143,   144,   145,   146,   151,   151,   149,  1059,   152,
+   152,   143,   144,   145,   146,   152,   152,   149,   151,     6,
+   152,  1072,   143,   144,   145,   146,   151,   151,   149,     6,
+     6,   152,   143,   144,   145,   146,     6,     6,   149,     6,
+     6,   152,   143,   144,   145,   146,     6,   151,   149,     5,
+   152,   152,   143,   144,   145,   146,   154,   151,   149,   151,
+   153,   152,   143,   144,   145,   146,   152,    80,   149,  1120,
+   153,   152,   143,   144,   145,   146,   151,   153,   149,     6,
+     6,   152,   143,   144,   145,   146,     6,     5,   149,     5,
+    80,   152,   143,   144,   145,   146,   151,   151,   149,   151,
+     6,   152,   143,   144,   145,   146,     6,   153,   149,   154,
+   152,   152,   143,   144,   145,   146,   151,   151,   149,  1170,
+     6,   152,   143,   144,   145,   146,   152,   152,   149,     6,
+   154,   152,   143,   144,   145,   146,     6,     6,   149,     6,
+     6,   152,   143,   144,   145,   146,  1197,   153,   149,   151,
+   153,   152,   143,   144,   145,   146,   151,   140,   149,   151,
+   153,   152,   143,   144,   145,   146,   151,   153,   149,     6,
+   152,   152,   151,     6,  1225,   143,   144,   145,   146,     6,
+     6,   149,     6,     6,   152,   143,   144,   145,   146,   151,
+   151,   149,   151,     6,   152,   143,   144,   145,   146,   153,
+   153,   149,   153,  1254,   152,   143,   144,   145,   146,     6,
+     6,   149,   152,     6,   152,     6,   153,  1268,   143,   144,
+   145,   146,   153,   153,   149,     6,     6,   152,   143,   144,
+   145,   146,     0,     0,   149,     6,     6,   152,   143,   144,
+   145,   146,   477,     6,   149,   451,   713,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,  1010,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,   151,   143,   144,   145,
+   146,    -1,    -1,   149,    -1,   151,   143,   144,   145,   146,
+    -1,    -1,   149,    -1,   151,   143,   144,   145,   146,    -1,
     -1,   149,    -1,   151,   143,   144,   145,   146,    -1,    -1,
    149,    -1,   151,   143,   144,   145,   146,    -1,    -1,   149,
     -1,   151,   143,   144,   145,   146,    -1,    -1,   149,    -1,
@@ -1486,13 +1498,10 @@ static const short yycheck[] = {     7,
    145,   146,    -1,    -1,   149,    -1,   151,   143,   144,   145,
    146,    -1,    -1,   149,    -1,   151,   143,   144,   145,   146,
     -1,    -1,   149,    -1,   151,   143,   144,   145,   146,    -1,
-    -1,   149,    -1,   151,   143,   144,   145,   146,    -1,    -1,
-   149,    -1,   151,   143,   144,   145,   146,    -1,    -1,   149,
-    -1,   151
+    -1,   149,    -1,   151
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/lib/bison.simple"
-/* This file comes from bison-1.28.  */
+#line 3 "/usr/local/share/bison.simple"
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -1509,66 +1518,46 @@ static const short yycheck[] = {     7,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
    This special exception was added by the Free Software Foundation
    in version 1.24 of Bison.  */
 
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
+#ifndef alloca
 #ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
 #define alloca __builtin_alloca
 #else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
 #include <alloca.h>
 #else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-	 instead, just don't use alloca.  */
+#if defined (MSDOS) && !defined (__TURBOC__)
 #include <malloc.h>
-#endif
 #else /* not MSDOS, or __TURBOC__ */
 #if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
+#include <malloc.h>
  #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-		 and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
 #endif /* __hpux */
-#endif
 #endif /* not _AIX */
 #endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
+#endif /* not sparc.  */
+#endif /* not GNU C.  */
+#endif /* alloca not defined.  */
 
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
-#endif
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
 
 /* Note: there must be only one dollar sign in this file.
    It is replaced by the list of actions, each action
@@ -1578,8 +1567,8 @@ static const short yycheck[] = {     7,
 #define yyclearin	(yychar = YYEMPTY)
 #define YYEMPTY		-2
 #define YYEOF		0
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT 	goto yyabortlab
+#define YYACCEPT	return(0)
+#define YYABORT 	return(1)
 #define YYERROR		goto yyerrlab1
 /* Like YYERROR except do call yyerror.
    This remains here temporarily to ease the
@@ -1660,12 +1649,12 @@ int yydebug;			/*  nonzero means print parse trace	*/
 #ifndef YYMAXDEPTH
 #define YYMAXDEPTH 10000
 #endif
-
-/* Define __yy_memcpy.  Note that the size argument
-   should be passed with type unsigned int, because that is what the non-GCC
-   definitions require.  With GCC, __builtin_memcpy takes an arg
-   of type size_t, but it can handle unsigned int.  */
 
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
 #if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
 #define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
 #else				/* not GNU C or C++ */
@@ -1677,7 +1666,7 @@ static void
 __yy_memcpy (to, from, count)
      char *to;
      char *from;
-     unsigned int count;
+     int count;
 {
   register char *f = from;
   register char *t = to;
@@ -1692,10 +1681,10 @@ __yy_memcpy (to, from, count)
 /* This is the most reliable way to avoid incompatibilities
    in available built-in functions on various systems.  */
 static void
-__yy_memcpy (char *to, char *from, unsigned int count)
+__yy_memcpy (char *to, char *from, int count)
 {
-  register char *t = to;
   register char *f = from;
+  register char *t = to;
   register int i = count;
 
   while (i-- > 0)
@@ -1705,7 +1694,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
 #endif
 #endif
 
-#line 217 "/usr/lib/bison.simple"
+#line 196 "/usr/local/share/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -1726,15 +1715,6 @@ __yy_memcpy (char *to, char *from, unsigned int count)
 #define YYPARSE_PARAM_DECL
 #endif /* not YYPARSE_PARAM */
 
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
-#else
-int yyparse (void);
-#endif
-#endif
-
 int
 yyparse(YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
@@ -1763,7 +1743,6 @@ yyparse(YYPARSE_PARAM_ARG)
 #endif
 
   int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
 
 #ifdef YYPURE
   int yychar;
@@ -1848,32 +1827,18 @@ yynewstate:
       if (yystacksize >= YYMAXDEPTH)
 	{
 	  yyerror("parser stack overflow");
-	  if (yyfree_stacks)
-	    {
-	      free (yyss);
-	      free (yyvs);
-#ifdef YYLSP_NEEDED
-	      free (yyls);
-#endif
-	    }
 	  return 2;
 	}
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
 	yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-#endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-		   size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-		   size * (unsigned int) sizeof (*yyvsp));
+      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
+      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
 #ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-		   size * (unsigned int) sizeof (*yylsp));
+      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
 #endif
 #endif /* no yyoverflow */
 
@@ -3176,8 +3141,8 @@ case 184:
 	else{
 	  c->Method = TRANSFINI;
 	  c->ipar[0] = (int)yyvsp[-4].d;
-	  c->ipar[1] = sign(d); /* Power : code 1 ou -1 */
-	  c->dpar[0] = yyvsp[-1].d;
+	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
+	  c->dpar[0] = fabs(yyvsp[-1].d);
 	}
       }
     ;
@@ -3196,32 +3161,13 @@ case 185:
 	  c->Method = TRANSFINI;
 	  c->ipar[0] = (int)yyvsp[-4].d;
 	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
-	  c->dpar[0] = yyvsp[-1].d;
+	  c->dpar[0] = fabs(yyvsp[-1].d);
 	}
       }
     ;
     break;}
 case 186:
 #line 1209 "Gmsh.y"
-{
-      Curve *c;
-      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
-	List_Read(yyvsp[-6].l,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  vyyerror("Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)yyvsp[-4].d;
-	  c->ipar[1] = 3*sign(d); /* Progresion : code 3 ou -3 */
-	  c->dpar[0] = yyvsp[-1].d;
-	}
-      }
-    ;
-    break;}
-case 187:
-#line 1226 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
       if(!s)
@@ -3243,8 +3189,8 @@ case 187:
       }
     ;
     break;}
-case 188:
-#line 1247 "Gmsh.y"
+case 187:
+#line 1230 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
       if(!s)
@@ -3265,8 +3211,8 @@ case 188:
       }
     ;
     break;}
-case 189:
-#line 1267 "Gmsh.y"
+case 188:
+#line 1250 "Gmsh.y"
 {
       Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
       if(!v)
@@ -3287,16 +3233,18 @@ case 189:
       }
     ;
     break;}
-case 190:
-#line 1287 "Gmsh.y"
+case 189:
+#line 1270 "Gmsh.y"
 {
       Surface *s;
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
 	List_Read(yyvsp[-3].l,i,&d);
 	j = (int)d;
 	s = FindSurface(j,THEM);
-	if(!s)
-	  vyyerror("Unkown Surface %d", j);
+	if(!s){
+	  /* Allow generic lists, even if the surfaces don't exist
+	     vyyerror("Unkown Surface %d", j); */
+	}
 	else{
 	  s->Recombine = 1;
 	  s->RecombineAngle = yyvsp[-1].d;
@@ -3304,16 +3252,18 @@ case 190:
       }
     ;
     break;}
-case 191:
-#line 1302 "Gmsh.y"
+case 190:
+#line 1287 "Gmsh.y"
 {
       Surface *s;
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
 	List_Read(yyvsp[-1].l,i,&d);
 	j = (int)d;
         s = FindSurface(j,THEM);
-	if(!s)
-	  vyyerror("Unkown Surface %d", j);
+	if(!s){
+	  /* Allow generic lists, even if the surfaces don't exist
+	     vyyerror("Unkown Surface %d", j); */
+	}
 	else{
 	  s->Recombine = 1;
 	  s->RecombineAngle = 30.;
@@ -3321,26 +3271,26 @@ case 191:
       }
     ;
     break;}
-case 192:
-#line 1325 "Gmsh.y"
+case 191:
+#line 1312 "Gmsh.y"
 { 
       Coherence_PS();
     ;
     break;}
-case 196:
-#line 1345 "Gmsh.y"
+case 195:
+#line 1332 "Gmsh.y"
 { ColorField = ColorGeneral; ;
     break;}
-case 198:
-#line 1348 "Gmsh.y"
+case 197:
+#line 1335 "Gmsh.y"
 { ColorField = ColorGeometry; ;
     break;}
-case 200:
-#line 1351 "Gmsh.y"
+case 199:
+#line 1338 "Gmsh.y"
 { ColorField = ColorMesh; ;
     break;}
-case 204:
-#line 1362 "Gmsh.y"
+case 203:
+#line 1349 "Gmsh.y"
 {
       i = Get_ColorForString(ColorString, -1, yyvsp[-1].c, &flag);
       if(flag) vyyerror("Unknown Color '%s'", yyvsp[-1].c);
@@ -3351,8 +3301,8 @@ case 204:
 	*ptr = i ;
     ;
     break;}
-case 205:
-#line 1372 "Gmsh.y"
+case 204:
+#line 1359 "Gmsh.y"
 {
       i = Get_ColorForString(ColorString, (int)yyvsp[-2].d, yyvsp[-4].c, &flag);
       if(flag) vyyerror("Unknown Color '%s'", yyvsp[-4].c);
@@ -3363,8 +3313,8 @@ case 205:
 	*ptr = i ;
     ;
     break;}
-case 206:
-#line 1382 "Gmsh.y"
+case 205:
+#line 1369 "Gmsh.y"
 {
       Get_ColorPointerForString(ColorField, yyvsp[-3].c, &flag, &ptr);
       if(flag)
@@ -3373,8 +3323,8 @@ case 206:
 	*ptr = PACK_COLOR((int)yyvsp[-1].v[0], (int)yyvsp[-1].v[1], (int)yyvsp[-1].v[2], (int)yyvsp[-1].v[3]);
     ;
     break;}
-case 207:
-#line 1393 "Gmsh.y"
+case 206:
+#line 1380 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-7].d;
       yyval.v[1]=yyvsp[-5].d;
@@ -3382,8 +3332,8 @@ case 207:
       yyval.v[3]=yyvsp[-1].d;
     ;
     break;}
-case 208:
-#line 1400 "Gmsh.y"
+case 207:
+#line 1387 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;
       yyval.v[1]=yyvsp[-3].d;
@@ -3391,152 +3341,152 @@ case 208:
       yyval.v[3]=255.;
     ;
     break;}
-case 209:
-#line 1476 "Gmsh.y"
+case 208:
+#line 1463 "Gmsh.y"
 {yyval.i = 1;;
     break;}
-case 210:
-#line 1477 "Gmsh.y"
+case 209:
+#line 1464 "Gmsh.y"
 {yyval.i = 0;;
     break;}
+case 210:
+#line 1465 "Gmsh.y"
+{yyval.i = -1;;
+    break;}
 case 211:
-#line 1478 "Gmsh.y"
+#line 1466 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 212:
-#line 1479 "Gmsh.y"
+#line 1467 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 213:
-#line 1480 "Gmsh.y"
-{yyval.i = -1;;
+#line 1471 "Gmsh.y"
+{ yyval.d = yyvsp[0].d; ;
     break;}
 case 214:
-#line 1484 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
+#line 1472 "Gmsh.y"
+{ yyval.d = yyvsp[-1].d; ;
     break;}
 case 215:
-#line 1485 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d; ;
+#line 1473 "Gmsh.y"
+{ yyval.d = yyvsp[-2].d - yyvsp[0].d; ;
     break;}
 case 216:
-#line 1486 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d - yyvsp[0].d; ;
+#line 1474 "Gmsh.y"
+{ yyval.d = yyvsp[-2].d + yyvsp[0].d; ;
     break;}
 case 217:
-#line 1487 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d + yyvsp[0].d; ;
+#line 1475 "Gmsh.y"
+{ yyval.d = yyvsp[-2].d * yyvsp[0].d; ;
     break;}
 case 218:
-#line 1488 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d * yyvsp[0].d; ;
+#line 1476 "Gmsh.y"
+{ yyval.d = yyvsp[-2].d / yyvsp[0].d; ;
     break;}
 case 219:
-#line 1489 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d / yyvsp[0].d; ;
+#line 1477 "Gmsh.y"
+{ yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ;
     break;}
 case 220:
-#line 1490 "Gmsh.y"
-{ yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ;
+#line 1478 "Gmsh.y"
+{ yyval.d = - yyvsp[0].d; ;
     break;}
 case 221:
-#line 1491 "Gmsh.y"
-{ yyval.d = - yyvsp[0].d; ;
+#line 1479 "Gmsh.y"
+{ yyval.d = yyvsp[0].d; ;
     break;}
 case 222:
-#line 1492 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
+#line 1480 "Gmsh.y"
+{ yyval.d = exp(yyvsp[-1].d);      ;
     break;}
 case 223:
-#line 1493 "Gmsh.y"
-{ yyval.d = exp(yyvsp[-1].d);      ;
+#line 1481 "Gmsh.y"
+{ yyval.d = log(yyvsp[-1].d);      ;
     break;}
 case 224:
-#line 1494 "Gmsh.y"
-{ yyval.d = log(yyvsp[-1].d);      ;
+#line 1482 "Gmsh.y"
+{ yyval.d = log10(yyvsp[-1].d);    ;
     break;}
 case 225:
-#line 1495 "Gmsh.y"
-{ yyval.d = log10(yyvsp[-1].d);    ;
+#line 1483 "Gmsh.y"
+{ yyval.d = sqrt(yyvsp[-1].d);     ;
     break;}
 case 226:
-#line 1496 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-1].d);     ;
+#line 1484 "Gmsh.y"
+{ yyval.d = sin(yyvsp[-1].d);      ;
     break;}
 case 227:
-#line 1497 "Gmsh.y"
-{ yyval.d = sin(yyvsp[-1].d);      ;
+#line 1485 "Gmsh.y"
+{ yyval.d = asin(yyvsp[-1].d);     ;
     break;}
 case 228:
-#line 1498 "Gmsh.y"
-{ yyval.d = asin(yyvsp[-1].d);     ;
+#line 1486 "Gmsh.y"
+{ yyval.d = cos(yyvsp[-1].d);      ;
     break;}
 case 229:
-#line 1499 "Gmsh.y"
-{ yyval.d = cos(yyvsp[-1].d);      ;
+#line 1487 "Gmsh.y"
+{ yyval.d = acos(yyvsp[-1].d);     ;
     break;}
 case 230:
-#line 1500 "Gmsh.y"
-{ yyval.d = acos(yyvsp[-1].d);     ;
+#line 1488 "Gmsh.y"
+{ yyval.d = tan(yyvsp[-1].d);      ;
     break;}
 case 231:
-#line 1501 "Gmsh.y"
-{ yyval.d = tan(yyvsp[-1].d);      ;
+#line 1489 "Gmsh.y"
+{ yyval.d = atan(yyvsp[-1].d);     ;
     break;}
 case 232:
-#line 1502 "Gmsh.y"
-{ yyval.d = atan(yyvsp[-1].d);     ;
+#line 1490 "Gmsh.y"
+{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
     break;}
 case 233:
-#line 1503 "Gmsh.y"
-{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
+#line 1491 "Gmsh.y"
+{ yyval.d = sinh(yyvsp[-1].d);     ;
     break;}
 case 234:
-#line 1504 "Gmsh.y"
-{ yyval.d = sinh(yyvsp[-1].d);     ;
+#line 1492 "Gmsh.y"
+{ yyval.d = cosh(yyvsp[-1].d);     ;
     break;}
 case 235:
-#line 1505 "Gmsh.y"
-{ yyval.d = cosh(yyvsp[-1].d);     ;
+#line 1493 "Gmsh.y"
+{ yyval.d = tanh(yyvsp[-1].d);     ;
     break;}
 case 236:
-#line 1506 "Gmsh.y"
-{ yyval.d = tanh(yyvsp[-1].d);     ;
+#line 1494 "Gmsh.y"
+{ yyval.d = fabs(yyvsp[-1].d);     ;
     break;}
 case 237:
-#line 1507 "Gmsh.y"
-{ yyval.d = fabs(yyvsp[-1].d);     ;
+#line 1495 "Gmsh.y"
+{ yyval.d = floor(yyvsp[-1].d);    ;
     break;}
 case 238:
-#line 1508 "Gmsh.y"
-{ yyval.d = floor(yyvsp[-1].d);    ;
+#line 1496 "Gmsh.y"
+{ yyval.d = ceil(yyvsp[-1].d);     ;
     break;}
 case 239:
-#line 1509 "Gmsh.y"
-{ yyval.d = ceil(yyvsp[-1].d);     ;
+#line 1497 "Gmsh.y"
+{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 240:
-#line 1510 "Gmsh.y"
+#line 1498 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 241:
-#line 1511 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
-    break;}
-case 242:
-#line 1512 "Gmsh.y"
+#line 1499 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d);  ;
     break;}
-case 243:
-#line 1516 "Gmsh.y"
+case 242:
+#line 1503 "Gmsh.y"
 { yyval.d = yyvsp[0].d; ;
     break;}
-case 244:
-#line 1517 "Gmsh.y"
+case 243:
+#line 1504 "Gmsh.y"
 { yyval.d = 3.141592653589793; ;
     break;}
-case 245:
-#line 1519 "Gmsh.y"
+case 244:
+#line 1506 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[0].c ;
       if (!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) {
@@ -3546,16 +3496,16 @@ case 245:
       Free(yyvsp[0].c);
     ;
     break;}
-case 246:
-#line 1531 "Gmsh.y"
+case 245:
+#line 1518 "Gmsh.y"
 { 
       ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; 
       for(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(ListOfDouble2_L, &d) ;
     ;
     break;}
-case 247:
-#line 1537 "Gmsh.y"
+case 246:
+#line 1524 "Gmsh.y"
 {
       ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; 
       if(!yyvsp[-2].d || (yyvsp[-5].d<yyvsp[0].d && yyvsp[-2].d<0) || (yyvsp[-5].d>yyvsp[0].d && yyvsp[-2].d>0)){
@@ -3567,8 +3517,8 @@ case 247:
 	  List_Add(ListOfDouble2_L, &d) ;
    ;
     break;}
-case 248:
-#line 1551 "Gmsh.y"
+case 247:
+#line 1538 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-9].d;
       yyval.v[1]=yyvsp[-7].d;
@@ -3577,8 +3527,8 @@ case 248:
       yyval.v[4]=yyvsp[-1].d;
     ;
     break;}
-case 249:
-#line 1559 "Gmsh.y"
+case 248:
+#line 1546 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-7].d;
       yyval.v[1]=yyvsp[-5].d;
@@ -3587,8 +3537,8 @@ case 249:
       yyval.v[4]=1.0;
     ;
     break;}
-case 250:
-#line 1567 "Gmsh.y"
+case 249:
+#line 1554 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;
       yyval.v[1]=yyvsp[-3].d;
@@ -3597,8 +3547,8 @@ case 250:
       yyval.v[4]=1.0;
     ;
     break;}
-case 251:
-#line 1575 "Gmsh.y"
+case 250:
+#line 1562 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;
       yyval.v[1]=yyvsp[-3].d;
@@ -3607,84 +3557,84 @@ case 251:
       yyval.v[4]=1.0;
     ;
     break;}
+case 251:
+#line 1573 "Gmsh.y"
+{
+    ;
+    break;}
 case 252:
-#line 1586 "Gmsh.y"
+#line 1576 "Gmsh.y"
 {
     ;
     break;}
 case 253:
-#line 1589 "Gmsh.y"
+#line 1582 "Gmsh.y"
 {
     ;
     break;}
 case 254:
-#line 1595 "Gmsh.y"
+#line 1585 "Gmsh.y"
 {
     ;
     break;}
 case 255:
-#line 1598 "Gmsh.y"
+#line 1591 "Gmsh.y"
 {
     ;
     break;}
 case 256:
-#line 1604 "Gmsh.y"
+#line 1594 "Gmsh.y"
 {
+       yyval.l=ListOfListOfDouble_L;
     ;
     break;}
 case 257:
-#line 1607 "Gmsh.y"
+#line 1598 "Gmsh.y"
 {
        yyval.l=ListOfListOfDouble_L;
     ;
     break;}
 case 258:
-#line 1611 "Gmsh.y"
+#line 1605 "Gmsh.y"
 {
-       yyval.l=ListOfListOfDouble_L;
+      ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ;
+      List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
     ;
     break;}
 case 259:
-#line 1618 "Gmsh.y"
+#line 1610 "Gmsh.y"
 {
-      ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ;
       List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
     ;
     break;}
 case 260:
-#line 1623 "Gmsh.y"
+#line 1617 "Gmsh.y"
 {
-      List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
     ;
     break;}
 case 261:
-#line 1630 "Gmsh.y"
-{
-    ;
-    break;}
-case 262:
-#line 1633 "Gmsh.y"
+#line 1620 "Gmsh.y"
 {
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
       yyval.l=ListOfDouble_L;
     ;
     break;}
-case 263:
-#line 1639 "Gmsh.y"
+case 262:
+#line 1626 "Gmsh.y"
 {
       yyval.l=ListOfDouble_L;
     ;
     break;}
-case 264:
-#line 1653 "Gmsh.y"
+case 263:
+#line 1640 "Gmsh.y"
 {
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
     ;
     break;}
-case 265:
-#line 1658 "Gmsh.y"
+case 264:
+#line 1645 "Gmsh.y"
 { 
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){
@@ -3694,14 +3644,14 @@ case 265:
       List_Delete(ListOfDouble2_L);
     ;
     break;}
-case 266:
-#line 1667 "Gmsh.y"
+case 265:
+#line 1654 "Gmsh.y"
 {
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
     ;
     break;}
-case 267:
-#line 1671 "Gmsh.y"
+case 266:
+#line 1658 "Gmsh.y"
 {
       for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){
 	List_Read(ListOfDouble2_L, i, &d) ;
@@ -3712,7 +3662,7 @@ case 267:
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/lib/bison.simple"
+#line 498 "/usr/local/share/bison.simple"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -3907,32 +3857,8 @@ yyerrhandle:
 
   yystate = yyn;
   goto yynewstate;
-
- yyacceptlab:
-  /* YYACCEPT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 0;
-
- yyabortlab:
-  /* YYABORT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 1;
 }
-#line 1681 "Gmsh.y"
+#line 1668 "Gmsh.y"
 
 
 void InitSymbols(void){
diff --git a/Parser/Gmsh.tab.cpp.h b/Parser/Gmsh.tab.cpp.h
index 45866542ab..4e70940f50 100644
--- a/Parser/Gmsh.tab.cpp.h
+++ b/Parser/Gmsh.tab.cpp.h
@@ -6,145 +6,145 @@ typedef union {
   Shape    s;
   List_T  *l;
 } YYSTYPE;
-#define tDOUBLE 257
-#define tSTRING 258
-#define tBIGSTR 259
-#define tEND    260
-#define tAFFECT 261
-#define tDOTS   262
-#define tPi     263
-#define tExp    264
-#define tLog    265
-#define tLog10  266
-#define tSqrt   267
-#define tSin    268
-#define tAsin   269
-#define tCos    270
-#define tAcos   271
-#define tTan    272
-#define tAtan   273
-#define tAtan2  274
-#define tSinh   275
-#define tCosh   276
-#define tTanh   277
-#define tFabs   278
-#define tFloor  279
-#define tCeil   280
-#define tFmod   281
-#define tModulo 282
-#define tHypot  283
-#define tPoint  284
-#define tCircle 285
-#define tEllipsis       286
-#define tLine   287
-#define tSurface        288
-#define tSpline 289
-#define tVolume 290
-#define tCharacteristic 291
-#define tLength 292
-#define tParametric     293
-#define tElliptic       294
-#define tPlane  295
-#define tRuled  296
-#define tTransfinite    297
-#define tComplex        298
-#define tPhysical       299
-#define tUsing  300
-#define tPower  301
-#define tBump   302
-#define tProgression    303
-#define tAssociation    304
-#define tRotate 305
-#define tTranslate      306
-#define tSymmetry       307
-#define tDilate 308
-#define tExtrude        309
-#define tDuplicata      310
-#define tLoop   311
-#define tInclude        312
-#define tRecombine      313
-#define tDelete 314
-#define tCoherence      315
-#define tView   316
-#define tOffset 317
-#define tAttractor      318
-#define tLayers 319
-#define tScalarTetrahedron      320
-#define tVectorTetrahedron      321
-#define tTensorTetrahedron      322
-#define tScalarTriangle 323
-#define tVectorTriangle 324
-#define tTensorTriangle 325
-#define tScalarLine     326
-#define tVectorLine     327
-#define tTensorLine     328
-#define tScalarPoint    329
-#define tVectorPoint    330
-#define tTensorPoint    331
-#define tBSpline        332
-#define tNurbs  333
-#define tOrder  334
-#define tWith   335
-#define tBounds 336
-#define tKnots  337
-#define tColor  338
-#define tGeneral        339
-#define tGeometry       340
-#define tMesh   341
-#define tB_SPLINE_SURFACE_WITH_KNOTS    342
-#define tB_SPLINE_CURVE_WITH_KNOTS      343
-#define tCARTESIAN_POINT        344
-#define tTRUE   345
-#define tFALSE  346
-#define tUNSPECIFIED    347
-#define tU      348
-#define tV      349
-#define tEDGE_CURVE     350
-#define tVERTEX_POINT   351
-#define tORIENTED_EDGE  352
-#define tPLANE  353
-#define tFACE_OUTER_BOUND       354
-#define tEDGE_LOOP      355
-#define tADVANCED_FACE  356
-#define tVECTOR 357
-#define tDIRECTION      358
-#define tAXIS2_PLACEMENT_3D     359
-#define tISO    360
-#define tENDISO 361
-#define tENDSEC 362
-#define tDATA   363
-#define tHEADER 364
-#define tFILE_DESCRIPTION       365
-#define tFILE_SCHEMA    366
-#define tFILE_NAME      367
-#define tMANIFOLD_SOLID_BREP    368
-#define tCLOSED_SHELL   369
-#define tADVANCED_BREP_SHAPE_REPRESENTATION     370
-#define tFACE_BOUND     371
-#define tCYLINDRICAL_SURFACE    372
-#define tCONICAL_SURFACE        373
-#define tCIRCLE 374
-#define tTRIMMED_CURVE  375
-#define tGEOMETRIC_SET  376
-#define tCOMPOSITE_CURVE_SEGMENT        377
-#define tCONTINUOUS     378
-#define tCOMPOSITE_CURVE        379
-#define tTOROIDAL_SURFACE       380
-#define tPRODUCT_DEFINITION     381
-#define tPRODUCT_DEFINITION_SHAPE       382
-#define tSHAPE_DEFINITION_REPRESENTATION        383
-#define tELLIPSE        384
-#define tTrimmed        385
-#define tSolid  386
-#define tEndSolid       387
-#define tVertex 388
-#define tFacet  389
-#define tNormal 390
-#define tOuter  391
-#define tLoopSTL        392
-#define tEndLoop        393
-#define tEndFacet       394
-#define UMINUS  395
+#define	tDOUBLE	258
+#define	tSTRING	259
+#define	tBIGSTR	260
+#define	tEND	261
+#define	tAFFECT	262
+#define	tDOTS	263
+#define	tPi	264
+#define	tExp	265
+#define	tLog	266
+#define	tLog10	267
+#define	tSqrt	268
+#define	tSin	269
+#define	tAsin	270
+#define	tCos	271
+#define	tAcos	272
+#define	tTan	273
+#define	tAtan	274
+#define	tAtan2	275
+#define	tSinh	276
+#define	tCosh	277
+#define	tTanh	278
+#define	tFabs	279
+#define	tFloor	280
+#define	tCeil	281
+#define	tFmod	282
+#define	tModulo	283
+#define	tHypot	284
+#define	tPoint	285
+#define	tCircle	286
+#define	tEllipsis	287
+#define	tLine	288
+#define	tSurface	289
+#define	tSpline	290
+#define	tVolume	291
+#define	tCharacteristic	292
+#define	tLength	293
+#define	tParametric	294
+#define	tElliptic	295
+#define	tPlane	296
+#define	tRuled	297
+#define	tTransfinite	298
+#define	tComplex	299
+#define	tPhysical	300
+#define	tUsing	301
+#define	tPower	302
+#define	tBump	303
+#define	tProgression	304
+#define	tAssociation	305
+#define	tRotate	306
+#define	tTranslate	307
+#define	tSymmetry	308
+#define	tDilate	309
+#define	tExtrude	310
+#define	tDuplicata	311
+#define	tLoop	312
+#define	tInclude	313
+#define	tRecombine	314
+#define	tDelete	315
+#define	tCoherence	316
+#define	tView	317
+#define	tOffset	318
+#define	tAttractor	319
+#define	tLayers	320
+#define	tScalarTetrahedron	321
+#define	tVectorTetrahedron	322
+#define	tTensorTetrahedron	323
+#define	tScalarTriangle	324
+#define	tVectorTriangle	325
+#define	tTensorTriangle	326
+#define	tScalarLine	327
+#define	tVectorLine	328
+#define	tTensorLine	329
+#define	tScalarPoint	330
+#define	tVectorPoint	331
+#define	tTensorPoint	332
+#define	tBSpline	333
+#define	tNurbs	334
+#define	tOrder	335
+#define	tWith	336
+#define	tBounds	337
+#define	tKnots	338
+#define	tColor	339
+#define	tGeneral	340
+#define	tGeometry	341
+#define	tMesh	342
+#define	tB_SPLINE_SURFACE_WITH_KNOTS	343
+#define	tB_SPLINE_CURVE_WITH_KNOTS	344
+#define	tCARTESIAN_POINT	345
+#define	tTRUE	346
+#define	tFALSE	347
+#define	tUNSPECIFIED	348
+#define	tU	349
+#define	tV	350
+#define	tEDGE_CURVE	351
+#define	tVERTEX_POINT	352
+#define	tORIENTED_EDGE	353
+#define	tPLANE	354
+#define	tFACE_OUTER_BOUND	355
+#define	tEDGE_LOOP	356
+#define	tADVANCED_FACE	357
+#define	tVECTOR	358
+#define	tDIRECTION	359
+#define	tAXIS2_PLACEMENT_3D	360
+#define	tISO	361
+#define	tENDISO	362
+#define	tENDSEC	363
+#define	tDATA	364
+#define	tHEADER	365
+#define	tFILE_DESCRIPTION	366
+#define	tFILE_SCHEMA	367
+#define	tFILE_NAME	368
+#define	tMANIFOLD_SOLID_BREP	369
+#define	tCLOSED_SHELL	370
+#define	tADVANCED_BREP_SHAPE_REPRESENTATION	371
+#define	tFACE_BOUND	372
+#define	tCYLINDRICAL_SURFACE	373
+#define	tCONICAL_SURFACE	374
+#define	tCIRCLE	375
+#define	tTRIMMED_CURVE	376
+#define	tGEOMETRIC_SET	377
+#define	tCOMPOSITE_CURVE_SEGMENT	378
+#define	tCONTINUOUS	379
+#define	tCOMPOSITE_CURVE	380
+#define	tTOROIDAL_SURFACE	381
+#define	tPRODUCT_DEFINITION	382
+#define	tPRODUCT_DEFINITION_SHAPE	383
+#define	tSHAPE_DEFINITION_REPRESENTATION	384
+#define	tELLIPSE	385
+#define	tTrimmed	386
+#define	tSolid	387
+#define	tEndSolid	388
+#define	tVertex	389
+#define	tFacet	390
+#define	tNormal	391
+#define	tOuter	392
+#define	tLoopSTL	393
+#define	tEndLoop	394
+#define	tEndFacet	395
+#define	UMINUS	396
 
 
 extern YYSTYPE yylval;
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index b0e980d7fa..d06c0be663 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,4 +1,4 @@
-%{ /* $Id: Gmsh.y,v 1.7 2000-11-25 15:26:11 geuzaine Exp $ */
+%{ /* $Id: Gmsh.y,v 1.8 2000-11-28 11:28:35 geuzaine Exp $ */
 
 #include <stdarg.h>
 
@@ -1171,7 +1171,7 @@ Transfini :
 	}
       }
     }
-  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tPower FExpr tEND
+  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tProgression FExpr tEND
     {
       Curve *c;
       for(i=0;i<List_Nbr($3);i++){
@@ -1183,8 +1183,8 @@ Transfini :
 	else{
 	  c->Method = TRANSFINI;
 	  c->ipar[0] = (int)$5;
-	  c->ipar[1] = sign(d); /* Power : code 1 ou -1 */
-	  c->dpar[0] = $8;
+	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
+	  c->dpar[0] = fabs($8);
 	}
       }
     }
@@ -1201,24 +1201,7 @@ Transfini :
 	  c->Method = TRANSFINI;
 	  c->ipar[0] = (int)$5;
 	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
-	  c->dpar[0] = $8;
-	}
-      }
-    }
-  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tProgression FExpr tEND
-    {
-      Curve *c;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  vyyerror("Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)$5;
-	  c->ipar[1] = 3*sign(d); /* Progresion : code 3 ou -3 */
-	  c->dpar[0] = $8;
+	  c->dpar[0] = fabs($8);
 	}
       }
     }
@@ -1290,8 +1273,10 @@ Transfini :
 	List_Read($3,i,&d);
 	j = (int)d;
 	s = FindSurface(j,THEM);
-	if(!s)
-	  vyyerror("Unkown Surface %d", j);
+	if(!s){
+	  /* Allow generic lists, even if the surfaces don't exist
+	     vyyerror("Unkown Surface %d", j); */
+	}
 	else{
 	  s->Recombine = 1;
 	  s->RecombineAngle = $5;
@@ -1305,8 +1290,10 @@ Transfini :
 	List_Read($3,i,&d);
 	j = (int)d;
         s = FindSurface(j,THEM);
-	if(!s)
-	  vyyerror("Unkown Surface %d", j);
+	if(!s){
+	  /* Allow generic lists, even if the surfaces don't exist
+	     vyyerror("Unkown Surface %d", j); */
+	}
 	else{
 	  s->Recombine = 1;
 	  s->RecombineAngle = 30.;
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 210f08032a..530fd55b78 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.9 2000-11-26 15:43:47 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.10 2000-11-28 11:28:35 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -1135,7 +1135,7 @@ YY_MALLOC_DECL
 YY_DECL
 	{
 	register yy_state_type yy_current_state;
-	register char *yy_cp = NULL, *yy_bp = NULL;
+	register char *yy_cp, *yy_bp;
 	register int yy_act;
 
 #line 60 "Gmsh.l"
@@ -1542,7 +1542,7 @@ return tPoint;
 case 64:
 YY_RULE_SETUP
 #line 142 "Gmsh.l"
-return tPower;
+return tProgression;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-- 
GitLab