diff --git a/Common/Context.h b/Common/Context.h index e02c5daac5f1d7440077d56878aca90a44bf8ae2..e4b2c13571a3d814fb2cdb565d013d613ed53709 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -109,7 +109,7 @@ public : int point_sel_size, line_sel_width; int hidden, shade; int highlight; - int level, old_circle, circle_points, old_newreg; + int level, old_circle, circle_points, extrude_spline_points, old_newreg; double normals, tangents; double scaling_factor; int color_scheme ; diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index dbfb44a36b7cf589cb11e2d241af747ef1eee5fc..c4d55cd81ab5c717aa91140cfbe80f18daf98eba 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -333,6 +333,8 @@ StringXNumber GeometryOptions_Number[] = { "Use old newreg definition for geometrical transformations (compatibility option for old Gmsh geometries)" }, { F|O, "CirclePoints" , opt_geometry_circle_points, 20. , "Number of points used to draw a circle/ellipsis" }, + { F|O, "ExtrudeSplinePoints" , opt_geometry_extrude_spline_points, 5. , + "Number of control points for splines created during extrusion" }, { F|O, "ScalingFactor" , opt_geometry_scaling_factor , 1.0 , "Global geometry scaling factor" }, { F|O, "ColorScheme" , opt_geometry_color_scheme , 0. , diff --git a/Common/Options.cpp b/Common/Options.cpp index 1c53dbf8dfc13442d7ece9ffd61ef1e0a97ef9d7..0f5a14b5a67b15a7e842c925ad6296aa2f026ffb 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.57 2001-11-09 11:20:21 geuzaine Exp $ +// $Id: Options.cpp,v 1.58 2001-11-12 08:21:17 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -1246,6 +1246,11 @@ double opt_geometry_circle_points(OPT_ARGS_NUM){ CTX.geom.circle_points = (int)val; return CTX.geom.circle_points; } +double opt_geometry_extrude_spline_points(OPT_ARGS_NUM){ + if(action & GMSH_SET) + CTX.geom.extrude_spline_points = (int)val; + return CTX.geom.extrude_spline_points; +} double opt_geometry_scaling_factor(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.geom.scaling_factor = (int)val; diff --git a/Common/Options.h b/Common/Options.h index f001f569ef9aa78615f3390f1786ce6de8dc30b3..072675d46ea6320c0803e9956d750687a0024ca8 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -155,6 +155,7 @@ double opt_geometry_highlight(OPT_ARGS_NUM); double opt_geometry_old_circle(OPT_ARGS_NUM); double opt_geometry_old_newreg(OPT_ARGS_NUM); double opt_geometry_circle_points(OPT_ARGS_NUM); +double opt_geometry_extrude_spline_points(OPT_ARGS_NUM); double opt_geometry_scaling_factor(OPT_ARGS_NUM); double opt_geometry_color_scheme(OPT_ARGS_NUM); double opt_mesh_quality(OPT_ARGS_NUM); diff --git a/Geo/CAD.cpp b/Geo/CAD.cpp index 172c743ba0dbad424043cee6e6e8909773b25c37..1a1160ce98368e2436765e9e84764a376fdcecb2 100644 --- a/Geo/CAD.cpp +++ b/Geo/CAD.cpp @@ -1,4 +1,4 @@ -// $Id: CAD.cpp,v 1.34 2001-11-07 07:13:45 geuzaine Exp $ +// $Id: CAD.cpp,v 1.35 2001-11-12 08:21:17 geuzaine Exp $ #include "Gmsh.h" #include "Numeric.h" @@ -791,7 +791,7 @@ void printSurface(Surface*s){ } } -void ProtudeXYZ ( double &x, double &y, double &z, ExtrudeParams *e){ +void ProtudeXYZ (double &x, double &y, double &z, ExtrudeParams *e){ double matrix[4][4]; double T[3]; Vertex v(x,y,z); @@ -814,68 +814,75 @@ void ProtudeXYZ ( double &x, double &y, double &z, ExtrudeParams *e){ z = v.Pos.Z; } -void Extrude_ProtudePoint(int ep, int ip, double A, double B, double C, - double X, double Y, double Z, double alpha, - Curve **pc, Curve **prc, ExtrudeParams *e){ - double xnew,ynew,znew,matrix[4][4],T[3],Ax[3]; - Vertex V,*pv, *chapeau; +void Extrude_ProtudePoint(int type, int ip, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, + Curve **pc, Curve **prc, + ExtrudeParams *e){ + double xnew,ynew,znew,matrix[4][4],T[3],Ax[3],d; + Vertex V,*pv,*newp,*chapeau; Curve *c; + int i; pv= &V; pv->Num = ip; *pc = *prc = NULL; - if(!Tree_Query(THEM->Points, &pv) )return; + if(!Tree_Query(THEM->Points, &pv)) return; Msg(DEBUG, "Extrude Point %d", ip); chapeau = DuplicateVertex(pv); - if(ep){ - T[0] = A; T[1] = B; T[2] = C; + + switch(type){ + + case TRANSLATE : + T[0] = T0; T[1] = T1; T[2] = T2; SetTranslationMatrix(matrix,T); ApplyTransformationToPoint(matrix,chapeau); List_Reset(ListOfTransformedPoints); - } - else{ - T[0] = -X; T[1] = -Y; T[2] = -Z; + + if(!comparePosition(&pv,&chapeau)) return ; + c = Create_Curve(NEWLINE(),MSH_SEGM_LINE,1,NULL,NULL,-1,-1,0.,1.); + c->Control_Points = List_Create(2,1,sizeof(Vertex*)); + c->Extrude = new ExtrudeParams; + c->Extrude->fill(type,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha); + if(e) c->Extrude->mesh = e->mesh; + + List_Add(c->Control_Points,&pv); + List_Add(c->Control_Points,&chapeau); + c->beg = pv; + c->end = chapeau; + break; + + case ROTATE : + T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); ApplyTransformationToPoint(matrix,chapeau); List_Reset(ListOfTransformedPoints); - Ax[0] = A; Ax[1] = B; Ax[2] = C; + Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha); ApplyTransformationToPoint(matrix,chapeau); List_Reset(ListOfTransformedPoints); - T[0] = X; T[1] = Y; T[2] = Z; + T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix,T); ApplyTransformationToPoint(matrix,chapeau); List_Reset(ListOfTransformedPoints); - Msg(DEBUG,"Angle %g Point (%g,%g,%g) Axis (%g,%g,%g)",alpha,X,Y,Z,A,B,C); - } - - if(!comparePosition(&pv,&chapeau)) return ; - c = Create_Curve(NEWLINE(),(ep)?MSH_SEGM_LINE:MSH_SEGM_CIRC,1,NULL,NULL,-1,-1,0.,1.); - c->Control_Points = List_Create((ep)?2:3,1,sizeof(Vertex*)); + if(!comparePosition(&pv,&chapeau)) return ; + c = Create_Curve(NEWLINE(),MSH_SEGM_CIRC,1,NULL,NULL,-1,-1,0.,1.); + c->Control_Points = List_Create(3,1,sizeof(Vertex*)); + c->Extrude = new ExtrudeParams; + c->Extrude->fill(type,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha); + if(e) c->Extrude->mesh = e->mesh; - // je me souviens - c->Extrude = new ExtrudeParams; - c->Extrude->fill(ep,A,B,C,X,Y,Z,alpha); - if(e)c->Extrude->mesh = e->mesh; - - if(ep){ - List_Add(c->Control_Points,&pv); - List_Add(c->Control_Points,&chapeau); - c->beg = pv; - c->end = chapeau; - } - else{ List_Add(c->Control_Points,&pv); - dist_ddg(pv->Pos.X,pv->Pos.Y,pv->Pos.Z, chapeau->Pos.X,chapeau->Pos.Y,chapeau->Pos.Z, - X,Y,Z,X+A,Y+B,Z+C,&xnew,&ynew,&znew); - Vertex *newp = DuplicateVertex(pv); + X0,X1,X2,X0+A0,X1+A1,X2+A2,&xnew,&ynew,&znew); + newp = DuplicateVertex(pv); newp->Pos.X = xnew; newp->Pos.Y = ynew; newp->Pos.Z = znew; @@ -883,8 +890,50 @@ void Extrude_ProtudePoint(int ep, int ip, double A, double B, double C, List_Add(c->Control_Points,&chapeau); c->beg = pv; c->end = chapeau; - printCurve(c); + break; + + case TRANSLATE_ROTATE : + d = CTX.geom.extrude_spline_points; + c = Create_Curve(NEWLINE(),MSH_SEGM_SPLN,1,NULL,NULL,-1,-1,0.,1.); + c->Control_Points = List_Create(CTX.geom.extrude_spline_points,1,sizeof(Vertex*)); + c->Extrude = new ExtrudeParams; + c->Extrude->fill(type,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha); + if(e) c->Extrude->mesh = e->mesh; + List_Add(c->Control_Points,&chapeau); + c->beg = chapeau; + for(i=1 ; i<=CTX.geom.extrude_spline_points ; i++){ + pv = DuplicateVertex(pv); + + T[0] = -X0; T[1] = -X1; T[2] = -X2; + SetTranslationMatrix(matrix,T); + ApplyTransformationToPoint(matrix,pv); + List_Reset(ListOfTransformedPoints); + + Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; + SetRotationMatrix(matrix,Ax,alpha/d); + ApplyTransformationToPoint(matrix,pv); + List_Reset(ListOfTransformedPoints); + + T[0] = X0; T[1] = X1; T[2] = X2; + SetTranslationMatrix(matrix,T); + ApplyTransformationToPoint(matrix,pv); + List_Reset(ListOfTransformedPoints); + + T[0] = T0/d; T[1] = T1/d; T[2] = T2/d; + SetTranslationMatrix(matrix,T); + ApplyTransformationToPoint(matrix,pv); + List_Reset(ListOfTransformedPoints); + + List_Add(c->Control_Points,&pv); + } + c->end = pv; + break; + + default : + Msg(GERROR, "Unknown extrusion type"); + return; } + End_Curve(c); Tree_Add(THEM->Curves,&c); CreateReversedCurve (THEM,c); @@ -893,9 +942,10 @@ void Extrude_ProtudePoint(int ep, int ip, double A, double B, double C, } -Surface *Extrude_ProtudeCurve(int ep, int ic, - double A, double B, double C, - double X, double Y, double Z, +Surface *Extrude_ProtudeCurve(int type, int ic, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, ExtrudeParams *e){ double matrix[4][4],T[3],Ax[3]; Curve *CurveBeg,*CurveEnd; @@ -913,34 +963,64 @@ Surface *Extrude_ProtudeCurve(int ep, int ic, chapeau = DuplicateCurve(pc); chapeau->Extrude = new ExtrudeParams(COPIED_ENTITY); - chapeau->Extrude->fill(ep,A,B,C,X,Y,Z,alpha); + chapeau->Extrude->fill(type,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha); chapeau->Extrude->geo.Source = pc->Num; if(e) chapeau->Extrude->mesh = e->mesh; - if(ep){ - T[0] = A; T[1] = B; T[2] = C; + switch(type){ + case TRANSLATE : + T[0] = T0; T[1] = T1; T[2] = T2; SetTranslationMatrix(matrix,T); ApplyTransformationToCurve(matrix,chapeau); - } - else{ - T[0] = -X; T[1] = -Y; T[2] = -Z; + List_Reset(ListOfTransformedPoints); + break; + case ROTATE : + T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); - Ax[0] = A; Ax[1] = B; Ax[2] = C; + Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha); ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); - T[0] = X; T[1] = Y; T[2] = Z; + T[0] = X0; T[1] = X1; T[2] = X2; + SetTranslationMatrix(matrix,T); + ApplyTransformationToCurve(matrix,chapeau); + List_Reset(ListOfTransformedPoints); + break; + case TRANSLATE_ROTATE : + T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); ApplyTransformationToCurve(matrix,chapeau); List_Reset(ListOfTransformedPoints); + + Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; + SetRotationMatrix(matrix,Ax,alpha); + ApplyTransformationToCurve(matrix,chapeau); + List_Reset(ListOfTransformedPoints); + + T[0] = X0; T[1] = X1; T[2] = X2; + SetTranslationMatrix(matrix,T); + ApplyTransformationToCurve(matrix,chapeau); + List_Reset(ListOfTransformedPoints); + + T[0] = T0; T[1] = T1; T[2] = T2; + SetTranslationMatrix(matrix,T); + ApplyTransformationToCurve(matrix,chapeau); + List_Reset(ListOfTransformedPoints); + break; + default : + Msg(GERROR, "Unknown extrusion type"); + return NULL; } - Extrude_ProtudePoint(ep,pc->beg->Num,A,B,C,X,Y,Z,alpha, + + Extrude_ProtudePoint(type,pc->beg->Num,T0,T1,T2, + A0,A1,A2,X0,X1,X2,alpha, &CurveBeg,&ReverseBeg,e); - Extrude_ProtudePoint(ep,pc->end->Num,A,B,C,X,Y,Z,alpha, + Extrude_ProtudePoint(type,pc->end->Num,T0,T1,T2, + A0,A1,A2,X0,X1,X2,alpha, &CurveEnd,&ReverseEnd,e); List_Reset(ListOfTransformedPoints); @@ -952,10 +1032,8 @@ Surface *Extrude_ProtudeCurve(int ep, int ic, s = Create_Surface(NEWSURFACE(),MSH_SURF_REGL,0); s->Generatrices = List_Create(4,1,sizeof(Curve*)); - - // je me souviens s->Extrude = new ExtrudeParams; - s->Extrude->fill(ep,A,B,C,X,Y,Z,alpha); + s->Extrude->fill(type,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha); s->Extrude->geo.Source = pc->Num; if(e) s->Extrude->mesh = e->mesh; @@ -984,10 +1062,10 @@ Surface *Extrude_ProtudeCurve(int ep, int ic, return s; } -void Extrude_ProtudeSurface(int ep, int is, - double A, double B, double C, - double X, double Y, double Z, - double alpha, +void Extrude_ProtudeSurface(int type, int is, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, int NewVolume, ExtrudeParams *e){ double matrix[4][4],T[3],Ax[3]; Curve *c,*c2; @@ -995,13 +1073,13 @@ void Extrude_ProtudeSurface(int ep, int is, Surface *s,*ps, *chapeau; Volume *pv = NULL; - if(!(ps = FindSurface(is,THEM)) )return; + if(!(ps = FindSurface(is,THEM))) return; Msg(DEBUG, "Extrude Surface %d", is); chapeau = DuplicateSurface(ps); chapeau->Extrude = new ExtrudeParams(COPIED_ENTITY); - chapeau->Extrude->fill(ep,A,B,C,X,Y,Z,alpha); + chapeau->Extrude->fill(type,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha); chapeau->Extrude->geo.Source = ps->Num; if(e) chapeau->Extrude->mesh = e->mesh; @@ -1014,55 +1092,77 @@ void Extrude_ProtudeSurface(int ep, int is, return; } c->Extrude = new ExtrudeParams(COPIED_ENTITY); - c->Extrude->fill(ep,A,B,C,X,Y,Z,alpha); + c->Extrude->fill(type,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha); //pas de abs()! il faut le signe pour copy_mesh dans ExtrudeMesh c->Extrude->geo.Source = c2->Num; - if(e)c->Extrude->mesh = e->mesh; + if(e) c->Extrude->mesh = e->mesh; } if(NewVolume){ pv = Create_Volume(NewVolume,0,0); - //if(CTX.geom.old_newreg){//dirty compatibility trick... - //THEM->MaxVolumeNum--; - //} pv->Extrude = new ExtrudeParams; - pv->Extrude->fill(ep,A,B,C,X,Y,Z,alpha); + pv->Extrude->fill(type,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha); pv->Extrude->geo.Source = is; - if(e)pv->Extrude->mesh = e->mesh; - if(pv)List_Add(pv->Surfaces,&ps); + if(e) pv->Extrude->mesh = e->mesh; + if(pv) List_Add(pv->Surfaces,&ps); } - if(pv)List_Add(pv->Surfaces,&chapeau); + if(pv) List_Add(pv->Surfaces,&chapeau); - // filling extrude params - for(i=0;i<List_Nbr(ps->Generatrices);i++){ List_Read(ps->Generatrices,i,&c); - s = Extrude_ProtudeCurve(ep,c->Num,A,B,C,X,Y,Z,alpha,e); - if(pv && s)List_Add(pv->Surfaces,&s); - //printSurface(s); + s = Extrude_ProtudeCurve(type,c->Num,T0,T1,T2,A0,A1,A2,X0,X1,X2,alpha,e); + if(pv && s) List_Add(pv->Surfaces,&s); } - if(ep){ - T[0] = A; T[1] = B; T[2] = C; + switch(type){ + case TRANSLATE : + T[0] = T0; T[1] = T1; T[2] = T2; SetTranslationMatrix(matrix,T); ApplyTransformationToSurface(matrix,chapeau); - } - else{ - T[0] = -X; T[1] = -Y; T[2] = -Z; + List_Reset(ListOfTransformedPoints); + break; + case ROTATE : + T[0] = -X0; T[1] = -X1; T[2] = -X2; SetTranslationMatrix(matrix,T); ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); - Ax[0] = A; Ax[1] = B; Ax[2] = C; + Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; SetRotationMatrix(matrix,Ax,alpha); ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); - T[0] = X; T[1] = Y; T[2] = Z; + T[0] = X0; T[1] = X1; T[2] = X2; SetTranslationMatrix(matrix,T); ApplyTransformationToSurface(matrix,chapeau); List_Reset(ListOfTransformedPoints); + break; + case TRANSLATE_ROTATE : + T[0] = -X0; T[1] = -X1; T[2] = -X2; + SetTranslationMatrix(matrix,T); + ApplyTransformationToSurface(matrix,chapeau); + List_Reset(ListOfTransformedPoints); + + Ax[0] = A0; Ax[1] = A1; Ax[2] = A2; + SetRotationMatrix(matrix,Ax,alpha); + ApplyTransformationToSurface(matrix,chapeau); + List_Reset(ListOfTransformedPoints); + + T[0] = X0; T[1] = X1; T[2] = X2; + SetTranslationMatrix(matrix,T); + ApplyTransformationToSurface(matrix,chapeau); + List_Reset(ListOfTransformedPoints); + + T[0] = T0; T[1] = T1; T[2] = T2; + SetTranslationMatrix(matrix,T); + ApplyTransformationToSurface(matrix,chapeau); + List_Reset(ListOfTransformedPoints); + break; + default : + Msg(GERROR, "Unknown extrusion type"); + return; } + Tree_Suppress(THEM->Surfaces,&chapeau); chapeau->Num = NEWSURFACE(); @@ -1070,7 +1170,7 @@ void Extrude_ProtudeSurface(int ep, int is, Tree_Add(THEM->Surfaces,&chapeau); - if(pv)Tree_Add(THEM->Volumes,&pv); + if(pv) Tree_Add(THEM->Volumes,&pv); if(CTX.geom.auto_coherence) ReplaceAllDuplicates ( THEM ); List_Reset(ListOfTransformedPoints); diff --git a/Geo/CAD.h b/Geo/CAD.h index 3c0d502903fae370b465b137bef3bf18b61bc31f..81bd3be58af46136f4007b3276cab4591594e09f 100644 --- a/Geo/CAD.h +++ b/Geo/CAD.h @@ -24,17 +24,21 @@ bool ProjectPointOnCurve (Curve *c, Vertex *v, Vertex *RES, Vertex *DER); bool ProjectPointOnSurface (Surface *s, Vertex &p); bool ProjectPointOnSurface (Surface *s, Vertex *p,double *u, double *v); -void Extrude_ProtudePoint(int ep, int ip, double A, double B, double C, - double X, double Y, double Z, double alpha, - Curve **pc, Curve **prc, ExtrudeParams *e); -Surface *Extrude_ProtudeCurve(int ep, int ic, - double A, double B, double C, - double X, double Y, double Z, - double alpha, ExtrudeParams *e); -void Extrude_ProtudeSurface(int ep, int is, - double A, double B, double C, - double X, double Y, double Z, - double alpha, +void Extrude_ProtudePoint(int type, int ip, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, + Curve **pc, Curve **prc, + ExtrudeParams *e); +Surface *Extrude_ProtudeCurve(int type, int ic, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, + ExtrudeParams *e); +void Extrude_ProtudeSurface(int type, int is, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double alpha, int NewVolume, ExtrudeParams *e); void ProtudeXYZ ( double &x, double &y, double &z, ExtrudeParams *e); void ReplaceAllDuplicates ( Mesh *m ); diff --git a/Geo/ExtrudeParams.cpp b/Geo/ExtrudeParams.cpp index f2bf4c832fbc06d0e9f6df0e1dabd999642c16e6..f963805d6bf173cb150a02b0b6e1eee4d4f76936 100644 --- a/Geo/ExtrudeParams.cpp +++ b/Geo/ExtrudeParams.cpp @@ -1,4 +1,4 @@ -// $Id: ExtrudeParams.cpp,v 1.6 2001-09-25 08:21:14 geuzaine Exp $ +// $Id: ExtrudeParams.cpp,v 1.7 2001-11-12 08:21:17 geuzaine Exp $ #include "Gmsh.h" #include "Geo.h" @@ -24,23 +24,28 @@ ExtrudeParams :: ExtrudeParams (int ModeEx){ } -void ExtrudeParams :: fill (int ep , double A, double B, double C, - double X, double Y, double Z, double angle){ - geo.axe[0] = A; - geo.axe[1] = B; - geo.axe[2] = C; - geo.pt[0] = X; - geo.pt[1] = Y; - geo.pt[2] = Z; +void ExtrudeParams :: fill (int type , + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double angle){ + geo.trans[0] = T0; + geo.trans[1] = T1; + geo.trans[2] = T2; + geo.axe[0] = A0; + geo.axe[1] = A1; + geo.axe[2] = A2; + geo.pt[0] = X0; + geo.pt[1] = X1; + geo.pt[2] = X2; geo.angle = angle; - geo.Type = ep; + geo.Type = type; } void ExtrudeParams :: Extrude ( int iLayer, int iElemLayer, double &x, double &y, double &z){ double dx0,dy0,dz0,dx1,dy1,dz1; - double dx,dy,dz; + double dx,dy,dz,angle; if(!iLayer){ dx0=dy0=dz0=0.0; dx1 = mesh.hLayer[0]; @@ -56,40 +61,71 @@ void ExtrudeParams :: Extrude ( int iLayer, int iElemLayer, dz1 = mesh.hLayer[iLayer]; } double t = (double) iElemLayer /(double)mesh.NbElmLayer[iLayer]; - if(geo.Type){ - dx = geo.axe[0]*(dx0 + t * (dx1-dx0)); - dy = geo.axe[1]*(dy0 + t * (dy1-dy0)); - dz = geo.axe[2]*(dz0 + t * (dz1-dz0)); + switch(geo.Type){ + case TRANSLATE : + dx = geo.trans[0]*(dx0 + t * (dx1-dx0)); + dy = geo.trans[1]*(dy0 + t * (dy1-dy0)); + dz = geo.trans[2]*(dz0 + t * (dz1-dz0)); x+=dx;y+=dy;z+=dz; - } - else{ - double angle = geo.angle; + break; + case ROTATE : + angle = geo.angle; + geo.angle = geo.angle*(dx0 + t * (dx1-dx0)); + ProtudeXYZ(x,y,z,this); + geo.angle = angle; + break; + case TRANSLATE_ROTATE : + angle = geo.angle; geo.angle = geo.angle*(dx0 + t * (dx1-dx0)); ProtudeXYZ(x,y,z,this); geo.angle = angle; + dx = geo.trans[0]*(dx0 + t * (dx1-dx0)); + dy = geo.trans[1]*(dy0 + t * (dy1-dy0)); + dz = geo.trans[2]*(dz0 + t * (dz1-dz0)); + x+=dx;y+=dy;z+=dz; + break; + default : + Msg(GERROR, "Unknown extrusion type"); + break; } } void ExtrudeParams :: Rotate(double matr[3][3]){ + Projette(geo.trans,matr); Projette(geo.axe,matr); Projette(geo.pt,matr); geo.angle = -geo.angle; } void ExtrudeParams :: Extrude (double t, double &x, double &y, double &z){ + double dx,dy,dz,angle; - double dx,dy,dz; - if(geo.Type){ - dx = geo.axe[0]*t; - dy = geo.axe[1]*t; - dz = geo.axe[2]*t; + switch(geo.Type){ + case TRANSLATE : + dx = geo.trans[0]*t; + dy = geo.trans[1]*t; + dz = geo.trans[2]*t; x+=dx;y+=dy;z+=dz; - } - else{ - double angle = geo.angle; + break; + case ROTATE : + angle = geo.angle; + geo.angle = geo.angle*t; + ProtudeXYZ(x,y,z,this); + geo.angle = angle; + break; + case TRANSLATE_ROTATE : + angle = geo.angle; geo.angle = geo.angle*t; ProtudeXYZ(x,y,z,this); geo.angle = angle; + dx = geo.trans[0]*t; + dy = geo.trans[1]*t; + dz = geo.trans[2]*t; + x+=dx;y+=dy;z+=dz; + break; + default : + Msg(GERROR, "Unknown extrusion type"); + break; } } diff --git a/Geo/ExtrudeParams.h b/Geo/ExtrudeParams.h index dded11b0ec9b38e9c70c077da60d0dcbb9d260e1..d9ada870e9976a435556736a7f7f2679300a2f0c 100644 --- a/Geo/ExtrudeParams.h +++ b/Geo/ExtrudeParams.h @@ -1,18 +1,26 @@ #ifndef _EXTRUDE_PARAMS_H_ #define _EXTRUDE_PARAMS_H_ +//geo.Mode #define EXTRUDED_ENTITY 1 #define COPIED_ENTITY 2 -class ExtrudeParams{ +//geo.Type +#define TRANSLATE 1 +#define ROTATE 2 +#define TRANSLATE_ROTATE 3 +class ExtrudeParams{ + public : ExtrudeParams(int Mode = EXTRUDED_ENTITY); - void fill (int ep,double A, double B, double C, - double X, double Y, double Z, double angle); - void Extrude ( int iLayer, int iElemLayer, - double &dx, double &dy, double &dz); - void Extrude (double t, double &x, double &y, double &z); + void fill(int type, + double T0, double T1, double T2, + double A0, double A1, double A2, + double X0, double X1, double X2, double angle); + void Extrude(int iLayer, int iElemLayer, + double &dx, double &dy, double &dz); + void Extrude(double t, double &x, double &y, double &z); void Rotate(double matr[3][3]); struct{ bool ExtrudeMesh; @@ -26,11 +34,10 @@ public : int Mode; int Type; int Source; - double axe[3]; - double pt[3]; - double angle; + double trans[3]; + double axe[3], pt[3], angle; }geo; - + }; #endif diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 0dc9fd437c2720c49ada7440a559a6d138f47166..c49877a86303d3d9034ee756d643d0d8f9f2c45e 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -177,7 +177,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.122 2001-11-07 09:30:26 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.123 2001-11-12 08:21:17 geuzaine Exp $ #include <stdarg.h> #ifndef _NOPLUGIN @@ -264,11 +264,11 @@ typedef union { -#define YYFINAL 1668 +#define YYFINAL 1697 #define YYFLAG -32768 #define YYNTBASE 190 -#define YYTRANSLATE(x) ((unsigned)(x) <= 425 ? yytranslate[x] : 281) +#define YYTRANSLATE(x) ((unsigned)(x) <= 425 ? yytranslate[x] : 283) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -340,22 +340,23 @@ static const short yyprhs[] = { 0, 1416, 1425, 1431, 1440, 1448, 1457, 1463, 1475, 1481, 1491, 1493, 1495, 1497, 1498, 1501, 1506, 1511, 1518, 1522, 1526, 1530, 1538, 1541, 1544, 1551, 1560, 1569, 1580, 1582, 1585, - 1587, 1591, 1596, 1598, 1607, 1620, 1629, 1642, 1643, 1656, - 1657, 1674, 1683, 1696, 1697, 1710, 1711, 1728, 1730, 1733, - 1743, 1751, 1754, 1761, 1771, 1781, 1790, 1799, 1808, 1815, - 1820, 1823, 1826, 1828, 1830, 1832, 1834, 1836, 1838, 1842, - 1845, 1848, 1851, 1855, 1859, 1863, 1867, 1871, 1875, 1879, - 1883, 1887, 1891, 1895, 1899, 1903, 1907, 1913, 1918, 1923, - 1928, 1933, 1938, 1943, 1948, 1953, 1958, 1963, 1970, 1975, - 1980, 1985, 1990, 1995, 2000, 2007, 2014, 2021, 2026, 2031, - 2036, 2041, 2046, 2051, 2056, 2061, 2066, 2071, 2076, 2083, - 2088, 2093, 2098, 2103, 2108, 2113, 2120, 2127, 2134, 2139, - 2141, 2143, 2145, 2147, 2149, 2154, 2157, 2163, 2167, 2174, - 2179, 2187, 2189, 2192, 2195, 2199, 2203, 2215, 2225, 2233, - 2241, 2242, 2246, 2248, 2252, 2253, 2257, 2261, 2263, 2267, - 2269, 2271, 2275, 2280, 2284, 2290, 2294, 2299, 2306, 2314, - 2316, 2318, 2322, 2326, 2336, 2344, 2346, 2352, 2356, 2363, - 2365, 2369, 2371, 2378, 2383, 2388, 2395, 2402 + 1587, 1591, 1596, 1598, 1607, 1620, 1635, 1644, 1657, 1672, + 1673, 1686, 1687, 1704, 1705, 1724, 1733, 1746, 1761, 1762, + 1775, 1776, 1793, 1794, 1813, 1815, 1818, 1828, 1836, 1839, + 1846, 1856, 1866, 1875, 1884, 1893, 1900, 1905, 1908, 1911, + 1913, 1915, 1917, 1919, 1921, 1923, 1927, 1930, 1933, 1936, + 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, + 1980, 1984, 1988, 1992, 1998, 2003, 2008, 2013, 2018, 2023, + 2028, 2033, 2038, 2043, 2048, 2055, 2060, 2065, 2070, 2075, + 2080, 2085, 2092, 2099, 2106, 2111, 2116, 2121, 2126, 2131, + 2136, 2141, 2146, 2151, 2156, 2161, 2168, 2173, 2178, 2183, + 2188, 2193, 2198, 2205, 2212, 2219, 2224, 2226, 2228, 2230, + 2232, 2234, 2239, 2242, 2248, 2252, 2259, 2264, 2272, 2274, + 2277, 2280, 2284, 2288, 2300, 2310, 2318, 2326, 2327, 2331, + 2333, 2337, 2338, 2342, 2346, 2348, 2352, 2354, 2356, 2360, + 2365, 2369, 2375, 2379, 2384, 2391, 2399, 2401, 2403, 2407, + 2411, 2421, 2429, 2431, 2437, 2441, 2448, 2450, 2454, 2456, + 2463, 2468, 2473, 2480, 2487 }; static const short yyrhs[] = { 193, @@ -365,242 +366,250 @@ static const short yyrhs[] = { 193, 150, 191, 191, 191, 155, 156, 0, 149, 0, 0, 193, 194, 0, 195, 0, 197, 0, 196, 0, 122, 6, 0, 123, 6, 0, 125, 6, 0, 124, 6, - 0, 126, 6, 0, 127, 182, 270, 187, 5, 183, - 6, 0, 128, 182, 270, 183, 6, 0, 129, 182, - 5, 187, 5, 187, 270, 187, 270, 187, 5, 187, + 0, 126, 6, 0, 127, 182, 272, 187, 5, 183, + 6, 0, 128, 182, 272, 183, 6, 0, 129, 182, + 5, 187, 5, 187, 272, 187, 272, 187, 5, 187, 5, 187, 5, 183, 6, 0, 3, 7, 106, 182, - 5, 187, 268, 183, 6, 0, 3, 7, 105, 182, - 5, 187, 266, 187, 274, 187, 265, 187, 265, 187, - 265, 187, 274, 187, 274, 187, 265, 183, 6, 0, - 3, 7, 104, 182, 5, 187, 266, 187, 266, 187, - 272, 187, 265, 187, 265, 187, 265, 187, 265, 187, - 274, 187, 274, 187, 274, 187, 274, 187, 265, 183, + 5, 187, 270, 183, 6, 0, 3, 7, 105, 182, + 5, 187, 268, 187, 276, 187, 267, 187, 267, 187, + 267, 187, 276, 187, 276, 187, 267, 183, 6, 0, + 3, 7, 104, 182, 5, 187, 268, 187, 268, 187, + 274, 187, 267, 187, 267, 187, 267, 187, 267, 187, + 276, 187, 276, 187, 276, 187, 276, 187, 267, 183, 6, 0, 3, 7, 112, 182, 5, 187, 3, 187, - 3, 187, 3, 187, 265, 183, 6, 0, 3, 7, - 116, 182, 5, 187, 3, 187, 265, 183, 6, 0, - 3, 7, 133, 182, 5, 187, 3, 187, 265, 183, + 3, 187, 3, 187, 267, 183, 6, 0, 3, 7, + 116, 182, 5, 187, 3, 187, 267, 183, 6, 0, + 3, 7, 133, 182, 5, 187, 3, 187, 267, 183, 6, 0, 3, 7, 114, 182, 5, 187, 173, 187, - 173, 187, 266, 187, 265, 183, 6, 0, 3, 7, - 117, 182, 5, 187, 274, 183, 6, 0, 3, 7, - 118, 182, 5, 187, 274, 187, 3, 187, 265, 183, + 173, 187, 268, 187, 267, 183, 6, 0, 3, 7, + 117, 182, 5, 187, 276, 183, 6, 0, 3, 7, + 118, 182, 5, 187, 276, 187, 3, 187, 267, 183, 6, 0, 3, 7, 113, 182, 5, 187, 3, 183, 6, 0, 3, 7, 119, 182, 5, 187, 3, 187, - 266, 183, 6, 0, 3, 7, 121, 182, 5, 187, + 268, 183, 6, 0, 3, 7, 121, 182, 5, 187, 3, 187, 3, 187, 3, 183, 6, 0, 3, 7, - 120, 182, 5, 187, 268, 183, 6, 0, 3, 7, + 120, 182, 5, 187, 270, 183, 6, 0, 3, 7, 115, 182, 5, 187, 3, 183, 6, 0, 3, 7, 41, 182, 5, 187, 3, 187, 3, 183, 6, 0, - 3, 7, 131, 182, 5, 187, 274, 183, 6, 0, - 3, 7, 132, 182, 5, 187, 274, 187, 3, 183, + 3, 7, 131, 182, 5, 187, 276, 183, 6, 0, + 3, 7, 132, 182, 5, 187, 276, 187, 3, 183, 6, 0, 3, 7, 130, 182, 5, 187, 3, 183, 6, 0, 3, 7, 134, 182, 5, 187, 3, 187, - 266, 183, 6, 0, 3, 7, 135, 182, 5, 187, - 3, 187, 266, 187, 266, 183, 6, 0, 3, 7, - 142, 182, 5, 187, 3, 187, 266, 187, 266, 183, + 268, 183, 6, 0, 3, 7, 135, 182, 5, 187, + 3, 187, 268, 187, 268, 183, 6, 0, 3, 7, + 142, 182, 5, 187, 3, 187, 268, 187, 268, 183, 6, 0, 3, 7, 136, 182, 5, 187, 3, 187, - 266, 183, 6, 0, 3, 7, 146, 182, 5, 187, - 3, 187, 266, 187, 266, 183, 6, 0, 3, 7, - 137, 182, 5, 187, 3, 187, 274, 187, 274, 187, - 265, 187, 265, 183, 6, 0, 3, 7, 138, 182, - 5, 187, 274, 183, 6, 0, 3, 7, 139, 182, - 140, 187, 265, 187, 3, 183, 6, 0, 3, 7, - 141, 182, 5, 187, 274, 187, 265, 183, 6, 0, + 268, 183, 6, 0, 3, 7, 146, 182, 5, 187, + 3, 187, 268, 187, 268, 183, 6, 0, 3, 7, + 137, 182, 5, 187, 3, 187, 276, 187, 276, 187, + 267, 187, 267, 183, 6, 0, 3, 7, 138, 182, + 5, 187, 276, 183, 6, 0, 3, 7, 139, 182, + 140, 187, 267, 187, 3, 183, 6, 0, 3, 7, + 141, 182, 5, 187, 276, 187, 267, 183, 6, 0, 3, 7, 143, 182, 5, 187, 5, 187, 3, 187, 3, 183, 6, 0, 3, 7, 144, 182, 5, 187, 5, 187, 3, 183, 6, 0, 3, 7, 145, 182, 3, 187, 3, 183, 6, 0, 0, 198, 199, 0, 201, 0, 200, 0, 247, 0, 248, 0, 249, 0, - 252, 0, 253, 0, 256, 0, 263, 0, 264, 0, + 252, 0, 253, 0, 256, 0, 265, 0, 266, 0, 255, 0, 254, 0, 33, 182, 5, 183, 6, 0, - 33, 182, 5, 187, 276, 183, 6, 0, 4, 5, - 188, 202, 189, 6, 0, 4, 5, 4, 268, 188, + 33, 182, 5, 187, 278, 183, 6, 0, 4, 5, + 188, 202, 189, 6, 0, 4, 5, 4, 270, 188, 202, 189, 6, 0, 0, 202, 204, 0, 202, 207, 0, 202, 210, 0, 202, 213, 0, 202, 216, 0, 202, 219, 0, 202, 222, 0, 202, 225, 0, 202, 228, 0, 202, 231, 0, 202, 234, 0, 202, 237, - 0, 202, 240, 0, 202, 243, 0, 266, 0, 203, - 187, 266, 0, 0, 80, 182, 266, 187, 266, 187, - 266, 183, 205, 188, 203, 189, 6, 0, 266, 0, - 206, 187, 266, 0, 0, 81, 182, 266, 187, 266, - 187, 266, 183, 208, 188, 206, 189, 6, 0, 266, - 0, 209, 187, 266, 0, 0, 82, 182, 266, 187, - 266, 187, 266, 183, 211, 188, 209, 189, 6, 0, - 266, 0, 212, 187, 266, 0, 0, 77, 182, 266, - 187, 266, 187, 266, 187, 266, 187, 266, 187, 266, - 183, 214, 188, 212, 189, 6, 0, 266, 0, 215, - 187, 266, 0, 0, 78, 182, 266, 187, 266, 187, - 266, 187, 266, 187, 266, 187, 266, 183, 217, 188, - 215, 189, 6, 0, 266, 0, 218, 187, 266, 0, - 0, 79, 182, 266, 187, 266, 187, 266, 187, 266, - 187, 266, 187, 266, 183, 220, 188, 218, 189, 6, - 0, 266, 0, 221, 187, 266, 0, 0, 74, 182, - 266, 187, 266, 187, 266, 187, 266, 187, 266, 187, - 266, 187, 266, 187, 266, 187, 266, 183, 223, 188, - 221, 189, 6, 0, 266, 0, 224, 187, 266, 0, - 0, 75, 182, 266, 187, 266, 187, 266, 187, 266, - 187, 266, 187, 266, 187, 266, 187, 266, 187, 266, - 183, 226, 188, 224, 189, 6, 0, 266, 0, 227, - 187, 266, 0, 0, 76, 182, 266, 187, 266, 187, - 266, 187, 266, 187, 266, 187, 266, 187, 266, 187, - 266, 187, 266, 183, 229, 188, 227, 189, 6, 0, - 266, 0, 230, 187, 266, 0, 0, 71, 182, 266, - 187, 266, 187, 266, 187, 266, 187, 266, 187, 266, - 187, 266, 187, 266, 187, 266, 187, 266, 187, 266, - 187, 266, 183, 232, 188, 230, 189, 6, 0, 266, - 0, 233, 187, 266, 0, 0, 72, 182, 266, 187, - 266, 187, 266, 187, 266, 187, 266, 187, 266, 187, - 266, 187, 266, 187, 266, 187, 266, 187, 266, 187, - 266, 183, 235, 188, 233, 189, 6, 0, 266, 0, - 236, 187, 266, 0, 0, 73, 182, 266, 187, 266, - 187, 266, 187, 266, 187, 266, 187, 266, 187, 266, - 187, 266, 187, 266, 187, 266, 187, 266, 187, 266, - 183, 238, 188, 236, 189, 6, 0, 280, 0, 239, - 187, 280, 0, 0, 83, 182, 266, 187, 266, 187, - 266, 183, 241, 188, 239, 189, 6, 0, 280, 0, - 242, 187, 280, 0, 0, 84, 182, 266, 187, 266, - 187, 266, 187, 266, 183, 244, 188, 242, 189, 6, + 0, 202, 240, 0, 202, 243, 0, 268, 0, 203, + 187, 268, 0, 0, 80, 182, 268, 187, 268, 187, + 268, 183, 205, 188, 203, 189, 6, 0, 268, 0, + 206, 187, 268, 0, 0, 81, 182, 268, 187, 268, + 187, 268, 183, 208, 188, 206, 189, 6, 0, 268, + 0, 209, 187, 268, 0, 0, 82, 182, 268, 187, + 268, 187, 268, 183, 211, 188, 209, 189, 6, 0, + 268, 0, 212, 187, 268, 0, 0, 77, 182, 268, + 187, 268, 187, 268, 187, 268, 187, 268, 187, 268, + 183, 214, 188, 212, 189, 6, 0, 268, 0, 215, + 187, 268, 0, 0, 78, 182, 268, 187, 268, 187, + 268, 187, 268, 187, 268, 187, 268, 183, 217, 188, + 215, 189, 6, 0, 268, 0, 218, 187, 268, 0, + 0, 79, 182, 268, 187, 268, 187, 268, 187, 268, + 187, 268, 187, 268, 183, 220, 188, 218, 189, 6, + 0, 268, 0, 221, 187, 268, 0, 0, 74, 182, + 268, 187, 268, 187, 268, 187, 268, 187, 268, 187, + 268, 187, 268, 187, 268, 187, 268, 183, 223, 188, + 221, 189, 6, 0, 268, 0, 224, 187, 268, 0, + 0, 75, 182, 268, 187, 268, 187, 268, 187, 268, + 187, 268, 187, 268, 187, 268, 187, 268, 187, 268, + 183, 226, 188, 224, 189, 6, 0, 268, 0, 227, + 187, 268, 0, 0, 76, 182, 268, 187, 268, 187, + 268, 187, 268, 187, 268, 187, 268, 187, 268, 187, + 268, 187, 268, 183, 229, 188, 227, 189, 6, 0, + 268, 0, 230, 187, 268, 0, 0, 71, 182, 268, + 187, 268, 187, 268, 187, 268, 187, 268, 187, 268, + 187, 268, 187, 268, 187, 268, 187, 268, 187, 268, + 187, 268, 183, 232, 188, 230, 189, 6, 0, 268, + 0, 233, 187, 268, 0, 0, 72, 182, 268, 187, + 268, 187, 268, 187, 268, 187, 268, 187, 268, 187, + 268, 187, 268, 187, 268, 187, 268, 187, 268, 187, + 268, 183, 235, 188, 233, 189, 6, 0, 268, 0, + 236, 187, 268, 0, 0, 73, 182, 268, 187, 268, + 187, 268, 187, 268, 187, 268, 187, 268, 187, 268, + 187, 268, 187, 268, 187, 268, 187, 268, 187, 268, + 183, 238, 188, 236, 189, 6, 0, 282, 0, 239, + 187, 282, 0, 0, 83, 182, 268, 187, 268, 187, + 268, 183, 241, 188, 239, 189, 6, 0, 282, 0, + 242, 187, 282, 0, 0, 84, 182, 268, 187, 268, + 187, 268, 187, 268, 183, 244, 188, 242, 189, 6, 0, 7, 0, 157, 0, 158, 0, 159, 0, 160, - 0, 178, 0, 179, 0, 4, 245, 266, 6, 0, - 4, 184, 266, 185, 245, 266, 6, 0, 4, 184, - 188, 276, 189, 185, 245, 274, 6, 0, 4, 184, - 185, 7, 274, 6, 0, 4, 246, 6, 0, 4, - 184, 266, 185, 246, 6, 0, 4, 186, 4, 7, - 280, 6, 0, 4, 184, 266, 185, 186, 4, 7, - 280, 6, 0, 4, 186, 4, 245, 266, 6, 0, - 4, 184, 266, 185, 186, 4, 245, 266, 6, 0, - 4, 186, 4, 246, 6, 0, 4, 184, 266, 185, + 0, 178, 0, 179, 0, 4, 245, 268, 6, 0, + 4, 184, 268, 185, 245, 268, 6, 0, 4, 184, + 188, 278, 189, 185, 245, 276, 6, 0, 4, 184, + 185, 7, 276, 6, 0, 4, 246, 6, 0, 4, + 184, 268, 185, 246, 6, 0, 4, 186, 4, 7, + 282, 6, 0, 4, 184, 268, 185, 186, 4, 7, + 282, 6, 0, 4, 186, 4, 245, 268, 6, 0, + 4, 184, 268, 185, 186, 4, 245, 268, 6, 0, + 4, 186, 4, 246, 6, 0, 4, 184, 268, 185, 186, 4, 246, 6, 0, 4, 186, 92, 186, 4, - 7, 277, 6, 0, 4, 184, 266, 185, 186, 92, - 186, 4, 7, 277, 6, 0, 4, 186, 93, 7, - 278, 6, 0, 4, 184, 266, 185, 186, 93, 7, - 278, 6, 0, 57, 182, 4, 183, 186, 4, 7, - 266, 6, 0, 57, 182, 4, 183, 186, 4, 7, - 280, 6, 0, 38, 182, 266, 183, 7, 268, 6, - 0, 53, 38, 182, 266, 183, 7, 274, 6, 0, - 69, 38, 274, 7, 188, 266, 187, 266, 187, 266, - 189, 6, 0, 45, 46, 274, 7, 266, 6, 0, - 38, 188, 266, 189, 6, 0, 41, 182, 266, 183, - 7, 274, 6, 0, 43, 182, 266, 183, 7, 274, - 6, 0, 69, 41, 274, 7, 188, 266, 187, 266, - 187, 266, 189, 6, 0, 39, 182, 266, 183, 7, - 274, 6, 0, 40, 182, 266, 183, 7, 274, 6, - 0, 39, 182, 266, 183, 7, 274, 49, 268, 6, - 0, 47, 182, 266, 183, 7, 188, 266, 187, 266, + 7, 279, 6, 0, 4, 184, 268, 185, 186, 92, + 186, 4, 7, 279, 6, 0, 4, 186, 93, 7, + 280, 6, 0, 4, 184, 268, 185, 186, 93, 7, + 280, 6, 0, 57, 182, 4, 183, 186, 4, 7, + 268, 6, 0, 57, 182, 4, 183, 186, 4, 7, + 282, 6, 0, 38, 182, 268, 183, 7, 270, 6, + 0, 53, 38, 182, 268, 183, 7, 276, 6, 0, + 69, 38, 276, 7, 188, 268, 187, 268, 187, 268, + 189, 6, 0, 45, 46, 276, 7, 268, 6, 0, + 38, 188, 268, 189, 6, 0, 41, 182, 268, 183, + 7, 276, 6, 0, 43, 182, 268, 183, 7, 276, + 6, 0, 69, 41, 276, 7, 188, 268, 187, 268, + 187, 268, 189, 6, 0, 39, 182, 268, 183, 7, + 276, 6, 0, 40, 182, 268, 183, 7, 276, 6, + 0, 39, 182, 268, 183, 7, 276, 49, 270, 6, + 0, 47, 182, 268, 183, 7, 188, 268, 187, 268, 187, 5, 187, 5, 187, 5, 189, 6, 0, 53, - 41, 182, 266, 183, 7, 274, 6, 0, 41, 64, - 182, 266, 183, 7, 274, 6, 0, 85, 182, 266, - 183, 7, 274, 6, 0, 86, 182, 266, 183, 7, - 274, 6, 0, 87, 182, 266, 183, 7, 274, 91, - 274, 88, 266, 6, 0, 41, 188, 266, 189, 6, - 0, 49, 42, 182, 266, 183, 7, 274, 6, 0, - 147, 42, 182, 266, 183, 7, 188, 266, 187, 274, - 189, 6, 0, 50, 42, 182, 266, 183, 7, 274, - 6, 0, 87, 42, 89, 90, 182, 266, 183, 7, - 272, 91, 188, 274, 187, 274, 189, 88, 188, 266, - 187, 266, 189, 6, 0, 87, 42, 182, 266, 183, - 7, 272, 91, 188, 274, 187, 274, 189, 88, 188, - 266, 187, 266, 189, 6, 0, 53, 42, 182, 266, - 183, 7, 274, 6, 0, 42, 64, 182, 266, 183, - 7, 274, 6, 0, 42, 188, 266, 189, 6, 0, - 52, 44, 182, 266, 183, 7, 274, 6, 0, 44, - 182, 266, 183, 7, 274, 6, 0, 53, 44, 182, - 266, 183, 7, 274, 6, 0, 59, 268, 188, 250, - 189, 0, 58, 188, 268, 187, 268, 187, 266, 189, - 188, 250, 189, 0, 60, 268, 188, 250, 189, 0, - 61, 188, 268, 187, 266, 189, 188, 250, 189, 0, + 41, 182, 268, 183, 7, 276, 6, 0, 41, 64, + 182, 268, 183, 7, 276, 6, 0, 85, 182, 268, + 183, 7, 276, 6, 0, 86, 182, 268, 183, 7, + 276, 6, 0, 87, 182, 268, 183, 7, 276, 91, + 276, 88, 268, 6, 0, 41, 188, 268, 189, 6, + 0, 49, 42, 182, 268, 183, 7, 276, 6, 0, + 147, 42, 182, 268, 183, 7, 188, 268, 187, 276, + 189, 6, 0, 50, 42, 182, 268, 183, 7, 276, + 6, 0, 87, 42, 89, 90, 182, 268, 183, 7, + 274, 91, 188, 276, 187, 276, 189, 88, 188, 268, + 187, 268, 189, 6, 0, 87, 42, 182, 268, 183, + 7, 274, 91, 188, 276, 187, 276, 189, 88, 188, + 268, 187, 268, 189, 6, 0, 53, 42, 182, 268, + 183, 7, 276, 6, 0, 42, 64, 182, 268, 183, + 7, 276, 6, 0, 42, 188, 268, 189, 6, 0, + 52, 44, 182, 268, 183, 7, 276, 6, 0, 44, + 182, 268, 183, 7, 276, 6, 0, 53, 44, 182, + 268, 183, 7, 276, 6, 0, 59, 270, 188, 250, + 189, 0, 58, 188, 270, 187, 270, 187, 268, 189, + 188, 250, 189, 0, 60, 270, 188, 250, 189, 0, + 61, 188, 270, 187, 268, 189, 188, 250, 189, 0, 252, 0, 251, 0, 249, 0, 0, 251, 248, 0, 63, 188, 251, 189, 0, 66, 188, 251, 189, 0, - 66, 4, 184, 266, 185, 6, 0, 66, 103, 6, - 0, 4, 280, 6, 0, 4, 266, 6, 0, 57, + 66, 4, 184, 268, 185, 6, 0, 66, 103, 6, + 0, 4, 282, 6, 0, 4, 268, 6, 0, 57, 182, 4, 183, 186, 4, 6, 0, 99, 6, 0, - 37, 6, 0, 94, 182, 266, 8, 266, 183, 0, - 94, 182, 266, 8, 266, 8, 266, 183, 0, 94, - 4, 95, 188, 266, 8, 266, 189, 0, 94, 4, - 95, 188, 266, 8, 266, 8, 266, 189, 0, 96, + 37, 6, 0, 94, 182, 268, 8, 268, 183, 0, + 94, 182, 268, 8, 268, 8, 268, 183, 0, 94, + 4, 95, 188, 268, 8, 268, 189, 0, 94, 4, + 95, 188, 268, 8, 268, 8, 268, 189, 0, 96, 0, 102, 4, 0, 100, 0, 101, 4, 6, 0, - 97, 182, 266, 183, 0, 98, 0, 62, 38, 188, - 266, 187, 268, 189, 6, 0, 62, 38, 188, 266, - 187, 268, 187, 268, 187, 266, 189, 6, 0, 62, - 41, 188, 266, 187, 268, 189, 6, 0, 62, 41, - 188, 266, 187, 268, 187, 268, 187, 266, 189, 6, - 0, 0, 62, 41, 188, 266, 187, 268, 189, 257, - 188, 261, 189, 6, 0, 0, 62, 41, 188, 266, - 187, 268, 187, 268, 187, 266, 189, 258, 188, 261, - 189, 6, 0, 62, 42, 188, 266, 187, 268, 189, - 6, 0, 62, 42, 188, 266, 187, 268, 187, 268, - 187, 266, 189, 6, 0, 0, 62, 42, 188, 266, - 187, 268, 189, 259, 188, 261, 189, 6, 0, 0, - 62, 42, 188, 266, 187, 268, 187, 268, 187, 266, - 189, 260, 188, 261, 189, 6, 0, 262, 0, 261, - 262, 0, 70, 188, 274, 187, 274, 187, 274, 189, - 6, 0, 70, 188, 274, 187, 274, 189, 6, 0, - 65, 6, 0, 51, 41, 274, 7, 266, 6, 0, - 51, 41, 274, 7, 266, 54, 56, 266, 6, 0, - 51, 41, 274, 7, 266, 54, 55, 266, 6, 0, - 51, 42, 188, 266, 189, 7, 274, 6, 0, 48, - 42, 188, 266, 189, 7, 274, 6, 0, 51, 44, - 188, 266, 189, 7, 274, 6, 0, 65, 42, 274, - 7, 266, 6, 0, 65, 42, 274, 6, 0, 67, - 6, 0, 68, 6, 0, 107, 0, 108, 0, 109, - 0, 110, 0, 111, 0, 267, 0, 182, 266, 183, - 0, 172, 266, 0, 171, 266, 0, 177, 266, 0, - 266, 172, 266, 0, 266, 171, 266, 0, 266, 173, - 266, 0, 266, 174, 266, 0, 266, 175, 266, 0, - 266, 181, 266, 0, 266, 167, 266, 0, 266, 169, - 266, 0, 266, 168, 266, 0, 266, 170, 266, 0, - 266, 164, 266, 0, 266, 165, 266, 0, 266, 163, - 266, 0, 266, 162, 266, 0, 266, 161, 266, 8, - 266, 0, 12, 182, 266, 183, 0, 13, 182, 266, - 183, 0, 14, 182, 266, 183, 0, 15, 182, 266, - 183, 0, 16, 182, 266, 183, 0, 17, 182, 266, - 183, 0, 18, 182, 266, 183, 0, 19, 182, 266, - 183, 0, 20, 182, 266, 183, 0, 22, 182, 266, - 183, 0, 23, 182, 266, 187, 266, 183, 0, 24, - 182, 266, 183, 0, 25, 182, 266, 183, 0, 26, - 182, 266, 183, 0, 27, 182, 266, 183, 0, 28, - 182, 266, 183, 0, 29, 182, 266, 183, 0, 30, - 182, 266, 187, 266, 183, 0, 31, 182, 266, 187, - 266, 183, 0, 32, 182, 266, 187, 266, 183, 0, - 21, 182, 266, 183, 0, 12, 184, 266, 185, 0, - 13, 184, 266, 185, 0, 14, 184, 266, 185, 0, - 15, 184, 266, 185, 0, 16, 184, 266, 185, 0, - 17, 184, 266, 185, 0, 18, 184, 266, 185, 0, - 19, 184, 266, 185, 0, 20, 184, 266, 185, 0, - 22, 184, 266, 185, 0, 23, 184, 266, 187, 266, - 185, 0, 24, 184, 266, 185, 0, 25, 184, 266, - 185, 0, 26, 184, 266, 185, 0, 27, 184, 266, - 185, 0, 28, 184, 266, 185, 0, 29, 184, 266, - 185, 0, 30, 184, 266, 187, 266, 185, 0, 31, - 184, 266, 187, 266, 185, 0, 32, 184, 266, 187, - 266, 185, 0, 21, 184, 266, 185, 0, 3, 0, - 9, 0, 10, 0, 11, 0, 4, 0, 4, 184, - 266, 185, 0, 4, 246, 0, 4, 184, 266, 185, - 246, 0, 4, 186, 4, 0, 4, 184, 266, 185, - 186, 4, 0, 4, 186, 4, 246, 0, 4, 184, - 266, 185, 186, 4, 246, 0, 269, 0, 172, 268, - 0, 171, 268, 0, 268, 172, 268, 0, 268, 171, - 268, 0, 188, 266, 187, 266, 187, 266, 187, 266, - 187, 266, 189, 0, 188, 266, 187, 266, 187, 266, - 187, 266, 189, 0, 188, 266, 187, 266, 187, 266, - 189, 0, 182, 266, 187, 266, 187, 266, 183, 0, - 0, 182, 271, 183, 0, 5, 0, 271, 187, 5, - 0, 0, 188, 273, 189, 0, 182, 273, 183, 0, - 274, 0, 273, 187, 274, 0, 266, 0, 275, 0, - 188, 276, 189, 0, 172, 188, 276, 189, 0, 266, - 8, 266, 0, 266, 8, 266, 8, 266, 0, 4, - 184, 185, 0, 172, 4, 184, 185, 0, 4, 184, - 188, 276, 189, 185, 0, 172, 4, 184, 188, 276, - 189, 185, 0, 266, 0, 275, 0, 276, 187, 266, - 0, 276, 187, 275, 0, 188, 266, 187, 266, 187, - 266, 187, 266, 189, 0, 188, 266, 187, 266, 187, - 266, 189, 0, 4, 0, 4, 186, 92, 186, 4, - 0, 188, 279, 189, 0, 4, 184, 266, 185, 186, - 93, 0, 277, 0, 279, 187, 277, 0, 5, 0, - 35, 182, 280, 187, 280, 183, 0, 36, 182, 280, - 183, 0, 34, 182, 280, 183, 0, 34, 182, 280, - 187, 276, 183, 0, 34, 182, 4, 186, 4, 183, - 0, 34, 182, 4, 184, 266, 185, 186, 4, 183, - 0 + 97, 182, 268, 183, 0, 98, 0, 62, 38, 188, + 268, 187, 270, 189, 6, 0, 62, 38, 188, 268, + 187, 270, 187, 270, 187, 268, 189, 6, 0, 62, + 38, 188, 268, 187, 270, 187, 270, 187, 270, 187, + 268, 189, 6, 0, 62, 41, 188, 268, 187, 270, + 189, 6, 0, 62, 41, 188, 268, 187, 270, 187, + 270, 187, 268, 189, 6, 0, 62, 41, 188, 268, + 187, 270, 187, 270, 187, 270, 187, 268, 189, 6, + 0, 0, 62, 41, 188, 268, 187, 270, 189, 257, + 188, 263, 189, 6, 0, 0, 62, 41, 188, 268, + 187, 270, 187, 270, 187, 268, 189, 258, 188, 263, + 189, 6, 0, 0, 62, 41, 188, 268, 187, 270, + 187, 270, 187, 270, 187, 268, 189, 259, 188, 263, + 189, 6, 0, 62, 42, 188, 268, 187, 270, 189, + 6, 0, 62, 42, 188, 268, 187, 270, 187, 270, + 187, 268, 189, 6, 0, 62, 42, 188, 268, 187, + 270, 187, 270, 187, 270, 187, 268, 189, 6, 0, + 0, 62, 42, 188, 268, 187, 270, 189, 260, 188, + 263, 189, 6, 0, 0, 62, 42, 188, 268, 187, + 270, 187, 270, 187, 268, 189, 261, 188, 263, 189, + 6, 0, 0, 62, 42, 188, 268, 187, 270, 187, + 270, 187, 270, 187, 268, 189, 262, 188, 263, 189, + 6, 0, 264, 0, 263, 264, 0, 70, 188, 276, + 187, 276, 187, 276, 189, 6, 0, 70, 188, 276, + 187, 276, 189, 6, 0, 65, 6, 0, 51, 41, + 276, 7, 268, 6, 0, 51, 41, 276, 7, 268, + 54, 56, 268, 6, 0, 51, 41, 276, 7, 268, + 54, 55, 268, 6, 0, 51, 42, 188, 268, 189, + 7, 276, 6, 0, 48, 42, 188, 268, 189, 7, + 276, 6, 0, 51, 44, 188, 268, 189, 7, 276, + 6, 0, 65, 42, 276, 7, 268, 6, 0, 65, + 42, 276, 6, 0, 67, 6, 0, 68, 6, 0, + 107, 0, 108, 0, 109, 0, 110, 0, 111, 0, + 269, 0, 182, 268, 183, 0, 172, 268, 0, 171, + 268, 0, 177, 268, 0, 268, 172, 268, 0, 268, + 171, 268, 0, 268, 173, 268, 0, 268, 174, 268, + 0, 268, 175, 268, 0, 268, 181, 268, 0, 268, + 167, 268, 0, 268, 169, 268, 0, 268, 168, 268, + 0, 268, 170, 268, 0, 268, 164, 268, 0, 268, + 165, 268, 0, 268, 163, 268, 0, 268, 162, 268, + 0, 268, 161, 268, 8, 268, 0, 12, 182, 268, + 183, 0, 13, 182, 268, 183, 0, 14, 182, 268, + 183, 0, 15, 182, 268, 183, 0, 16, 182, 268, + 183, 0, 17, 182, 268, 183, 0, 18, 182, 268, + 183, 0, 19, 182, 268, 183, 0, 20, 182, 268, + 183, 0, 22, 182, 268, 183, 0, 23, 182, 268, + 187, 268, 183, 0, 24, 182, 268, 183, 0, 25, + 182, 268, 183, 0, 26, 182, 268, 183, 0, 27, + 182, 268, 183, 0, 28, 182, 268, 183, 0, 29, + 182, 268, 183, 0, 30, 182, 268, 187, 268, 183, + 0, 31, 182, 268, 187, 268, 183, 0, 32, 182, + 268, 187, 268, 183, 0, 21, 182, 268, 183, 0, + 12, 184, 268, 185, 0, 13, 184, 268, 185, 0, + 14, 184, 268, 185, 0, 15, 184, 268, 185, 0, + 16, 184, 268, 185, 0, 17, 184, 268, 185, 0, + 18, 184, 268, 185, 0, 19, 184, 268, 185, 0, + 20, 184, 268, 185, 0, 22, 184, 268, 185, 0, + 23, 184, 268, 187, 268, 185, 0, 24, 184, 268, + 185, 0, 25, 184, 268, 185, 0, 26, 184, 268, + 185, 0, 27, 184, 268, 185, 0, 28, 184, 268, + 185, 0, 29, 184, 268, 185, 0, 30, 184, 268, + 187, 268, 185, 0, 31, 184, 268, 187, 268, 185, + 0, 32, 184, 268, 187, 268, 185, 0, 21, 184, + 268, 185, 0, 3, 0, 9, 0, 10, 0, 11, + 0, 4, 0, 4, 184, 268, 185, 0, 4, 246, + 0, 4, 184, 268, 185, 246, 0, 4, 186, 4, + 0, 4, 184, 268, 185, 186, 4, 0, 4, 186, + 4, 246, 0, 4, 184, 268, 185, 186, 4, 246, + 0, 271, 0, 172, 270, 0, 171, 270, 0, 270, + 172, 270, 0, 270, 171, 270, 0, 188, 268, 187, + 268, 187, 268, 187, 268, 187, 268, 189, 0, 188, + 268, 187, 268, 187, 268, 187, 268, 189, 0, 188, + 268, 187, 268, 187, 268, 189, 0, 182, 268, 187, + 268, 187, 268, 183, 0, 0, 182, 273, 183, 0, + 5, 0, 273, 187, 5, 0, 0, 188, 275, 189, + 0, 182, 275, 183, 0, 276, 0, 275, 187, 276, + 0, 268, 0, 277, 0, 188, 278, 189, 0, 172, + 188, 278, 189, 0, 268, 8, 268, 0, 268, 8, + 268, 8, 268, 0, 4, 184, 185, 0, 172, 4, + 184, 185, 0, 4, 184, 188, 278, 189, 185, 0, + 172, 4, 184, 188, 278, 189, 185, 0, 268, 0, + 277, 0, 278, 187, 268, 0, 278, 187, 277, 0, + 188, 268, 187, 268, 187, 268, 187, 268, 189, 0, + 188, 268, 187, 268, 187, 268, 189, 0, 4, 0, + 4, 186, 92, 186, 4, 0, 188, 281, 189, 0, + 4, 184, 268, 185, 186, 93, 0, 279, 0, 281, + 187, 279, 0, 5, 0, 35, 182, 282, 187, 282, + 183, 0, 36, 182, 282, 183, 0, 34, 182, 282, + 183, 0, 34, 182, 282, 187, 278, 183, 0, 34, + 182, 4, 186, 4, 183, 0, 34, 182, 4, 184, + 268, 185, 186, 4, 183, 0 }; #endif @@ -629,22 +638,23 @@ static const short yyrline[] = { 0, 1396, 1402, 1414, 1420, 1426, 1438, 1444, 1449, 1454, 1461, 1463, 1464, 1467, 1472, 1483, 1501, 1509, 1514, 1525, 1593, 1613, 1620, 1624, 1644, 1657, 1668, 1690, 1712, 1733, 1739, - 1744, 1749, 1753, 1763, 1770, 1779, 1783, 1787, 1792, 1796, - 1801, 1808, 1812, 1816, 1821, 1826, 1832, 1839, 1843, 1848, - 1875, 1899, 1909, 1928, 1946, 1964, 1986, 2007, 2028, 2042, - 2063, 2068, 2079, 2081, 2082, 2083, 2084, 2087, 2089, 2090, - 2091, 2092, 2093, 2094, 2095, 2096, 2103, 2104, 2105, 2106, - 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, - 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, - 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2136, 2137, - 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, - 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2161, - 2166, 2167, 2168, 2172, 2183, 2200, 2211, 2230, 2246, 2262, - 2278, 2295, 2300, 2304, 2308, 2312, 2317, 2322, 2326, 2330, - 2336, 2340, 2345, 2349, 2354, 2358, 2362, 2368, 2374, 2381, - 2387, 2391, 2395, 2405, 2412, 2423, 2437, 2453, 2473, 2497, - 2503, 2507, 2511, 2522, 2527, 2538, 2543, 2561, 2566, 2579, - 2585, 2591, 2596, 2604, 2617, 2621, 2639, 2653 + 1744, 1749, 1753, 1763, 1772, 1779, 1788, 1793, 1798, 1803, + 1808, 1813, 1818, 1823, 1828, 1836, 1841, 1846, 1851, 1856, + 1862, 1868, 1874, 1880, 1888, 1892, 1897, 1924, 1948, 1958, + 1977, 1995, 2013, 2035, 2056, 2077, 2091, 2112, 2117, 2128, + 2130, 2131, 2132, 2133, 2136, 2138, 2139, 2140, 2141, 2142, + 2143, 2144, 2145, 2152, 2153, 2154, 2155, 2156, 2157, 2158, + 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, + 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, + 2179, 2180, 2181, 2182, 2183, 2185, 2186, 2187, 2188, 2189, + 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, + 2200, 2201, 2202, 2203, 2204, 2205, 2210, 2215, 2216, 2217, + 2221, 2232, 2249, 2260, 2279, 2295, 2311, 2327, 2344, 2349, + 2353, 2357, 2361, 2366, 2371, 2375, 2379, 2385, 2389, 2394, + 2398, 2403, 2407, 2411, 2417, 2423, 2430, 2436, 2440, 2444, + 2454, 2461, 2472, 2486, 2502, 2522, 2546, 2552, 2556, 2560, + 2571, 2576, 2587, 2592, 2610, 2615, 2628, 2634, 2640, 2645, + 2653, 2666, 2670, 2688, 2702 }; #endif @@ -689,11 +699,11 @@ static const char * const yytname[] = { "$","error","$undefined.","tDOUBLE", "VectorTetrahedron","@11","TensorTetrahedronValues","TensorTetrahedron","@12", "Text2DValues","Text2D","@13","Text3DValues","Text3D","@14","NumericAffectation", "NumericIncrement","Affectation","Shape","Transform","MultipleShape","ListOfShapes", -"Duplicata","Delete","Command","Loop","Extrude","@15","@16","@17","@18","ExtrudeParameters", -"ExtrudeParameter","Transfini","Coherence","BoolExpr","FExpr","FExpr_Single", -"VExpr","VExpr_Single","ListOfStrings","RecursiveListOfStrings","ListOfListOfDouble", -"RecursiveListOfListOfDouble","ListOfDouble","FExpr_Multi","RecursiveListOfDouble", -"ColorExpr","ListOfColor","RecursiveListOfColor","StringExpr", NULL +"Duplicata","Delete","Command","Loop","Extrude","@15","@16","@17","@18","@19", +"@20","ExtrudeParameters","ExtrudeParameter","Transfini","Coherence","BoolExpr", +"FExpr","FExpr_Single","VExpr","VExpr_Single","ListOfStrings","RecursiveListOfStrings", +"ListOfListOfDouble","RecursiveListOfListOfDouble","ListOfDouble","FExpr_Multi", +"RecursiveListOfDouble","ColorExpr","ListOfColor","RecursiveListOfColor","StringExpr", NULL }; #endif @@ -720,22 +730,23 @@ static const short yyr1[] = { 0, 248, 248, 248, 248, 248, 249, 249, 249, 249, 250, 250, 250, 251, 251, 252, 253, 253, 253, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 256, 256, 256, 256, 257, 256, 258, - 256, 256, 256, 259, 256, 260, 256, 261, 261, 262, - 262, 262, 263, 263, 263, 263, 263, 263, 263, 263, - 264, 264, 265, 265, 265, 265, 265, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 268, 268, 268, 268, 268, 269, 269, 269, 269, - 270, 270, 271, 271, 272, 272, 272, 273, 273, 274, - 274, 274, 274, 275, 275, 275, 275, 275, 275, 276, - 276, 276, 276, 277, 277, 277, 277, 278, 278, 279, - 279, 280, 280, 280, 280, 280, 280, 280 + 255, 255, 255, 256, 256, 256, 256, 256, 256, 257, + 256, 258, 256, 259, 256, 256, 256, 256, 260, 256, + 261, 256, 262, 256, 263, 263, 264, 264, 264, 265, + 265, 265, 265, 265, 265, 265, 265, 266, 266, 267, + 267, 267, 267, 267, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 270, 270, + 270, 270, 270, 271, 271, 271, 271, 272, 272, 273, + 273, 274, 274, 274, 275, 275, 276, 276, 276, 276, + 277, 277, 277, 277, 277, 277, 278, 278, 278, 278, + 279, 279, 279, 279, 280, 280, 281, 281, 282, 282, + 282, 282, 282, 282, 282 }; static const short yyr2[] = { 0, @@ -761,22 +772,23 @@ static const short yyr2[] = { 0, 8, 5, 8, 7, 8, 5, 11, 5, 9, 1, 1, 1, 0, 2, 4, 4, 6, 3, 3, 3, 7, 2, 2, 6, 8, 8, 10, 1, 2, 1, - 3, 4, 1, 8, 12, 8, 12, 0, 12, 0, - 16, 8, 12, 0, 12, 0, 16, 1, 2, 9, - 7, 2, 6, 9, 9, 8, 8, 8, 6, 4, - 2, 2, 1, 1, 1, 1, 1, 1, 3, 2, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 5, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, - 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, - 4, 4, 4, 4, 4, 6, 6, 6, 4, 1, - 1, 1, 1, 1, 4, 2, 5, 3, 6, 4, - 7, 1, 2, 2, 3, 3, 11, 9, 7, 7, - 0, 3, 1, 3, 0, 3, 3, 1, 3, 1, - 1, 3, 4, 3, 5, 3, 4, 6, 7, 1, - 1, 3, 3, 9, 7, 1, 5, 3, 6, 1, - 3, 1, 6, 4, 4, 6, 6, 9 + 3, 4, 1, 8, 12, 14, 8, 12, 14, 0, + 12, 0, 16, 0, 18, 8, 12, 14, 0, 12, + 0, 16, 0, 18, 1, 2, 9, 7, 2, 6, + 9, 9, 8, 8, 8, 6, 4, 2, 2, 1, + 1, 1, 1, 1, 1, 3, 2, 2, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, + 4, 6, 6, 6, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, + 4, 4, 6, 6, 6, 4, 1, 1, 1, 1, + 1, 4, 2, 5, 3, 6, 4, 7, 1, 2, + 2, 3, 3, 11, 9, 7, 7, 0, 3, 1, + 3, 0, 3, 3, 1, 3, 1, 1, 3, 4, + 3, 5, 3, 4, 6, 7, 1, 1, 3, 3, + 9, 7, 1, 5, 3, 6, 1, 3, 1, 6, + 4, 4, 6, 6, 9 }; static const short yydefact[] = { 0, @@ -788,869 +800,871 @@ static const short yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 218, 0, 223, 0, 220, 0, 0, 0, 54, 56, 55, 57, 58, 59, 60, 61, 66, 65, 62, 63, 64, 5, 0, 0, - 0, 15, 16, 18, 17, 19, 341, 341, 0, 320, - 324, 372, 142, 321, 322, 323, 0, 0, 0, 0, + 0, 15, 16, 18, 17, 19, 348, 348, 0, 327, + 331, 379, 142, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 145, 146, 0, 0, 0, 147, 148, 0, - 0, 0, 0, 0, 0, 258, 0, 0, 213, 0, + 0, 0, 0, 0, 0, 265, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 332, 0, 0, 0, 0, 0, 203, 0, 0, 0, - 203, 251, 252, 0, 0, 0, 0, 0, 0, 0, + 339, 0, 0, 0, 0, 0, 203, 0, 0, 0, + 203, 258, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 219, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 0, 71, 0, 0, 0, + 0, 0, 0, 0, 333, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 261, 260, 262, 0, 0, 0, 0, 0, + 0, 0, 268, 267, 269, 0, 0, 0, 0, 0, 0, 0, 0, 153, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 324, 0, 0, 350, 0, 351, 0, + 0, 0, 0, 331, 0, 0, 357, 0, 358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 333, 0, 0, 0, 0, 203, + 0, 0, 0, 341, 340, 0, 0, 0, 0, 203, 203, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 343, 0, 0, 0, 0, 0, 328, + 0, 0, 0, 350, 0, 0, 0, 0, 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 372, 0, 0, 0, 259, - 0, 0, 360, 361, 0, 0, 142, 0, 0, 0, - 0, 149, 0, 276, 275, 273, 274, 269, 271, 270, - 272, 264, 263, 265, 266, 267, 268, 0, 0, 0, + 0, 0, 0, 0, 0, 379, 0, 0, 0, 266, + 0, 0, 367, 368, 0, 0, 142, 0, 0, 0, + 0, 149, 0, 283, 282, 280, 281, 276, 278, 277, + 279, 271, 270, 272, 273, 274, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 336, 335, 202, 0, 201, 200, 0, 0, - 0, 0, 0, 205, 204, 250, 0, 0, 206, 0, + 0, 0, 343, 342, 202, 0, 201, 200, 0, 0, + 0, 0, 0, 205, 204, 257, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 342, 0, 0, 21, 0, 325, 330, 71, 0, + 0, 349, 0, 0, 21, 0, 332, 337, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 278, 299, - 279, 300, 280, 301, 281, 302, 282, 303, 283, 304, - 284, 305, 285, 306, 286, 307, 298, 319, 287, 308, - 0, 0, 289, 310, 290, 311, 291, 312, 292, 313, - 293, 314, 294, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 375, 0, 0, 374, 0, 0, 0, 0, + 78, 79, 80, 81, 82, 83, 84, 85, 285, 306, + 286, 307, 287, 308, 288, 309, 289, 310, 290, 311, + 291, 312, 292, 313, 293, 314, 305, 326, 294, 315, + 0, 0, 296, 317, 297, 318, 298, 319, 299, 320, + 300, 321, 301, 322, 0, 0, 0, 0, 0, 0, + 0, 0, 382, 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 67, 0, 0, 171, 0, 0, 0, 0, 184, 0, - 192, 0, 0, 356, 0, 0, 0, 352, 354, 0, + 192, 0, 0, 363, 0, 0, 0, 359, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 344, 0, 341, 0, 327, + 0, 0, 0, 0, 0, 351, 0, 348, 0, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 152, 362, - 363, 0, 0, 0, 0, 0, 154, 155, 157, 0, - 0, 366, 0, 370, 0, 163, 277, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 357, 0, 353, - 0, 170, 0, 0, 0, 0, 243, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 369, + 370, 0, 0, 0, 0, 0, 154, 155, 157, 0, + 0, 373, 0, 377, 0, 163, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 364, 0, 360, + 0, 170, 0, 0, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 249, 207, 0, 0, 0, 0, 0, - 345, 0, 0, 0, 214, 0, 0, 0, 0, 0, + 0, 0, 0, 256, 207, 0, 0, 0, 0, 0, + 352, 0, 0, 0, 214, 0, 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, 254, 255, 256, 257, 0, 0, 0, 0, 0, - 0, 0, 20, 0, 329, 0, 0, 0, 0, 0, + 260, 261, 262, 263, 264, 0, 0, 0, 0, 0, + 0, 0, 20, 0, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 288, 309, 295, 316, 296, 317, 297, 318, 0, 377, - 376, 373, 0, 142, 0, 0, 0, 0, 150, 0, - 0, 0, 0, 0, 368, 68, 167, 175, 0, 176, - 0, 172, 0, 173, 194, 0, 0, 355, 0, 0, + 295, 316, 302, 323, 303, 324, 304, 325, 0, 384, + 383, 380, 0, 142, 0, 0, 0, 0, 150, 0, + 0, 0, 0, 0, 375, 68, 167, 175, 0, 176, + 0, 172, 0, 173, 194, 0, 0, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 203, 0, 0, 0, - 228, 0, 234, 0, 0, 181, 182, 0, 0, 0, + 230, 0, 239, 0, 0, 181, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 341, 331, 70, 0, + 0, 0, 0, 0, 0, 0, 348, 338, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, - 161, 0, 0, 0, 371, 0, 180, 191, 358, 0, - 0, 247, 185, 187, 0, 0, 246, 248, 193, 168, - 179, 190, 195, 0, 0, 0, 340, 0, 339, 0, - 0, 224, 0, 226, 0, 0, 232, 0, 0, 0, - 345, 0, 348, 0, 0, 0, 0, 216, 215, 0, + 161, 0, 0, 0, 378, 0, 180, 191, 365, 0, + 0, 254, 185, 187, 0, 0, 253, 255, 193, 168, + 179, 190, 195, 0, 0, 0, 347, 0, 346, 0, + 0, 224, 0, 227, 0, 0, 236, 0, 0, 0, + 352, 0, 355, 0, 0, 0, 0, 216, 215, 0, 0, 0, 0, 0, 23, 0, 32, 0, 36, 0, 30, 0, 0, 35, 0, 40, 38, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 156, 158, - 0, 164, 0, 0, 0, 177, 359, 0, 245, 244, + 0, 164, 0, 0, 0, 177, 366, 0, 252, 251, 165, 166, 203, 0, 199, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 346, 0, 0, 0, 0, - 0, 0, 345, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 354, 0, 353, 0, 0, 0, 0, + 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 378, 0, 369, - 367, 0, 0, 0, 0, 338, 0, 0, 0, 0, - 0, 238, 0, 0, 0, 0, 0, 349, 0, 0, - 217, 0, 0, 37, 0, 0, 0, 0, 27, 0, - 33, 0, 39, 28, 41, 0, 44, 0, 48, 49, - 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, - 0, 0, 197, 0, 0, 230, 242, 0, 0, 239, - 236, 0, 0, 0, 0, 0, 183, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 385, 0, 376, + 374, 0, 0, 0, 0, 345, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 245, 0, 0, 0, + 0, 0, 0, 356, 0, 0, 217, 0, 0, 37, + 0, 0, 0, 0, 27, 0, 33, 0, 39, 28, + 41, 0, 44, 0, 48, 49, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 162, 0, 0, 197, 0, + 0, 0, 0, 232, 0, 249, 0, 0, 246, 241, + 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 92, 96, 136, 0, 0, 365, 0, 337, 225, - 227, 0, 0, 229, 233, 0, 235, 169, 174, 0, - 0, 186, 0, 0, 0, 0, 0, 31, 34, 42, - 0, 43, 50, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 92, 96, 136, 0, 0, 372, 0, 344, 225, + 0, 228, 0, 0, 0, 231, 237, 0, 0, 240, + 169, 174, 0, 0, 186, 0, 0, 0, 0, 0, + 31, 34, 42, 0, 43, 50, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 234, 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 140, 364, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 86, 0, 90, 0, 94, 0, 134, 0, 0, + 0, 0, 140, 371, 0, 226, 0, 229, 0, 0, + 0, 238, 0, 0, 0, 0, 0, 0, 26, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 86, 0, 90, 0, 94, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 231, 0, 241, 237, 0, 0, 0, 0, 0, 46, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 89, 91, 93, 95, 97, 135, 137, 0, 138, - 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 100, 104, 108, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 139, 141, 0, 0, 8, 0, 0, + 0, 0, 0, 233, 0, 0, 248, 242, 0, 0, + 0, 0, 0, 0, 46, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 87, 89, 91, 93, 95, + 97, 135, 137, 0, 138, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 98, 0, 102, 0, 106, 0, 0, 0, 0, 0, + 100, 104, 108, 0, 0, 235, 247, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 0, 24, 0, 0, 0, 0, 0, 0, 99, - 101, 103, 105, 107, 109, 0, 0, 0, 0, 112, - 116, 120, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 139, 141, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, + 0, 102, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 0, 24, 0, 0, 0, 0, 0, 0, 99, 101, + 103, 105, 107, 109, 0, 0, 0, 0, 112, 116, + 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 110, 0, 114, 0, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 113, 115, 117, 119, 121, 0, 124, 128, 132, - 25, 0, 0, 0, 0, 0, 0, 0, 122, 0, - 126, 0, 130, 0, 0, 0, 0, 0, 0, 123, - 125, 127, 129, 131, 133, 0, 0, 0 + 110, 0, 114, 0, 118, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, + 113, 115, 117, 119, 121, 0, 124, 128, 132, 25, + 0, 0, 0, 0, 0, 0, 0, 122, 0, 126, + 0, 130, 0, 0, 0, 0, 0, 0, 123, 125, + 127, 129, 131, 133, 0, 0, 0 }; -static const short yydefgoto[] = { 1666, +static const short yydefgoto[] = { 1695, 80, 5, 6, 19, 20, 21, 22, 7, 65, 66, - 67, 412, 1421, 605, 1365, 1423, 606, 1366, 1425, 607, - 1367, 1550, 608, 1521, 1552, 609, 1522, 1554, 610, 1523, - 1611, 611, 1597, 1613, 612, 1598, 1615, 613, 1599, 1648, - 614, 1642, 1650, 615, 1643, 1652, 616, 1644, 1427, 617, - 1368, 1489, 618, 1429, 133, 235, 68, 535, 525, 526, - 527, 528, 72, 73, 74, 75, 1085, 1332, 1088, 1336, - 1231, 1232, 76, 77, 896, 327, 136, 170, 171, 230, - 405, 991, 1092, 1093, 329, 465, 814, 679, 815, 137 + 67, 412, 1442, 605, 1378, 1444, 606, 1379, 1446, 607, + 1380, 1579, 608, 1550, 1581, 609, 1551, 1583, 610, 1552, + 1640, 611, 1626, 1642, 612, 1627, 1644, 613, 1628, 1677, + 614, 1671, 1679, 615, 1672, 1681, 616, 1673, 1448, 617, + 1381, 1514, 618, 1450, 133, 235, 68, 535, 525, 526, + 527, 528, 72, 73, 74, 75, 1085, 1343, 1419, 1088, + 1348, 1423, 1236, 1237, 76, 77, 896, 327, 136, 344, + 171, 230, 405, 991, 1092, 1093, 329, 465, 814, 679, + 815, 137 }; -static const short yypact[] = { 2081, - 80,-32768,-32768, -75,-32768, 285, 2198,-32768, 11, 94, - 103, 110, 149, 156, 161, -61, -10, -4,-32768,-32768, --32768,-32768, 1668, 7, 255, -77, 87, 117, -17, -13, - 145, 154, 302, 171, 317, 348, 357, 226, 329, 115, - 224, 276, -30, -30, 293, 417, 320, 470, 9, 511, - 523, 90, 323, 360, -1, 78,-32768, 390,-32768, 574, --32768, 595, 617, 589,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 640, 11, - 2221,-32768,-32768,-32768,-32768,-32768, 474, 474, 655,-32768, - 114, 4,-32768,-32768,-32768,-32768, -91, 107, 234, 235, - 262, 265, 305, 318, 319, 322, 327, 331, 338, 339, - 359, 389, 408, 409, 412, 416, 438, 488, 489, 500, --32768,-32768,-32768,-32768, 1760, 1760, 1760,-32768,-32768, 1760, - 8, 40, 1760, 675, 564,-32768, 683, 685,-32768, 1760, - 1760, 1760, 1760, 514, 1760, 1760, 518, 1760, 1760, 1760, - 1432, 1760, 513, 530, 535, 1432, 516, 517, 541, 548, - 565, 593, 598, 773, -30, -30, -30, 1760, 1760, -100, --32768, -82, -30, 596, 599, 601,-32768, 1432, 602, 777, --32768,-32768,-32768, 1432, 1432, 1760, 1760, -43, 1760, 696, - 1760, 1760,-32768, 786,-32768, 611,-32768, 11, 612, 613, - 614, 615, 618, 619, 620, 621, 622, 623, 625, 627, - 629, 630, 631, 635, 636, 637, 638, 639, 641, 645, - 647, 648, 649, 650, 651, 652, 653, 654, 794, 660, - 656, 670, 1760, 818,-32768, -30,-32768, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 61, - 79, 79, 657, 657, 657, 1990, 830, 1852, 872, 283, - 672, 852, 681,-32768,-32768, 1760, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, --32768, 151, 2107, 2302, 5777, 5800, 1760, 5823, 2325, 1760, - 2348, 5846, 5869, 191, 1633, 1852, 966, 853,-32768, 5892, - 1760, 1760, 1760, 854, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 680, -11,-32768,-32768, 2716, 2737, -30, -30, 342, - 342, 124, 1760, 1760, 1760, 729, 143, 1760,-32768, 2023, - 857, 858, 5915, 5938, 776, 1760, 5961, 682, 1808, 5984, --32768, 1760, 715, 864, 881, 883, 884, 885, 887, 888, - 889, 895, 905, 906, 908, 909, 911, 912, 914, 916, - 919, 921, 926, 927, 928, 929, 787, 930, 931, 932, - 933, 936, 937,-32768, 159, 939, 940, 942, 5152, 21, - -37, 1276, 6007, 5177, 6030, 5202, 6053, 5227, 6076, 5252, - 6099, 5277, 6122, 5302, 6145, 5327, 6168, 5352, 6191, 5377, - 6214, 5402, 6237, 5427, 2758, 2779, 6260, 5452, 6283, 5477, - 6306, 5502, 6329, 5527, 6352, 5552, 6375, 5577, 2800, 2821, - 2842, 2863, 2884, 2905, 249,-32768, 164, 758, 765,-32768, - 1432, 1935, 966,-32768, 278, 147, 79, 1760, 946, 950, - 70,-32768, 1823, 363, 494, 256, 256, 223, 223, 223, - 223, 296, 296, 657, 657, 657, 657, 949, 1852, 952, - 954, 956, 959, 6398, 960, 963, 6421, 964, 969, 970, - 536, 205, 1852, 287, 1760, 1760, 971, 2371, 6444, 6467, - 1760, 2394, 2417, 6490, 6513, 6536, 6559, 6582, 770, -30, - 1760, 1760,-32768,-32768,-32768, 769, 2263,-32768, 782, 1760, - 2926, 2947, 2968,-32768,-32768,-32768, 1760, 5602,-32768, 785, - 791, 973, 974, 802, 6605, 979, 1760, 1760,-32768, 6628, - 833, 803, 804, 811, 813, 814, 815, 817, 819, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 845, - 862, 863, 865, 867, 869, 871, 873, 875, 876, 877, - 878,-32768, 1000, 868,-32768, 879, 306,-32768,-32768, 886, - 893, 917, 918, 923, 924, 925, 968, 972, 975, 976, - 977, 978, 980, 1061,-32768,-32768,-32768,-32768,-32768,-32768, +static const short yypact[] = { 2200, + 33,-32768,-32768, -92,-32768, 25, 2380,-32768, 14, 62, + 100, 103, 110, 115, 207, 81, 113, 122,-32768,-32768, +-32768,-32768, 1806, 129, 313, -159, 177, 196, -26, -31, + 256, 265, 161, 274, 310, 341, 385, 464, 423, 170, + 297, 299, 117, 117, 303, 339, 304, 454, 9, 510, + 511, 39, 322, 338, -24, 5,-32768, 355,-32768, 517, +-32768, 541, 563, 526,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 298, 14, + 2403,-32768,-32768,-32768,-32768,-32768, 457, 457, 605,-32768, + 80, 7,-32768,-32768,-32768,-32768, -83, 1, 12, 78, + 157, 302, 327, 331, 345, 354, 373, 374, 377, 381, + 382, 403, 404, 407, 425, 429, 432, 458, 461, 462, +-32768,-32768,-32768,-32768, 1990, 1990, 1990,-32768,-32768, 1990, + 708, 22, 1990, 645, 409,-32768, 647, 653,-32768, 1990, + 1990, 1990, 1990, 477, 1990, 1990, 493, 1990, 1990, 1990, + 1682, 1990, 494, 501, 518, 1682, 516, 519, 531, 534, + 566, 586, 597, 704, 117, 117, 117, 1990, 1990, 119, +-32768, 152, 117, 593, 594, 596,-32768, 1682, 502, 780, +-32768,-32768,-32768, 1682, 1682, 1990, 1990, -69, 1990, 692, + 1990, 1990,-32768, 783,-32768, 614,-32768, 14, 625, 627, + 631, 632, 633, 634, 636, 638, 639, 640, 641, 648, + 649, 650, 651, 652, 654, 655, 656, 657, 666, 691, + 693, 694, 695, 700, 701, 702, 706, 707, 807, 642, + 644, 687, 1990, 831,-32768, 117,-32768, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 40, + 36, 36, 705, 705, 705, 2109, 884, 2020, 5239, 315, + 709, 885, 431,-32768,-32768, 1990, 1990, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, +-32768, -134, 5889, 763, 5912, 5935, 1990, 5958, 2045, 1990, + 2226, 5981, 6004, 114, 1712, 2020, 697, 887,-32768, 6027, + 1990, 1990, 1990, 895, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 732, 198,-32768,-32768, 2803, 2824, 117, 117, 472, + 472, 201, 1990, 1990, 1990, 2267, 153, 1990,-32768, 2317, + 911, 912, 6050, 6073, 832, 1990, 6096, 735, 1506, 6119, +-32768, 1990, 786, 937, 940, 941, 942, 943, 944, 946, + 948, 949, 953, 955, 958, 959, 960, 961, 962, 963, + 964, 965, 971, 972, 973, 976, 842, 978, 979, 982, + 984, 987, 986,-32768, -59, 990, 991, 993, 5264, 90, + 165, 13, 6142, 5289, 6165, 5314, 6188, 5339, 6211, 5364, + 6234, 5389, 6257, 5414, 6280, 5439, 6303, 5464, 6326, 5489, + 6349, 5514, 6372, 5539, 2845, 2866, 6395, 5564, 6418, 5589, + 6441, 5614, 6464, 5639, 6487, 5664, 6510, 5689, 2887, 2908, + 2929, 2950, 2971, 2992, 436,-32768, 138, 809, 817,-32768, + 1682, 2050, 697,-32768, 428, 264, 36, 1990, 995, 998, + 10,-32768, 1949, 226, 496, 854, 854, -39, -39, -39, + -39, 295, 295, 705, 705, 705, 705, 999, 2020, 997, + 1000, 1023, 1025, 6533, 1026, 1028, 6556, 1030, 1032, 1033, + 1341, 311, 2020, 434, 1990, 1990, 1034, 2389, 6579, 6602, + 1990, 2412, 2435, 6625, 6648, 6671, 6694, 6717, 851, 117, + 1990, 1990,-32768,-32768,-32768, 853, 1511,-32768, 856, 1990, + 3013, 3034, 3055,-32768,-32768,-32768, 1990, 5714,-32768, 855, + 858, 1040, 1041, 867, 6740, 1044, 1990, 1990,-32768, 6763, + 899, 869, 870, 871, 872, 873, 874, 878, 879, 890, + 891, 892, 893, 902, 914, 915, 916, 918, 919, 920, + 921, 924, 930, 947, 950, 952, 954, 966, 967, 969, + 970,-32768, 1049, 927,-32768, 975, -7,-32768,-32768, 917, + 945, 956, 968, 983, 985, 988, 992, 996, 1013, 1014, + 1015, 1016, 1018, 1122,-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, - 1760, 1760,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1065,-32768, 1852, 79,-32768, 1064, 1852, 903, 55, - 1760, 1092, 1098, 710,-32768, 1101, 958, 71, 1103, 1760, --32768, 251, -30,-32768, 1432, 1432, 1104, 1432,-32768, 1138, --32768, 1432, 1432,-32768, 1852, 1310, 437,-32768, 1845, 734, - 965, 1144, 1145, 1149, 414, 1154, 1157, 1158, 1159, 1160, - 1161, 1162, 1106, 150, 2989, 3010,-32768,-32768, 2440, -30, - -30, -30, 922, 1166, 1760, 1760, 1432, 1432, 1760, 1167, - 1432, 1877, 442, 1168, 1023, 1174, 1760, 1760, -30, 1192, - 1193, 1024, 1195, 1197, 1432, 1432, 1198, -30, 1205, 1216, - 1432, 1432, 1217, 1218, 1219, 1221, 1222, 1432, 386, 1432, - 1223, 1225, 1226, 1224, 1229,-32768, 1228, 474, 1231,-32768, - 1838, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 1760,-32768, 6651, 5627, 6674, 5652, - 6697, 5677, 6720, 5702, 5727, 1054, 292, 1055,-32768, 966, --32768, 45, 294, 1053, 1233, 951,-32768,-32768,-32768, 71, - 1760, 1056, 1760,-32768, 440,-32768, 2052, 1235, 37, 51, - 1238, 1432, 1239, 1432, 1240, 1241, 441,-32768, 1852,-32768, - 1760,-32768, 1760, 1432, 1432, 1432,-32768, 546, 1432, 1432, - 1432, 1432, 1432, 1432, 1432, 633, 1760, 1760, 1760, 1060, - -111, -108, -102,-32768,-32768, 3031, 3052, 1243, 1244, 6743, - -58, 1163, 1760, 1760,-32768, 1063, 11, 1066, 3073, 3094, - 23, 1069, 1079, 1085, 1090, 1087, 1093, 1088, 1091, 169, - 1094, 1097, 1099, 1100, 1111, 1113, 1114, 1117, 1118, 1102, --32768,-32768,-32768,-32768,-32768, 1119, 1120, 1121, 1122, 1123, - 1105, 1124,-32768, 1125, 21, 1246, 3115, 3136, 3157, 3178, - 3199, 3220, 3241, 3262, 3283, 3304, 3325, 3346, 3367, 3388, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1129,-32768, --32768,-32768, 1432, 79, 1760, 1273, 1279, 70,-32768, 1278, - 5752, 1194, 3409, 71,-32768,-32768,-32768,-32768, -30,-32768, - 1311,-32768, 1312,-32768,-32768, 1131, 457, 2052, 3430, 1338, - 1339, 1340, 1760, 1760, 1372, 1397, 1398, 1400, 1401, 1403, - 1404,-32768, 1726, 2463, 6766, 2207, 342, -30, 1405, -30, - 1409, -30, 1410, 1760, 1760,-32768,-32768, 1411, 1432, 1432, - 1343, 1432, 193, 6789, 1760, 11, 1426, 1760, 1432, 1425, - 1435, 1433, 1267, 1460, 386, 1462, 1466, 1760, 1467, 1469, - 1468, 1477, 1481, 386, 1760, 1760, 1760, 1432, 1479, 1483, - 386, 1760, 1485, 1486, 1484, 1760, 474,-32768,-32768, 1760, - 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1487, 1488, 1490, 1042,-32768, 1492, 1491, --32768, 1307, 1314, 1760,-32768, 92,-32768,-32768,-32768, 1316, - 1760,-32768,-32768,-32768, 1096, 1212,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1227, 1496, 1317,-32768, 1760,-32768, 1315, - 152,-32768, 157,-32768, 1318, 200,-32768, 1319, 3451, 3472, - -58, 303,-32768, 460, 1329, 1430, 1760,-32768,-32768, 3493, - 11, 1336, 3514, 1333,-32768, 1334,-32768, 1335,-32768, 1341, --32768, 1342, 6812,-32768, 1344,-32768,-32768, 1345, 1347, 6835, - 3535, 6858, 1348,-32768, 1351, 1360, 3556, 1358, 1364,-32768, - 3577, 1361, 3598, 3619, 3640, 3661, 3682, 3703, 3724, 3745, - 3766, 3787, 3808, 3829, 3850, 3871, 1366,-32768,-32768,-32768, - 71,-32768, 1434, 1519, 3892,-32768,-32768, 3913,-32768,-32768, --32768,-32768, 342, 2244,-32768, 1760, 1760, 3, 1760, 3, - 1760, 1760, 1461,-32768, 1432,-32768, 1432, 1760, 2486, 1432, - 1376, 1545, -58, 386, 1550, 1760, 1548, 386, 1549, 1553, - 1551, 1552, 1554, 1760, 1555, 1432, 1556, 1557, 1760, 1564, - 1562, 1760, 1565, 1760, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 1760, 1760, 1760,-32768, 1563,-32768, --32768, 1760, 1566, 1370, 1760,-32768, 2509, 2532, 1567, 1384, - -16,-32768, 2555, -15, 2578, 2601, 1386,-32768, 1388, 1544, --32768, 1387, 11,-32768, 1390, 1399, 1402, 3934,-32768, 1407, --32768, 1408,-32768,-32768,-32768, 6881,-32768, 1406,-32768,-32768, - 6904, 1416,-32768, 6927, 1414, 3955, 3976, 3997, 4018, 4039, - 4060, 4081, 4102, 4123, 6950, 6973, 6996, 7019, 4144,-32768, - 2273, 1418,-32768, 2624, 1578, 1579,-32768, 1432, 1581,-32768, - 1582, 1586, 1588, 1600, 1432, 1432,-32768, 1601, 11, 386, - 386, 386, 386, 1602, 1605, 1607, 386, 1609, 1610, 1611, - 1613, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, --32768,-32768,-32768,-32768, 1760, 1760,-32768, 1614,-32768,-32768, --32768, 1437, 1439,-32768,-32768, 1440,-32768,-32768,-32768, 1442, - 1438,-32768, 11, 1443, 1445, 1451, 1455,-32768,-32768,-32768, - 1452,-32768,-32768,-32768, 1453, 4165, 4186, 4207, 4228, 4249, - 4270, 4291, 4312, 4333, 1478, 1480, 1482, 1513, 7042, 2647, - 1454, 3, 1432, 3, 1432, 1533, 1517, 386, 386, 1704, - 1714, 386, 1669, 1760, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 1760, 79,-32768,-32768, 1716, -12, - 463, -3, 1534, 1536, 11, 1535, 1539,-32768,-32768, 1576, - 1584, 4354, 4375, 4396, 4417, 4438, 4459, 4480, 4501, 4522, - 464, 2052, 487, 2052, 490, 2052, 491,-32768, 1540, 1538, - 1727, 1432, 1759, 1762, 1644, 1760, 11, 386, 1432, 1787, - 1789, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, - 1760, 1790, 1760, 1791, 1760, 1792, 79, 1793, 79, 1794, --32768, 1612,-32768,-32768, 1615, 4543, 11, 1619, 1620,-32768, --32768, 4564, 4585, 4606, 4627, 4648, 4669, 7065, 7088, 7111, - 2052,-32768, 2052,-32768, 2052,-32768,-32768,-32768, 496,-32768, --32768, 1796, 1760, 1760, 1653, 386, 1432, 1760, 1760, 1760, - 1760, 1760, 1760,-32768,-32768,-32768, 79, 1803,-32768, 4690, - 2670, 1655, 1625, 1626, 4711, 4732, 4753, 4774, 4795, 4816, - 1629, 1630, 1631,-32768,-32768, 1760, 1814,-32768, 1432, 386, - 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 2693, --32768, 1627, 1639, 4837, 4858, 4879, 4900, 4921, 4942, 499, - 2052, 510, 2052, 522, 2052, 1818, 1432, 1824, 1760, 1760, - 1760, 1760, 1760, 1760, 1760, 1826, 1760, 1827, 1760, 1828, --32768, 1642,-32768, 4963, 4984, 5005, 7134, 7157, 7180, 2052, --32768, 2052,-32768, 2052,-32768, 1432, 1760, 1760, 1760,-32768, --32768,-32768, 1648, 5026, 5047, 5068, 1650, 1654, 1656, 1432, - 1760, 1760, 1760, 1760, 1760, 1760, 1649, 5089, 5110, 5131, - 533, 2052, 554, 2052, 555, 2052, 386, 1760, 1760, 1760, - 1760, 1835, 1760, 1837, 1760, 1842, 1666, 7203, 7226, 7249, - 2052,-32768, 2052,-32768, 2052,-32768, 1851,-32768,-32768,-32768, --32768, 1663, 1670, 1671, 1760, 1760, 1760, 559, 2052, 576, - 2052, 577, 2052, 1760, 1854, 1760, 1880, 1760, 1881, 2052, --32768, 2052,-32768, 2052,-32768, 1888, 1889,-32768 + 1990, 1990,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 1125,-32768, 2020, 36,-32768, 1124, 2020, 957, 38, + 1990, 1129, 1130, 602,-32768, 1133, 974, 11, 1139, 1990, +-32768, 159, 117,-32768, 1682, 1682, 1140, 1682,-32768, 1144, +-32768, 1682, 1682,-32768, 2020, 1461, 437,-32768, 1964, 682, + 980, 1145, 1157, 1159, 290, 1162, 1165, 1166, 1168, 1170, + 1173, 1200, 1127, 231, 3076, 3097,-32768,-32768, 2458, 117, + 117, 117, 736, 1154, 1990, 1990, 1682, 1682, 1990, 1201, + 1682, 1979, 379, 1202, 1060, 1208, 1990, 1990, 117, 1209, + 1210, 1042, 1211, 1213, 1682, 1682, 1214, 117, 1215, 1216, + 1682, 1682, 1218, 1219, 1220, 1222, 1223, 1682, 30, 1682, + 1225, 1224, 1230, 1242, 1244,-32768, 1243, 457, 1247,-32768, + 1185, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1990,-32768, 6786, 5739, 6809, 5764, + 6832, 5789, 6855, 5814, 5839, 1065, 188, 1070,-32768, 697, +-32768, 17, 343, 1066, 1264, 923,-32768,-32768,-32768, 11, + 1990, 1087, 1990,-32768, 438,-32768, 7407, 1268, 19, 16, + 1269, 1682, 1270, 1682, 1271, 1273, 441,-32768, 2020,-32768, + 1990,-32768, 1990, 1682, 1682, 1682,-32768, 292, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 402, 1990, 1990, 1990, 1092, + -137, -108, -89,-32768,-32768, 3118, 3139, 1275, 1276, 6878, + 21, 1192, 1990, 1990,-32768, 1097, 14, 1099, 3160, 3181, + -125, 1100, 1105, 1102, 1107, 1104, 1109, 1106, 1108, -105, + 1110, 1111, 1113, 1121, 1132, 1142, 1143, 1146, 1148, 1115, +-32768,-32768,-32768,-32768,-32768, 1149, 1150, 1151, 1155, 1160, + 1126, 1161,-32768, 1188, 90, 1305, 3202, 3223, 3244, 3265, + 3286, 3307, 3328, 3349, 3370, 3391, 3412, 3433, 3454, 3475, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1163,-32768, +-32768,-32768, 1682, 36, 1990, 1326, 1336, 10,-32768, 1340, + 5864, 1284, 3496, 11,-32768,-32768,-32768,-32768, 117,-32768, + 1383,-32768, 1384,-32768,-32768, 1206, 442, 7407, 3517, 1386, + 1387, 1388, 1990, 1990, 1389, 1390, 1391, 1392, 1393, 1394, + 1396,-32768, 1924, 2481, 6901, 630, 472, 117, 1398, 117, + 1400, 117, 1401, 1990, 1990,-32768,-32768, 1407, 1682, 1682, + 1334, 1682, 193, 6924, 1990, 14, 1423, 1990, 1682, 1421, + 1425, 1424, 1258, 1426, 30, 1427, 1431, 1990, 1432, 1434, + 1433, 1435, 1437, 30, 1990, 1990, 1990, 1682, 1446, 1451, + 30, 1990, 1453, 1454, 1452, 1990, 457,-32768,-32768, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 1990, 1990, 1455, 1456, 1457, 951,-32768, 1459, 1462, +-32768, 1274, 1283, 1990,-32768, 34,-32768,-32768,-32768, 1309, + 1990,-32768,-32768,-32768, 1069, 1153,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 1248, 1489, 1308,-32768, 1990,-32768, 1272, + 245,-32768, 248,-32768, 1311, 254,-32768, 1312, 3538, 3559, + 21, 253,-32768, 460, 1313, 1420, 1990,-32768,-32768, 3580, + 14, 1327, 3601, 1322,-32768, 1324,-32768, 1328,-32768, 1333, +-32768, 1330, 6947,-32768, 1332,-32768,-32768, 1337, 1338, 6970, + 3622, 6993, 1335,-32768, 1348, 1352, 3643, 1349, 1363,-32768, + 3664, 1360, 3685, 3706, 3727, 3748, 3769, 3790, 3811, 3832, + 3853, 3874, 3895, 3916, 3937, 3958, 1365,-32768,-32768,-32768, + 11,-32768, 1464, 1520, 3979,-32768,-32768, 4000,-32768,-32768, +-32768,-32768, 472, 1704,-32768, 1744, 1744, -38, 1744, -38, + 1990, 1990, 1468,-32768, 1682,-32768, 1682, 1990, 2504, 1682, + 1412, 1566, 21, 30, 1571, 1990, 1570, 30, 1572, 1574, + 1573, 1575, 1576, 1990, 1577, 1682, 1578, 1579, 1990, 1583, + 1581, 1990, 1585, 1990, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990,-32768, 1582,-32768, +-32768, 1990, 1586, 1403, 1990,-32768, 1744, 1744, 1990, 2527, + 257, 2550, 259, 1593, 1413, -34,-32768, 2573, 262, -22, + 2596, 2619, 1414,-32768, 1416, 1631,-32768, 1411, 14,-32768, + 1417, 1418, 1419, 4021,-32768, 1430,-32768, 1438,-32768,-32768, +-32768, 7016,-32768, 1428,-32768,-32768, 7039, 1439,-32768, 7062, + 1436, 4042, 4063, 4084, 4105, 4126, 4147, 4168, 4189, 4210, + 7085, 7108, 7131, 7154, 4231,-32768, 2323, 1441,-32768, 2642, + 2012, 1608, 1990, 1611, 1990,-32768, 1682, 1612,-32768, 1614, + 1990, 1624, 1628, 1629, 1682, 1682,-32768, 1630, 14, 30, + 30, 30, 30, 1633, 1634, 1635, 30, 1636, 1638, 1639, + 1642, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, +-32768,-32768,-32768,-32768, 1990, 1990,-32768, 1643,-32768,-32768, + 2665,-32768, 1466, 2688, 1463,-32768,-32768, 1467, 2711,-32768, +-32768,-32768, 1469, 1470,-32768, 14, 1474, 1476, 1482, 1483, +-32768,-32768,-32768, 1485,-32768,-32768,-32768, 1496, 4252, 4273, + 4294, 4315, 4336, 4357, 4378, 4399, 4420, 1500, 1501, 1529, + 1530, 7177, 2734, 1497, 1651, -38, 1713, 1682, -38, 1714, + 1682, 1657, 1596, 30, 30, 1743, 1745, 30, 1772, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 36,-32768,-32768, 1773,-32768, -11,-32768, 1562, 463, + -9,-32768, 1591, 1592, 1594, 14, 1597, 1598,-32768,-32768, + 1600, 1604, 4441, 4462, 4483, 4504, 4525, 4546, 4567, 4588, + 4609, 467, 7407, 487, 7407, 491, 7407, 492,-32768, 1601, + 1599, 1774, -38, 1682, 1784, 1785, -38, 1709, 1990, 14, + 30, 1682, 1801, 1802, 1990, 1990, 1990, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1833, 1990, 1838, 1990, 1839, 36, + 1840, 36, 1841,-32768, -8, 1659,-32768,-32768, 3, 1661, + 4630, 14, 1663, 1664,-32768,-32768, 4651, 4672, 4693, 4714, + 4735, 4756, 7200, 7223, 7246, 7407,-32768, 7407,-32768, 7407, +-32768,-32768,-32768, 498,-32768,-32768, 1846, 1849, 1850, 1990, + 1990, 1703, 30, 1682, 1990, 1990, 1990, 1990, 1990, 1990, +-32768,-32768,-32768, 36, 1854,-32768,-32768,-32768, 4777, 2757, + 1705, 1675, 1676, 4798, 4819, 4840, 4861, 4882, 4903, 1692, + 1693, 1694,-32768,-32768, 1990, 1880,-32768, 1682, 30, 1990, + 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 2780,-32768, + 1700, 1707, 4924, 4945, 4966, 4987, 5008, 5029, 503, 7407, + 504, 7407, 508, 7407, 1882, 1682, 1886, 1990, 1990, 1990, + 1990, 1990, 1990, 1990, 1889, 1990, 1890, 1990, 1891,-32768, + 1711,-32768, 5050, 5071, 5092, 7269, 7292, 7315, 7407,-32768, + 7407,-32768, 7407,-32768, 1682, 1990, 1990, 1990,-32768,-32768, +-32768, 1715, 5113, 5134, 5155, 1716, 1717, 1718, 1682, 1990, + 1990, 1990, 1990, 1990, 1990, 1720, 5176, 5197, 5218, 509, + 7407, 512, 7407, 554, 7407, 30, 1990, 1990, 1990, 1990, + 1893, 1990, 1895, 1990, 1897, 1725, 7338, 7361, 7384, 7407, +-32768, 7407,-32768, 7407,-32768, 1903,-32768,-32768,-32768,-32768, + 1722, 1723, 1724, 1990, 1990, 1990, 557, 7407, 558, 7407, + 591, 7407, 1990, 1907, 1990, 1908, 1990, 1911, 7407,-32768, + 7407,-32768, 7407,-32768, 1918, 1919,-32768 }; static const short yypgoto[] = {-32768, - 0,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 1301,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -25,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 1331,-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,-32768, --32768,-32768,-32768,-32768, -284, -18,-32768, 1884, 1885, -335, - 10, 1886,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -1160, -1189,-32768,-32768, -922, -23,-32768, -29,-32768, -84, --32768, -1043, 904, 237, -232, -319, -801, 957,-32768, -279 +-32768,-32768,-32768,-32768, -284, -18,-32768, 1915, 1916, -335, + -16, 1917,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, -1119, -1228,-32768,-32768, -984, -23,-32768, 361, +-32768, -84,-32768, -1072, 935, 228, -183, -319, -800, 1024, +-32768, -279 }; -#define YYLAST 7432 +#define YYLAST 7588 static const short yytable[] = { 135, - 457, 458, 459, 231, 134, 468, 504, 236, 940, 1234, - 90, 91, 179, 78, 172, 529, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 188, 1290, 947, 290, 1290, 365, 144, 1173, 1229, 1229, - 147, 93, 1229, 1230, 1230, 464, 948, 1230, 803, 348, - 349, 1229, 348, 349, 455, 456, 1230, 1229, 348, 349, - 348, 349, 1230, 677, 812, 978, 9, 979, 980, 198, - 981, 190, 1110, 456, 982, 8, 983, 350, 348, 349, - 238, 1119, 239, 464, 118, 119, 120, 1156, 1126, 949, - 81, 283, 284, 285, 140, 351, 286, 289, 82, 293, - 141, 180, 118, 119, 120, 83, 313, 314, 315, 316, - 87, 318, 319, 989, 321, 322, 323, 184, 330, 990, - 185, 291, 292, 348, 349, 343, 344, 345, 366, 1245, - 166, 167, 1055, 352, 346, 347, 804, 805, 536, 537, - 589, 168, 160, 93, 84, 161, 162, 169, 163, 348, - 349, 85, 363, 364, 145, 367, 86, 369, 370, 682, - 146, 88, 1289, 1292, 148, 520, 1431, 89, 125, 126, - 189, 671, 79, 697, 127, 1434, 356, 673, 138, 130, - 360, 237, 287, 348, 349, 288, 181, 373, 128, 129, - 1097, 121, 122, 123, 124, 1000, 411, 348, 349, 409, - 1290, 1400, 1290, 1402, 413, 414, 415, 416, 417, 418, + 457, 458, 459, 231, 134, 468, 504, 1299, 190, 940, + 236, 1299, 179, 677, 812, 529, 78, 188, 1173, 365, + 1110, 948, 140, 93, 947, 290, 1234, 10, 141, 1119, + 1234, 1235, 147, 348, 349, 1235, 1126, 144, 8, 1156, + 456, 803, 1234, 455, 456, 348, 349, 1235, 488, 978, + 1240, 979, 489, 1234, 198, 1234, 1234, 1000, 1235, 9, + 1235, 1235, 348, 349, 949, 348, 349, 1234, 81, 118, + 119, 120, 1235, 118, 119, 120, 184, 1009, 980, 185, + 981, 348, 349, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 602, 603, 982, 238, 983, + 239, 283, 284, 285, 464, 82, 286, 289, 83, 293, + 1251, 180, 366, 291, 292, 84, 313, 314, 315, 316, + 85, 318, 319, 582, 321, 322, 323, 583, 330, 804, + 805, 305, 306, 307, 308, 309, 891, 892, 893, 894, + 895, 310, 464, 1055, 346, 347, 11, 12, 13, 14, + 15, 16, 17, 18, 1298, 145, 148, 189, 536, 537, + 356, 146, 363, 364, 360, 367, 1302, 369, 370, 682, + 128, 129, 373, 121, 122, 123, 124, 1452, 769, 1456, + 1517, 671, 240, 697, 241, 79, 191, 673, 1299, 348, + 349, 1519, 1299, 242, 237, 243, 181, 678, 813, 1252, + 1097, 604, 989, 1256, 348, 349, 151, 160, 990, 409, + 161, 162, 86, 163, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 464, 678, 813, 191, - 139, 1246, 348, 349, 463, 1250, 156, 157, 142, 158, - 464, 469, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 486, 487, 10, 240, 467, - 241, 128, 129, 494, 348, 349, 497, 233, 143, 234, - 934, 284, 463, 121, 122, 123, 124, 508, 509, 510, - 530, 512, 513, 514, 515, 516, 517, 518, 523, 524, - 348, 349, 348, 349, 128, 129, 149, 348, 349, 531, - 532, 533, 670, 488, 538, 150, 847, 489, 1166, 348, - 349, 582, 545, 1167, 797, 583, 663, 151, 550, 1219, - 664, 1009, 152, 296, 297, 298, 299, 300, 153, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 128, 129, - 348, 349, 159, 310, 501, 827, 234, 1344, 1345, 1346, - 1347, 1098, 128, 129, 1351, 798, 1169, 328, 696, 154, - 234, 588, 334, 305, 306, 307, 308, 309, 155, 42, - 43, 44, 45, 310, 47, 164, 11, 12, 13, 14, - 15, 16, 17, 18, 357, 242, 244, 243, 245, 837, - 361, 362, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 464, 661, 818, 662, 801, 310, 668, 284, 121, - 122, 123, 124, 246, 674, 247, 248, 672, 249, 864, - 121, 122, 123, 124, 174, 1406, 1407, 175, 176, 1410, - 128, 129, 464, 165, 668, 463, 669, 838, 307, 308, - 309, 128, 129, 668, 931, 698, 310, 409, 668, 463, - 173, 699, 700, 128, 129, 1174, 250, 705, 251, 1175, - 714, 769, 891, 892, 893, 894, 895, 715, 716, 252, - 254, 253, 255, 256, 186, 257, 719, 177, 258, 957, - 259, 178, 260, 723, 261, 1468, 182, 933, 935, 262, - 264, 263, 265, 732, 733, 298, 299, 300, 183, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 90, 91, - 266, 187, 267, 310, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 770, 295, - 268, 192, 269, 1513, 296, 297, 298, 299, 300, 193, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 270, - 272, 271, 273, 274, 310, 275, 464, 276, 194, 277, - 963, 964, 296, 297, 298, 299, 300, 1543, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 787, 788, 278, - 195, 279, 310, 668, 865, 830, 944, 668, 945, 956, - 196, 789, 790, 791, 792, 793, 794, 795, 972, 973, - 463, 1080, 197, 668, 800, 1060, 1175, 806, 1176, 1432, - 1451, 1433, 1452, 819, 1046, 229, 817, 299, 300, 232, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 280, - 281, 463, 409, 1453, 310, 1454, 1455, 1457, 1456, 1458, - 294, 282, 1507, 904, 1508, 1565, 472, 1566, 311, 312, - 851, 852, 853, 1075, 1627, 317, 1567, 667, 1568, 320, - 331, 856, 857, 335, 336, 860, 125, 126, 1569, 871, - 1570, 332, 127, 869, 870, 809, 333, 130, 880, 1621, - 694, 1622, 337, 695, 296, 297, 298, 299, 300, 338, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 832, - 1623, 1625, 1624, 1626, 310, 1654, 339, 1655, 907, 908, + 449, 450, 451, 452, 453, 454, 1299, 128, 129, 244, + 1299, 245, 87, 233, 463, 234, 1417, 128, 129, 1421, + 93, 469, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 166, 167, 348, + 349, 128, 129, 494, 88, 837, 497, 501, 168, 234, + 197, 284, 463, 89, 169, 464, 350, 508, 509, 510, + 138, 512, 513, 514, 515, 516, 517, 518, 139, 464, + 663, 467, 348, 349, 664, 1357, 1358, 1359, 1360, 531, + 532, 533, 1364, 1485, 538, 348, 349, 1489, 246, 351, + 247, 818, 545, 838, 797, 668, 963, 964, 550, 934, + 1219, 153, 589, 296, 297, 298, 299, 300, 142, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 348, 349, + 931, 348, 349, 310, 668, 827, 174, 143, 328, 175, + 176, 1098, 154, 334, 520, 798, 864, 530, 298, 299, + 300, 588, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 348, 349, 170, 172, 357, 310, 972, 973, 1427, + 1428, 361, 362, 1431, 295, 348, 349, 847, 348, 349, + 121, 122, 123, 124, 348, 349, 155, 348, 349, 348, + 349, 1166, 348, 349, 1167, 1174, 472, 149, 284, 1175, + 1169, 128, 129, 1293, 674, 1295, 150, 672, 1301, 670, + 296, 297, 298, 299, 300, 152, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 463, 159, 307, 308, 309, + 310, 121, 122, 123, 124, 310, 1493, 409, 164, 463, + 464, 699, 700, 248, 801, 249, 165, 705, 128, 129, + 173, 177, 128, 129, 696, 178, 234, 715, 716, 121, + 122, 123, 124, 186, 156, 157, 719, 158, 250, 957, + 251, 464, 252, 723, 253, 182, 183, 933, 935, 187, + 128, 129, 193, 732, 733, 343, 254, 345, 255, 42, + 43, 44, 45, 352, 47, 256, 192, 257, 1542, 296, + 297, 298, 299, 300, 194, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 258, 260, 259, 261, 262, 310, + 263, 865, 264, 266, 265, 267, 195, 196, 770, 296, + 297, 298, 299, 300, 1572, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 268, 270, 269, 271, 272, 310, + 273, 296, 297, 298, 299, 300, 411, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 274, 809, 275, 232, + 276, 310, 277, 278, 668, 279, 669, 787, 788, 661, + 668, 662, 698, 668, 944, 830, 945, 668, 668, 956, + 1060, 789, 790, 791, 792, 793, 794, 795, 229, 280, + 463, 1080, 281, 282, 800, 464, 1175, 806, 1176, 1454, + 294, 1455, 311, 1474, 1046, 1475, 817, 312, 317, 299, + 300, 1656, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 463, 409, 1476, 320, 1477, 310, 1478, 1480, 1479, + 1481, 331, 332, 904, 1534, 358, 1535, 832, 667, 1594, + 1596, 1595, 1597, 1075, 1598, 1650, 1599, 1651, 1652, 333, + 1653, 856, 857, 335, 505, 860, 336, 342, 523, 524, + 90, 91, 337, 869, 870, 338, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 1654, 854, 1655, 1683, 1685, 1684, 1686, 339, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, - 919, 920, 1656, 1658, 1657, 1659, 26, 27, 28, 29, - 30, 31, 32, 33, 340, 34, 342, 36, 37, 341, - 39, 40, 359, 353, 936, 358, 354, 941, 355, 943, - 368, 371, 372, 374, 375, 376, 377, 52, 404, 378, - 379, 380, 381, 382, 383, 463, 384, 958, 385, 959, - 386, 387, 388, 53, 54, 55, 389, 390, 391, 392, - 393, 410, 394, 974, 975, 976, 395, 1224, 396, 397, - 398, 399, 400, 401, 402, 403, 461, 310, 407, 993, - 994, 296, 297, 298, 299, 300, 406, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 408, 470, 471, 506, - 511, 310, 519, 540, 541, 544, 996, 551, 552, 547, - 296, 297, 298, 299, 300, 64, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 553, 1028, 554, 555, 556, - 310, 557, 558, 559, 296, 297, 298, 299, 300, 560, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 561, - 562, 1047, 563, 564, 310, 565, 566, 534, 567, 1056, - 568, 820, 821, 569, 823, 570, 575, 854, 825, 826, - 571, 572, 573, 574, 576, 577, 578, 579, 580, 1065, - 1066, 581, 1132, 584, 665, 585, 586, 666, 1081, 1074, - 1083, 675, 1086, 676, 681, 713, 939, 717, 683, 684, - 1089, 1090, 685, 858, 859, 686, 688, 862, 689, 691, - 718, 1100, 725, 505, 1103, 692, 693, 701, 726, 727, - 728, 877, 878, 729, 1113, 731, 735, 883, 884, 736, - 737, 1120, 1121, 1122, 890, 1101, 897, 738, 1127, 739, - 740, 741, 1131, 742, 766, 743, 1133, 1134, 1135, 1136, - 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, - 1155, 754, 296, 297, 298, 299, 300, 1158, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 1150, 755, 756, - 767, 757, 310, 758, 1164, 759, 466, 760, 951, 761, - 953, 762, 763, 764, 765, 768, 786, 772, 796, 799, - 960, 961, 962, 1179, 773, 965, 966, 967, 968, 969, - 970, 971, 296, 297, 298, 299, 300, 802, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 807, 774, 775, - 1181, 1159, 310, 808, 776, 777, 778, 810, 816, 846, - 822, 296, 297, 298, 299, 300, 1428, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 296, 297, 298, 299, - 300, 310, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 811, 1227, 1228, 824, 1233, 310, 1235, 1236, 779, - 834, 835, 833, 780, 1240, 836, 781, 782, 783, 784, - 839, 785, 1248, 840, 841, 842, 843, 844, 845, 1045, - 1256, 855, 867, 861, 866, 1261, 868, 1487, 1264, 1490, - 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, - 1276, 1277, 1278, 1279, 872, 873, 874, 875, 1281, 876, - 879, 1284, 296, 297, 298, 299, 300, 881, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 1160, 882, 885, - 886, 887, 310, 888, 889, 898, 901, 1524, 1096, 899, - 900, 902, 1161, 903, 905, 1104, 930, 932, 937, 938, - 946, 942, 1299, 950, 952, 954, 955, 977, 986, 987, - 995, 1029, 997, 992, 1123, 1001, 296, 297, 298, 299, - 300, 1002, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 1003, 1004, 1005, 1007, 1006, 310, 1008, 1048, 1011, - 1010, 1012, 1049, 1051, 1019, 1053, 1013, 1025, 1356, 1357, - 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1014, 1343, 1015, - 1016, 1369, 1370, 1017, 1018, 1020, 1021, 1022, 1023, 1024, - 1026, 1027, 90, 91, 1044, 1059, 1057, 1058, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 1377, 1062, 1063, 1064, 590, 591, 592, 593, - 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, - 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1422, - 1424, 1426, 296, 297, 298, 299, 300, 1067, 301, 302, + 919, 920, 296, 297, 298, 299, 300, 340, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 1687, 341, 1688, + 353, 354, 310, 355, 936, 359, 368, 941, 371, 943, + 296, 297, 298, 299, 300, 372, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 463, 374, 958, 375, 959, + 310, 404, 376, 377, 378, 379, 1078, 380, 1079, 381, + 382, 383, 384, 974, 975, 976, 407, 1224, 406, 385, + 386, 387, 388, 389, 410, 390, 391, 392, 393, 993, + 994, 996, 296, 297, 298, 299, 300, 394, 301, 302, 303, 304, 305, 306, 307, 308, 309, 296, 297, 298, 299, 300, 310, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 1068, 1069, 1437, 1070, 1071, 310, 1072, 1073, - 1082, 1238, 1466, 1239, 1084, 1087, 1242, 1091, 1472, 1473, - 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1102, 1483, - 1105, 1485, 1258, 1095, 90, 324, 1467, 1106, 1107, 1108, + 308, 309, 395, 408, 396, 397, 398, 310, 125, 126, + 714, 399, 400, 401, 127, 310, 1028, 402, 403, 130, + 461, 471, 287, 506, 470, 288, 296, 297, 298, 299, + 300, 511, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 1047, 820, 821, 519, 823, 310, 540, 541, 825, + 826, 544, 547, 296, 297, 298, 299, 300, 939, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 551, 1065, + 1066, 552, 1132, 310, 553, 554, 555, 556, 557, 1074, + 558, 491, 559, 560, 858, 859, 1150, 561, 862, 562, + 1089, 1090, 563, 564, 565, 566, 567, 568, 569, 570, + 1101, 1100, 877, 878, 1103, 571, 572, 573, 883, 884, + 574, 575, 576, 577, 1113, 890, 578, 897, 579, 580, + 581, 1120, 1121, 1122, 584, 665, 585, 586, 1127, 666, + 675, 676, 1131, 683, 681, 684, 1133, 1134, 1135, 1136, + 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 685, + 1155, 686, 688, 689, 310, 691, 713, 1158, 692, 693, + 701, 717, 725, 819, 718, 726, 727, 728, 729, 951, + 731, 953, 735, 766, 1164, 736, 737, 738, 739, 740, + 741, 960, 961, 962, 742, 743, 965, 966, 967, 968, + 969, 970, 971, 1179, 1159, 1181, 744, 745, 746, 747, + 851, 852, 853, 296, 297, 298, 299, 300, 748, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 772, 871, + 749, 750, 751, 310, 752, 753, 754, 755, 880, 767, + 756, 296, 297, 298, 299, 300, 757, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 773, 786, 796, 799, + 846, 310, 1449, 758, 807, 808, 759, 774, 760, 810, + 761, 802, 1230, 1232, 816, 1238, 822, 1241, 1242, 775, + 824, 834, 762, 763, 1246, 764, 765, 811, 1160, 855, + 1045, 768, 1254, 835, 776, 836, 777, 833, 839, 778, + 1262, 840, 841, 779, 842, 1267, 843, 780, 1270, 844, + 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, + 1282, 1283, 1284, 1285, 781, 782, 783, 784, 1287, 785, + 1512, 1290, 1515, 283, 284, 1291, 845, 861, 866, 867, + 868, 872, 873, 875, 874, 876, 879, 881, 882, 1096, + 885, 886, 887, 1309, 888, 889, 1104, 898, 899, 296, + 297, 298, 299, 300, 900, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 901, 1123, 902, 930, 903, 310, + 905, 937, 932, 1161, 1553, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, 603, 1341, + 938, 1344, 942, 946, 950, 952, 954, 1349, 955, 977, + 986, 987, 992, 1356, 995, 997, 1001, 1002, 1003, 1004, + 1005, 1006, 1007, 1011, 1008, 1012, 1010, 1019, 1369, 1370, + 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1013, 1025, 1056, + 1029, 1382, 1383, 296, 297, 298, 299, 300, 1014, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 1015, 1016, + 1393, 1048, 1017, 310, 1018, 1020, 1021, 1022, 1081, 1049, + 1083, 1023, 1086, 90, 91, 1051, 1024, 1026, 1044, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 906, 1027, 1053, 1433, 1434, 1435, 1436, + 1437, 1438, 1439, 1440, 1441, 1443, 1445, 1447, 1057, 1058, + 1059, 1062, 1063, 1064, 1067, 1068, 1069, 1070, 1071, 1072, + 1460, 1073, 1244, 1082, 1245, 1084, 1087, 1248, 296, 297, + 298, 299, 300, 1091, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 1264, 1095, 1102, 1105, 1106, 310, 1107, + 1108, 1109, 1111, 1112, 1492, 1491, 1115, 1114, 1116, 1118, + 1117, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, + 1506, 1124, 1508, 1125, 1510, 1128, 1129, 1130, 1147, 1153, + 1165, 1148, 1149, 90, 91, 1151, 1522, 1152, 1154, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 1157, 1162, 1163, 1539, 1540, 1168, 1170, + 1177, 1544, 1545, 1546, 1547, 1548, 1549, 1178, 1184, 1182, + 1185, 125, 126, 548, 1186, 1187, 1188, 127, 1190, 1191, + 1192, 1196, 130, 1221, 1345, 694, 1231, 1233, 695, 1239, + 1197, 1569, 1353, 1354, 1198, 1200, 1573, 1574, 1575, 1576, + 1577, 1578, 1580, 1582, 1584, 1201, 1203, 1218, 26, 27, + 28, 29, 30, 31, 32, 33, 1220, 34, 1243, 36, + 37, 1249, 39, 40, 1603, 1604, 1605, 1606, 1607, 1608, + 1609, 1250, 1611, 1253, 1613, 1255, 1258, 1257, 1259, 52, + 1260, 1261, 1263, 1265, 1266, 1268, 1269, 1286, 345, 1271, + 1288, 1289, 1623, 1624, 1625, 53, 54, 55, 1296, 1308, + 1297, 1305, 1306, 1310, 1311, 1312, 1637, 1638, 1639, 1641, + 1643, 1645, 1314, 1340, 1317, 1420, 1342, 1346, 1424, 1347, + 1315, 1319, 1321, 1657, 1658, 1659, 1660, 1338, 1662, 1350, + 1664, 125, 126, 1351, 1352, 1355, 1307, 127, 1361, 1362, + 1363, 1365, 130, 1366, 1367, 828, 1368, 1384, 829, 1388, + 1678, 1680, 1682, 1386, 1389, 1391, 1416, 64, 1392, 1689, + 1394, 1691, 1395, 1693, 1396, 1397, 296, 297, 298, 299, + 300, 1398, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 1486, 1399, 1415, 90, 324, 310, 1409, 1410, 1494, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 604, 1109, 1495, 1111, 1112, 1510, - 1511, 1115, 1114, 1116, 1515, 1516, 1517, 1518, 1519, 1520, - 125, 126, 1117, 1118, 1124, 1125, 127, 1128, 1129, 1130, - 1147, 130, 1153, 1148, 828, 1149, 1152, 829, 1151, 1154, - 1157, 1162, 1540, 1165, 1163, 1168, 1170, 1544, 1545, 1546, - 1547, 1548, 1549, 1551, 1553, 1555, 1177, 1178, 1182, 1184, - 1185, 1186, 1221, 1187, 1333, 1243, 1220, 1191, 1188, 1192, - 1190, 1340, 1341, 1197, 1196, 1574, 1575, 1576, 1577, 1578, - 1579, 1580, 1198, 1582, 1200, 1584, 1201, 1203, 1218, 1297, - 1244, 1237, 1247, 1249, 1251, 1252, 1253, 1254, 1283, 1255, - 1257, 1259, 1260, 1594, 1595, 1596, 1262, 1263, 1280, 1265, - 1282, 1288, 1287, 1295, 1296, 1298, 1300, 1608, 1609, 1610, - 1612, 1614, 1616, 1330, 1331, 1301, 1334, 1335, 1302, 1304, - 1305, 1337, 1307, 1338, 1628, 1629, 1630, 1631, 1309, 1633, - 1311, 1635, 125, 325, 1328, 1339, 1342, 1348, 127, 1401, - 1349, 1403, 1350, 130, 1352, 1353, 1354, 1355, 1371, 326, - 1404, 1649, 1651, 1653, 1372, 1373, 1376, 1374, 1375, 1378, - 1660, 1379, 1662, 1380, 1664, 90, 502, 1381, 1382, 1383, - 1399, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 1393, 1405, 1394, 1462, 1395, - 90, 91, 92, 1411, 93, 1469, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 1396, 118, 119, 120, 296, 297, 298, 299, 300, 1408, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 1409, - 1430, 1438, 1435, 1436, 310, 1439, 1460, 1459, 90, 91, - 456, 1465, 1461, 1514, 94, 95, 96, 97, 98, 99, + 114, 115, 116, 117, 90, 502, 1411, 1412, 1418, 1422, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 1425, 1426, 90, 91, 1429, 1453, + 1430, 1543, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 1432, 1451, 1457, 1484, + 1458, 1459, 1463, 1461, 1462, 1571, 1464, 1483, 1482, 1487, + 1488, 296, 297, 298, 299, 300, 1490, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 1495, 1496, 90, 91, + 92, 310, 93, 1601, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 1440, 118, - 119, 120, 90, 91, 1463, 1542, 1441, 1464, 94, 95, + 110, 111, 112, 113, 114, 115, 116, 117, 1507, 118, + 119, 120, 1622, 1509, 1511, 1513, 1516, 1518, 1520, 1523, + 1524, 1536, 125, 325, 1537, 1538, 1636, 1541, 127, 1554, + 1557, 1558, 1559, 130, 296, 297, 298, 299, 300, 326, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 1566, + 1567, 1568, 125, 126, 310, 1570, 1586, 1600, 127, 1587, + 1225, 1602, 1226, 130, 1610, 1612, 1614, 1615, 1661, 503, + 1663, 1629, 1665, 1633, 1634, 1635, 1646, 1666, 1670, 1674, + 1675, 1676, 1690, 1692, 1227, 1228, 1694, 1696, 1697, 771, + 127, 69, 70, 71, 1094, 1229, 90, 91, 456, 0, + 0, 169, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 680, 118, 119, 120, + 0, 1050, 121, 122, 123, 124, 0, 0, 0, 0, + 0, 831, 0, 0, 0, 0, 125, 126, 0, 0, + 0, 0, 127, 128, 129, 0, 863, 130, 0, 131, + 0, 132, 90, 91, 0, 0, 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 1470, 1572, 1471, 1482, 1484, 1486, 1488, 1491, - 1492, 1509, 1493, 125, 126, 1496, 1497, 1512, 1525, 127, - 1528, 1529, 1530, 1557, 130, 548, 1537, 1538, 1539, 1541, - 503, 1558, 1593, 1571, 121, 122, 123, 124, 1586, 1573, - 680, 1581, 1583, 1585, 1600, 1617, 1607, 1604, 125, 126, - 1632, 1605, 1634, 1606, 127, 128, 129, 1636, 1637, 130, - 1645, 131, 831, 132, 90, 324, 1641, 1646, 1647, 1661, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 863, 1663, 1665, 1667, 1668, 771, - 69, 70, 71, 1094, 1050, 0, 125, 126, 0, 0, - 0, 0, 127, 0, 0, 0, 0, 130, 590, 591, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 0, 0, 0, 0, 0, 0, 0, 0, - 125, 126, 0, 0, 0, 0, 127, 90, 502, 0, - 0, 130, 0, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 0, 296, 297, - 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 296, 297, 298, 299, 300, 310, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 296, 297, 298, 299, 300, + 116, 117, 90, 324, 0, 0, 0, 0, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 90, 502, 0, 0, 0, 0, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 125, 126, 0, 0, 0, 0, + 127, 0, 0, 0, 0, 130, 0, 0, 0, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 296, 297, 298, 299, 300, 310, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 296, + 297, 298, 299, 300, 310, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 125, 126, 0, 0, 0, 0, 127, 0, 0, 0, + 0, 130, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 125, 462, 310, 0, 460, 0, 127, 0, 521, -10, + 1, 130, -10, -53, 0, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 0, 0, 125, 462, 0, 310, 906, 0, 127, 0, - 0, 0, 0, 130, 0, 0, 0, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 26, 27, 28, 29, 30, 31, 32, 33, 0, 34, - 0, 36, 37, 0, 39, 40, 0, 0, 0, 0, - -10, 1, 0, -10, -53, 0, 0, 0, 0, 0, - 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 126, 53, 54, 55, - 0, 127, 0, -53, 0, 0, 130, -53, -53, -53, - -53, -53, -53, -53, -53, -53, 0, -53, -53, -53, - -53, -53, -53, -53, 0, 0, 0, -53, -53, -53, - -53, -53, -53, -53, 0, -53, -53, -53, -53, -53, - 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, - 305, 306, 307, 308, 309, -53, -53, -53, 0, 64, - 310, 0, 460, 0, -53, 0, -53, -53, -53, -53, - -53, -53, -53, 0, 0, 0, 0, 0, 0, 0, + 125, 126, 0, 0, 0, 310, 127, 0, 0, 0, + 0, 130, -53, 496, 0, 0, -53, -53, -53, -53, + -53, -53, -53, -53, -53, 0, -53, -53, -53, -53, + -53, -53, -53, 0, 0, 0, -53, -53, -53, -53, + -53, -53, -53, 0, -53, -53, -53, -53, -53, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, -53, -53, -53, 0, 0, 310, + 0, 460, 0, -53, 0, -53, -53, -53, -53, -53, + -53, -53, 0, 0, 26, 27, 28, 29, 30, 31, + 32, 33, 0, 34, 0, 36, 37, 0, 39, 40, + 0, -10, -10, -10, -10, -10, -10, -10, -10, 0, + 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -53, 2, 3, 0, + 4, 53, 54, 55, 26, 27, 28, 29, 30, 31, + 32, 33, 0, 34, 0, 36, 37, 0, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 23, -10, -10, -10, -10, -10, -10, -10, -10, - 0, 539, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, -53, 2, 3, - 24, 4, 310, 0, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 0, 34, 35, 36, 37, 38, 39, - 40, 0, 0, 0, 41, 42, 43, 44, 45, 46, - 47, 199, 48, 49, 50, 51, 52, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 53, 54, 55, 0, 0, 310, 0, 490, - 0, 56, 0, 57, 58, 59, 60, 61, 62, 63, - 26, 27, 28, 29, 30, 31, 32, 33, 0, 34, - 0, 36, 37, 0, 39, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 201, 202, 0, 0, 0, - 0, 52, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 0, 0, 64, 0, 0, 53, 54, 55, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 0, 223, 224, 225, 226, 227, 228, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 0, 0, 1078, 0, 1079, 0, 0, 0, 0, - 0, 0, 0, 0, 296, 297, 298, 299, 300, 64, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, - 0, 0, 0, 0, 310, 0, 0, 0, 0, 0, - 1225, 0, 1226, 296, 297, 298, 299, 300, 0, 301, + 0, 0, 0, 23, 0, 52, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 53, 54, 55, 0, 0, 310, 0, 0, 0, + 0, 0, 24, 64, 498, 0, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 34, 35, 36, 37, + 38, 39, 40, 0, 0, 0, 41, 42, 43, 44, + 45, 46, 47, 199, 48, 49, 50, 51, 52, 0, + 0, 0, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 0, 0, 64, 53, 54, 55, 0, 0, 0, + 0, 0, 0, 56, 0, 57, 58, 59, 60, 61, + 62, 63, 0, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 0, 0, 0, 0, 1326, - 0, 1327, 296, 297, 298, 299, 300, 0, 301, 302, + 0, 0, 0, 310, 0, 539, 200, 201, 202, 1336, + 0, 1337, 0, 0, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 0, 0, 64, 0, 0, 0, + 0, 0, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 0, 223, 224, 225, 226, 227, 228, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 296, 297, 298, 299, 300, 702, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, 298, 299, 300, - 491, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 706, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, - 298, 299, 300, 496, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 707, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, - 0, 296, 297, 298, 299, 300, 498, 301, 302, 303, + 0, 296, 297, 298, 299, 300, 850, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 0, 0, 296, 297, 298, 299, 300, 702, + 0, 310, 0, 0, 296, 297, 298, 299, 300, 1076, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, 298, - 299, 300, 706, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1247, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 296, 297, 298, 299, 300, 707, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1292, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 0, 296, 297, 298, 299, 300, 850, 301, + 310, 0, 0, 296, 297, 298, 299, 300, 1294, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, 298, 299, - 300, 1076, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, - 297, 298, 299, 300, 1241, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1303, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 0, 0, 296, 297, 298, 299, 300, 1285, 301, 302, + 0, 0, 296, 297, 298, 299, 300, 1304, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, 298, 299, 300, - 1286, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1339, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, - 298, 299, 300, 1291, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1385, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, - 0, 296, 297, 298, 299, 300, 1293, 301, 302, 303, + 0, 296, 297, 298, 299, 300, 1387, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 0, 0, 296, 297, 298, 299, 300, 1294, + 0, 310, 0, 0, 296, 297, 298, 299, 300, 1390, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, 298, - 299, 300, 1329, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1414, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 296, 297, 298, 299, 300, 1398, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 0, 296, 297, 298, 299, 300, 1527, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 0, 296, 297, 298, 299, - 300, 1556, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 521, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 522, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 641, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 642, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1556, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 655, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 656, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 657, 301, + 310, 0, 0, 296, 297, 298, 299, 300, 1585, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 658, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 521, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 659, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 522, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 660, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 641, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 720, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 642, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 721, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 655, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 722, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 656, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 848, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 657, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 849, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 658, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 984, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 659, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 985, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 660, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 998, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 720, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 999, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 721, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1030, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 722, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1031, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 848, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1032, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 849, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1033, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 984, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1034, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 985, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1035, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 998, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1036, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 999, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 1037, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1030, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1038, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1031, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 1039, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1032, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1040, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1033, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1041, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1034, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1042, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1035, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1043, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1036, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1054, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1037, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1061, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 1038, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1171, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 1039, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 1172, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1040, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1180, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1041, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 1183, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1042, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1194, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1043, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1199, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1054, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1202, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1061, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1204, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1171, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1205, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1172, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1206, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 1180, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1207, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 1183, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 1208, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1194, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1209, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1199, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 1210, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1202, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1211, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1204, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1212, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1205, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1213, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1206, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1214, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1207, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1215, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1208, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1216, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 1209, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1217, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 1210, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 1222, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1211, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1223, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1212, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 1303, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1213, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1312, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1214, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1313, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1215, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1314, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1216, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1315, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1217, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1316, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1222, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1317, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 1223, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1318, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 1313, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 1319, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1322, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1320, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1323, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 1325, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1324, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1384, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1325, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1385, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1326, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1386, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1327, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1387, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1328, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1388, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1329, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1389, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 1330, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1390, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 1335, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 1391, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1400, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1392, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1401, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 1442, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1402, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1443, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1403, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1444, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1404, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1445, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1405, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1446, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1406, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1447, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1407, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1448, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 1408, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1449, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 1465, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 1450, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1466, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1494, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1467, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 1498, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1468, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1499, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1469, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1500, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1470, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1501, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1471, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1502, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1472, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1503, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1473, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1526, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 1521, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1531, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 1525, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 296, 297, 298, 299, 300, 1532, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1526, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1533, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1527, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, - 1534, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 1528, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, - 300, 1535, 301, 302, 303, 304, 305, 306, 307, 308, + 300, 1529, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1536, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1530, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1559, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1555, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, 1560, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, @@ -1662,486 +1676,518 @@ static const short yytable[] = { 135, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, 1564, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 296, 297, 298, 299, 300, 1587, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1565, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, 1588, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, 1589, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, - 299, 300, 1601, 301, 302, 303, 304, 305, 306, 307, + 299, 300, 1590, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, - 298, 299, 300, 1602, 301, 302, 303, 304, 305, 306, + 298, 299, 300, 1591, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, - 297, 298, 299, 300, 1603, 301, 302, 303, 304, 305, + 297, 298, 299, 300, 1592, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 296, 297, 298, 299, 300, 1618, 301, 302, 303, 304, + 296, 297, 298, 299, 300, 1593, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 296, 297, 298, 299, 300, 1619, 301, 302, 303, + 310, 296, 297, 298, 299, 300, 1616, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 296, 297, 298, 299, 300, 1620, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 587, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 620, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 622, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 624, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 626, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 628, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 630, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 632, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 634, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 636, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 638, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 640, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 644, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 646, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 648, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 650, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 652, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 654, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 724, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 922, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 924, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 926, 296, 297, 298, 299, 300, 0, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 928, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, - 0, 929, 296, 297, 298, 299, 300, 0, 301, 302, + 0, 310, 296, 297, 298, 299, 300, 1617, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 0, 0, 1052, 296, 297, 298, - 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 492, - 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 493, 296, 297, 298, 299, 300, 0, 301, + 0, 0, 310, 296, 297, 298, 299, 300, 1618, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 495, 296, 297, 298, 299, - 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 0, 0, 0, 0, 0, 310, 0, 499, 296, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1630, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1631, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1632, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1647, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1648, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1649, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 466, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 587, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 620, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 622, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 624, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 626, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 628, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 630, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 632, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 634, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 636, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 638, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 640, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 644, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 646, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 648, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 650, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 652, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 654, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 724, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 922, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 924, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 926, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 928, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 929, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 0, 1052, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 0, 500, 296, 297, 298, 299, 300, 0, 301, 302, + 0, 490, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 507, 296, 297, 298, 299, 300, + 0, 0, 310, 0, 492, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 0, 0, 0, 0, 0, 310, 0, 542, 296, 297, + 0, 0, 0, 0, 0, 310, 0, 493, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, - 543, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 495, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 0, 546, 296, 297, 298, 299, 300, 0, + 0, 310, 0, 499, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, - 0, 0, 0, 0, 310, 0, 549, 296, 297, 298, + 0, 0, 0, 0, 310, 0, 500, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 619, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 507, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 621, 296, 297, 298, 299, 300, 0, 301, + 310, 0, 542, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 623, 296, 297, 298, 299, + 0, 0, 0, 310, 0, 543, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 0, 0, 0, 0, 0, 310, 0, 625, 296, + 309, 0, 0, 0, 0, 0, 310, 0, 546, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 0, 627, 296, 297, 298, 299, 300, 0, 301, 302, + 0, 549, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 629, 296, 297, 298, 299, 300, + 0, 0, 310, 0, 619, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 0, 0, 0, 0, 0, 310, 0, 631, 296, 297, + 0, 0, 0, 0, 0, 310, 0, 621, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, - 633, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 623, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 0, 635, 296, 297, 298, 299, 300, 0, + 0, 310, 0, 625, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, - 0, 0, 0, 0, 310, 0, 637, 296, 297, 298, + 0, 0, 0, 0, 310, 0, 627, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 639, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 629, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 643, 296, 297, 298, 299, 300, 0, 301, + 310, 0, 631, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 645, 296, 297, 298, 299, + 0, 0, 0, 310, 0, 633, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 0, 0, 0, 0, 0, 310, 0, 647, 296, + 309, 0, 0, 0, 0, 0, 310, 0, 635, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 0, 649, 296, 297, 298, 299, 300, 0, 301, 302, + 0, 637, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 651, 296, 297, 298, 299, 300, + 0, 0, 310, 0, 639, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 0, 0, 0, 0, 0, 310, 0, 653, 296, 297, + 0, 0, 0, 0, 0, 310, 0, 643, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, - 687, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 645, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 0, 690, 296, 297, 298, 299, 300, 0, + 0, 310, 0, 647, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, - 0, 0, 0, 0, 310, 0, 703, 296, 297, 298, + 0, 0, 0, 0, 310, 0, 649, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 704, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 651, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 708, 296, 297, 298, 299, 300, 0, 301, + 310, 0, 653, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 709, 296, 297, 298, 299, + 0, 0, 0, 310, 0, 687, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 0, 0, 0, 0, 0, 310, 0, 710, 296, + 309, 0, 0, 0, 0, 0, 310, 0, 690, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 0, 711, 296, 297, 298, 299, 300, 0, 301, 302, + 0, 703, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 712, 296, 297, 298, 299, 300, + 0, 0, 310, 0, 704, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 0, 0, 0, 0, 0, 310, 0, 730, 296, 297, + 0, 0, 0, 0, 0, 310, 0, 708, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, - 734, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 709, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 0, 921, 296, 297, 298, 299, 300, 0, + 0, 310, 0, 710, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, - 0, 0, 0, 0, 310, 0, 923, 296, 297, 298, + 0, 0, 0, 0, 310, 0, 711, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 925, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 712, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 927, 296, 297, 298, 299, 300, 0, 301, + 310, 0, 730, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 988, 296, 297, 298, 299, + 0, 0, 0, 310, 0, 734, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 0, 0, 0, 0, 0, 310, 0, 1077, 296, + 309, 0, 0, 0, 0, 0, 310, 0, 921, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 0, 1099, 296, 297, 298, 299, 300, 0, 301, 302, + 0, 923, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 1189, 296, 297, 298, 299, 300, + 0, 0, 310, 0, 925, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 0, 0, 0, 0, 0, 310, 0, 1193, 296, 297, + 0, 0, 0, 0, 0, 310, 0, 927, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, - 1195, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 988, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 0, 1306, 296, 297, 298, 299, 300, 0, + 0, 310, 0, 1077, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, - 0, 0, 0, 0, 310, 0, 1308, 296, 297, 298, + 0, 0, 0, 0, 310, 0, 1099, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 1310, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 1189, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 1321, 296, 297, 298, 299, 300, 0, 301, + 310, 0, 1193, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 1322, 296, 297, 298, 299, + 0, 0, 0, 310, 0, 1195, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 0, 0, 0, 0, 0, 310, 0, 1323, 296, + 309, 0, 0, 0, 0, 0, 310, 0, 1316, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 0, 1324, 296, 297, 298, 299, 300, 0, 301, 302, + 0, 1318, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, - 0, 0, 310, 0, 1397, 296, 297, 298, 299, 300, + 0, 0, 310, 0, 1320, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 0, 0, 0, 0, 0, 310, 0, 1504, 296, 297, + 0, 0, 0, 0, 0, 310, 0, 1331, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, - 1505, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 1332, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, - 0, 310, 0, 1506, 296, 297, 298, 299, 300, 0, + 0, 310, 0, 1333, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, - 0, 0, 0, 0, 310, 0, 1590, 296, 297, 298, + 0, 0, 0, 0, 310, 0, 1334, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 0, 0, 0, 0, 0, 310, 0, 1591, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 1413, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, - 310, 0, 1592, 296, 297, 298, 299, 300, 0, 301, + 310, 0, 1531, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, - 0, 0, 0, 310, 0, 1638, 296, 297, 298, 299, + 0, 0, 0, 310, 0, 1532, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 0, 0, 0, 0, 0, 310, 0, 1639, 296, + 309, 0, 0, 0, 0, 0, 310, 0, 1533, 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, - 0, 1640 + 0, 1619, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 1620, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 1621, 296, 297, + 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 1667, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 0, 1668, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 1669, 296, 297, 298, + 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310 }; static const short yycheck[] = { 23, - 280, 281, 282, 88, 23, 290, 326, 4, 810, 1170, - 3, 4, 4, 3, 44, 351, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 42, 1231, 6, 4, 1234, 89, 64, 1091, 65, 65, - 64, 7, 65, 70, 70, 288, 6, 70, 4, 171, - 172, 65, 171, 172, 4, 5, 70, 65, 171, 172, - 171, 172, 70, 4, 4, 187, 152, 189, 187, 80, - 189, 4, 1005, 5, 187, 6, 189, 188, 171, 172, - 182, 1014, 184, 326, 34, 35, 36, 6, 1021, 49, - 7, 125, 126, 127, 182, 188, 130, 131, 6, 133, - 188, 103, 34, 35, 36, 6, 140, 141, 142, 143, - 182, 145, 146, 182, 148, 149, 150, 38, 152, 188, - 41, 92, 93, 171, 172, 165, 166, 167, 182, 1183, - 171, 172, 944, 173, 168, 169, 92, 93, 6, 7, - 188, 182, 38, 7, 6, 41, 42, 188, 44, 171, - 172, 6, 186, 187, 182, 189, 6, 191, 192, 489, - 188, 182, 189, 189, 188, 187, 189, 182, 171, 172, - 182, 466, 172, 503, 177, 189, 177, 467, 182, 182, - 181, 188, 185, 171, 172, 188, 188, 198, 178, 179, - 8, 157, 158, 159, 160, 183, 236, 171, 172, 233, - 1400, 1372, 1402, 1374, 238, 239, 240, 241, 242, 243, + 280, 281, 282, 88, 23, 290, 326, 1236, 4, 810, + 4, 1240, 4, 4, 4, 351, 3, 42, 1091, 89, + 1005, 6, 182, 7, 6, 4, 65, 3, 188, 1014, + 65, 70, 64, 171, 172, 70, 1021, 64, 6, 6, + 5, 4, 65, 4, 5, 171, 172, 70, 183, 187, + 1170, 189, 187, 65, 80, 65, 65, 183, 70, 152, + 70, 70, 171, 172, 49, 171, 172, 65, 7, 34, + 35, 36, 70, 34, 35, 36, 38, 183, 187, 41, + 189, 171, 172, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 187, 182, 189, + 184, 125, 126, 127, 288, 6, 130, 131, 6, 133, + 1183, 103, 182, 92, 93, 6, 140, 141, 142, 143, + 6, 145, 146, 183, 148, 149, 150, 187, 152, 92, + 93, 171, 172, 173, 174, 175, 107, 108, 109, 110, + 111, 181, 326, 944, 168, 169, 122, 123, 124, 125, + 126, 127, 128, 129, 189, 182, 188, 182, 6, 7, + 177, 188, 186, 187, 181, 189, 189, 191, 192, 489, + 178, 179, 198, 157, 158, 159, 160, 189, 186, 189, + 189, 466, 182, 503, 184, 172, 182, 467, 1417, 171, + 172, 189, 1421, 182, 188, 184, 188, 188, 188, 1184, + 8, 189, 182, 1188, 171, 172, 46, 38, 188, 233, + 41, 42, 6, 44, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 489, 188, 188, 182, - 6, 1184, 171, 172, 288, 1188, 41, 42, 182, 44, - 503, 290, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 3, 182, 7, - 184, 178, 179, 317, 171, 172, 320, 184, 182, 186, - 7, 325, 326, 157, 158, 159, 160, 331, 332, 333, - 187, 335, 336, 337, 338, 339, 340, 341, 348, 349, - 171, 172, 171, 172, 178, 179, 182, 171, 172, 353, - 354, 355, 186, 183, 358, 182, 187, 187, 187, 171, - 172, 183, 366, 187, 664, 187, 183, 46, 372, 1151, - 187, 183, 182, 161, 162, 163, 164, 165, 42, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 178, 179, - 171, 172, 44, 181, 184, 695, 186, 1300, 1301, 1302, - 1303, 189, 178, 179, 1307, 665, 187, 151, 184, 42, - 186, 410, 156, 171, 172, 173, 174, 175, 42, 58, - 59, 60, 61, 181, 63, 182, 122, 123, 124, 125, - 126, 127, 128, 129, 178, 182, 182, 184, 184, 6, - 184, 185, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 664, 184, 183, 186, 668, 181, 187, 462, 157, - 158, 159, 160, 182, 468, 184, 182, 466, 184, 8, - 157, 158, 159, 160, 38, 1378, 1379, 41, 42, 1382, - 178, 179, 695, 188, 187, 489, 189, 54, 173, 174, - 175, 178, 179, 187, 183, 189, 181, 501, 187, 503, - 188, 505, 506, 178, 179, 183, 182, 511, 184, 187, - 520, 186, 107, 108, 109, 110, 111, 521, 522, 182, - 182, 184, 184, 182, 182, 184, 530, 188, 182, 829, - 184, 42, 182, 537, 184, 1438, 6, 802, 803, 182, - 182, 184, 184, 547, 548, 163, 164, 165, 6, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 3, 4, - 182, 182, 184, 181, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 587, 6, - 182, 182, 184, 1496, 161, 162, 163, 164, 165, 6, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 182, - 182, 184, 184, 182, 181, 184, 829, 182, 4, 184, - 55, 56, 161, 162, 163, 164, 165, 1530, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 641, 642, 182, - 4, 184, 181, 187, 183, 189, 187, 187, 189, 189, - 42, 655, 656, 657, 658, 659, 660, 661, 6, 7, - 664, 977, 3, 187, 668, 189, 187, 671, 189, 187, - 187, 189, 189, 683, 934, 182, 680, 164, 165, 5, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 182, - 182, 695, 696, 187, 181, 189, 187, 187, 189, 189, - 6, 182, 187, 768, 189, 187, 6, 189, 6, 5, - 720, 721, 722, 973, 1617, 182, 187, 461, 189, 182, - 188, 725, 726, 188, 188, 729, 171, 172, 187, 739, - 189, 182, 177, 737, 738, 6, 182, 182, 748, 187, - 185, 189, 182, 188, 161, 162, 163, 164, 165, 182, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 6, - 187, 187, 189, 189, 181, 187, 182, 189, 772, 773, + 274, 275, 276, 277, 278, 279, 1485, 178, 179, 182, + 1489, 184, 182, 184, 288, 186, 1386, 178, 179, 1389, + 7, 290, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 171, 172, 171, + 172, 178, 179, 317, 182, 6, 320, 184, 182, 186, + 3, 325, 326, 182, 188, 489, 188, 331, 332, 333, + 182, 335, 336, 337, 338, 339, 340, 341, 6, 503, + 183, 7, 171, 172, 187, 1310, 1311, 1312, 1313, 353, + 354, 355, 1317, 1453, 358, 171, 172, 1457, 182, 188, + 184, 183, 366, 54, 664, 187, 55, 56, 372, 7, + 1151, 42, 188, 161, 162, 163, 164, 165, 182, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 171, 172, + 183, 171, 172, 181, 187, 695, 38, 182, 151, 41, + 42, 189, 42, 156, 187, 665, 8, 187, 163, 164, + 165, 410, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 171, 172, 43, 44, 178, 181, 6, 7, 1394, + 1395, 184, 185, 1398, 6, 171, 172, 187, 171, 172, + 157, 158, 159, 160, 171, 172, 42, 171, 172, 171, + 172, 187, 171, 172, 187, 183, 6, 182, 462, 187, + 187, 178, 179, 187, 468, 187, 182, 466, 187, 186, + 161, 162, 163, 164, 165, 182, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 489, 44, 173, 174, 175, + 181, 157, 158, 159, 160, 181, 1461, 501, 182, 503, + 664, 505, 506, 182, 668, 184, 188, 511, 178, 179, + 188, 188, 178, 179, 184, 42, 186, 521, 522, 157, + 158, 159, 160, 182, 41, 42, 530, 44, 182, 829, + 184, 695, 182, 537, 184, 6, 6, 802, 803, 182, + 178, 179, 6, 547, 548, 165, 182, 167, 184, 58, + 59, 60, 61, 173, 63, 182, 182, 184, 1523, 161, + 162, 163, 164, 165, 4, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 182, 182, 184, 184, 182, 181, + 184, 183, 182, 182, 184, 184, 4, 42, 587, 161, + 162, 163, 164, 165, 1559, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 182, 182, 184, 184, 182, 181, + 184, 161, 162, 163, 164, 165, 236, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 182, 6, 184, 5, + 182, 181, 184, 182, 187, 184, 189, 641, 642, 184, + 187, 186, 189, 187, 187, 189, 189, 187, 187, 189, + 189, 655, 656, 657, 658, 659, 660, 661, 182, 182, + 664, 977, 182, 182, 668, 829, 187, 671, 189, 187, + 6, 189, 6, 187, 934, 189, 680, 5, 182, 164, + 165, 1646, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 695, 696, 187, 182, 189, 181, 187, 187, 189, + 189, 188, 182, 768, 187, 184, 189, 6, 461, 187, + 187, 189, 189, 973, 187, 187, 189, 189, 187, 182, + 189, 725, 726, 188, 8, 729, 188, 4, 348, 349, + 3, 4, 182, 737, 738, 182, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 187, 6, 189, 187, 187, 189, 189, 182, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, - 784, 785, 187, 187, 189, 189, 38, 39, 40, 41, - 42, 43, 44, 45, 182, 47, 4, 49, 50, 182, - 52, 53, 6, 188, 803, 184, 188, 811, 188, 813, - 95, 6, 182, 182, 182, 182, 182, 69, 5, 182, - 182, 182, 182, 182, 182, 829, 182, 831, 182, 833, - 182, 182, 182, 85, 86, 87, 182, 182, 182, 182, - 182, 4, 182, 847, 848, 849, 182, 1163, 182, 182, - 182, 182, 182, 182, 182, 182, 7, 181, 183, 863, - 864, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 187, 186, 7, 7, - 7, 181, 183, 7, 7, 90, 867, 153, 5, 188, - 161, 162, 163, 164, 165, 147, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 5, 905, 5, 5, 5, - 181, 5, 5, 5, 161, 162, 163, 164, 165, 5, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 5, - 5, 935, 5, 5, 181, 5, 5, 189, 5, 949, - 5, 685, 686, 5, 688, 5, 140, 6, 692, 693, - 5, 5, 5, 5, 5, 5, 5, 5, 3, 963, - 964, 5, 1027, 5, 187, 6, 5, 183, 978, 973, - 980, 6, 982, 4, 6, 186, 6, 189, 7, 6, - 984, 985, 7, 727, 728, 7, 7, 731, 6, 6, - 189, 995, 188, 8, 998, 7, 7, 7, 188, 7, - 7, 745, 746, 182, 1008, 7, 154, 751, 752, 187, - 187, 1015, 1016, 1017, 758, 996, 760, 187, 1022, 187, - 187, 187, 1026, 187, 5, 187, 1030, 1031, 1032, 1033, - 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 1054, 187, 161, 162, 163, 164, 165, 1061, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 6, 187, 187, - 183, 187, 181, 187, 1078, 187, 185, 187, 822, 187, - 824, 187, 187, 187, 187, 187, 6, 182, 4, 6, - 834, 835, 836, 1097, 182, 839, 840, 841, 842, 843, - 844, 845, 161, 162, 163, 164, 165, 185, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 6, 182, 182, - 1101, 6, 181, 6, 182, 182, 182, 7, 6, 4, - 7, 161, 162, 163, 164, 165, 1396, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 161, 162, 163, 164, - 165, 181, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 184, 1166, 1167, 7, 1169, 181, 1171, 1172, 182, - 7, 7, 188, 182, 1178, 7, 182, 182, 182, 182, - 7, 182, 1186, 7, 7, 7, 7, 7, 7, 933, - 1194, 6, 150, 7, 7, 1199, 3, 1457, 1202, 1459, - 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, - 1214, 1215, 1216, 1217, 3, 3, 173, 3, 1222, 3, - 3, 1225, 161, 162, 163, 164, 165, 3, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 6, 3, 3, - 3, 3, 181, 3, 3, 3, 3, 1507, 992, 5, - 5, 3, 6, 6, 4, 999, 183, 183, 186, 7, - 6, 186, 1243, 6, 6, 6, 6, 188, 6, 6, - 188, 6, 187, 91, 1018, 187, 161, 162, 163, 164, - 165, 183, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 187, 183, 187, 187, 183, 181, 187, 6, 183, - 187, 183, 4, 6, 183, 92, 187, 183, 1312, 1313, - 1314, 1315, 1316, 1317, 1318, 1319, 1320, 187, 1299, 187, - 187, 1325, 1326, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 3, 4, 186, 185, 6, 6, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 1343, 6, 6, 6, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, - 1394, 1395, 161, 162, 163, 164, 165, 6, 167, 168, + 784, 785, 161, 162, 163, 164, 165, 182, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 187, 182, 189, + 188, 188, 181, 188, 803, 6, 95, 811, 6, 813, + 161, 162, 163, 164, 165, 182, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 829, 182, 831, 182, 833, + 181, 5, 182, 182, 182, 182, 187, 182, 189, 182, + 182, 182, 182, 847, 848, 849, 183, 1163, 187, 182, + 182, 182, 182, 182, 4, 182, 182, 182, 182, 863, + 864, 867, 161, 162, 163, 164, 165, 182, 167, 168, 169, 170, 171, 172, 173, 174, 175, 161, 162, 163, 164, 165, 181, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 6, 6, 1405, 6, 6, 181, 6, 6, - 6, 1175, 1436, 1177, 6, 6, 1180, 7, 1442, 1443, - 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 3, 1453, - 6, 1455, 1196, 91, 3, 4, 1437, 3, 6, 173, + 174, 175, 182, 187, 182, 182, 182, 181, 171, 172, + 520, 182, 182, 182, 177, 181, 905, 182, 182, 182, + 7, 7, 185, 7, 186, 188, 161, 162, 163, 164, + 165, 7, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 935, 685, 686, 183, 688, 181, 7, 7, 692, + 693, 90, 188, 161, 162, 163, 164, 165, 6, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 153, 963, + 964, 5, 1027, 181, 5, 5, 5, 5, 5, 973, + 5, 189, 5, 5, 727, 728, 6, 5, 731, 5, + 984, 985, 5, 5, 5, 5, 5, 5, 5, 5, + 996, 995, 745, 746, 998, 5, 5, 5, 751, 752, + 5, 140, 5, 5, 1008, 758, 5, 760, 5, 3, + 5, 1015, 1016, 1017, 5, 187, 6, 5, 1022, 183, + 6, 4, 1026, 7, 6, 6, 1030, 1031, 1032, 1033, + 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 7, + 1054, 7, 7, 6, 181, 6, 186, 1061, 7, 7, + 7, 189, 188, 683, 189, 188, 7, 7, 182, 822, + 7, 824, 154, 5, 1078, 187, 187, 187, 187, 187, + 187, 834, 835, 836, 187, 187, 839, 840, 841, 842, + 843, 844, 845, 1097, 6, 1101, 187, 187, 187, 187, + 720, 721, 722, 161, 162, 163, 164, 165, 187, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 182, 739, + 187, 187, 187, 181, 187, 187, 187, 187, 748, 183, + 187, 161, 162, 163, 164, 165, 187, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 182, 6, 4, 6, + 4, 181, 1412, 187, 6, 6, 187, 182, 187, 7, + 187, 185, 1166, 1167, 6, 1169, 7, 1171, 1172, 182, + 7, 7, 187, 187, 1178, 187, 187, 184, 6, 6, + 933, 187, 1186, 7, 182, 7, 182, 188, 7, 182, + 1194, 7, 7, 182, 7, 1199, 7, 182, 1202, 7, + 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, + 1214, 1215, 1216, 1217, 182, 182, 182, 182, 1222, 182, + 1480, 1225, 1482, 1227, 1228, 1229, 7, 7, 7, 150, + 3, 3, 3, 3, 173, 3, 3, 3, 3, 992, + 3, 3, 3, 1249, 3, 3, 999, 3, 5, 161, + 162, 163, 164, 165, 5, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 3, 1018, 3, 183, 6, 181, + 4, 186, 183, 6, 1534, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 1293, + 7, 1295, 186, 6, 6, 6, 6, 1301, 6, 188, + 6, 6, 91, 1309, 188, 187, 187, 183, 187, 183, + 187, 183, 187, 183, 187, 183, 187, 183, 1322, 1323, + 1324, 1325, 1326, 1327, 1328, 1329, 1330, 187, 183, 949, + 6, 1335, 1336, 161, 162, 163, 164, 165, 187, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 187, 187, + 1356, 6, 187, 181, 187, 187, 187, 187, 978, 4, + 980, 187, 982, 3, 4, 6, 187, 187, 186, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 189, 187, 92, 1400, 1401, 1402, 1403, + 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 6, 6, + 185, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 1426, 6, 1175, 6, 1177, 6, 6, 1180, 161, 162, + 163, 164, 165, 7, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 1196, 91, 3, 6, 3, 181, 6, + 173, 6, 6, 3, 1460, 1459, 3, 6, 6, 3, + 6, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, + 1474, 6, 1476, 3, 1478, 3, 3, 6, 4, 186, + 189, 6, 6, 3, 4, 7, 1492, 6, 186, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 185, 6, 188, 1520, 1521, 188, 188, + 188, 1525, 1526, 1527, 1528, 1529, 1530, 88, 187, 183, + 187, 171, 172, 8, 187, 183, 187, 177, 187, 183, + 183, 187, 182, 4, 1297, 185, 1166, 1167, 188, 1169, + 183, 1555, 1305, 1306, 183, 187, 1560, 1561, 1562, 1563, + 1564, 1565, 1566, 1567, 1568, 183, 187, 183, 38, 39, + 40, 41, 42, 43, 44, 45, 93, 47, 91, 49, + 50, 150, 52, 53, 1588, 1589, 1590, 1591, 1592, 1593, + 1594, 6, 1596, 3, 1598, 6, 3, 6, 6, 69, + 6, 6, 6, 6, 6, 3, 6, 6, 1228, 5, + 5, 189, 1616, 1617, 1618, 85, 86, 87, 6, 189, + 188, 188, 187, 187, 187, 187, 1630, 1631, 1632, 1633, + 1634, 1635, 183, 6, 187, 1388, 6, 6, 1391, 6, + 183, 183, 187, 1647, 1648, 1649, 1650, 187, 1652, 6, + 1654, 171, 172, 6, 6, 6, 6, 177, 6, 6, + 6, 6, 182, 6, 6, 185, 5, 5, 188, 187, + 1674, 1675, 1676, 188, 188, 187, 6, 147, 189, 1683, + 187, 1685, 187, 1687, 183, 183, 161, 162, 163, 164, + 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 1454, 187, 187, 3, 4, 181, 188, 188, 1462, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 189, 6, 1467, 6, 3, 1493, - 1494, 3, 6, 6, 1498, 1499, 1500, 1501, 1502, 1503, - 171, 172, 6, 3, 6, 3, 177, 3, 3, 6, - 4, 182, 186, 6, 185, 6, 6, 188, 7, 186, - 185, 6, 1526, 189, 188, 188, 188, 1531, 1532, 1533, - 1534, 1535, 1536, 1537, 1538, 1539, 188, 88, 183, 187, - 187, 187, 4, 183, 1288, 150, 93, 183, 187, 183, - 187, 1295, 1296, 183, 187, 1559, 1560, 1561, 1562, 1563, - 1564, 1565, 183, 1567, 187, 1569, 183, 187, 183, 6, - 6, 91, 3, 6, 6, 3, 6, 6, 189, 6, - 6, 6, 6, 1587, 1588, 1589, 3, 6, 6, 5, - 5, 188, 6, 188, 187, 189, 187, 1601, 1602, 1603, - 1604, 1605, 1606, 6, 6, 187, 6, 6, 187, 183, - 183, 6, 187, 6, 1618, 1619, 1620, 1621, 183, 1623, - 187, 1625, 171, 172, 187, 6, 6, 6, 177, 1373, - 6, 1375, 6, 182, 6, 6, 6, 5, 5, 188, - 88, 1645, 1646, 1647, 188, 187, 189, 188, 187, 187, - 1654, 187, 1656, 183, 1658, 3, 4, 183, 187, 187, - 187, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 188, 150, 188, 1432, 188, - 3, 4, 5, 5, 7, 1439, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 188, 34, 35, 36, 161, 162, 163, 164, 165, 6, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 6, - 5, 187, 189, 188, 181, 187, 189, 188, 3, 4, - 5, 88, 6, 1497, 9, 10, 11, 12, 13, 14, + 29, 30, 31, 32, 3, 4, 188, 188, 6, 6, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 88, 150, 3, 4, 6, 188, + 6, 1524, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 5, 5, 188, 6, + 189, 188, 183, 187, 187, 1558, 183, 189, 188, 6, + 6, 161, 162, 163, 164, 165, 88, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 6, 6, 3, 4, + 5, 181, 7, 1586, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 183, 34, - 35, 36, 3, 4, 6, 1529, 183, 6, 9, 10, + 25, 26, 27, 28, 29, 30, 31, 32, 6, 34, + 35, 36, 1615, 6, 6, 6, 6, 189, 188, 187, + 187, 6, 171, 172, 6, 6, 1629, 155, 177, 6, + 156, 187, 187, 182, 161, 162, 163, 164, 165, 188, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 188, + 188, 188, 171, 172, 181, 6, 187, 6, 177, 183, + 187, 6, 189, 182, 6, 6, 6, 187, 6, 188, + 6, 187, 6, 188, 188, 188, 187, 183, 6, 188, + 188, 188, 6, 6, 171, 172, 6, 0, 0, 589, + 177, 7, 7, 7, 990, 182, 3, 4, 5, -1, + -1, 188, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 8, 34, 35, 36, + -1, 938, 157, 158, 159, 160, -1, -1, -1, -1, + -1, 8, -1, -1, -1, -1, 171, 172, -1, -1, + -1, -1, 177, 178, 179, -1, 8, 182, -1, 184, + -1, 186, 3, 4, -1, -1, -1, -1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 6, 1557, 6, 6, 6, 6, 6, 6, - 189, 6, 188, 171, 172, 187, 187, 155, 6, 177, - 156, 187, 187, 187, 182, 8, 188, 188, 188, 6, - 188, 183, 1586, 6, 157, 158, 159, 160, 187, 6, - 8, 6, 6, 6, 187, 187, 1600, 188, 171, 172, - 6, 188, 6, 188, 177, 178, 179, 6, 183, 182, - 188, 184, 8, 186, 3, 4, 6, 188, 188, 6, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 8, 6, 6, 0, 0, 589, - 7, 7, 7, 990, 938, -1, 171, 172, -1, -1, - -1, -1, 177, -1, -1, -1, -1, 182, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, - 171, 172, -1, -1, -1, -1, 177, 3, 4, -1, - -1, 182, -1, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 161, 162, 163, 164, 165, 181, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 161, 162, 163, 164, 165, + 31, 32, 3, 4, -1, -1, -1, -1, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 3, 4, -1, -1, -1, -1, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 171, 172, -1, -1, -1, -1, + 177, -1, -1, -1, -1, 182, -1, -1, -1, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 161, 162, 163, 164, 165, 181, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 161, + 162, 163, 164, 165, 181, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + 171, 172, -1, -1, -1, -1, 177, -1, -1, -1, + -1, 182, 161, 162, 163, 164, 165, -1, 167, 168, + 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, + 171, 172, 181, -1, 183, -1, 177, -1, 187, 0, + 1, 182, 3, 4, -1, 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, 171, 172, -1, 181, 189, -1, 177, -1, - -1, -1, -1, 182, -1, -1, -1, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - 38, 39, 40, 41, 42, 43, 44, 45, -1, 47, - -1, 49, 50, -1, 52, 53, -1, -1, -1, -1, - 0, 1, -1, 3, 4, -1, -1, -1, -1, -1, - -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 171, 172, 85, 86, 87, - -1, 177, -1, 33, -1, -1, 182, 37, 38, 39, - 40, 41, 42, 43, 44, 45, -1, 47, 48, 49, - 50, 51, 52, 53, -1, -1, -1, 57, 58, 59, - 60, 61, 62, 63, -1, 65, 66, 67, 68, 69, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 85, 86, 87, -1, 147, - 181, -1, 183, -1, 94, -1, 96, 97, 98, 99, - 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, + 171, 172, -1, -1, -1, 181, 177, -1, -1, -1, + -1, 182, 33, 189, -1, -1, 37, 38, 39, 40, + 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, + 51, 52, 53, -1, -1, -1, 57, 58, 59, 60, + 61, 62, 63, -1, 65, 66, 67, 68, 69, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 85, 86, 87, -1, -1, 181, + -1, 183, -1, 94, -1, 96, 97, 98, 99, 100, + 101, 102, -1, -1, 38, 39, 40, 41, 42, 43, + 44, 45, -1, 47, -1, 49, 50, -1, 52, 53, + -1, 122, 123, 124, 125, 126, 127, 128, 129, -1, + -1, -1, -1, -1, -1, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 147, 148, 149, -1, + 151, 85, 86, 87, 38, 39, 40, 41, 42, 43, + 44, 45, -1, 47, -1, 49, 50, -1, 52, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4, 122, 123, 124, 125, 126, 127, 128, 129, - -1, 189, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 147, 148, 149, - 33, 151, 181, -1, 37, 38, 39, 40, 41, 42, - 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, - 53, -1, -1, -1, 57, 58, 59, 60, 61, 62, - 63, 41, 65, 66, 67, 68, 69, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 85, 86, 87, -1, -1, 181, -1, 183, - -1, 94, -1, 96, 97, 98, 99, 100, 101, 102, - 38, 39, 40, 41, 42, 43, 44, 45, -1, 47, - -1, 49, 50, -1, 52, 53, -1, -1, -1, -1, - -1, -1, -1, -1, 104, 105, 106, -1, -1, -1, - -1, 69, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, -1, -1, 147, -1, -1, 85, 86, 87, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, -1, -1, 187, -1, 189, -1, -1, -1, -1, - -1, -1, -1, -1, 161, 162, 163, 164, 165, 147, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, -1, -1, -1, -1, - 187, -1, 189, 161, 162, 163, 164, 165, -1, 167, + -1, -1, -1, 4, -1, 69, 161, 162, 163, 164, + 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 85, 86, 87, -1, -1, 181, -1, -1, -1, + -1, -1, 33, 147, 189, -1, 37, 38, 39, 40, + 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, + 51, 52, 53, -1, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 41, 65, 66, 67, 68, 69, -1, + -1, -1, -1, -1, -1, 189, -1, -1, -1, -1, + -1, -1, -1, 147, 85, 86, 87, -1, -1, -1, + -1, -1, -1, 94, -1, 96, 97, 98, 99, 100, + 101, 102, -1, 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, -1, -1, -1, -1, 187, - -1, 189, 161, 162, 163, 164, 165, -1, 167, 168, + -1, -1, -1, 181, -1, 189, 104, 105, 106, 187, + -1, 189, -1, -1, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, -1, -1, 147, -1, -1, -1, + -1, -1, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, -1, 141, 142, 143, 144, 145, 146, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, 161, 162, 163, 164, 165, 189, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, 161, 162, 163, 164, 165, 189, 167, 168, 169, 170, 171, 172, 173, 174, 175, @@ -2182,8 +2228,12 @@ static const short yycheck[] = { 23, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, 161, 162, 163, 164, 165, 189, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, -1, 161, 162, 163, 164, - 165, 189, 167, 168, 169, 170, 171, 172, 173, 174, + -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, + 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, + -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, + 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, @@ -2422,104 +2472,91 @@ static const short yycheck[] = { 23, 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, -1, -1, 185, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, -1, -1, 185, 161, + 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, + -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, + 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, + -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, + -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, + -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, + 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, + 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, + 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, + -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, + 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, + 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, + 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, + 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, + 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, + 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, + -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, + 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, @@ -2638,7 +2675,20 @@ static const short yycheck[] = { 23, 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, 183 + -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, + 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, + -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, + -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, + -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, + 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, + 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, + 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, + -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, + 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, + 174, 175, -1, -1, -1, -1, -1, 181 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" @@ -4912,107 +4962,170 @@ case 224: #line 1766 "Gmsh.y" { Curve *pc, *prc; - Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL); + Extrude_ProtudePoint(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2], + 0.,0.,0.,0.,0.,0.,0., + &pc,&prc,NULL); ; break;} case 225: -#line 1771 "Gmsh.y" +#line 1773 "Gmsh.y" { Curve *pc, *prc; - Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d, + Extrude_ProtudePoint(ROTATE,(int)yyvsp[-8].d,0.,0.,0., + yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d, &pc,&prc,NULL); ; break;} case 226: #line 1780 "Gmsh.y" { - Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL); + Curve *pc, *prc; + Extrude_ProtudePoint(TRANSLATE_ROTATE,(int)yyvsp[-10].d,yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2], + yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d, + &pc,&prc,NULL); ; break;} case 227: -#line 1784 "Gmsh.y" +#line 1789 "Gmsh.y" { - Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL); + Extrude_ProtudeCurve(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2], + 0.,0.,0.,0.,0.,0.,0.,NULL); ; break;} case 228: -#line 1788 "Gmsh.y" +#line 1794 "Gmsh.y" { - extr.mesh.ExtrudeMesh = false; - extr.mesh.Recombine = false; + Extrude_ProtudeCurve(ROTATE,(int)yyvsp[-8].d,0.,0.,0., + yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL); ; break;} case 229: -#line 1793 "Gmsh.y" +#line 1799 "Gmsh.y" { - Extrude_ProtudeCurve(1,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],0.,0.,0.,0.,&extr); + Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)yyvsp[-10].d,yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2], + yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL); ; break;} case 230: -#line 1797 "Gmsh.y" +#line 1804 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 231: -#line 1802 "Gmsh.y" +#line 1809 "Gmsh.y" { - Extrude_ProtudeCurve(0,(int)yyvsp[-12].d,yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,&extr); + Extrude_ProtudeCurve(TRANSLATE,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2], + 0.,0.,0.,0.,0.,0.,0.,&extr); ; break;} case 232: -#line 1809 "Gmsh.y" +#line 1814 "Gmsh.y" { - Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL); + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; ; break;} case 233: -#line 1813 "Gmsh.y" +#line 1819 "Gmsh.y" { - Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL); + Extrude_ProtudeCurve(ROTATE,(int)yyvsp[-12].d,0.,0.,0., + yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,&extr); ; break;} case 234: -#line 1817 "Gmsh.y" +#line 1824 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 235: -#line 1822 "Gmsh.y" +#line 1829 "Gmsh.y" { - int vol = NEWREG(); - Extrude_ProtudeSurface(1,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],0.,0.,0.,0.,vol,&extr); + Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)yyvsp[-14].d,yyvsp[-12].v[0],yyvsp[-12].v[1],yyvsp[-12].v[2], + yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,&extr); ; break;} case 236: -#line 1827 "Gmsh.y" +#line 1837 "Gmsh.y" { - extr.mesh.ExtrudeMesh = false; - extr.mesh.Recombine = false; + Extrude_ProtudeSurface(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2], + 0.,0.,0.,0.,0.,0.,0.,0,NULL); ; break;} case 237: -#line 1833 "Gmsh.y" +#line 1842 "Gmsh.y" { - int vol = NEWREG(); - Extrude_ProtudeSurface(0,(int)yyvsp[-12].d,yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,vol,&extr); + Extrude_ProtudeSurface(ROTATE,(int)yyvsp[-8].d,0.,0.,0., + yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL); ; break;} case 238: -#line 1841 "Gmsh.y" +#line 1847 "Gmsh.y" { + Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)yyvsp[-10].d,yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2], + yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL); ; break;} case 239: -#line 1844 "Gmsh.y" +#line 1852 "Gmsh.y" { + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; ; break;} case 240: -#line 1850 "Gmsh.y" +#line 1857 "Gmsh.y" +{ + int vol = NEWREG(); + Extrude_ProtudeSurface(TRANSLATE,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2], + 0.,0.,0.,0.,0.,0.,0.,vol,&extr); + ; + break;} +case 241: +#line 1863 "Gmsh.y" +{ + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + ; + break;} +case 242: +#line 1869 "Gmsh.y" +{ + int vol = NEWREG(); + Extrude_ProtudeSurface(ROTATE,(int)yyvsp[-12].d,0.,0.,0., + yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,vol,&extr); + ; + break;} +case 243: +#line 1875 "Gmsh.y" +{ + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + ; + break;} +case 244: +#line 1881 "Gmsh.y" +{ + int vol = NEWREG(); + Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)yyvsp[-14].d,yyvsp[-12].v[0],yyvsp[-12].v[1],yyvsp[-12].v[2], + yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,vol,&extr); + ; + break;} +case 245: +#line 1890 "Gmsh.y" +{ + ; + break;} +case 246: +#line 1893 "Gmsh.y" +{ + ; + break;} +case 247: +#line 1899 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -5039,8 +5152,8 @@ case 240: List_Delete(yyvsp[-2].l); ; break;} -case 241: -#line 1876 "Gmsh.y" +case 248: +#line 1925 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -5065,14 +5178,14 @@ case 241: List_Delete(yyvsp[-2].l); ; break;} -case 242: -#line 1900 "Gmsh.y" +case 249: +#line 1949 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} -case 243: -#line 1911 "Gmsh.y" +case 250: +#line 1960 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -5091,8 +5204,8 @@ case 243: List_Delete(yyvsp[-3].l); ; break;} -case 244: -#line 1929 "Gmsh.y" +case 251: +#line 1978 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -5111,8 +5224,8 @@ case 244: List_Delete(yyvsp[-6].l); ; break;} -case 245: -#line 1947 "Gmsh.y" +case 252: +#line 1996 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -5131,8 +5244,8 @@ case 245: List_Delete(yyvsp[-6].l); ; break;} -case 246: -#line 1965 "Gmsh.y" +case 253: +#line 2014 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -5155,8 +5268,8 @@ case 246: List_Delete(yyvsp[-1].l); ; break;} -case 247: -#line 1987 "Gmsh.y" +case 254: +#line 2036 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -5178,8 +5291,8 @@ case 247: List_Delete(yyvsp[-1].l); ; break;} -case 248: -#line 2008 "Gmsh.y" +case 255: +#line 2057 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d,THEM); if(!v) @@ -5201,8 +5314,8 @@ case 248: List_Delete(yyvsp[-1].l); ; break;} -case 249: -#line 2029 "Gmsh.y" +case 256: +#line 2078 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -5217,8 +5330,8 @@ case 249: List_Delete(yyvsp[-3].l); ; break;} -case 250: -#line 2043 "Gmsh.y" +case 257: +#line 2092 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -5233,72 +5346,72 @@ case 250: List_Delete(yyvsp[-1].l); ; break;} -case 251: -#line 2065 "Gmsh.y" +case 258: +#line 2114 "Gmsh.y" { Coherence_PS(); ; break;} -case 252: -#line 2069 "Gmsh.y" +case 259: +#line 2118 "Gmsh.y" { IntersectAllSegmentsTogether(); ; break;} -case 253: -#line 2080 "Gmsh.y" +case 260: +#line 2129 "Gmsh.y" {yyval.i = 1;; break;} -case 254: -#line 2081 "Gmsh.y" +case 261: +#line 2130 "Gmsh.y" {yyval.i = 0;; break;} -case 255: -#line 2082 "Gmsh.y" +case 262: +#line 2131 "Gmsh.y" {yyval.i = -1;; break;} -case 256: -#line 2083 "Gmsh.y" +case 263: +#line 2132 "Gmsh.y" {yyval.i = -1;; break;} -case 257: -#line 2084 "Gmsh.y" +case 264: +#line 2133 "Gmsh.y" {yyval.i = -1;; break;} -case 258: -#line 2088 "Gmsh.y" +case 265: +#line 2137 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 259: -#line 2089 "Gmsh.y" +case 266: +#line 2138 "Gmsh.y" { yyval.d = yyvsp[-1].d ; ; break;} -case 260: -#line 2090 "Gmsh.y" +case 267: +#line 2139 "Gmsh.y" { yyval.d = -yyvsp[0].d ; ; break;} -case 261: -#line 2091 "Gmsh.y" +case 268: +#line 2140 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 262: -#line 2092 "Gmsh.y" +case 269: +#line 2141 "Gmsh.y" { yyval.d = !yyvsp[0].d ; ; break;} -case 263: -#line 2093 "Gmsh.y" +case 270: +#line 2142 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d ; ; break;} -case 264: -#line 2094 "Gmsh.y" +case 271: +#line 2143 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d ; ; break;} -case 265: -#line 2095 "Gmsh.y" +case 272: +#line 2144 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d ; ; break;} -case 266: -#line 2097 "Gmsh.y" +case 273: +#line 2146 "Gmsh.y" { if(!yyvsp[0].d) vyyerror("Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -5306,236 +5419,236 @@ case 266: yyval.d = yyvsp[-2].d / yyvsp[0].d ; ; break;} -case 267: -#line 2103 "Gmsh.y" +case 274: +#line 2152 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ; ; break;} -case 268: -#line 2104 "Gmsh.y" +case 275: +#line 2153 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ; ; break;} -case 269: -#line 2105 "Gmsh.y" +case 276: +#line 2154 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d ; ; break;} -case 270: -#line 2106 "Gmsh.y" +case 277: +#line 2155 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d ; ; break;} -case 271: -#line 2107 "Gmsh.y" +case 278: +#line 2156 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d ; ; break;} -case 272: -#line 2108 "Gmsh.y" +case 279: +#line 2157 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d ; ; break;} -case 273: -#line 2109 "Gmsh.y" +case 280: +#line 2158 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d ; ; break;} -case 274: -#line 2110 "Gmsh.y" +case 281: +#line 2159 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d ; ; break;} -case 275: -#line 2111 "Gmsh.y" +case 282: +#line 2160 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d ; ; break;} -case 276: -#line 2112 "Gmsh.y" +case 283: +#line 2161 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d ; ; break;} -case 277: -#line 2113 "Gmsh.y" +case 284: +#line 2162 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ; break;} -case 278: -#line 2114 "Gmsh.y" +case 285: +#line 2163 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 279: -#line 2115 "Gmsh.y" +case 286: +#line 2164 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 280: -#line 2116 "Gmsh.y" +case 287: +#line 2165 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 281: -#line 2117 "Gmsh.y" +case 288: +#line 2166 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 282: -#line 2118 "Gmsh.y" +case 289: +#line 2167 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 283: -#line 2119 "Gmsh.y" +case 290: +#line 2168 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 284: -#line 2120 "Gmsh.y" +case 291: +#line 2169 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 285: -#line 2121 "Gmsh.y" +case 292: +#line 2170 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 286: -#line 2122 "Gmsh.y" +case 293: +#line 2171 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 287: -#line 2123 "Gmsh.y" +case 294: +#line 2172 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 288: -#line 2124 "Gmsh.y" +case 295: +#line 2173 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 289: -#line 2125 "Gmsh.y" +case 296: +#line 2174 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 290: -#line 2126 "Gmsh.y" +case 297: +#line 2175 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 291: -#line 2127 "Gmsh.y" +case 298: +#line 2176 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 292: -#line 2128 "Gmsh.y" +case 299: +#line 2177 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 293: -#line 2129 "Gmsh.y" +case 300: +#line 2178 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 294: -#line 2130 "Gmsh.y" +case 301: +#line 2179 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 295: -#line 2131 "Gmsh.y" +case 302: +#line 2180 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 296: -#line 2132 "Gmsh.y" +case 303: +#line 2181 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 297: -#line 2133 "Gmsh.y" +case 304: +#line 2182 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 298: -#line 2134 "Gmsh.y" +case 305: +#line 2183 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 299: -#line 2136 "Gmsh.y" +case 306: +#line 2185 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 300: -#line 2137 "Gmsh.y" +case 307: +#line 2186 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 301: -#line 2138 "Gmsh.y" +case 308: +#line 2187 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 302: -#line 2139 "Gmsh.y" +case 309: +#line 2188 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 303: -#line 2140 "Gmsh.y" +case 310: +#line 2189 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 304: -#line 2141 "Gmsh.y" +case 311: +#line 2190 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 305: -#line 2142 "Gmsh.y" +case 312: +#line 2191 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 306: -#line 2143 "Gmsh.y" +case 313: +#line 2192 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 307: -#line 2144 "Gmsh.y" +case 314: +#line 2193 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 308: -#line 2145 "Gmsh.y" +case 315: +#line 2194 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 309: -#line 2146 "Gmsh.y" +case 316: +#line 2195 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 310: -#line 2147 "Gmsh.y" +case 317: +#line 2196 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 311: -#line 2148 "Gmsh.y" +case 318: +#line 2197 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 312: -#line 2149 "Gmsh.y" +case 319: +#line 2198 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 313: -#line 2150 "Gmsh.y" +case 320: +#line 2199 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 314: -#line 2151 "Gmsh.y" +case 321: +#line 2200 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 315: -#line 2152 "Gmsh.y" +case 322: +#line 2201 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 316: -#line 2153 "Gmsh.y" +case 323: +#line 2202 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 317: -#line 2154 "Gmsh.y" +case 324: +#line 2203 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 318: -#line 2155 "Gmsh.y" +case 325: +#line 2204 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 319: -#line 2156 "Gmsh.y" +case 326: +#line 2205 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 320: -#line 2165 "Gmsh.y" +case 327: +#line 2214 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 321: -#line 2166 "Gmsh.y" +case 328: +#line 2215 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} -case 322: -#line 2167 "Gmsh.y" +case 329: +#line 2216 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} -case 323: -#line 2168 "Gmsh.y" +case 330: +#line 2217 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} -case 324: -#line 2173 "Gmsh.y" +case 331: +#line 2222 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5546,8 +5659,8 @@ case 324: yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ; ; break;} -case 325: -#line 2184 "Gmsh.y" +case 332: +#line 2233 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5564,8 +5677,8 @@ case 325: } ; break;} -case 326: -#line 2201 "Gmsh.y" +case 333: +#line 2250 "Gmsh.y" { TheSymbol.Name = yyvsp[-1].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5576,8 +5689,8 @@ case 326: yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i) ; ; break;} -case 327: -#line 2212 "Gmsh.y" +case 334: +#line 2261 "Gmsh.y" { TheSymbol.Name = yyvsp[-4].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5594,8 +5707,8 @@ case 327: } ; break;} -case 328: -#line 2231 "Gmsh.y" +case 335: +#line 2280 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-2].c); @@ -5611,8 +5724,8 @@ case 328: } ; break;} -case 329: -#line 2247 "Gmsh.y" +case 336: +#line 2296 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c); @@ -5628,8 +5741,8 @@ case 329: } ; break;} -case 330: -#line 2263 "Gmsh.y" +case 337: +#line 2312 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-3].c); @@ -5645,8 +5758,8 @@ case 330: } ; break;} -case 331: -#line 2279 "Gmsh.y" +case 338: +#line 2328 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-6].c); @@ -5662,131 +5775,131 @@ case 331: } ; break;} -case 332: -#line 2297 "Gmsh.y" +case 339: +#line 2346 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ; ; break;} -case 333: -#line 2301 "Gmsh.y" +case 340: +#line 2350 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ; ; break;} -case 334: -#line 2305 "Gmsh.y" +case 341: +#line 2354 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} -case 335: -#line 2309 "Gmsh.y" +case 342: +#line 2358 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ; ; break;} -case 336: -#line 2313 "Gmsh.y" +case 343: +#line 2362 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ; ; break;} -case 337: -#line 2319 "Gmsh.y" +case 344: +#line 2368 "Gmsh.y" { yyval.v[0]=yyvsp[-9].d; yyval.v[1]=yyvsp[-7].d; yyval.v[2]=yyvsp[-5].d; yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d; ; break;} -case 338: -#line 2323 "Gmsh.y" +case 345: +#line 2372 "Gmsh.y" { yyval.v[0]=yyvsp[-7].d; yyval.v[1]=yyvsp[-5].d; yyval.v[2]=yyvsp[-3].d; yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0; ; break;} -case 339: -#line 2327 "Gmsh.y" +case 346: +#line 2376 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} -case 340: -#line 2331 "Gmsh.y" +case 347: +#line 2380 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} -case 341: -#line 2338 "Gmsh.y" +case 348: +#line 2387 "Gmsh.y" { ; break;} -case 342: -#line 2341 "Gmsh.y" +case 349: +#line 2390 "Gmsh.y" { ; break;} -case 343: -#line 2347 "Gmsh.y" +case 350: +#line 2396 "Gmsh.y" { ; break;} -case 344: -#line 2350 "Gmsh.y" +case 351: +#line 2399 "Gmsh.y" { ; break;} -case 345: -#line 2356 "Gmsh.y" +case 352: +#line 2405 "Gmsh.y" { ; break;} -case 346: -#line 2359 "Gmsh.y" +case 353: +#line 2408 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 347: -#line 2363 "Gmsh.y" +case 354: +#line 2412 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 348: -#line 2370 "Gmsh.y" +case 355: +#line 2419 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(List_T*)) ; List_Add(yyval.l, &(yyvsp[0].l)) ; ; break;} -case 349: -#line 2375 "Gmsh.y" +case 356: +#line 2424 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)) ; ; break;} -case 350: -#line 2383 "Gmsh.y" +case 357: +#line 2432 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 351: -#line 2388 "Gmsh.y" +case 358: +#line 2437 "Gmsh.y" { yyval.l = yyvsp[0].l ; ; break;} -case 352: -#line 2392 "Gmsh.y" +case 359: +#line 2441 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 353: -#line 2396 "Gmsh.y" +case 360: +#line 2445 "Gmsh.y" { yyval.l=yyvsp[-1].l; for(i=0 ; i<List_Nbr(yyval.l) ; i++){ @@ -5795,16 +5908,16 @@ case 353: } ; break;} -case 354: -#line 2407 "Gmsh.y" +case 361: +#line 2456 "Gmsh.y" { yyval.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(yyval.l, &d) ; ; break;} -case 355: -#line 2413 "Gmsh.y" +case 362: +#line 2462 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){ @@ -5816,8 +5929,8 @@ case 355: List_Add(yyval.l, &d) ; ; break;} -case 356: -#line 2424 "Gmsh.y" +case 363: +#line 2473 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5832,8 +5945,8 @@ case 356: } ; break;} -case 357: -#line 2438 "Gmsh.y" +case 364: +#line 2487 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5850,8 +5963,8 @@ case 357: } ; break;} -case 358: -#line 2454 "Gmsh.y" +case 365: +#line 2503 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; @@ -5872,8 +5985,8 @@ case 358: List_Delete(yyvsp[-2].l); ; break;} -case 359: -#line 2474 "Gmsh.y" +case 366: +#line 2523 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; @@ -5896,27 +6009,27 @@ case 359: List_Delete(yyvsp[-2].l); ; break;} -case 360: -#line 2499 "Gmsh.y" +case 367: +#line 2548 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 361: -#line 2504 "Gmsh.y" +case 368: +#line 2553 "Gmsh.y" { yyval.l = yyvsp[0].l ; ; break;} -case 362: -#line 2508 "Gmsh.y" +case 369: +#line 2557 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 363: -#line 2512 "Gmsh.y" +case 370: +#line 2561 "Gmsh.y" { for(i=0 ; i<List_Nbr(yyvsp[0].l) ; i++){ List_Read(yyvsp[0].l, i, &d) ; @@ -5925,27 +6038,27 @@ case 363: List_Delete(yyvsp[0].l); ; break;} -case 364: -#line 2524 "Gmsh.y" +case 371: +#line 2573 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} -case 365: -#line 2528 "Gmsh.y" +case 372: +#line 2577 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} -case 366: -#line 2539 "Gmsh.y" +case 373: +#line 2588 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); if(flag) vyyerror("Unknown color '%s'", yyvsp[0].c); ; break;} -case 367: -#line 2544 "Gmsh.y" +case 374: +#line 2593 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){ vyyerror("Unknown color option class '%s'", yyvsp[-4].c); @@ -5962,14 +6075,14 @@ case 367: } ; break;} -case 368: -#line 2563 "Gmsh.y" +case 375: +#line 2612 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 369: -#line 2567 "Gmsh.y" +case 376: +#line 2616 "Gmsh.y" { yyval.l = List_Create(256,10,sizeof(unsigned int)) ; ColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -5981,27 +6094,27 @@ case 369: } ; break;} -case 370: -#line 2581 "Gmsh.y" +case 377: +#line 2630 "Gmsh.y" { yyval.l = List_Create(256,10,sizeof(unsigned int)) ; List_Add(yyval.l, &(yyvsp[0].u)) ; ; break;} -case 371: -#line 2586 "Gmsh.y" +case 378: +#line 2635 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)) ; ; break;} -case 372: -#line 2593 "Gmsh.y" +case 379: +#line 2642 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} -case 373: -#line 2597 "Gmsh.y" +case 380: +#line 2646 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)) ; strcpy(yyval.c, yyvsp[-3].c) ; @@ -6010,8 +6123,8 @@ case 373: Free(yyvsp[-1].c); ; break;} -case 374: -#line 2605 "Gmsh.y" +case 381: +#line 2654 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)) ; for(i=strlen(yyvsp[-1].c)-1; i>=0; i--){ @@ -6025,14 +6138,14 @@ case 374: Free(yyvsp[-1].c); ; break;} -case 375: -#line 2618 "Gmsh.y" +case 382: +#line 2667 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} -case 376: -#line 2622 "Gmsh.y" +case 383: +#line 2671 "Gmsh.y" { i = PrintListOfDouble(yyvsp[-3].c,yyvsp[-1].l,tmpstring); if(i<0){ @@ -6051,8 +6164,8 @@ case 376: List_Delete(yyvsp[-1].l); ; break;} -case 377: -#line 2640 "Gmsh.y" +case 384: +#line 2689 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c))) vyyerror("Unknown string option class '%s'", yyvsp[-3].c); @@ -6067,8 +6180,8 @@ case 377: } ; break;} -case 378: -#line 2654 "Gmsh.y" +case 385: +#line 2703 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c))) vyyerror("Unknown string option class '%s'", yyvsp[-6].c); @@ -6305,7 +6418,7 @@ yyerrhandle: } return 1; } -#line 2669 "Gmsh.y" +#line 2718 "Gmsh.y" void InitSymbols(void){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 16c6654712f8541b0d97c4b88bf33edd25f48233..1a8335e6c08442c553247d5b06eaa11f277140ef 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,6 +1,6 @@ %{ -// $Id: Gmsh.y,v 1.107 2001-11-07 09:30:26 geuzaine Exp $ +// $Id: Gmsh.y,v 1.108 2001-11-12 08:21:18 geuzaine Exp $ #include <stdarg.h> #ifndef _NOPLUGIN @@ -1451,7 +1451,7 @@ Transform : SymmetryShapes($2[0],$2[1],$2[2],$2[3],$4,1); $$ = $4; } - | tDilate '{' VExpr ',' FExpr '}' '{' MultipleShape '}' + | tDilate '{' VExpr ',' FExpr '}' '{' MultipleShape '}' { DilatShapes($3[0],$3[1],$3[2],$5,$8,1); $$ = $8; @@ -1765,53 +1765,88 @@ Extrude : tExtrude tPoint '{' FExpr ',' VExpr '}' tEND { Curve *pc, *prc; - Extrude_ProtudePoint(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,&pc,&prc,NULL); + Extrude_ProtudePoint(TRANSLATE,(int)$4,$6[0],$6[1],$6[2], + 0.,0.,0.,0.,0.,0.,0., + &pc,&prc,NULL); } | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND { Curve *pc, *prc; - Extrude_ProtudePoint(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10, + Extrude_ProtudePoint(ROTATE,(int)$4,0.,0.,0., + $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10, + &pc,&prc,NULL); + } + | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr'}' tEND + { + Curve *pc, *prc; + Extrude_ProtudePoint(TRANSLATE_ROTATE,(int)$4,$6[0],$6[1],$6[2], + $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12, &pc,&prc,NULL); } - /* -------- Lines -------- */ - | tExtrude tLine'{' FExpr ',' VExpr '}' tEND + | tExtrude tLine '{' FExpr ',' VExpr '}' tEND + { + Extrude_ProtudeCurve(TRANSLATE,(int)$4,$6[0],$6[1],$6[2], + 0.,0.,0.,0.,0.,0.,0.,NULL); + } + | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND { - Extrude_ProtudeCurve(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,NULL); + Extrude_ProtudeCurve(ROTATE,(int)$4,0.,0.,0., + $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,NULL); } - | tExtrude tLine'{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND + | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND { - Extrude_ProtudeCurve(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,NULL); + Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)$4,$6[0],$6[1],$6[2], + $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12,NULL); } - | tExtrude tLine'{' FExpr ',' VExpr '}' + | tExtrude tLine '{' FExpr ',' VExpr '}' { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - '{' ExtrudeParameters '}' tEND + '{' ExtrudeParameters '}' tEND { - Extrude_ProtudeCurve(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,&extr); + Extrude_ProtudeCurve(TRANSLATE,(int)$4,$6[0],$6[1],$6[2], + 0.,0.,0.,0.,0.,0.,0.,&extr); } - | tExtrude tLine'{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' + | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; } - '{' ExtrudeParameters '}' tEND + '{' ExtrudeParameters '}' tEND { - Extrude_ProtudeCurve(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,&extr); + Extrude_ProtudeCurve(ROTATE,(int)$4,0.,0.,0., + $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,&extr); + } + | tExtrude tLine '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' + { + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + } + '{' ExtrudeParameters '}' tEND + { + Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)$4,$6[0],$6[1],$6[2], + $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12,&extr); } /* -------- Surfaces -------- */ | tExtrude tSurface '{' FExpr ',' VExpr '}' tEND { - Extrude_ProtudeSurface(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,0,NULL); + Extrude_ProtudeSurface(TRANSLATE,(int)$4,$6[0],$6[1],$6[2], + 0.,0.,0.,0.,0.,0.,0.,0,NULL); } | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND { - Extrude_ProtudeSurface(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,0,NULL); + Extrude_ProtudeSurface(ROTATE,(int)$4,0.,0.,0., + $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,0,NULL); + } + | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND + { + Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)$4,$6[0],$6[1],$6[2], + $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12,0,NULL); } | tExtrude tSurface '{' FExpr ',' VExpr '}' { @@ -1821,7 +1856,8 @@ Extrude : '{' ExtrudeParameters '}' tEND { int vol = NEWREG(); - Extrude_ProtudeSurface(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,vol,&extr); + Extrude_ProtudeSurface(TRANSLATE,(int)$4,$6[0],$6[1],$6[2], + 0.,0.,0.,0.,0.,0.,0.,vol,&extr); } | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' { @@ -1832,7 +1868,20 @@ Extrude : '{' ExtrudeParameters '}'tEND { int vol = NEWREG(); - Extrude_ProtudeSurface(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,vol,&extr); + Extrude_ProtudeSurface(ROTATE,(int)$4,0.,0.,0., + $6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,vol,&extr); + } + | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' VExpr ',' FExpr '}' + { + extr.mesh.ExtrudeMesh = false; + extr.mesh.Recombine = false; + } + + '{' ExtrudeParameters '}'tEND + { + int vol = NEWREG(); + Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)$4,$6[0],$6[1],$6[2], + $8[0],$8[1],$8[2],$10[0],$10[1],$10[2],$12,vol,&extr); } ; diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index b16fe1cea229246cc252801938fe77b3e34eb546..9d591f86213aa823be94776a704820f9104e0872 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.122 2001-11-07 09:30:26 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.123 2001-11-12 08:21:18 geuzaine Exp $ */ #define FLEX_SCANNER @@ -1000,7 +1000,7 @@ char *yytext; #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.122 2001-11-07 09:30:26 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.123 2001-11-12 08:21:18 geuzaine Exp $ #include <stdio.h> #include <stdlib.h> diff --git a/doc/VERSIONS b/doc/VERSIONS index 567b2bee11cb4f73cd28c19c2bc5fc2a4693dc12..b7792f494e1bb3d8b9dfd8e9b6db1e6121b6df89 100644 --- a/doc/VERSIONS +++ b/doc/VERSIONS @@ -1,4 +1,7 @@ -$Date: 2001-11-05 08:37:43 $ +$Date: 2001-11-12 08:21:18 $ + +New in 1.29: Translations and rotations can now be combined in +extrusions; New in 1.28: Corrected the 'Using Progression' attribute for tranfinite meshes to actually match a real geometric progression; new diff --git a/doc/gmsh.html b/doc/gmsh.html index 88329fcf7e7f95e7d3f1ef07a45622c2e3c4af83..6b5cb43e4a3a0ef28ba3c92f9efda1cdf66015b1 100644 --- a/doc/gmsh.html +++ b/doc/gmsh.html @@ -259,6 +259,8 @@ Some pictures made with Gmsh: <A href="/gmsh/gallery/infodisplay2.gif">pict2</A>. <li>A smooth 2D <A href="/gmsh/gallery/blob.gif">colormap</A> and a 3D <A href="/gmsh/gallery/density.mov">quicktime movie</A>. +<li>Structured and unstructured mesh of an + <A href="/gmsh/gallery/spirale.gif">extruded</A> geometry. <li>Some didactic animations about computational electromagnetics at <A href="http://elap.montefiore.ulg.ac.be/elm/demos_en.html">ELAP</A>. </ul> diff --git a/tutorial/t3.geo b/tutorial/t3.geo index 7984307f0bfdcf4ffcc222790074cc5198ffef48..7dfe7716f68c6685ff6e9374b7dcc83525eedf5c 100644 --- a/tutorial/t3.geo +++ b/tutorial/t3.geo @@ -24,17 +24,24 @@ Extrude Surface { 6, {0,0,h} } { Layers { {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} } ; } ; -// The extrusion can also be combined with a rotation, and the -// extruded 3D mesh can be recombined into prisms (wedges) if the -// surface elements are triangles, or hexahedra if the surface -// elements are quadrangles. All rotations are specified by an axis -// direction ({0,1,0}), an axis point ({-0.1,0,0.1}) and a rotation -// angle (-Pi/2): +// The extrusion can also performed with a rotation instead of a +// translation, and the resulting mesh can be recombined into prisms +// (wedges) if the surface elements are triangles, or hexahedra if the +// surface elements are quadrangles. All rotations are specified by an +// axis direction ({0,1,0}), an axis point ({-0.1,0,0.1}) and a +// rotation angle (-Pi/2): Extrude Surface { 122, {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { Recombine ; Layers { 7, 9004, 1 } ; }; +// A translation ({-2*h,0,0}) and a rotation ({1,0,0} , {0,0.15,0.25}, +// Pi/4) can be combined: + +Extrude Surface {news-1, {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2}{ + Layers {10,9004,1}; Recombine; +}; + Physical Volume(101) = {9000:9004}; // All interactive options can also be set directly in the input file. diff --git a/tutorial/tutorial.html b/tutorial/tutorial.html index 78fc6278bb96dca79aa8308556ff8f1fb43eed89..f8f7c6b2e5bcf429c1e4fbd71bbfc199be7d43a9 100644 --- a/tutorial/tutorial.html +++ b/tutorial/tutorial.html @@ -23,7 +23,7 @@ <H1>README 1/10</H1> [<A HREF="#top">top</A>][prev][<A HREF="#file2">next</A>] <PRE> -$Id: tutorial.html,v 1.26 2001-11-05 08:37:43 geuzaine Exp $ +$Id: tutorial.html,v 1.27 2001-11-12 08:21:18 geuzaine Exp $ Here are the examples in the Gmsh tutorial. These examples are commented (both C and C++-style comments can be used in Gmsh input @@ -298,7 +298,7 @@ Extrude Surface { 11, {0, 0, h} } ; </FONT></I><I><FONT COLOR="#B22222">// manually a characteristic length for some of the automatically </FONT></I><I><FONT COLOR="#B22222">// created points: </FONT></I> -Characteristic Length{6,2,52,3,16,12} = lc * 2 ; +Characteristic Length{6,22,2,3,16,12} = lc * 2 ; <I><FONT COLOR="#B22222">// If the transformation tools are handy to create complex geometries, </FONT></I><I><FONT COLOR="#B22222">// it is sometimes useful to generate the flat geometry, consisting @@ -362,17 +362,24 @@ Extrude Surface { 6, {0,0,h} } { Layers { {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} } ; } ; -<I><FONT COLOR="#B22222">// The extrusion can also be combined with a rotation, and the -</FONT></I><I><FONT COLOR="#B22222">// extruded 3D mesh can be recombined into prisms (wedges) if the -</FONT></I><I><FONT COLOR="#B22222">// surface elements are triangles, or hexahedra if the surface -</FONT></I><I><FONT COLOR="#B22222">// elements are quadrangles. All rotations are specified by an axis -</FONT></I><I><FONT COLOR="#B22222">// direction ({0,1,0}), an axis point ({-0.1,0,0.1}) and a rotation -</FONT></I><I><FONT COLOR="#B22222">// angle (-Pi/2): +<I><FONT COLOR="#B22222">// The extrusion can also performed with a rotation instead of a +</FONT></I><I><FONT COLOR="#B22222">// translation, and the resulting mesh can be recombined into prisms +</FONT></I><I><FONT COLOR="#B22222">// (wedges) if the surface elements are triangles, or hexahedra if the +</FONT></I><I><FONT COLOR="#B22222">// surface elements are quadrangles. All rotations are specified by an +</FONT></I><I><FONT COLOR="#B22222">// axis direction ({0,1,0}), an axis point ({-0.1,0,0.1}) and a +</FONT></I><I><FONT COLOR="#B22222">// rotation angle (-Pi/2): </FONT></I> Extrude Surface { 122, {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { Recombine ; Layers { 7, 9004, 1 } ; }; +<I><FONT COLOR="#B22222">// A translation ({-2*h,0,0}) and a rotation ({1,0,0} , {0,0.15,0.25}, +</FONT></I><I><FONT COLOR="#B22222">// Pi/4) can be combined: +</FONT></I> +Extrude Surface {news-1, {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2}{ + Layers {10,9004,1}; Recombine; +}; + Physical Volume(101) = {9000:9004}; <I><FONT COLOR="#B22222">// All interactive options can also be set directly in the input file.